mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-01 15:43:06 -04:00
2de4ef722a
rollout_o0 hardcoded `<ov>_o0b.c` as the whale object and listed SC07_006/007/010/011 as OUT-OF-SCOPE. They were never out of scope structurally — the suffix letter just drifts: _o0b across the fleet, _o0c in SC07_010, _o0d in SC07_006/007/011. The invariant that actually identifies the object is that it ENDS at the whale and therefore includes shared/func_80144B9C.h. whale_file_of() resolves on that content, and refuses (never guesses) when two -O0 files in one overlay match, or none do. NEGATIVE CONTROL (R39) over the already-succeeding population: across all 134 overlays that bank through the legacy `_o0b.c` path, content resolution returns EXACTLY that file — 134 agree, 0 disagree. The four SC07 overlays resolve to their _o0c/_o0d objects, and overlays with no -O0 object at all (ov_MAIN_012, ov_SC02_037, ov_SC03_107 — the U3 carve group) are still refused with `no-o0b`. Result: func_801457A4 BANKED in all four, each proven by `make build BINARY=<ov>` matching config/check.<ov>.sha. 4 functions / 316 instructions, no splat change, no drafting. Also: build_ok() now takes `.run/auto/gate.<bin>.lock`, the same per-binary lock the gater, sweep_parallel and the maintenance sweep take. This driver was written to be run by hand between waves; with six lanes live, two processes in one build/<ov> tree would produce a verdict about neither.