docs(phase-30 S45 II.3): metrics re-baseline + roadmap contract delta + decision-log (R31)

- roadmap §1.1: 183 onboarded binaries; the 100% claim's exclusion list = the 34-row
  parked-for-L3 ledger (28 script + SC02/9 + MAIN/7/9 + SC03/53/54/56 — 3 rows S44 never
  tiered); supersedes the '39 type-1 backlog' framing (43 of them now build byte-identical)
- disc-completeness.md S45 section: what landed, the full parked list, the L3 resolution path
- decision-log: the S45 entry — five instrument findings a 'mechanical' batch surfaced, each
  negative-control-proven; honest baseline 94.0% instr / 95.96% fn / 87.6% distinct over 183
This commit is contained in:
Drew T
2026-08-06 13:36:34 -06:00
parent a0f07d629e
commit 14b115d8ba
4 changed files with 86 additions and 6 deletions
+40
View File
@@ -2239,3 +2239,43 @@ re-measure before letting it gate a campaign (the §146/§147 lesson at doctrine
**Hindsight better path.** When Phase 3 T5 wrote "entries [1]+ are runtime-indexed (no static xref)",
the honest follow-up was a named open question ("WHERE do the indices live?") rather than a doctrine.
The answer was one grep away once the resident was matched in Phase 12.
## 2026-08-06 (P30 S45) — Part II lands: the module fleet onboards emulator-free; the denominator is now partition-complete minus a 34-row parked ledger
**Context/belief.** S44's Part I proved the campaign shape on the big 3; Part II was checkpointed as
"mechanical" — onboard the 35 small MAIN modules + the SC07 pair, dedup, verify, retire the
superseded tools, re-baseline.
**What happened (byte-verified).** All 40 modules (38 MAIN + SC07 pair) built **byte-identical on
their FIRST build** at the §S44 static addresses — zero parked, byte-corroborating the loader table
across all four slots (A/B/boot/SC07). The dedup measure came in exactly as predicted (LOW): 69/1,113
module fns h_exact-match matched corpus code; the scoped `family_sweep --hseq` banked **408 members**
(182 into modules, 226 into the big 3 — families Part I's `--only` scoping missed). R22 183/183;
`audit-disc` UNCLAIMED 75→34 at residue 0.
**What the checkpoint's "mechanical" hid (the session's real work — five instrument findings).**
(1) A module header can carry a function's JUMP TABLE → the hdr carve must be a dot-typed `.rodata`
PAIRED with the c segment (standalone rodata emits cross-object `.L` refs; `bin` links in the data
block). (2) The A4 symbol-window law bit again: `symbols.resident.txt` in the boot trio's stacks
minted a phantom `DsMix` function inside md_MAIN_011. (3) `family_sweep --hseq`'s stub map globbed
`sig.ov_*` only — every module member silently "not-stub" (the I.1d widening class; the tool sat on
the audit's "auto-OK" list). (4) `--bootstrap` sig boundaries GLUE adjacent functions around
jtbl-dispatch code — 24 false TRUNCATED slices; `sig-modules` now seeds from the built ELF's
`func_*` symbols. (5) `corpus.audit` counted jtbl `.word` lines as instructions and `progress.py`
left `INCLUDE_RODATA` symbols unbucketed — both R32 holes the new module layout exposed. Every fix
carries a negative control.
**The pivot/state.** The completion contract's denominator is now **183 onboarded binaries + a
34-row parked-for-L3 ledger** (28 script modules + SC02/9 + MAIN/7/9 + **SC03/53/54/56** — three
rows the S44 exploration never tiered, found by the audit's arithmetic refusing to close). Honest
baseline: **94.0% instr / 95.96% fn-count / 87.6% distinct** on the grown denominator (was 94.4%
instr over 143 binaries — the headline fell because the game grew, the honest direction). The ~931
module stubs + ~1,700 big-3 novel stubs are ordinary crack-wave frontier; L3 shrinks to a bounded
runtime-confirm pass (P31 bucket T).
**Hindsight.** "Mechanical" batches over a NEW binary layout are where instrument blind spots
surface — the five findings above were all invisible until 40 same-shaped binaries went through the
pipeline in one afternoon. The S44 plan's per-tool audit was right to exist and still under-reached
(family_sweep was "auto-OK"; the plan's "zero build refs" for the retirees was wrong for 3 of 7).
The discipline that worked: R37 probe-first (one module before 29), negative controls per fix, and
the R22/audit ladder after every batch.
+23
View File
@@ -81,6 +81,29 @@ The contract's binary count is **no longer "136"**. Two corrections:
mostly-unmatched code to the denominator; every "×134" family propagation is now "×138"). That is the
honest direction — the prior number was measured over an incomplete disc.
## S45 (2026-08-06): the module campaign landed — the residue IS the parked-for-L3 ledger
**43 of the 78 unclaimed payloads now build byte-identical** (P30 S44/S45): the 3 uncompressed
overlays (`ov_MAIN_012`, `ov_SC02_037`, `ov_SC03_107`) + the 38 MAIN modules (slot A
`md_MAIN_013…041` @0x800CAE08 · slot B `md_MAIN_042…047` @0x800CCB1C · boot trio `md_MAIN_001`
[≡MAIN/0, stored twice] / `md_MAIN_008` / `md_MAIN_011` @0x800CEDF8) + the SC07 pair
(`md_SC07_003/004` @0x801A00D8) — every address static-derived (§S44 loader table,
`docs/memory-map.md`) and byte-corroborated by a first-build byte-identity. Fleet = **183
binaries**, `make audit-disc` residue 0.
**The remaining UNCLAIMED = 34 payloads = the parked-for-L3 exclusion list** (the 100% claim
cites exactly this list, roadmap §1.1):
- the **28 SC0x script modules** (SC03/73–79, SC03/132–138, SC04/24–30, SC05/23–29 = 7 modules ×
4 per-disc builds) — bases loader-determined per-disc via the resourceIdMap/DESTPTR path;
- **SC02/9** (70,784 B), **MAIN/7** (raw file, not PAC), **MAIN/9**;
- **SC03/53, SC03/54, SC03/56** (6,616 / 8,220 / 3,680 B) — *added S45:* three SC-disc type-1
rows the S44 exploration never tiered; same per-disc runtime-routing class as SC02/9. Their
jal-vote bases are low-confidence; onboarding on a guess would be P9 theater.
Resolution path: the **L3 emulator tour** (P31 bucket T) logs every load (payload → RAM addr →
len), delivering the 34 bases + R34-verification of the static addresses + evidence for any
never-loaded payload's out-of-scope call.
## Reproduce
> **⚠️ S45: `tools/disc_code_sweep.py` is RETIRED (R33)** — superseded by `make audit-disc`
> (`tools/disc_audit.py`): whole-payload classification at BOTH the raw and LZSS layers, a
+14 -5
View File
@@ -40,11 +40,20 @@
**Target: GAME-CODE TRUE 100%**, mechanically defined:
1. After SDK objects are LINKED, **zero `INCLUDE_ASM` and zero linked `NON_MATCHING` under
`src/`** across **all onboarded code-bearing binaries**. *Corrected count:* **140 onboarded
today** (main + resident + 138 overlays; P27 disc-completeness audit + the P28 R36 gate)
**plus a documented backlog of 39 type-1 code modules** pending load-address RE
(`docs/disc-completeness.md`). 100% is only claimable once the 39 are onboarded-and-matched
or explicitly excluded with evidence — the byte-gate cannot see them (R34).
`src/`** across **all onboarded code-bearing binaries**. *Corrected count (P30 S44/S45):*
**183 onboarded today** — main + resident + 141 overlays (138 type-4 + the 3 uncompressed
type-1 overlays ov_MAIN_012/ov_SC02_037/ov_SC03_107) + **40 md_* modules** at their §S44
static slots (`docs/memory-map.md`; every one byte-identical on its FIRST build at the
derived address). **The explicit exclusion list the 100% claim cites is the parked-for-L3
ledger: 34 payloads** (`make audit-disc` → `docs/disc-ledger.md` UNCLAIMED; detailed in
`docs/disc-completeness.md`) — the 28 SC0x script modules (7 × 4 per-disc builds), SC02/9,
MAIN/7, MAIN/9, **and SC03/53, SC03/54, SC03/56** (S45: three SC-disc type-1 rows the S44
exploration never tiered — same per-disc runtime routing class as SC02/9). Their bases are
loader-determined per-disc, not EXE-static; guessing one would be P9 theater. 100% is only
claimable once these 34 are onboarded-and-matched (post-L3 emulator tour, P31 bucket T) or
remain explicitly excluded with this evidence — the byte-gate cannot see them (R34).
*(The prior "39 type-1 backlog" framing is superseded: 43 of those payloads now build
byte-identical as md_*/ov_* binaries; the residue is exactly the 34-row parked ledger.)*
2. Every binary **byte-identical from a genuinely clean tree** (R22: `make clean` +
extract-all + `check-all`), and byte-identical **with AND without** the SDK objects
(the fresh-clone stub fallback invariant).
+9 -1
View File
@@ -234,7 +234,15 @@ stub on a named wall/behemoth/queue ledger** — 140/140 byte-identical througho
gate re-proven green). SETUP §6.7 gained the **module-class recipe** (TEXT_LO derivation law,
paired-.rodata header carve, A4 symbol-window law, ELF-seeded sig-modules) + inventory rows
(R21); disc-completeness Reproduce marked retired; Makefile comments annotated.
- **II.3** (metrics re-baseline + roadmap delta + decision-log) — next.
- **II.3 ✅ — metrics re-baseline + roadmap delta + decision-log.** Roadmap §1.1 contract
corrected: **183 onboarded binaries**; the 100% claim's explicit exclusion list = the
**34-row parked-for-L3 ledger** (28 script + SC02/9 + MAIN/7/9 + SC03/53/54/56), superseding
the "39 type-1 backlog" framing. disc-completeness.md gained the S45 section (what landed +
the full parked list + the L3 resolution path). Decision-log R31 entry written (the five
instrument findings + the hindsight). Digests already re-baselined in II.1c (audit-digest
green: 94.0% instr / 95.96% fn / 87.6% distinct over 183).
- **Next:** II.4 (L3 emulator tour) is **P31 bucket T** — not this session. II.5 (the novel-fn
frontier: ~931 module stubs + big-3 novel) is standard crack-wave work.
---