diff --git a/tools/push3-evolution/evolve.sh b/tools/push3-evolution/evolve.sh index 6b771b8..8833080 100755 --- a/tools/push3-evolution/evolve.sh +++ b/tools/push3-evolution/evolve.sh @@ -834,7 +834,8 @@ for fname in sorted(os.listdir(output_dir)): f'candidate_{int(cand_str):03d}.push3' ) if os.path.exists(push3_path): - qualifying.append((fitness, push3_path, gen_idx, cand_str)) + flags = d.get('fitness_flags') + qualifying.append((fitness, push3_path, gen_idx, cand_str, flags)) except (json.JSONDecodeError, ValueError, TypeError, AttributeError): pass @@ -844,7 +845,7 @@ qualifying.sort(key=lambda x: x[0], reverse=True) new_items = [] # (fitness, push3_path, manifest_entry) seen = set(existing_hashes) -for fitness, push3_path, gen_idx, cand_str in qualifying: +for fitness, push3_path, gen_idx, cand_str, flags in qualifying: h = file_hash(push3_path) if h in seen: continue @@ -864,13 +865,14 @@ for fitness, push3_path, gen_idx, cand_str in qualifying: break counter += 1 entry = { - 'file': filename, - 'fitness': fitness, - 'origin': 'evolved', - 'run': run_id, - 'generation': gen_idx, - 'date': today, - 'note': f'Evolved from {seed_name} (run{run_id} gen{gen_idx})', + 'file': filename, + 'fitness': fitness, + 'fitness_flags': flags, + 'origin': 'evolved', + 'run': run_id, + 'generation': gen_idx, + 'date': today, + 'note': f'Evolved from {seed_name} (run{run_id} gen{gen_idx})', } new_items.append((fitness, push3_path, entry)) @@ -903,7 +905,7 @@ pinned = [(effective_fitness(e), e, None) for e in existing evolved = [(effective_fitness(e), e, None) for e in existing if e.get('origin') == 'evolved'] for fitness, push3_path, entry in new_items: - evolved.append((fitness, entry, push3_path)) + evolved.append((effective_fitness(entry), entry, push3_path)) evolved.sort(key=lambda x: x[0], reverse=True) admitted_evolved = evolved[:MAX_EVOLVED]