Files
BFM-decomp/tools/lanes
Drew T 6a19755969 feat(lanes): restart the main lane at its idle boundary, not mid-work
Same problem as the drafter: an env/arg change (MAXTOK, HTTP_TIMEOUT) only reaches a
fresh shell, and the main lane is usually either drafting or gating. This waits for
the one safe window — no main-lane agents alive and no gate_main running, i.e.
between the gate and the next draw — then restarts. Mid-draft would discard drafted
work; mid-gate would abort a batch (safe, since gate_main reverts its own
substitution, but wasteful).
2026-08-24 16:39:42 -06:00
..

Autonomous lanes (P31 S58)

The unattended campaign architecture. These are the RUNNING copies' source of truth — the live lanes execute from .run/, which is gitignored, so a fresh clone would otherwise have none of it. Copy back with cp tools/lanes/*.sh .run/ before launching.

lane role rule
drafter.sh draw → shard → draft → queue a ready marker, forever NEVER stop it to ship a code change. Measured 2026-08-23: 139 of 162 idle minutes were exactly that
gater.sh reloc pre-filter → gate → commit → harvest → ledger safe to kill/restart at will
maintenance.sh the free A-prop sibling lane triggers on 150+ newly banked functions, not a timer
stallguard.sh 60s: revive dead lane shells, kill agents silent >20min, kill gates >90min the only thing that works at 3am

Start: setsid nohup .run/<lane>.sh >> .run/<lane>.log 2>&1 </dev/null & Stop everything: touch .run/ox_campaign.stop

Editing a lane requires replacing its SHELL, not just its python — bash has the loop body parsed, so killing the python restarts it with the old arguments. Verify from the startup banner, never from the file.