In this commit, we check in the artifacts of the first evolution campaign. The champions directory holds the three GEPA-evolved routers, all validated on sealed test sets and out-of-distribution corpora against both the lnd production stack and the hand-written seed: hb1 (hard-regime specialist), hb2 (superseded OOD sibling), and mx_c3 (the generalist with the best combined average). All are exploit-clean and independently rediscovered a bimodal liquidity prior with per-edge liquidity bounds in place of time-decayed penalties. The lab directory is the running notebook: dated experiment writeups (exp-001 through exp-007) covering the parameter-tuning null result, the seed-beats-lnd baseline, the simulator integrity audit, the breakthrough run, and the follow-up that produced the generalist, plus an ideas backlog with the engineering learnings.
2.6 KiB
EXP-004 — Code-mode evolution (whole routing algorithm)
Date: 2026-07-24 (night), ongoing Status: first runs done; breakthrough run (code_hard1) in flight
The bar: the hand-written seed already beats lnd
Three-way on corpus v2 (20 val+test, composite objective = success − 0.01·min(extra_attempts,15) − 0.00002·min(fee_ppm,5000)):
| router | objective | success | attempts/pmt |
|---|---|---|---|
| lnd stack (defaults) | 0.393 | 0.559 | 58.4 |
| seed router (~300 lines) | 0.547 | 0.681 | 26.4 |
| evolved (code1, 4 iters) | 0.533 | 0.641 | 9.1 |
The paradigm-different seed router beats lnd's production stack by +39% on the objective. So the bar for evolution is the seed, not lnd — a high bar, since the seed is already strong.
code1 (adaptive gepa↔meta_harness, corpus v1) — crashed early
The adaptive scheduler rotated to the meta_harness engine on iteration 4
and died in gepa's _parse_proposer_result ('list' object has no attribute 'get' — the claude CLI's JSON shape doesn't match the
installed parser). Only 4 iterations ran. Despite that, GEPA accepted a
frontier candidate: a 967-line rewrite that adds per-channel
liquidityKnowledge (lower/upper liquidity bounds + confidence), well
beyond the seed's blacklist. Validated OOD on corpus v2: beats lnd
(0.533 vs 0.393) and is dramatically more efficient (9.1 attempts vs
lnd's 58.4), just shy of the seed on the composite. Clean — no sandbox
exploit. A genuine novel algorithm from 4 iterations; promising.
meta_harness bug → pivot to pure gepa (bug now patched)
meta_harness (and thus the adaptive/omni composers that include it) was
unusable with this gepa build + claude CLI version: the CLI emits a JSON
array of stream events, but _parse_proposer_result assumed a single
object and did payload.get(...) on a list.
Patched in the venv's gepa/oa/engines/meta_harness.py: the parser
now picks the terminal type=="result" event (or last dict) from an
array. This unblocks omni/adaptive ensembles for a follow-up run. (Not
yet end-to-end validated — running meta_harness now would compete with
code_hard1 for codex/CPU, so deferred.) For a persistent fix, carry a
small monkeypatch in the harness rather than editing site-packages.
gepa is the strongest backend for rich feedback anyway (per the skill), so the breakthrough attempt is pure gepa regardless.
code_hard1 (pure gepa, 400 evals, HARD corpus) — in flight
Hard corpus: bimodal-only, small-channel smallworld/grid/hubspoke where lnd scores 0.1–0.29 (real headroom). Seeded from the seed router. This is the overnight breakthrough attempt. Results + three-way validation → exp-006.