Files
BFM-decomp/tools
Drew T e86e45320a chore(phase-30 S45p9): session close — 32-way parallel gate in dedup_propagate; banking deferred on a tool bug
PARALLEL GATE (landed, verdict-proven): dedup_propagate's byte-gate loop was serial --
one `make build BINARY=<ov>` at a time over up to 141 members per function. Measured: a
propagation ran 95 minutes at load 1.6 on a 32-core box (~5% utilisation). The Makefile
has parallelised extract-all/check-all since Phase 26 (xargs -P$(JOBS)), but this tool
predates that and drives the SINGLE-binary target from Python, so it never saw any of it.
  - new gate_all(): ThreadPoolExecutor over distinct overlays, 32-way by default (JOBS env
    overrides; deliberately NOT capped at the Makefile's conservative 16).
  - SAFE by the same argument check-all relies on: byte_gate only runs `make build`, writing
    solely to per-binary-disjoint build/<bin>/**; it mutates no source. Splice happens before,
    restore after -- only the VERIFICATION is parallel.
  - DETERMINISTIC: ThreadPoolExecutor.map preserves order, so the reported first failure is
    the first in `changed` order -- identical verdict to the serial loop. Control run: same
    verdict on a clean tree.
  - Measured and NOT optimised: setup (sig load + registered_addrs) is 8.6s of a 5,700s run
    = 0.15%. All the time is gating. Don't thread the setup.

BANKING DEFERRED on a genuine pre-existing tool bug (NOT the parallel change -- 0 gate
batches ran, it never reached that code):
  [FAIL] ov_MAIN_012: 0x80156600 not instantiated -- REVERTED
  Inputs verified sound at HEAD (in sig, find_site->stub, stub line matches), so the bug is
  in apply_plan's multi-function edit path. Run #1 missed it because it launched before the
  15 wave-3 banks were committed; they landed mid-flight, enlarging run #2's plan.
  SECOND DEFECT: the failure exit printed REVERTED but left 38 files dirty incl.
  src/shared/engine_core.h -- the same incomplete-restore class as the reconcile-ledger bug
  (cookbook 156), on a different path. struct_check needs the same ledger treatment.

Not patching the fleet-shared writer at the end of a marathon session -- that is how the
next 141-binary incident happens. Tree clean, 44 banks safe, propagation is pure
multiplication and can run any time.

Checkpoint p9 carries: the fix-then-resume plan, the master-IDXTAB-map design (DESTPTR half
proven 14/14), wave guidance, and an 8-item error ledger with its single root cause.
2026-08-07 21:08:25 -06:00
..