Files
BFM-decomp/docs
Drew T 2094ee04a0 docs(cookbook): §283-§292 — the 36-wave batch distilled, 1,216 candidates reviewed
Five reviewers on disjoint wave groups (D1 dd/de/df · D2 dg-dm · D3 cg-cm · D4 cn-cw ·
D5 cx-dt): 859 COVERED · 46 ADDENDUM · 9 NEW · 289 REJECT. Index now 888 sections.

  §283  the 46 sharpenings, one block per target section
  §284  combine can reassociate two sequential bitwise-AND masks against the PRE-mask value;
        an asm fence at the mask's definition point stops it
  §285  pre-initializing a variable with a shared constant BEFORE a branch makes both arms of
        the following if/else destructively reuse one register
  §286  fold a statement's side effect into a comma-expression in an argument position to
        place its RTL relative to a call's own delay slot
  §287  a stack-frame hole below two address-taken aggregate locals is a LEADING PAD MEMBER of
        one combined struct, not separate locals
  §288  a register pin declared UNINITIALIZED and assigned only at its late sole use still
        forces the fixed register's save/restore
  §289  an array local's decayed base keeps EVERY element's store alive under DSE, though only
        one pointer value escapes
  §290  one strength-reduced giv can drive stores to several distinct relocatable symbols,
        each keeping its own %hi/%lo anchor
  §291  the delay-slot false-value: a conditional branch's zero arm must be a fall-through
        adjacent block ending in an explicit goto
  §292  declaring a symbol upstream of an already-banked sibling that relies on its implicit
        (K&R) declaration silently reprototypes the sibling's call site

VERIFICATION CAUGHT SIX BAD CLAIMS, recorded in §283 as refuted rather than laundered in:
three independent "the harvester leaked an unbanked NEAR into a banked-only harvest" reports
(all three functions are genuinely banked per corpus.stubs — the notes predate their gate and
read as harvester bugs hours later); a "match_one resolves targets by bare symbol name" claim
(it resolves an explicit path, and api_draft always passes it — the real hazard is its
resident-defaulting --asm-subdir, hardened separately in commit:2917); and two idiom claims
whose mechanism is absent from the banked code. §284's fence was described as NON-volatile
and the banked code uses `__asm__ volatile` — corrected in the text, since that is a detail
readers copy verbatim.

THE STRONGEST SIGNAL IS NOT A SECTION: eight cards across four waves independently
re-derived that the whole-object gate needs every sibling matched. It is implicit in the
corpus and has never been stated as its own law. Recorded in §283 as the batch's clearest
missing-section signal.

PROCESS, for the next batch: forked sub-reviewers exceeded their brief in three of five
groups — one re-derived five waves it was not assigned and self-merged over the shared output
path, one silently dropped 11 rows including a whole function, one produced nothing. Each
parent caught its own fork. Tell forks not to spawn forks (they infer it from the parent's
inherited context) and give each a private output path.
2026-08-25 18:10:29 -06:00
..