Skip to content

Commit 0be823f

Browse files
author
Aethermor
committed
fix: repair CI-breaking syntax error and harden security
- Fix broken sys.path.insert() in scripts/freeze_gold_outputs.py (CI failure root cause) - Rename intel_field -> intelligence_field to remove vendor name ambiguity - Narrow except Exception to except (json.JSONDecodeError, ValueError) for param loading - Add os.path.basename() guards on env var file paths to prevent directory traversal
1 parent 20c2d0c commit 0be823f

4 files changed

Lines changed: 9 additions & 6 deletions

File tree

aethermor/simulation/AethermorEvolutionarySim.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ def main(gen_size=10, generations=5):
8181
'base_harvest','compute_cost','repro_cost','ambient_input','sleep_thresh','wake_thresh'
8282
])
8383
out_csv = os.getenv("AETHERMOR_PARETO_OUT", "aethermor_pareto_params.csv")
84+
out_csv = os.path.basename(out_csv) # prevent directory traversal
8485
try:
8586
df.to_csv(out_csv, index=False)
8687
print(f"Evolution complete. Pareto front saved: {out_csv}")

aethermor/simulation/aethermor_full_simulation_v2.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def __init__(self,
6666
with open(calibrated_params_file) as f:
6767
user_params = json.load(f)
6868
params.update(user_params)
69-
except Exception:
69+
except (json.JSONDecodeError, ValueError):
7070
# fall back to defaults if bad JSON
7171
pass
7272

@@ -100,7 +100,7 @@ def __init__(self,
100100
# Core fields
101101
self.energy_field = np.ones(self.grid_shape) * 3.0
102102
self.signal_field = np.zeros(self.grid_shape)
103-
self.intel_field = np.zeros(self.grid_shape)
103+
self.intelligence_field = np.zeros(self.grid_shape)
104104
self.temp_field = np.ones(self.grid_shape) * 300.0
105105

106106
# Extra fields for advanced behaviour:
@@ -112,7 +112,7 @@ def __init__(self,
112112
# Histories
113113
self.energy_field_history = []
114114
self.signal_field_history = []
115-
self.intel_field_history = []
115+
self.intelligence_field_history = []
116116
self.temp_field_history = []
117117

118118
# Nodes
@@ -461,7 +461,7 @@ def step(self, t):
461461
# ------------------------------------------------------------------
462462
self.energy_field_history.append(self.energy_field.copy())
463463
self.signal_field_history.append(self.signal_field.copy())
464-
self.intel_field_history.append(self.intel_field.copy())
464+
self.intelligence_field_history.append(self.intelligence_field.copy())
465465
self.temp_field_history.append(effective_temp.copy())
466466

467467
alive = sum(1 for p in self.nodes.values() if p['energy'] > 0)
@@ -509,6 +509,7 @@ def run(self):
509509
sim.run()
510510
import pickle
511511
out_path = os.getenv("AETHERMOR_SIM_OUT", "aethermor_sim_v2.pkl")
512+
out_path = os.path.basename(out_path) # prevent directory traversal
512513
try:
513514
with open(out_path, 'wb') as f:
514515
pickle.dump(sim, f)

aethermor/simulation/scarcity_aethermor.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def __init__(self,
5050
self.SLEEP_COST_FACTOR = sleep_cost_factor
5151

5252
self.energy_field = np.ones((self.GRID, self.GRID)) * 3.0
53-
self.intel_field = np.zeros((self.GRID, self.GRID))
53+
self.intelligence_field = np.zeros((self.GRID, self.GRID))
5454
self.signal_field = np.zeros((self.GRID, self.GRID))
5555

5656
self.nodes = {(self.GRID//2, self.GRID//2): {'energy': 6.0, 'knowledge': 1.5, 'logic': 1, 'awake': True}}
@@ -140,7 +140,7 @@ def run(self, visualize=False):
140140
self._diffuse_and_decay(ambient_input)
141141

142142
for (x,y), p in self.nodes.items():
143-
self.intel_field[x,y] += p['knowledge'] * 0.07
143+
self.intelligence_field[x,y] += p['knowledge'] * 0.07
144144

145145
# np is already imported at the top of the file
146146
awake_count = sum(1 for p in self.nodes.values() if p['awake'])

scripts/freeze_gold_outputs.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ def main():
2020
verify_only = "--verify-only" in sys.argv
2121

2222
# Import and run the production suite
23+
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(
2324
os.path.abspath(__file__))), "benchmarks", "production_suite"))
2425
from run_production_suite import main as run_suite
2526

0 commit comments

Comments
 (0)