Commit Graph

3241 Commits

Author SHA1 Message Date
Drew T b13d63017d feat(decomp): family-remap-hnorm gate — +1 fns x0 propagated (fleet 98.9%) 2026-08-29 17:48:18 -06:00
Drew T 499543788a feat(decomp): family-remap-hnorm gate — +1 fns x0 propagated (fleet 98.9%) 2026-08-29 17:46:54 -06:00
Drew T 28aa42c845 feat(decomp): family-remap-hnorm gate — +1 fns x0 propagated (fleet 98.9%) 2026-08-29 17:45:30 -06:00
Drew T a30753c76c feat(decomp): family-remap-hnorm gate — +3 fns x0 propagated (fleet 98.9%) 2026-08-29 17:44:12 -06:00
Drew T 7580af30c0 feat(decomp): family-remap-hnorm gate — +2 fns x0 propagated (fleet 98.9%) 2026-08-29 17:43:02 -06:00
Drew T 0fe5243952 feat(decomp): family-remap-hnorm gate — +1 fns x0 propagated (fleet 98.9%) 2026-08-29 17:42:04 -06:00
Drew T f83238b28a feat(decomp): family-remap-hnorm gate — +4 fns x0 propagated (fleet 98.9%) 2026-08-29 17:39:39 -06:00
Drew T a4325f3e01 feat(decomp): family-remap-hnorm gate — +4 fns x0 propagated (fleet 98.9%) 2026-08-29 17:38:29 -06:00
Drew T 46c629189c feat(decomp): family-remap-hnorm gate — +5 fns x0 propagated (fleet 98.9%) 2026-08-29 17:37:18 -06:00
Drew T c7c75697cb feat(decomp): family-remap-hnorm gate — +4 fns x0 propagated (fleet 98.9%) 2026-08-29 17:36:04 -06:00
Drew T 5d038e62ed feat(decomp): family-remap-hnorm gate — +10 fns x0 propagated (fleet 98.9%) 2026-08-29 17:34:52 -06:00
Drew T f2026bbfc8 feat(decomp): family-remap-hnorm gate — +9 fns x0 propagated (fleet 98.8%) 2026-08-29 17:33:18 -06:00
Drew T a4d2fd62d3 feat(t5): Claude wave t5z — 5 banked (sonnet 4/4, opus 1/1); fleet 213 passed, 0 failed of 213 (P31 S62 T5) 2026-08-29 17:31:30 -06:00
Drew T f7bfdc34d1 feat(t5): Claude wave t5x — 3 banked (sonnet 2/5, opus 0/0, +recovery); fleet 213 passed, 0 failed of 213 (P31 S62 T5) 2026-08-29 17:29:20 -06:00
Drew T 86ddc62277 feat(decomp): family-remap gate — +1 fns x0 propagated (fleet 98.8%) 2026-08-29 17:26:05 -06:00
Drew T b95f18dca6 feat(decomp): family-remap gate — +1 fns x0 propagated (fleet 98.8%) 2026-08-29 17:25:09 -06:00
Drew T ab860ef5c6 feat(decomp): family-remap gate — +1 fns x0 propagated (fleet 98.8%) 2026-08-29 17:24:13 -06:00
Drew T 8d0d215567 feat(decomp): family-remap gate — +1 fns x0 propagated (fleet 98.8%) 2026-08-29 17:23:17 -06:00
Drew T 4f6d9a75c8 feat(decomp): family-remap gate — +1 fns x0 propagated (fleet 98.8%) 2026-08-29 17:22:20 -06:00
Drew T 50cb1aff5a feat(decomp): family-remap gate — +7 fns x0 propagated (fleet 98.8%) 2026-08-29 17:21:24 -06:00
Drew T fb58ad76c5 feat(decomp): family-remap gate — +23 fns x0 propagated (fleet 98.8%) 2026-08-29 17:20:11 -06:00
Drew T b588f67a1d feat(decomp): family-remap gate — +10 fns x0 propagated (fleet 98.8%) 2026-08-29 17:17:00 -06:00
Drew T 387207daea feat(decomp): family-remap gate — +11 fns x0 propagated (fleet 98.8%) 2026-08-29 17:15:43 -06:00
Drew T 6ebd32555a feat(decomp): family-remap gate — +7 fns x0 propagated (fleet 98.8%) 2026-08-29 17:14:27 -06:00
Drew T 658ec399e7 feat(decomp): family-remap gate — +1 fns x0 propagated (fleet 98.8%) 2026-08-29 17:13:19 -06:00
Drew T 43ac008311 feat(decomp): family-remap gate — +15 fns x0 propagated (fleet 98.8%) 2026-08-29 17:11:08 -06:00
Drew T d9f78e2550 feat(decomp): family-remap gate — +9 fns x0 propagated (fleet 98.8%) 2026-08-29 17:09:34 -06:00
Drew T bf9045501b feat(decomp): family-remap gate — +2 fns x0 propagated (fleet 98.8%) 2026-08-29 17:08:18 -06:00
Drew T 974342677e feat(decomp): family-remap gate — +2 fns x0 propagated (fleet 98.8%) 2026-08-29 17:07:21 -06:00
Drew T 6a30e7ceca feat(decomp): family-remap gate — +7 fns x0 propagated (fleet 98.8%) 2026-08-29 17:06:25 -06:00
Drew T 3a706d999e feat(decomp): family-remap gate — +1 fns x0 propagated (fleet 98.8%) 2026-08-29 17:05:14 -06:00
Drew T 422bc3b50d feat(decomp): family-remap gate — +23 fns x0 propagated (fleet 98.8%) 2026-08-29 17:04:19 -06:00
Drew T 342f3bf26c feat(decomp): family-remap gate — +3 fns x0 propagated (fleet 98.8%) 2026-08-29 17:02:36 -06:00
Drew T ba92bb4a9d feat(decomp): family-remap gate — +1 fns x0 propagated (fleet 98.8%) 2026-08-29 17:01:29 -06:00
Drew T 00261badcd feat(decomp): family-remap gate — +9 fns x0 propagated (fleet 98.8%) 2026-08-29 17:00:34 -06:00
Drew T bfacb2c9c7 feat(decomp): family-remap gate — +3 fns x0 propagated (fleet 98.8%) 2026-08-29 16:59:32 -06:00
Drew T 98593652fd feat(decomp): family-remap-probe gate — +1 fns x0 propagated (fleet 98.8%) 2026-08-29 16:57:07 -06:00
Drew T eba16c9376 feat(t5): Claude wave t5w — 5 banked (sonnet 5/5, opus 0/0); fleet 213 passed, 0 failed of 213 (P31 S62 T5) 2026-08-29 16:54:23 -06:00
Drew T e6e053c801 feat(t5): Claude wave t5y — 5 banked (sonnet 4/5, opus 0/0, +recovery); fleet 213 passed, 0 failed of 213 (P31 S62 T5) 2026-08-29 16:50:41 -06:00
Drew T ee4e630773 feat(t5): Claude wave t5u — 12 banked (sonnet 10/13, opus 2/2, +recovery); fleet 213 passed, 0 failed of 213 (P31 S62 T5) 2026-08-29 16:41:34 -06:00
Drew T d9b222915b feat(t5): Claude wave t5v — 14 banked (sonnet 13/14, opus 1/1, +recovery); fleet 213 passed, 0 failed of 213 (P31 S62 T5) 2026-08-29 16:36:54 -06:00
Drew T 287d25f8f5 feat(packs): MEASURE the prior draft into the pack instead of just handing it over
A pack carrying a previous attempt said only 'the gate did not accept it, so it is wrong somewhere'.
That discards the one datum that decides how the agent spends its budget. Now the builder runs
match_one on that draft and embeds the verdict:

  * near  -> the closeness, the verdict sig, and the residual rows (idx / mine / tgt, capped at 16
             with an honest '... N more'), plus how to READ them: two adjacent rows with the same
             instructions in the opposite order = a SCHEDULE swap; a register-only difference = the
             value came from the wrong place (often the copy, not the pre-copy value); a beqz/bnez
             row = invert the test and swap the arms, constants included.
  * match -> NOT a drafting job. The body is byte-correct in isolation and the gate refused it for an
             INTEGRATION reason, so the pack names the $0 recover_integration --probe-only instead of
             letting an agent burn a wave slot redrafting a correct body. If the probe also says
             MATCH the residual is outside the function (the section-8e JTBL_PADS class).

