You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Build doc:documentation/plans/evolution-lines-plan.md Track: 9 (Capability research / evolve substrate) Blocked by: Phase 9 (improve-bot-evolve, operational) — this phase generalizes its single-lineage loop.
Goal
Build the population-genetics substrate for improve-bot-evolve. Today evolve runs a single lineage: one bots/current/current.txt pointer, one parent chain (v0 → … → v13), one evolve_pool.json, fitness-tested only against the immediate parent. This phase adds:
Lines of evolution — N parallel lineages, each with its own head, pool, and parent chain, scheduled round-robin (sequential, single-flight — respects the SC2 2-client cap).
Baseline database — a curated corpus of frozen opponent snapshots candidates are fitness-tested against (a gauntlet), instead of only the immediate parent.
Diversity metric + diversity-driven extinction — a behavioral fingerprint per lineage head + a population manager that culls lineages that are both low-fitness and low-diversity (redundant with a stronger sibling), under a population cap.
Motivation: the single-lineage loop converges and re-proposes already-promoted ideas (memory feedback_evolve_priors_diminishing_returns). Parallel diverse lineages with extinction pressure is the standard escape from that local optimum.
Design spine: the current.txt pointer shape is unchanged (40 consumers of current_version() keep working); lineages are an overlay registry and the scheduler flips the existing pointer between heads.
Build order: largely sequential. Steps 1 + 2 both touch scripts/evolve.py (loop-wrap vs --fitness-mode argparse) — low conflict risk but not file-disjoint, so 1 → 2 recommended. 3 depends on 2; 4 depends on 1+2+3; 5 depends on 1+4; 6 (smoke) needs 1–5; 7 (soak) needs 6.
Acceptance
Smoke gate (Phase EL Step 6: Multi-lineage smoke gate #278): one real multi-lineage round completes — both lineages schedule, baseline gauntlet runs, fingerprints compute, population manager evaluates extinction, no orphan SC2/python on port 8765, sandbox hook intact.
Observation soak (Phase EL Step 7: Multi-hour observation soak #279): 2–3 lineages over a multi-hour budget — lineages diverge on fingerprint, ≥1 extinction event fires (or is justified as not-needed under cap), baseline-fitness trends sane, zero orphan processes, clean [evo-auto] commit hygiene.
~4–6 days code (Steps 1–5) + ~1 h smoke (Step 6) + multi-hour soak (Step 7).
Kill criterion
If across the Step 7 soak the parallel lineages converge to near-identical fingerprints and extinction never meaningfully fires (no exploration gain over single-lineage), pause the phase — the population machinery isn't earning its wall-clock cost. Fall back to single-lineage evolve + the already-backlogged PFSP-lineage regression gate.
Deferred (not in this phase)
Species knobs — task ordering, time-in-task. Blocked on Track 7 mini-games (Phases H/I/J, investigation-blocked). The monolith species is "differentiated by which mini-games it practiced" (Hydra investigation §1) — needs that substrate first.
Build doc:
documentation/plans/evolution-lines-plan.mdTrack: 9 (Capability research / evolve substrate)
Blocked by: Phase 9 (improve-bot-evolve, operational) — this phase generalizes its single-lineage loop.
Goal
Build the population-genetics substrate for
improve-bot-evolve. Today evolve runs a single lineage: onebots/current/current.txtpointer, one parent chain (v0 → … → v13), oneevolve_pool.json, fitness-tested only against the immediate parent. This phase adds:Motivation: the single-lineage loop converges and re-proposes already-promoted ideas (memory
feedback_evolve_priors_diminishing_returns). Parallel diverse lineages with extinction pressure is the standard escape from that local optimum.Design spine: the
current.txtpointer shape is unchanged (40 consumers ofcurrent_version()keep working); lineages are an overlay registry and the scheduler flips the existing pointer between heads.Work (7 steps)
Build order: largely sequential. Steps 1 + 2 both touch
scripts/evolve.py(loop-wrap vs--fitness-modeargparse) — low conflict risk but not file-disjoint, so 1 → 2 recommended. 3 depends on 2; 4 depends on 1+2+3; 5 depends on 1+4; 6 (smoke) needs 1–5; 7 (soak) needs 6.Acceptance
[evo-auto]commit hygiene.--lineages 1 --fitness-mode parentreproduces today's single-lineage behavior byte-identically (existingtest_evolve_cli.pyunchanged).Effort
~4–6 days code (Steps 1–5) + ~1 h smoke (Step 6) + multi-hour soak (Step 7).
Kill criterion
If across the Step 7 soak the parallel lineages converge to near-identical fingerprints and extinction never meaningfully fires (no exploration gain over single-lineage), pause the phase — the population machinery isn't earning its wall-clock cost. Fall back to single-lineage evolve + the already-backlogged PFSP-lineage regression gate.
Deferred (not in this phase)
Synced from
documentation/plans/evolution-lines-plan.mdby /repo-sync at 154f7b0