From 14b115d8ba0dea098a17a2a658f7bce25c616ff5 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Thu, 6 Aug 2026 13:36:34 -0600 Subject: [PATCH] docs(phase-30 S45 II.3): metrics re-baseline + roadmap contract delta + decision-log (R31) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- docs/decision-log.md | 40 +++++++++++++++++++++++++++++++++++++ docs/disc-completeness.md | 23 +++++++++++++++++++++ docs/roadmap-to-100.md | 19 +++++++++++++----- phase-ends/CURRENT_PHASE.md | 10 +++++++++- 4 files changed, 86 insertions(+), 6 deletions(-) diff --git a/docs/decision-log.md b/docs/decision-log.md index 2164b3c77..7c126ecc4 100644 --- a/docs/decision-log.md +++ b/docs/decision-log.md @@ -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. diff --git a/docs/disc-completeness.md b/docs/disc-completeness.md index d4496a2fc..064e04171 100644 --- a/docs/disc-completeness.md +++ b/docs/disc-completeness.md @@ -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 diff --git a/docs/roadmap-to-100.md b/docs/roadmap-to-100.md index ce149ceeb..9610d8699 100644 --- a/docs/roadmap-to-100.md +++ b/docs/roadmap-to-100.md @@ -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). diff --git a/phase-ends/CURRENT_PHASE.md b/phase-ends/CURRENT_PHASE.md index fc06b92f5..efc6aea1f 100644 --- a/phase-ends/CURRENT_PHASE.md +++ b/phase-ends/CURRENT_PHASE.md @@ -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. ---