Measured on the two t5u seeds, which I injected BY HAND this session before automating it:
func_8017F234 = 3 mismatched of 202 (a schedule swap + an "andi" reading the copy instead of the
pre-copy value); func_8017E7E8 = 11 of 66 (inverted branch + a cast written back into the variable
instead of a temp). Told that, an agent edits one use site; told "wrong somewhere", it re-derives 202
instructions.

Cost: one compile per target that HAS a prior draft; --no-residual opts out. Failures are swallowed
into a "(residual not measured: ...)" line — measuring must never break pack generation.

Control: rebuilt t5u's 15 packs into a scratch dir — both seeds gained the block automatically with
the same numbers I measured by hand, and a target with no prior draft is byte-identical to before.
2026-08-29 16:18:27 -06:00
Drew T f84e8272ef docs(phase-31): S65 FINAL checkpoint — 42 banked (t5s 24 + t5t 13 + 5 recovery), 213/213 green, 5 tool defects fixed, the 1x15 cap, my own -P4 corruption + repair, the distill's 2-of-3 refutation, next-4-steps 2026-08-29 16:11:51 -06:00
Drew T 1725d19ecb docs(cookbook): §165-03 addendum (asm-free EQ-channel dial, UNPROVEN) + a §5a FINDABILITY addendum
The t5s/t5t distill returned three 'new lever' claims and the verifier REFUTED two as rediscoveries:
  * func_8017E044's zero-byte __asm__ against reorg's delay-slot steal IS §5a/§34 (+§164-33/§164-36),
    already indexed at cookbook-index.md:22;
  * func_8017C014's ternary-vs-if-chain LICM effect is the loop.c movable gate (REG_N_SETS==1)
    already documented for a recomputed CONSTANT — here firing on a computed loop-invariant EXPR.
