Files
BFM-decomp/cookbook/C0461.md
T

2.7 KiB
Raw Blame History

§413 ★★★ — DIFFICULTY IS THE RESIDUAL CLASS, NOT nins — ROUTE THE MODEL TIER OFF HISTORY (P31 S71, Drew)

The observation. S71's wave ran one agent per function and logged wall-clock and tool-call counts. Duration tracks iteration count, and iteration count tracks the residual class — not size:

function ins arm wall tool calls what it was
func_80181294 26 opus 18 min 31 REGALLOC-PERM, finished NEAR/2
func_80185D44 47 opus 21 min 48 LUID contradiction (read cc1's -dS trace)
func_80185F4C 60 opus 22 min 33 sched1 birthing-boost tie
func_800D24D0 141 opus 33 min 51 memrefs_conflict_p PLUS-vs-LO_SUM
func_8017DB98 122 opus 80 s 10 body recovered from a prior attempt
func_80182CBC 28 opus 115 s 12 §193-A twin remap

A 26-instruction function took 18 minutes; a 122-instruction one took 80 seconds. Size predicted neither. What separates the two groups is whether the residual is a compiler-internal one (scheduling ties, birthing boost, register colouring, LUID order) where every hypothesis costs a compile-and-measure cycle — or an ordinary body question that a twin or a neighbour answers at once.

Why they never escalated. draw_waves.arm_for keys the model tier on nins alone, so a 47-instruction regalloc wall is STRUCTURALLY unable to be drawn at the higher tier, and nothing escalates mid-run: each agent runs to its own budget and no watcher re-hands the target.

The fix, available only because the packs now carry history (§411). arm_from_history() reads the function's own journal notes at draw time and returns fable when they name a compiler-internal residual; it never downgrades what the size ladder chose. Negative-controlled over all 3,147 functions with history × 3 size bands = 9,441 decisions: 4,020 upgrades (43%), 0 downgrades.

A defect the control caught, worth as much as the lever. The first negative control iterated only journal keys carrying a binary and reported 0 decisions / 0 downgrades — a clean pass over an EMPTY set. The agent verdict schema never had a binary field, so every historical note is name-keyed, and the same name is a different function in another overlay (§238). Two consequences: the S71 past-attempt fuel can serve one overlay's history to another's target, and any future join on these rows inherits it. claude_wave_draft.js's VERDICT schema now requires binary, so new rows are exact; the historical corpus stays name-keyed and should be read with that caveat. check-against-a-known-true-case, again: the instrument passed because it measured nothing.