Files
BFM-decomp/tools
Drew T b0587c573e fix(idiom_serial): main is never a target, and a contended index is not a dirty tree
The serial lane's first-ever run on tells died 0 seconds in, on both counts:

  [1/6] func_8017D1C0 @ ov_SC06_027 · 118 ins  -> drafting
  [2/6] func_8001382C @ main · 103 ins         -> could not commit — refusing on a dirty tree

MAIN IS NOT A SERIAL-LANE TARGET. main gates through gate_main on the main lane's own cadence
(a clean whole-EXE rebuild with bisection), so this lane cannot bank it however good the draft
is — a main target burns a slot to learn that. md_* was already excluded for jtbl; main never
was, because the lane predates main being in the atlas at all.

A CONTENDED INDEX IS NOT A DIRTY TREE. Six campaign lanes plus the re-gate runner commit
continuously, so `git commit` here loses the index.lock race routinely — twice today it was a
STALE lock blocking every lane for 8 and 21 minutes. The lane refused over a tree that was
fine. It now retries the commit six times at 5 s before concluding, and the refusal is
reserved for FOREIGN DIRT it must not adopt — which is the property that rule was protecting.

Verified: pick_targets('extend-tell', 8, 80) now returns 8 overlay targets, no main.

Also in this commit: MAX_BINS 160 -> 50 in the drafter shell. Wave size was the right lever at
50% conversion (dd: 217 banked of 422 gated in 39 min); at 5% it is dead weight — dq banked 8
of 167 gated and took 98 MINUTES, while four drafted waves queued and the free-ox fleet sat at
14 agents / 10 req/min. At this conversion a 150-card wave banks what a 430-card wave banks,
in a third of the gate.
2026-08-25 14:57:13 -06:00
..