Files
BFM-decomp/cookbook/C0334.md
T

5.5 KiB
Raw Blame History

§300 — S61 DISTILL BATCH NOTES (waves ab8/ab16/ab24/ab32 · g0a–g0f · m0a · ds1/ds2 · m0b)

Counts, with denominators. 99 candidate notes across 13 files reviewed (MAXTOK arms ab8/ab16/ab24/ab32 = 11, gen0 g0a–g0f = 30, main m0a = 57, DeepSeek ds1 = 1, ds2 = 0 of 42 noted verdicts; m0b filed 0 of 0 — an honest refusal, zero verdict lines after its 29 agents 404'd at the ox shutoff). Dispositions: 52/99 COVERED by §§1–293 (the m0a "nothing new — §X carried it" self-reports are the healthy majority), 15/99 → the 10 ADDENDUM blocks in §294, 29/99 → the 5 new laws §295–§299 (9 kernel-stub cards → §295; 16 fragment cards → §296; 2 → §298; 1 each → §297/§299), 3/99 REFUTED outright, plus 1 refuted DETAIL inside an otherwise-sound card. Every quoted spelling above was re-read from the banked source, not from the agents' notes.

The refutations, each settled against the tree:

  • R1 (g0b, func_80180154): "a zero-insn __asm__ memory clobber blocks a hoist into a PRECEDING delay slot — §45-B lacks that form." The banked body (src/ov_SC02_016/ov_SC02_016_jr_8017DC70.c:4105) contains NO asm barrier — the shipping fix is the m pointer local (the L2425 law); the barrier belongs to a superseded intermediate draft. An attempt-path narration is not a claim about the banked mechanism.
  • R2 (m0a WaitEvent, detail): "maspsx rejects hex inside __asm__ strings — 0xB0 must be 176." Byte-refuted by the SAME TU: TestEvent is banked green with addiu $t2, $zero, 0xB0 (src/800c3.c:85). The real constraint is decimal MEMORY DISPLACEMENTS; §295 fact 3 carries the corrected scope.
  • R3 (ab32, func_80181490): "a short-lived arg-local (a0 = arg0) pins $a0 and frees the jal delay slot — not in the cookbook." The banked body (src/ov_SC05_017/ov_SC05_017_jr_801808D4.c:3521) has NO such local — plain arg0 throughout; the delay-slot fill fell out of statement order, exactly as the ab8 sibling note reported.
  • R4 (ab32, func_800D09A0): four -O0 C-spelling dials ((s16)x & 4 vs (s16)(x & 4), bare-preincrement copy, dead register local, *(s16*)&u16var) claimed for a function that banked as §265 VERBATIM ASM — there is no C artifact in the tree to verify against. Oracle-only; recorded here, not as law. If the §261 _o0 lane ever re-banks md_MAIN_003 as real C, re-harvest.

False-novelty (claimed "not in the cookbook"; the INDEX failed, not the corpus): func_800CD288's frame-pad-by-address-taken-locals (covered 4× — L1833, L2921, §162i1/L11383, L24544; the agent grepped "frame size"/"stack size", the corpus says "frame-pad induction"/ "frame_pad" — grep bait for next time: frame size pad, stack size pad, grow the frame, address-taken pad local); ds1's chained-assignment store order (§145(c)/L9958, word-for-word — its third such rediscovery); func_8019131C's "no section covers giv base selection" (L1800's anchor-steer bullet); the constant-naming claims of func_80018918/func_800348A8 (ADD-7→§229).

DeepSeek vs ox calibration (first two-source campaign). DeepSeek's notes are far TERSER and cite almost no sections — ds1's single note names ZERO cookbook §s where ox notes cite 3–8 each and self-classify. Predicted consequence, observed: more false-novelty per claim (1 of its 3 "the cookbook did NOT document" items was §145(c) verbatim). But its byte-level specifics — the chain direction, the postfix-in-condition, the fresh rand local — were ALL present in the banked code exactly as stated: trustworthy on facts, weak on prior-art. ds2 parsed 51 verdicts, 42 with notes, and filed ZERO novel candidates — either excellent restraint or a filter mis-fire; spot-check that wave's banked functions at the next distill before trusting the zero. ox's systematic failure mode this batch is the mirror image: attempt-path narration presented as the banked mechanism (R1, R3) — always verify the FINAL source, never the story.

Label and citation hygiene for future distills. Atlas lever labels tiny-direct, head-crack, frame-172 are card-tracking strings with NO cookbook section behind them — multiple cards burned a disproving grep each (head-crack was already called bogus at L28955). Agents cite cookbook LINE numbers as §N — this batch: §3047 (=L3047's §263 material), §2425 (=L2425), §14052, §5583; treat any § above ~300 as a line cite. One card misquoted §18 as "match_one is WRONG for -O0 functions" — §18 says no such thing; the auto --o0 oracle is §261's and is trusted, with whole-binary gating still the arbiter as always.

MAXTOK-arm duplication. The four ab tags drafted the SAME 10 functions, so their candidates overlap: func_8017DBA0 was independently cracked 4× (ab16/ab24/ab32/g0f), func_80181E0C 3×, func_801854D0/func_800D09A0/func_80181B68 2× each. The converging derivations cross-confirm §160a/§224/§37 but inflate the raw candidate count; a distill after any A/B test should expect one crack per arm and de-duplicate before counting.

Procedural keepers, not worth sections: the -O0 store-census size oracle (nstores × 3 + 11 for a pure field-init body — func_800D0964 predicted 158/158 before compiling); "diff-count ≠ defect-count" (func_801879B0: ONE arity defect manifested as 2 mismatched instructions); read the raw STORE OFFSETS before believing a scheduling story (func_80188620's off-by-one slot numbering was indistinguishable from a schedule residual until the offsets were diffed).