Only func_8017EB30's survived, as an ADDENDUM to §165-03 — and the verifier proved it by reading the
target .s itself: the same 279-ins template, same //, as §165-03's byte-proven sibling
func_8017F2D4 in the adjacent overlay. Filed with its UNPROVEN label intact (that draft did not pass
the whole-binary gate — R14/G3).

THE REAL FINDING is the rediscovery rate, so §5a gains a FINDABILITY addendum: the law was there and
the agent could not find it, because the index states the symptom as 'gcc stole an instruction into a
branch delay slot that the target leaves as nop' and what the agent actually SAW was LENGTH-DRIFT/1
at closeness 45, an extra j absent from the target, and a DUPLICATED store — the nop never appeared
in its diff at all. The addendum indexes those three alternate tells. Same shape as S64's §41
addendum: the knowledge base's gap is retrieval, not content.

Index 921 sections, green.
2026-08-29 16:03:12 -06:00
Drew T 2bd4dcf867 feat(decomp): t6-recover gate — +1 fns x0 propagated (fleet 98.8%) 2026-08-29 16:02:53 -06:00
Drew T 83334a6c9e feat(t5): Claude wave t5t — 13 banked of 15 (sonnet 13/14, opus 0/1); fleet 213 passed, 0 failed of 213 (P31 S65 T5)
First wave at the new 1x15 cap (5x plan). Bank rate 13/15 = 87%, against t5s's 24/29 = 83% — halving
the wave did not cost quality. Banked: func_800CAE0C func_800CB028 func_8017C120 func_8017CD9C
func_8017E0FC func_8017EADC func_8017EB34 func_8017EC78 func_80182AFC func_80182C78 func_8018A124
func_8018B698 func_8018B8B0.

Misses: func_801831B4 (71 ins, closeness 10 — a D_801B7A84 reload-scheduling residual the agent
probed 5 structurally distinct ways, byte-identical residual each time) and ov_SC03_023:func_8017BEBC
(246 ins, closeness 45) whose ov_SC03_012 sibling was hand-banked earlier this session — try a family
remap there before spending another wave slot.

