Files
BFM-decomp/tools
Drew T 6f3441d261 fix(phase-26): 10% of the canonical-callee oracle was silently missing (own-line-brace DEFINE macros)
- BUG: gen_harvest_targets.SIG_IN_BODY_RE required `)\s*{` between a DEFINE_func_* macro's signature
  and its opening brace. When the brace sits on its OWN continuation line there is a line-continuation
  BACKSLASH between them:
        s32 func_80148824(void *arg0) \
        { \
  and `\s` does not match `\`. So the regex silently dropped every own-line-brace macro.

- BLAST RADIUS (measured): 186 of 1801 engine_core.h shared signatures — 10% of the oracle — were
  MISSING from the canonical-callee map that cast_call_sites / sig_unify / gen_harvest_targets resolve
  against. A draft calling one of them kept its own guessed signature, hit `conflicting types` against
  the TU's real definition, and the recovery pass reported nothing to fix — the failure looked like a
  hard wall. This is why the crack wave's byte-exact cores would not bank.

- FIX: `[\s\\]*` instead of `\s*`. Oracle 2122 -> 2308 entries.

- PROOF: func_8015A3C8 (493 ins, MATCH standalone) went from "28 conflicting types, unbankable" to
  BANKED ×1 BYTE-IDENTICAL at the `recovered` stage, with zero hand edits. R22 clean-fleet 136/136.

- This is the phase's SIXTH silent-skip bug and the THIRD of the same brace-placement class (§19
  find_site; scope_data_externs' own-line brace; now this). Cookbook §40's standing lesson applies:
  a tool that silently no-ops on input it cannot parse is indistinguishable from one that had nothing
  to do — prefer fail-loud on unparsed input.
2026-07-14 00:08:59 -06:00
..