diff --git a/.run/P35/census/share_census.json b/.run/P35/census/share_census.json index 3b99ea21a8..448988b735 100644 --- a/.run/P35/census/share_census.json +++ b/.run/P35/census/share_census.json @@ -31,7 +31,7 @@ }, "duplicate_text_classes": 6392, "duplicate_text_sites": 17764, - "elapsed_s": 23.8, + "elapsed_s": 36.8, "flags": { "ALIAS": 17, "E": 3826, diff --git a/.run/P35/census/share_census.txt b/.run/P35/census/share_census.txt index c8c533dd32..b2b42a7481 100644 --- a/.run/P35/census/share_census.txt +++ b/.run/P35/census/share_census.txt @@ -37,4 +37,4 @@ share_census: 218 binaries · 362,389 sig instances · 362,389 classified · 0 U B E,F 11852 x 2 0x80014554,0x8001455C,0x8001513C func_80014554,func_8001455c A - 141 x 167 0x80163C2C func_80163c2c A - 141 x 165 0x80178004 func_80178004 - macro sites 0 · duplicate-text classes 6,392 (17,764 sites) · elapsed 23.8 s + macro sites 0 · duplicate-text classes 6,392 (17,764 sites) · elapsed 36.8 s diff --git a/.run/P36/census/lever_census.json b/.run/P36/census/lever_census.json index c337d20097..d3b15c62fb 100644 --- a/.run/P36/census/lever_census.json +++ b/.run/P36/census/lever_census.json @@ -5,7 +5,6 @@ "gte_mnemonics": { "gte_SetRotMatrix": 253, "gte_SetTransMatrix": 231, - "gte_avsz3": 25, "gte_avsz4": 65, "gte_dpcl": 134, "gte_ldclmv": 78, @@ -13,6 +12,7 @@ "gte_ldv0": 768, "gte_ldv3": 186, "gte_ldv3c": 184, + "gte_nccs": 25, "gte_nclip": 108, "gte_rtir": 81, "gte_rtps": 448, @@ -71,11 +71,17 @@ "cfake_markers": { "count": 53, "sample": [ + "src/800.c:12543", + "src/800_b_2.c:2948", + "src/800_b_2.c:2965", + "src/800_b_2.c:3087", "src/md_SC07_003/md_SC07_003.c:3577", + "src/md_SC07_004/md_SC07_004.c:280", "src/ov_SC01_000/ov_SC01_000_jr_8017BEBC.c:3564", "src/ov_SC01_009/ov_SC01_009_jr_8017E590.c:4265", "src/ov_SC01_077/ov_SC01_077_jr_80183CF4.c:3973", "src/ov_SC01_080/ov_SC01_080_jr_8017AE2C.c:5172", + "src/ov_SC02_011/ov_SC02_011_jr_80183178.c:2138", "src/ov_SC02_027/ov_SC02_027_jr_8017D898.c:4521", "src/ov_SC02_027/ov_SC02_027_jr_8017D898.c:8363", "src/ov_SC02_028/ov_SC02_028_jr_8017D898.c:5455", @@ -104,13 +110,7 @@ "src/ov_SC05_018/ov_SC05_018_jr_8017D604.c:4936", "src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c:8438", "src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c:8478", - "src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c:8805", - "src/ov_SC06_018/ov_SC06_018_jr_80187AEC.c:3118", - "src/ov_SC06_018/ov_SC06_018_jr_80187AEC.c:5366", - "src/ov_SC06_020/ov_SC06_020_jr_80180B04.c:3708", - "src/ov_SC06_022/ov_SC06_022_jr_80184A28.c:3744", - "src/ov_SC06_024/ov_SC06_024_jr_80186F00.c:3765", - "src/ov_SC06_024/ov_SC06_024_jr_80186F00.c:5407" + "src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c:8805" ] }, "classes": { @@ -280,8 +280,8 @@ } }, "coverage_ok": true, - "elapsed_s": 29.5, - "generated": "2026-09-12", + "elapsed_s": 36.7, + "generated": "2026-09-29", "gte_levers": { "direct": 356, "marked": 450, @@ -291,7 +291,7 @@ "via_macro": 94, "what": "GTE ops whose clobbers exceed the canonical macro's (a scheduling steer): class-B levers INSIDE the headline number since T5 (2026-09-09), marked, 0 at the close" }, - "head": "bd7d32ec2", + "head": "465d915bd", "headers": 3181, "levers_AB": { "asm": 1862, diff --git a/.run/P36/census/lever_census.txt b/.run/P36/census/lever_census.txt index da78c86595..b91edb694c 100644 --- a/.run/P36/census/lever_census.txt +++ b/.run/P36/census/lever_census.txt @@ -6,13 +6,13 @@ lever_census: 218 binaries · 4,121 TUs + 3,181 headers · coverage OK · unclas coverage attribute raw 76 = live 76 + macro-block 0 + comment/dead 0 class sites in-bodies file-scope bodies distinct TUs marked unmarked kinds A pins 1868 1868 0 1182 479 942 1868 0 {'pin': 1868} - B asm 11261 11248 13 4587 654 1425 2346 8915 {'barrier': 240, 'launder': 613, 'keepalive': 323, 'gte-lever': 450, 'gte': 6447, 'asm-body': 13, 'instruction': 223, 'verbatim-body': 2682, 'gte-unsigned': 270} - C volatile 1589 1437 152 495 94 609 14 1575 {'cast': 1377, 'decl-body': 58, 'decl-file': 152, 'param': 2} + B asm 11261 11248 13 4587 654 1425 2346 8915 {'gte': 6447, 'gte-lever': 450, 'gte-unsigned': 270, 'barrier': 240, 'launder': 613, 'instruction': 223, 'asm-body': 13, 'keepalive': 323, 'verbatim-body': 2682} + C volatile 1589 1437 152 495 94 609 14 1575 {'decl-body': 58, 'decl-file': 152, 'cast': 1377, 'param': 2} D register 50 50 0 47 47 6 0 50 {'register': 50} E asm-label 5996 902 5094 734 131 2013 0 5996 {'asm-label': 5996} F builtin 302 302 0 285 24 285 0 302 {'builtin': 302} G attribute 76 1 75 1 1 40 0 76 {'attribute': 76} - UNION A–D: 5,604 bodies · 995 distinct (addresses normalized) · 112 multi-copy classes holding 4,721 bodies · by kind {'ov': 5215, 'shared': 158, 'main': 120, 'md': 105, 'resident': 6} + UNION A–D: 5,604 bodies · 995 distinct (addresses normalized) · 112 multi-copy classes holding 4,721 bodies · by kind {'ov': 5215, 'md': 105, 'shared': 158, 'main': 120, 'resident': 6} THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 3,730 sites in 1,838 bodies (662 distinct) · marked !FAKE 3,730 · UNMARKED 0 orphan !FAKE markers (no pin/asm site on the line nor below): 0 marked ordinary-C fakes kept by Drew's S104 ruling (a) (`do { } while (0)`, dead initialisers; NOT levers): 53 @@ -21,12 +21,12 @@ lever_census: 218 binaries · 4,121 TUs + 3,181 headers · coverage OK · unclas pins: 1,868 · $0 54 · $sp 0 · with initializer 201 · volatile-qualified 0 · bare-name 6 · spellings {'__asm__': 1847, 'asm': 21} whole-body asm routines in C shells, manifest PERMANENT (hand asm, NOT levers): 22 routines · 2,682 sites (2,660 private copies + 22 shared headers); asm-bodies NOT permanent (levers): 13 site(s) ['func_8001E378:DECOMPILE-NOW', 'func_80020F34:DECOMPILE-NOW', 'func_800249F0:DECOMPILE-NOW', 'func_80025CBC:DECOMPILE-NOW', 'func_80026514:UNCERTAIN', 'func_800268D0:UNCERTAIN', 'func_80027058:DECOMPILE-NOW', 'func_80027200:DECOMPILE-NOW', 'func_800CBA44:DECOMPILE-NOW', 'func_8017D810:DECOMPILE-NOW', 'func_8017E26C:UNCERTAIN', 'func_80184440:DECOMPILE-NOW', 'func_801A3BCC:DECOMPILE-NOW'] asm kinds: {'asm-body/direct': 13, 'barrier/direct': 240, 'gte/direct': 197, 'gte/via-macro': 6250, 'gte-lever/direct': 356, 'gte-lever/via-macro': 94, 'gte-unsigned/direct': 270, 'instruction/direct': 201, 'instruction/via-macro': 22, 'keepalive/direct': 323, 'launder/direct': 580, 'launder/via-macro': 33, 'verbatim-body/direct': 2682} - instruction mnemonics: {'la': 136, 'addiu': 22, 'RTP_SND': 22, 'addu': 21, '.section': 7, 'lui': 3, 'lh': 3, 'and': 2, 'li': 1, 'lw': 1, 'nop': 1, 'srl': 1, 'mult': 1, 'mfhi': 1, 'sll': 1} - gte mnemonics: {'gte_ldv0': 768, 'gte_stlvnl': 593, 'gte_stsxy': 457, 'gte_rtps': 448, 'gte_stflg': 433, 'gte_rtpt': 361, 'gte_SetRotMatrix': 253, 'gte_stsxy3': 245, 'gte_SetTransMatrix': 231, 'gte_rtv0tr': 229, 'gte_ldv3': 186, 'gte_ldv3c': 184, 'gte_stsv': 161, 'lwc2': 158, 'gte_stsz4': 149, 'gte_stsz3': 147, 'gte_stszotz': 134, 'gte_dpcl': 134, 'gte_stclmv': 114, 'gte_stsxy3_f3': 111, 'gte_nclip': 108, 'gte_stopz': 108, 'gte_stsxy3c': 108, 'gte_rtir': 81, 'gte_stsxy3_ft3': 79, 'gte_ldclmv': 78, 'gte_avsz4': 65, 'gte_stotz': 61, 'gte_ldrgb': 30, 'gte_avsz3': 25} + instruction mnemonics: {'la': 136, 'addiu': 22, 'RTP_SND': 22, 'addu': 21, '.section': 7, 'lui': 3, 'lh': 3, 'and': 2, 'mult': 1, 'mfhi': 1, 'sll': 1, 'li': 1, 'lw': 1, 'nop': 1, 'srl': 1} + gte mnemonics: {'gte_ldv0': 768, 'gte_stlvnl': 593, 'gte_stsxy': 457, 'gte_rtps': 448, 'gte_stflg': 433, 'gte_rtpt': 361, 'gte_SetRotMatrix': 253, 'gte_stsxy3': 245, 'gte_SetTransMatrix': 231, 'gte_rtv0tr': 229, 'gte_ldv3': 186, 'gte_ldv3c': 184, 'gte_stsv': 161, 'lwc2': 158, 'gte_stsz4': 149, 'gte_stsz3': 147, 'gte_stszotz': 134, 'gte_dpcl': 134, 'gte_stclmv': 114, 'gte_stsxy3_f3': 111, 'gte_nclip': 108, 'gte_stopz': 108, 'gte_stsxy3c': 108, 'gte_rtir': 81, 'gte_stsxy3_ft3': 79, 'gte_ldclmv': 78, 'gte_avsz4': 65, 'gte_stotz': 61, 'gte_ldrgb': 30, 'gte_nccs': 25} asm-bearing macro definitions: 314 (20 names, 3 with >1 text) kinds {'gte': 150, 'launder': 154, 'instruction': 9, 'barrier': 1} controls (R39): src/800.c func_800226C0 pins got 14 expected 14 OK src/shared/ov/func_80178004.h pins got 8 expected 8 OK ov_SC03_006 func_801896EC bare-name pins got 2 expected 2 OK engine_prelude.h asm sites (a macro definition only) got 0 expected 0 OK - elapsed 29.5 s + elapsed 36.7 s diff --git a/README.md b/README.md index 9774e97542..52e1157487 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ originals; nothing "functionally equivalent" counts. What the repository claims One source per unique function (Phase 35): 102,998 function bodies written once in C (3,173 of them shared headers instantiated 262,590 times); 143 duplicate copies remain in 45 ledgered classes (declaration conflicts left for the types phase); 38 functions whose bytes vary per binary share one text through the text tier (2,030 sites); 1,668 same-address copies of 381 tiny bodies inside the cross-address classes are deferred to the names phase. -Levers off (Phase 36, snapshot 2026-09-12): 1,868 register pins and 1,862 asm statements remain in 1,838 functions (662 distinct bodies), 3,730 of them marked `// !FAKE:`; 1,589 volatile qualifiers and 50 bare `register` keywords are censused; 6,447 GTE coprocessor operations and 22 whole-body assembly routines kept inside C shells (2,682 sites; the original's scratchpad stack-switch trampolines, one copy per overlay, listed in the verbatim manifest) are not levers and are excluded. +Levers off (Phase 36, snapshot 2026-09-29): 1,868 register pins and 1,862 asm statements remain in 1,838 functions (662 distinct bodies), 3,730 of them marked `// !FAKE:`; 1,589 volatile qualifiers and 50 bare `register` keywords are censused; 6,447 GTE coprocessor operations and 22 whole-body assembly routines kept inside C shells (2,682 sites; the original's scratchpad stack-switch trampolines, one copy per overlay, listed in the verbatim manifest) are not levers and are excluded. Types (Phase 37, snapshot 2026-09-13): 502,985 raw pointer-cast dereferences remain in 69,493 functions (four forms; 36,681 typed cast-member accesses and 18,888 address-of casts counted apart); 7,255 struct definitions (1,179 in the canonical header, 5,989 inside `.c` files) over 527 distinct layouts, 206 duplicate classes covering 2,823 names; 1,796 call declarations narrower than their callee's definition over 76 callees; the struct map clusters the cast sites into 18,213 types by evidence (99.2 % of sites assigned). diff --git a/docs/progress.fleet.md b/docs/progress.fleet.md index 4f2ad36fe4..711abcbed3 100644 --- a/docs/progress.fleet.md +++ b/docs/progress.fleet.md @@ -7,7 +7,7 @@ FLEET fn-count byte-ident: 363680 / 363680 = 100.00% (REAL+LINKED+empties; FUNCTION-count, ×134-inflated — one crack counts per overlay) FLEET instr-weighted : 13492113 / 13492113 = 100.0% (shipped .text across main + resident + 216 overlays; the decomp.dev-DISPLAY number) FLEET distinct-code(uniq): 5820205 / 5820205 = 100.0% (90984/90984 unique fns; the DISTINCT-RE number) -MAIN game-code weighted : 45150 / 45150 = 100.0% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; build-derived sig (make sig-main) dated 2026-09-11; boundaries INDEPENDENTLY VERIFIED since P31 S77 — `make sig-main-oracle` + `make audit-corpus`: 0 phantom, 0 truncated, 0 pad-tail) +MAIN game-code weighted : 45150 / 45150 = 100.0% (INCLUDED in the fleet numbers above since 2026-07-22 — roadmap §1 metrics contract; build-derived sig (make sig-main) dated 2026-09-29; boundaries INDEPENDENTLY VERIFIED since P31 S77 — `make sig-main-oracle` + `make audit-corpus`: 0 phantom, 0 truncated, 0 pad-tail) (fleet EXCLUDING main, for continuity with pre-2026-07-22 readings: 13446963 / 13446963 = 100.0%) FLEET REAL substantive : 350533 (of which dedup-shared 251920 via 3173 groups / 262590 instances) diff --git a/docs/progress.json b/docs/progress.json index 13d203dba4..d794f27201 100644 --- a/docs/progress.json +++ b/docs/progress.json @@ -49,7 +49,7 @@ "deferred_same_address_texts": 381, "deferred_same_address_copies": 1668, "levers": { - "date": "2026-09-12", + "date": "2026-09-29", "what": "compiler-forcing constructs left in the C: register pins + asm statements (the classes Phase 36 drives to 0; GTE coprocessor ops and whole-body hand-asm routines excluded), with the volatile/register qualifiers censused", "sites": 3730, "pins": 1868, diff --git a/docs/progress.md b/docs/progress.md index 93b3230068..e7c849de74 100644 --- a/docs/progress.md +++ b/docs/progress.md @@ -18,3 +18,5 @@ REAL matches: CdQueueBusy CdReadRequest CdReadSectorReadyCB CdReadStateMachine D NON_MATCHING: build SHA1: 143dbb89f34491258bbc27810d0a12ec8b43a8dd (byte-identical) + +empties audit: 43/43 genuine jr;nop (all clean) diff --git a/docs/story-timeline.md b/docs/story-timeline.md index db9215241c..922cc9ca8e 100644 --- a/docs/story-timeline.md +++ b/docs/story-timeline.md @@ -98,6 +98,6 @@ | 2026-09-09 | 64 | | 218 | 100.0% | 100.0% | 100.0% | 100.0% | 0 | — | 30,358 | — | | 2026-09-10 | 146 | | 218 | 100.0% | 100.0% | 100.0% | 100.0% | 0 | — | 4,603 | 414,148 | | 2026-09-11 | 371 | P36 (v2.2.0) | 218 | 100.0% | 100.0% | 100.0% | 100.0% | 0 | — | 4,010 | 503,016 | -| 2026-09-12 | 100 | | 218 | 100.0% | 100.0% | 100.0% | 100.0% | 0 | 789 / 2091 | 3,730 | 503,013 | +| 2026-09-12 | 111 | | 218 | 100.0% | 100.0% | 100.0% | 100.0% | 0 | 789 / 2091 | 3,730 | 502,985 | -78 dated rows · phase ticks from the 37 PhaseEnds · the chart: `docs/story-timeline.svg`. +78 dated rows · phase ticks from the 38 PhaseEnds · the chart: `docs/story-timeline.svg`. diff --git a/docs/story-timeline.svg b/docs/story-timeline.svg index 2f0af0aafa..95e26a8b7e 100644 --- a/docs/story-timeline.svg +++ b/docs/story-timeline.svg @@ -63,26 +63,26 @@ 75% 100% the census (T1) -mechanical strip — rung A/B (T4) -the GTE header (T5) -recipes + permuter — rungs R/D (T6) -the guided search — rung G (S101) -agents, one per class + the call-arity class (S102) -agents, TU batches + regen (S103) -agents, TU batches (S104) -S105 -P36 -P37 +mechanical strip — rung A/B (T4) +the GTE header (T5) +recipes + permuter — rungs R/D (T6) +the guided search — rung G (S101) +agents, one per class + the call-arity class (S102) +agents, TU batches + regen (S103) +agents, TU batches (S104) +agents, TU batches (S105) +P36 +P37 09-09 -09-10 -09-11 -09-12 - +09-10 +09-11 +09-12 + 3,730 -register pins + asm statements (the lever series, 96 increments): 53,221 → 3,730 - +register pins + asm statements (the lever series, 97 increments): 53,221 → 3,730 + raw pointer-cast dereferences — the one-form regex count (until the census, 2026-09-12): 414,148 → 411,850 - -raw pointer-cast dereferences — the four-form census (2026-09-12 →; a new instrument, its own 100 %): 503,016 → 503,013 + +raw pointer-cast dereferences — the four-form census (2026-09-12 →; a new instrument, its own 100 %): 503,016 → 502,985 generated by tools/timeline.py — keyed by date