R22: verified from a CLEAN rebuild after the ov_MAIN_012 repair (commit:3195).
2026-08-29 15:51:55 -06:00
Drew T 25b72baa8a fix(recover): single-instance lock — the driver is not parallel-safe and now refuses instead of corrupting
Three properties compose into tree corruption under concurrency:
  (a) assert_write_set measures a GLOBAL git status, so a concurrent run's writes read as THIS
      run's blast-radius violation and abort it;
  (b) an abort does NOT restore the stage edits already on disk;
  (c) gate_stage's commit is a deliberately broad 'git add -u src/' — and it must be, since
      propagation touches many overlays and a narrower filename glob once DROPPED four R22-verified
      banks — so a concurrent --commit sweeps the aborted run's half-applied edits into its commit.

Measured today: xargs -P 4 over 33 binaries put 696 broken lines of ov_MAIN_012 into md_MAIN_026's
+1 bank commit; check-all went 212/213 and the wave bank was blocked behind it (R59).

Narrowing the gate's git add was the WRONG fix (it would restore defect (c)'s predecessor). Instead
the driver enforces its own contract: flock on .run/recover/.driver.lock, refuse loudly (R43).
Control: with the lock held -> rc 1 REFUSED; lock free -> rc 0 and the probe runs normally.
2026-08-29 15:51:25 -06:00
Drew T 3e6912f53e fix(repair): un-commit 4 binaries' in-flight stage edits that commit:3193 swept in; ov_MAIN_012 was RED
CAUSE — a gate's commit is a broad 'git add src/', so it is NOT safe under concurrency (R59: a
gate commits only its OWN block). I ran the stranded-draft sweep with xargs -P 4; the blast-radius
guard correctly ABORTED several runs, but abort does not restore the stage edits already on disk,
and a CONCURRENT run's --commit (md_MAIN_026's +1 bank) then swept four other binaries' half-applied
demacroize/tu-scope edits into its commit — 696 lines into ov_MAIN_012, leaving it unbuildable
('parse error before D_80078E50', 'conflicting types for D_80126B58'). check-all went 212/213.

Restored the 4 contaminated files to commit:3193^ content. md_MAIN_026's actual bank is untouched.
Verified: all 5 binaries now build BYTE-IDENTICAL. No banked function was lost — stub counts prove
none of the 4 files carried one (a bank REMOVES a stub).

The recovery driver is NOT parallel-safe: assert_write_set measures a GLOBAL git status, so
concurrent runs see each other's writes. Run it serially until the commit is path-scoped.
2026-08-29 15:50:03 -06:00
Drew T 91e624c041 fix(distill): the novelty selector was inverted, and it could not see the notes worth reading
Two defects in one filter, both measured on the t5s wave (24 banked / 29 transcripts):

1. FALSE POSITIVE. The keyword 'no cookbook lever' matched "MATCH on first compile, no cookbook
   lever needed" — a note reporting a TRIVIAL function — and that was the ONLY selection out of 24,
   while three genuine multi-lever notes went unpicked. A selector whose single hit is the one note
   saying 'nothing to learn here' is inverted, not merely noisy. Keyword removed, NOT_NOVEL guard
   added, and the phrasings agents actually use ('cookbook lacks', 'new lever', 'worth banking',
   'levers not in') added. Same 24-transcript scope now selects func_8017E044 instead.

2. STRUCTURAL BLINDNESS. The distiller only ever considered BANKED functions — but the richest
   idiom notes come from the HARDEST functions, which are the least likely to bank. func_8017EB30
   (279 ins, four levers written up) and func_8017C014 (246 ins, two) both say 'NOT in the cookbook
   and worth banking' and were never candidates. That defeats cookbook §52 — a model that FAILS to
   crack a wall still distills the idiom that cracks its siblings — using the flywheel's own tool.
   New --with-unbanked includes them, each carrying banked=False so the distilling agent knows the
   lever is UNPROVEN by the byte gate (R14/G3).

R39 control: the previously-selected note is no longer selected (it was the false positive) and
nothing legitimately selected was dropped.
2026-08-29 15:22:14 -06:00
Drew T e75f384843 feat(decomp): t6-recover gate — +1 fns x0 propagated (fleet 98.8%) 2026-08-29 13:54:27 -06:00