mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-01 23:52:03 -04:00
phase-37: CHECKPOINT for a fresh session — T4 steps (a)–(f) DONE: ≈90,000 declarations canonical this session (census 98,648 → 2,171 lying / 189 callees, +5,092 K&R sites and +418 cross-binary counted apart), levers 4,010 → 3,730, alias-defined functions 133/149 back, 10 of 12 parked signature bodies landed (func_80157D20 ×132 --map-data, func_80029D3C + 3 callers --with, func_80188A30 void→s32), the 3,546 banner blocks gone; five census blind spots repaired at their cause; story §10 + retrospective §7 advanced, timeline 78 rows; the 🛑 block rewritten with T4's two owed items (the 51 TU-CONFLICT retry, the 593-row disagreement) | R22 check-all: 218 passed, 0 failed of 218 at 06615fe89 | 🛑 T4 NEXT — items (g)/(h), then the T4 ☑ line, P6 rules check, T5 (Max)
This commit is contained in:
+117
-117
@@ -38,7 +38,7 @@
|
||||
".section": 7,
|
||||
"RTP_SND": 22,
|
||||
"addiu": 22,
|
||||
"addu": 22,
|
||||
"addu": 21,
|
||||
"and": 2,
|
||||
"la": 136,
|
||||
"lh": 3,
|
||||
@@ -53,16 +53,16 @@
|
||||
},
|
||||
"kinds": {
|
||||
"asm-body/direct": 13,
|
||||
"barrier/direct": 241,
|
||||
"barrier/direct": 240,
|
||||
"gte-lever/direct": 356,
|
||||
"gte-lever/via-macro": 94,
|
||||
"gte-unsigned/direct": 270,
|
||||
"gte/direct": 197,
|
||||
"gte/via-macro": 6250,
|
||||
"instruction/direct": 202,
|
||||
"instruction/direct": 201,
|
||||
"instruction/via-macro": 22,
|
||||
"keepalive/direct": 327,
|
||||
"launder/direct": 581,
|
||||
"keepalive/direct": 323,
|
||||
"launder/direct": 580,
|
||||
"launder/via-macro": 33,
|
||||
"verbatim-body/direct": 2682
|
||||
}
|
||||
@@ -77,74 +77,74 @@
|
||||
"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:3570",
|
||||
"src/ov_SC01_009/ov_SC01_009_jr_8017E590.c:4271",
|
||||
"src/ov_SC01_077/ov_SC01_077_jr_80183CF4.c:3979",
|
||||
"src/ov_SC01_080/ov_SC01_080_jr_8017AE2C.c:5178",
|
||||
"src/ov_SC02_011/ov_SC02_011_jr_80183178.c:2139",
|
||||
"src/ov_SC02_027/ov_SC02_027_jr_8017D898.c:4528",
|
||||
"src/ov_SC02_027/ov_SC02_027_jr_8017D898.c:8370",
|
||||
"src/ov_SC02_028/ov_SC02_028_jr_8017D898.c:5461",
|
||||
"src/ov_SC02_041/ov_SC02_041_jr_8017BEBC.c:7554",
|
||||
"src/ov_SC03_014/ov_SC03_014_jr_801848E4.c:5025",
|
||||
"src/ov_SC03_014/ov_SC03_014_jr_801848E4.c:5073",
|
||||
"src/ov_SC03_024/ov_SC03_024_jr_8017DF84.c:5475",
|
||||
"src/ov_SC03_024/ov_SC03_024_jr_8017DF84.c:5527",
|
||||
"src/ov_SC03_024/ov_SC03_024_jr_8017DF84.c:5866",
|
||||
"src/ov_SC03_024/ov_SC03_024_jr_80183BF8.c:3108",
|
||||
"src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c:3796",
|
||||
"src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c:4112",
|
||||
"src/ov_SC03_121/ov_SC03_121_jr_8017E1D0.c:4568",
|
||||
"src/ov_SC03_124/ov_SC03_124_jr_8017AE2C.c:6576",
|
||||
"src/ov_SC03_124/ov_SC03_124_jr_80188544.c:4422",
|
||||
"src/ov_SC04_002/ov_SC04_002_jr_8017BEBC.c:10069",
|
||||
"src/ov_SC04_005/ov_SC04_005_jr_8017BEBC.c:9325",
|
||||
"src/ov_SC04_007/ov_SC04_007_jr_8017BEBC.c:6630",
|
||||
"src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:7470",
|
||||
"src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:10273",
|
||||
"src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:13414",
|
||||
"src/ov_SC05_001/ov_SC05_001_jr_8017BEBC.c:5814",
|
||||
"src/ov_SC05_003/ov_SC05_003_jr_8017BEBC.c:4815",
|
||||
"src/ov_SC05_005/ov_SC05_005_jr_8017D898.c:4026",
|
||||
"src/ov_SC05_007/ov_SC05_007_jr_8017BEBC.c:3335",
|
||||
"src/ov_SC05_018/ov_SC05_018_jr_8017D604.c:4942",
|
||||
"src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c:8444",
|
||||
"src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c:8484",
|
||||
"src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c:8811"
|
||||
"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",
|
||||
"src/ov_SC02_041/ov_SC02_041_jr_8017BEBC.c:7548",
|
||||
"src/ov_SC03_014/ov_SC03_014_jr_801848E4.c:5019",
|
||||
"src/ov_SC03_014/ov_SC03_014_jr_801848E4.c:5067",
|
||||
"src/ov_SC03_024/ov_SC03_024_jr_8017DF84.c:5467",
|
||||
"src/ov_SC03_024/ov_SC03_024_jr_8017DF84.c:5519",
|
||||
"src/ov_SC03_024/ov_SC03_024_jr_8017DF84.c:5858",
|
||||
"src/ov_SC03_024/ov_SC03_024_jr_80183BF8.c:3101",
|
||||
"src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c:3790",
|
||||
"src/ov_SC03_118/ov_SC03_118_jr_8017FB84.c:4106",
|
||||
"src/ov_SC03_121/ov_SC03_121_jr_8017E1D0.c:4562",
|
||||
"src/ov_SC03_124/ov_SC03_124_jr_8017AE2C.c:6567",
|
||||
"src/ov_SC03_124/ov_SC03_124_jr_80188544.c:4416",
|
||||
"src/ov_SC04_002/ov_SC04_002_jr_8017BEBC.c:10063",
|
||||
"src/ov_SC04_005/ov_SC04_005_jr_8017BEBC.c:9319",
|
||||
"src/ov_SC04_007/ov_SC04_007_jr_8017BEBC.c:6624",
|
||||
"src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:7464",
|
||||
"src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:10267",
|
||||
"src/ov_SC04_011/ov_SC04_011_jr_8017D494.c:13405",
|
||||
"src/ov_SC05_001/ov_SC05_001_jr_8017BEBC.c:5808",
|
||||
"src/ov_SC05_003/ov_SC05_003_jr_8017BEBC.c:4809",
|
||||
"src/ov_SC05_005/ov_SC05_005_jr_8017D898.c:4019",
|
||||
"src/ov_SC05_007/ov_SC05_007_jr_8017BEBC.c:3329",
|
||||
"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"
|
||||
]
|
||||
},
|
||||
"classes": {
|
||||
"A": {
|
||||
"bodies": 1321,
|
||||
"distinct_bodies": 490,
|
||||
"bodies": 1182,
|
||||
"distinct_bodies": 479,
|
||||
"file_scope": 0,
|
||||
"in_bodies": 2141,
|
||||
"in_bodies": 1868,
|
||||
"kinds": {
|
||||
"pin": 2141
|
||||
"pin": 1868
|
||||
},
|
||||
"marked": 2141,
|
||||
"sites": 2141,
|
||||
"tus": 1075,
|
||||
"marked": 1868,
|
||||
"sites": 1868,
|
||||
"tus": 942,
|
||||
"unmarked": 0
|
||||
},
|
||||
"B": {
|
||||
"bodies": 4593,
|
||||
"distinct_bodies": 660,
|
||||
"bodies": 4587,
|
||||
"distinct_bodies": 655,
|
||||
"file_scope": 13,
|
||||
"in_bodies": 11255,
|
||||
"in_bodies": 11248,
|
||||
"kinds": {
|
||||
"asm-body": 13,
|
||||
"barrier": 241,
|
||||
"barrier": 240,
|
||||
"gte": 6447,
|
||||
"gte-lever": 450,
|
||||
"gte-unsigned": 270,
|
||||
"instruction": 224,
|
||||
"keepalive": 327,
|
||||
"launder": 614,
|
||||
"instruction": 223,
|
||||
"keepalive": 323,
|
||||
"launder": 613,
|
||||
"verbatim-body": 2682
|
||||
},
|
||||
"marked": 2353,
|
||||
"sites": 11268,
|
||||
"marked": 2346,
|
||||
"sites": 11261,
|
||||
"tus": 1425,
|
||||
"unmarked": 8915
|
||||
},
|
||||
@@ -178,30 +178,30 @@
|
||||
"unmarked": 50
|
||||
},
|
||||
"E": {
|
||||
"bodies": 1100,
|
||||
"distinct_bodies": 161,
|
||||
"file_scope": 6432,
|
||||
"in_bodies": 1370,
|
||||
"bodies": 734,
|
||||
"distinct_bodies": 131,
|
||||
"file_scope": 5094,
|
||||
"in_bodies": 902,
|
||||
"kinds": {
|
||||
"asm-label": 7802
|
||||
"asm-label": 5996
|
||||
},
|
||||
"marked": 0,
|
||||
"sites": 7802,
|
||||
"tus": 2090,
|
||||
"unmarked": 7802
|
||||
"sites": 5996,
|
||||
"tus": 2013,
|
||||
"unmarked": 5996
|
||||
},
|
||||
"F": {
|
||||
"bodies": 428,
|
||||
"distinct_bodies": 27,
|
||||
"bodies": 285,
|
||||
"distinct_bodies": 24,
|
||||
"file_scope": 0,
|
||||
"in_bodies": 445,
|
||||
"in_bodies": 302,
|
||||
"kinds": {
|
||||
"builtin": 445
|
||||
"builtin": 302
|
||||
},
|
||||
"marked": 0,
|
||||
"sites": 445,
|
||||
"tus": 302,
|
||||
"unmarked": 445
|
||||
"sites": 302,
|
||||
"tus": 285,
|
||||
"unmarked": 302
|
||||
},
|
||||
"G": {
|
||||
"bodies": 1,
|
||||
@@ -250,9 +250,9 @@
|
||||
"coverage": {
|
||||
"asm": {
|
||||
"comment_dead": 6781,
|
||||
"live": 14972,
|
||||
"live": 12886,
|
||||
"macro_block": 194,
|
||||
"raw": 21947
|
||||
"raw": 19861
|
||||
},
|
||||
"attribute": {
|
||||
"comment_dead": 0,
|
||||
@@ -262,26 +262,26 @@
|
||||
},
|
||||
"builtin": {
|
||||
"comment_dead": 154,
|
||||
"live": 445,
|
||||
"live": 302,
|
||||
"macro_block": 0,
|
||||
"raw": 599
|
||||
"raw": 456
|
||||
},
|
||||
"register": {
|
||||
"comment_dead": 8575,
|
||||
"live": 2191,
|
||||
"live": 1918,
|
||||
"macro_block": 18,
|
||||
"raw": 10784
|
||||
"raw": 10511
|
||||
},
|
||||
"volatile": {
|
||||
"comment_dead": 2607,
|
||||
"live": 1682,
|
||||
"live": 1679,
|
||||
"macro_block": 82,
|
||||
"raw": 4371
|
||||
"raw": 4368
|
||||
}
|
||||
},
|
||||
"coverage_ok": true,
|
||||
"elapsed_s": 21.8,
|
||||
"generated": "2026-09-11",
|
||||
"elapsed_s": 31.5,
|
||||
"generated": "2026-09-12",
|
||||
"gte_levers": {
|
||||
"direct": 356,
|
||||
"marked": 450,
|
||||
@@ -291,15 +291,15 @@
|
||||
"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": "23fc5d215",
|
||||
"head": "274223396",
|
||||
"headers": 3181,
|
||||
"levers_AB": {
|
||||
"asm": 1869,
|
||||
"bodies": 1980,
|
||||
"distinct_bodies": 674,
|
||||
"marked": 4010,
|
||||
"pins": 2141,
|
||||
"sites": 4010,
|
||||
"asm": 1862,
|
||||
"bodies": 1838,
|
||||
"distinct_bodies": 662,
|
||||
"marked": 3730,
|
||||
"pins": 1868,
|
||||
"sites": 3730,
|
||||
"unmarked": 0,
|
||||
"what": "register pins + asm statements excluding GTE ops: the classes the phase drives to 0"
|
||||
},
|
||||
@@ -368,21 +368,6 @@
|
||||
2,
|
||||
1
|
||||
],
|
||||
[
|
||||
"gte_rt",
|
||||
1,
|
||||
1
|
||||
],
|
||||
[
|
||||
"gte_ldv0_m",
|
||||
1,
|
||||
1
|
||||
],
|
||||
[
|
||||
"gte_rtv0_m",
|
||||
1,
|
||||
1
|
||||
],
|
||||
[
|
||||
"COPY_TO_FAAC",
|
||||
1,
|
||||
@@ -408,6 +393,21 @@
|
||||
1,
|
||||
1
|
||||
],
|
||||
[
|
||||
"gte_rt",
|
||||
1,
|
||||
1
|
||||
],
|
||||
[
|
||||
"gte_ldv0_m",
|
||||
1,
|
||||
1
|
||||
],
|
||||
[
|
||||
"gte_rtv0_m",
|
||||
1,
|
||||
1
|
||||
],
|
||||
[
|
||||
"ENGINE_SHB",
|
||||
1,
|
||||
@@ -442,19 +442,19 @@
|
||||
"$13": 5,
|
||||
"$14": 5,
|
||||
"$15": 1,
|
||||
"$16": 67,
|
||||
"$16": 66,
|
||||
"$17": 26,
|
||||
"$18": 26,
|
||||
"$19": 16,
|
||||
"$2": 753,
|
||||
"$2": 751,
|
||||
"$20": 7,
|
||||
"$21": 5,
|
||||
"$22": 3,
|
||||
"$23": 6,
|
||||
"$25": 1,
|
||||
"$3": 156,
|
||||
"$4": 485,
|
||||
"$5": 369,
|
||||
"$3": 154,
|
||||
"$4": 348,
|
||||
"$5": 238,
|
||||
"$6": 59,
|
||||
"$7": 24,
|
||||
"$8": 23,
|
||||
@@ -464,30 +464,30 @@
|
||||
"a1": 2,
|
||||
"v0": 1
|
||||
},
|
||||
"sites": 2141,
|
||||
"sites": 1868,
|
||||
"sp": 0,
|
||||
"spelling": {
|
||||
"__asm__": 2120,
|
||||
"__asm__": 1847,
|
||||
"asm": 21
|
||||
},
|
||||
"volatile_qualified": 0,
|
||||
"zero": 54
|
||||
},
|
||||
"src_stamp": "ab7aba1c21c89889",
|
||||
"src_stamp": "a91c084f1ac9e504",
|
||||
"tus": 4121,
|
||||
"unclassified": 0,
|
||||
"union_AD": {
|
||||
"bodies": 5746,
|
||||
"bodies": 5604,
|
||||
"by_kind": {
|
||||
"main": 124,
|
||||
"main": 120,
|
||||
"md": 105,
|
||||
"ov": 5352,
|
||||
"ov": 5215,
|
||||
"resident": 6,
|
||||
"shared": 159
|
||||
"shared": 158
|
||||
},
|
||||
"copies_in_multi": 4849,
|
||||
"distinct_bodies": 1007,
|
||||
"multi_copy_classes": 110
|
||||
"copies_in_multi": 4720,
|
||||
"distinct_bodies": 996,
|
||||
"multi_copy_classes": 112
|
||||
},
|
||||
"verbatim_excluded": {
|
||||
"functions": 13,
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
lever_census: 218 binaries · 4,121 TUs + 3,181 headers · coverage OK · unclassified 0 · verbatim excluded 13 fn / 14 sites (manifest 13)
|
||||
coverage asm raw 21947 = live 14972 + macro-block 194 + comment/dead 6781
|
||||
coverage register raw 10784 = live 2191 + macro-block 18 + comment/dead 8575
|
||||
coverage volatile raw 4371 = live 1682 + macro-block 82 + comment/dead 2607
|
||||
coverage builtin raw 599 = live 445 + macro-block 0 + comment/dead 154
|
||||
coverage asm raw 19861 = live 12886 + macro-block 194 + comment/dead 6781
|
||||
coverage register raw 10511 = live 1918 + macro-block 18 + comment/dead 8575
|
||||
coverage volatile raw 4368 = live 1679 + macro-block 82 + comment/dead 2607
|
||||
coverage builtin raw 456 = live 302 + macro-block 0 + comment/dead 154
|
||||
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 2141 2141 0 1321 490 1075 2141 0 {'pin': 2141}
|
||||
B asm 11268 11255 13 4593 660 1425 2353 8915 {'gte': 6447, 'gte-lever': 450, 'gte-unsigned': 270, 'barrier': 241, 'launder': 614, 'instruction': 224, 'asm-body': 13, 'keepalive': 327, 'verbatim-body': 2682}
|
||||
A pins 1868 1868 0 1182 479 942 1868 0 {'pin': 1868}
|
||||
B asm 11261 11248 13 4587 655 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 7802 1370 6432 1100 161 2090 0 7802 {'asm-label': 7802}
|
||||
F builtin 445 445 0 428 27 302 0 445 {'builtin': 445}
|
||||
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,746 bodies · 1,007 distinct (addresses normalized) · 110 multi-copy classes holding 4,849 bodies · by kind {'ov': 5352, 'main': 124, 'md': 105, 'shared': 159, 'resident': 6}
|
||||
THE PHASE'S NUMBER (pins + asm statements, GTE excluded): 4,010 sites in 1,980 bodies (674 distinct) · marked !FAKE 4,010 · UNMARKED 0
|
||||
UNION A–D: 5,604 bodies · 996 distinct (addresses normalized) · 112 multi-copy classes holding 4,720 bodies · by kind {'ov': 5215, 'shared': 158, 'main': 120, 'md': 105, '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
|
||||
GTE levers (clobbers beyond the canonical macro's): 450 sites (94 via a variant macro, 356 direct) · marked 450 · UNMARKED 0 · unsigned GTE statements 270
|
||||
per-TU asm macro definitions outside the GTE header: 314 {'gte': 150, 'launder': 154, 'instruction': 9, 'barrier': 1} (GTE variants 64)
|
||||
pins: 2,141 · $0 54 · $sp 0 · with initializer 201 · volatile-qualified 0 · bare-name 6 · spellings {'__asm__': 2120, 'asm': 21}
|
||||
per-TU asm macro definitions outside the GTE header: 314 {'launder': 154, 'gte': 150, 'instruction': 9, 'barrier': 1} (GTE variants 64)
|
||||
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': 241, 'gte/direct': 197, 'gte/via-macro': 6250, 'gte-lever/direct': 356, 'gte-lever/via-macro': 94, 'gte-unsigned/direct': 270, 'instruction/direct': 202, 'instruction/via-macro': 22, 'keepalive/direct': 327, 'launder/direct': 581, 'launder/via-macro': 33, 'verbatim-body/direct': 2682}
|
||||
instruction mnemonics: {'la': 136, 'addiu': 22, 'addu': 22, 'RTP_SND': 22, '.section': 7, 'lui': 3, 'lh': 3, 'and': 2, 'mult': 1, 'mfhi': 1, 'sll': 1, 'li': 1, 'lw': 1, 'nop': 1, 'srl': 1}
|
||||
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, 'lh': 3, 'lui': 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}
|
||||
asm-bearing macro definitions: 314 (20 names, 3 with >1 text) kinds {'launder': 154, 'gte': 150, '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 21.8 s
|
||||
elapsed 31.5 s
|
||||
|
||||
+154
-154
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"head": "4293d0a84",
|
||||
"head": "06615fe89",
|
||||
"stamp": "e34b6679685f",
|
||||
"generated": "2026-09-12 21:11",
|
||||
"generated": "2026-09-12 21:17",
|
||||
"aliases": [
|
||||
"main",
|
||||
"md_SC07_004",
|
||||
@@ -21,176 +21,176 @@
|
||||
"main": {
|
||||
"objects": 85,
|
||||
"identical": 85,
|
||||
"seconds": 8.851000000000004,
|
||||
"mean_s": 0.104
|
||||
"seconds": 7.151999999999999,
|
||||
"mean_s": 0.084
|
||||
},
|
||||
"md_SC07_004": {
|
||||
"objects": 1,
|
||||
"identical": 1,
|
||||
"seconds": 0.598,
|
||||
"mean_s": 0.598
|
||||
"seconds": 0.519,
|
||||
"mean_s": 0.519
|
||||
},
|
||||
"ov_SC03_015": {
|
||||
"objects": 32,
|
||||
"identical": 32,
|
||||
"seconds": 5.472,
|
||||
"mean_s": 0.171
|
||||
"seconds": 4.901,
|
||||
"mean_s": 0.153
|
||||
},
|
||||
"ov_SC04_011": {
|
||||
"objects": 28,
|
||||
"identical": 28,
|
||||
"seconds": 4.567000000000001,
|
||||
"mean_s": 0.163
|
||||
"seconds": 4.044,
|
||||
"mean_s": 0.144
|
||||
}
|
||||
},
|
||||
"per_object_seconds": {
|
||||
"build/src/800.o": 0.904,
|
||||
"build/src/800_b.o": 0.098,
|
||||
"build/src/800_b_2.o": 0.43,
|
||||
"build/src/800.o": 0.813,
|
||||
"build/src/800_b.o": 0.088,
|
||||
"build/src/800_b_2.o": 0.332,
|
||||
"build/src/800_b_o0a.o": 0.081,
|
||||
"build/src/800_c.o": 0.243,
|
||||
"build/src/800b2.o": 0.093,
|
||||
"build/src/apicard1.o": 0.119,
|
||||
"build/src/apicard2.o": 0.091,
|
||||
"build/src/apicard3.o": 0.115,
|
||||
"build/src/apicard4.o": 0.083,
|
||||
"build/src/apicard5.o": 0.089,
|
||||
"build/src/apicard6.o": 0.084,
|
||||
"build/src/apicard7.o": 0.087,
|
||||
"build/src/boot.o": 0.137,
|
||||
"build/src/gap.o": 0.095,
|
||||
"build/src/libapi1.o": 0.1,
|
||||
"build/src/libapi2.o": 0.072,
|
||||
"build/src/libc2_1.o": 0.08,
|
||||
"build/src/libc2_2.o": 0.071,
|
||||
"build/src/libcd1.o": 0.104,
|
||||
"build/src/libcd2.o": 0.108,
|
||||
"build/src/libetc.o": 0.092,
|
||||
"build/src/libgpu.o": 0.077,
|
||||
"build/src/libgpu2.o": 0.093,
|
||||
"build/src/libgs1.o": 0.072,
|
||||
"build/src/libgs2.o": 0.076,
|
||||
"build/src/libgs3.o": 0.075,
|
||||
"build/src/libgs4.o": 0.085,
|
||||
"build/src/libgs5.o": 0.09,
|
||||
"build/src/libgs6.o": 0.093,
|
||||
"build/src/libgs7.o": 0.078,
|
||||
"build/src/libgs8.o": 0.088,
|
||||
"build/src/libgte1.o": 0.074,
|
||||
"build/src/800_c.o": 0.209,
|
||||
"build/src/800b2.o": 0.099,
|
||||
"build/src/apicard1.o": 0.077,
|
||||
"build/src/apicard2.o": 0.07,
|
||||
"build/src/apicard3.o": 0.061,
|
||||
"build/src/apicard4.o": 0.069,
|
||||
"build/src/apicard5.o": 0.068,
|
||||
"build/src/apicard6.o": 0.065,
|
||||
"build/src/apicard7.o": 0.082,
|
||||
"build/src/boot.o": 0.093,
|
||||
"build/src/gap.o": 0.071,
|
||||
"build/src/libapi1.o": 0.083,
|
||||
"build/src/libapi2.o": 0.067,
|
||||
"build/src/libc2_1.o": 0.074,
|
||||
"build/src/libc2_2.o": 0.066,
|
||||
"build/src/libcd1.o": 0.083,
|
||||
"build/src/libcd2.o": 0.068,
|
||||
"build/src/libetc.o": 0.069,
|
||||
"build/src/libgpu.o": 0.069,
|
||||
"build/src/libgpu2.o": 0.074,
|
||||
"build/src/libgs1.o": 0.074,
|
||||
"build/src/libgs2.o": 0.061,
|
||||
"build/src/libgs3.o": 0.071,
|
||||
"build/src/libgs4.o": 0.066,
|
||||
"build/src/libgs5.o": 0.064,
|
||||
"build/src/libgs6.o": 0.077,
|
||||
"build/src/libgs7.o": 0.066,
|
||||
"build/src/libgs8.o": 0.064,
|
||||
"build/src/libgte1.o": 0.069,
|
||||
"build/src/libgte10.o": 0.081,
|
||||
"build/src/libgte11.o": 0.089,
|
||||
"build/src/libgte12.o": 0.072,
|
||||
"build/src/libgte13.o": 0.109,
|
||||
"build/src/libgte14.o": 0.088,
|
||||
"build/src/libgte15.o": 0.071,
|
||||
"build/src/libgte16.o": 0.08,
|
||||
"build/src/libgte17.o": 0.104,
|
||||
"build/src/libgte18.o": 0.082,
|
||||
"build/src/libgte19.o": 0.083,
|
||||
"build/src/libgte2.o": 0.082,
|
||||
"build/src/libgte20.o": 0.075,
|
||||
"build/src/libgte21.o": 0.077,
|
||||
"build/src/libgte22.o": 0.07,
|
||||
"build/src/libgte23.o": 0.069,
|
||||
"build/src/libgte24.o": 0.068,
|
||||
"build/src/libgte25.o": 0.091,
|
||||
"build/src/libgte26.o": 0.079,
|
||||
"build/src/libgte27.o": 0.082,
|
||||
"build/src/libgte28.o": 0.071,
|
||||
"build/src/libgte29.o": 0.084,
|
||||
"build/src/libgte3.o": 0.086,
|
||||
"build/src/libgte30.o": 0.079,
|
||||
"build/src/libgte4.o": 0.091,
|
||||
"build/src/libgte5.o": 0.094,
|
||||
"build/src/libgte6.o": 0.081,
|
||||
"build/src/libgte7.o": 0.089,
|
||||
"build/src/libgte8.o": 0.08,
|
||||
"build/src/libgte9.o": 0.129,
|
||||
"build/src/libmcrd1.o": 0.101,
|
||||
"build/src/libmcrd2.o": 0.093,
|
||||
"build/src/libpad1.o": 0.103,
|
||||
"build/src/libpad2.o": 0.08,
|
||||
"build/src/sgap.o": 0.098,
|
||||
"build/src/libgte11.o": 0.065,
|
||||
"build/src/libgte12.o": 0.055,
|
||||
"build/src/libgte13.o": 0.07,
|
||||
"build/src/libgte14.o": 0.068,
|
||||
"build/src/libgte15.o": 0.066,
|
||||
"build/src/libgte16.o": 0.06,
|
||||
"build/src/libgte17.o": 0.072,
|
||||
"build/src/libgte18.o": 0.086,
|
||||
"build/src/libgte19.o": 0.066,
|
||||
"build/src/libgte2.o": 0.067,
|
||||
"build/src/libgte20.o": 0.065,
|
||||
"build/src/libgte21.o": 0.063,
|
||||
"build/src/libgte22.o": 0.073,
|
||||
"build/src/libgte23.o": 0.063,
|
||||
"build/src/libgte24.o": 0.083,
|
||||
"build/src/libgte25.o": 0.058,
|
||||
"build/src/libgte26.o": 0.066,
|
||||
"build/src/libgte27.o": 0.063,
|
||||
"build/src/libgte28.o": 0.072,
|
||||
"build/src/libgte29.o": 0.061,
|
||||
"build/src/libgte3.o": 0.065,
|
||||
"build/src/libgte30.o": 0.066,
|
||||
"build/src/libgte4.o": 0.069,
|
||||
"build/src/libgte5.o": 0.064,
|
||||
"build/src/libgte6.o": 0.068,
|
||||
"build/src/libgte7.o": 0.06,
|
||||
"build/src/libgte8.o": 0.071,
|
||||
"build/src/libgte9.o": 0.067,
|
||||
"build/src/libmcrd1.o": 0.079,
|
||||
"build/src/libmcrd2.o": 0.072,
|
||||
"build/src/libpad1.o": 0.066,
|
||||
"build/src/libpad2.o": 0.075,
|
||||
"build/src/sgap.o": 0.073,
|
||||
"build/src/sgap_2.o": 0.077,
|
||||
"build/src/sgap_3.o": 0.084,
|
||||
"build/src/sgap_4.o": 0.085,
|
||||
"build/src/sgap_5.o": 0.082,
|
||||
"build/src/sgap_6.o": 0.072,
|
||||
"build/src/sgap_8.o": 0.164,
|
||||
"build/src/snd1.o": 0.109,
|
||||
"build/src/snd10.o": 0.089,
|
||||
"build/src/snd11.o": 0.081,
|
||||
"build/src/snd12.o": 0.077,
|
||||
"build/src/snd2.o": 0.085,
|
||||
"build/src/snd3.o": 0.089,
|
||||
"build/src/snd4.o": 0.121,
|
||||
"build/src/snd5.o": 0.106,
|
||||
"build/src/snd6.o": 0.095,
|
||||
"build/src/snd7.o": 0.088,
|
||||
"build/src/snd8.o": 0.073,
|
||||
"build/src/snd9.o": 0.086,
|
||||
"build/src/md_SC07_004/md_SC07_004.o": 0.598,
|
||||
"build/src/ov_SC03_015/ov_SC03_015.o": 0.157,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_after.o": 0.61,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.457,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.076,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.073,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.149,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.179,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.149,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.097,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.081,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.208,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.082,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.2,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.116,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.094,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.087,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.106,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.536,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.311,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.11,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.228,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.069,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.116,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.07,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.195,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.227,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.066,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.32,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.074,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.073,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.072,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.084,
|
||||
"build/src/ov_SC04_011/ov_SC04_011.o": 0.148,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_after.o": 0.486,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.393,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.058,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.061,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.139,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.18,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.145,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.095,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.088,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.199,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.082,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.196,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.112,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.079,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.086,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.109,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.387,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.25,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.115,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.186,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.074,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.104,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.075,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.12,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.463,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.065,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.072
|
||||
"build/src/sgap_3.o": 0.067,
|
||||
"build/src/sgap_4.o": 0.073,
|
||||
"build/src/sgap_5.o": 0.07,
|
||||
"build/src/sgap_6.o": 0.08,
|
||||
"build/src/sgap_8.o": 0.08,
|
||||
"build/src/snd1.o": 0.079,
|
||||
"build/src/snd10.o": 0.066,
|
||||
"build/src/snd11.o": 0.072,
|
||||
"build/src/snd12.o": 0.07,
|
||||
"build/src/snd2.o": 0.078,
|
||||
"build/src/snd3.o": 0.074,
|
||||
"build/src/snd4.o": 0.068,
|
||||
"build/src/snd5.o": 0.073,
|
||||
"build/src/snd6.o": 0.074,
|
||||
"build/src/snd7.o": 0.064,
|
||||
"build/src/snd8.o": 0.06,
|
||||
"build/src/snd9.o": 0.066,
|
||||
"build/src/md_SC07_004/md_SC07_004.o": 0.519,
|
||||
"build/src/ov_SC03_015/ov_SC03_015.o": 0.122,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_after.o": 0.541,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.434,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.075,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.07,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.14,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.162,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.127,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.084,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.069,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.196,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.087,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.182,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.1,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.064,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.065,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.093,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.472,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.28,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.1,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.215,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.063,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.112,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.072,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.175,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.202,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.056,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.292,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.061,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.06,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.059,
|
||||
"build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.071,
|
||||
"build/src/ov_SC04_011/ov_SC04_011.o": 0.117,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_after.o": 0.435,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.355,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.047,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.048,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.119,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.161,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.123,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.075,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.062,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.177,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.077,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.172,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.082,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.071,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.074,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.099,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.364,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.224,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.101,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.17,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.063,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.094,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.066,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.103,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.455,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.054,
|
||||
"build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.056
|
||||
},
|
||||
"ok": true,
|
||||
"seconds": 2.3
|
||||
"seconds": 2.1
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
+471
-467
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
type_census — 2026-09-13T02:13:23Z at 2391ee628 (src stamp 9755515ee35c19bc, tool ac697cecc1); 7305 files (4121 TUs + 3181 headers), 99130 function definitions; walk 40.9 s, total 208.3 s
|
||||
type_census — 2026-09-13T03:24:00Z at 06615fe89 (src stamp 9def359d3553fe7a, tool ac697cecc1); 7305 files (4121 TUs + 3181 headers), 99130 function definitions; walk 40.9 s, total 202.2 s
|
||||
|
||||
DEFINITIONS 7255 struct/union bodies (+0 enums): canonical header 1179 · .c file-scope 4085 · .c block-scope 1904 · per-function shared headers 63 · other headers 24 · include/ 0
|
||||
3143 distinct names · 527 distinct layouts (0 unresolved) · 206 duplicate classes covering 2823 names (tier 1 122 same-named, tier 2 84 opaque; 46 layout-twin classes / 1867 names kept apart) · 585 exact-text classes / 4460 copies · 40 VARIANT names (>1 layout) · 141 dead canonical names · 74 canonical names redefined in .c · 1781 scalar/alias typedefs · 157 forward decls
|
||||
@@ -6,28 +6,28 @@ CAST SITES deref 503013 = P 409006 + I 60664 + X 13800 + M 19543 (+ A addres
|
||||
by base: param 276860 · local 149911 · gaddr 40123 · nested 24076 · global 8861 · other 1678 · addr-of 1348 · ident 156
|
||||
by width: s4 145161 · u2 142775 · s2 131818 · u1 43174 · agg 13472 · p4 12019 · u4 11165 · s1 3429
|
||||
top bases: a0(param) 92255 · param_1(param) 81595 · arg0(param) 67704 · p(local) 18043 · p(param) 11784 · s0(local) 10368 · cach(local) 8246 · s1(local) 7137 · buf(local) 7067 · flag(local) 5453 · *(s32 *)(a0 + 0x20)(nested) 5215 · iVar2(local) 5160 · dst(local) 4874 · iVar1(local) 4836 · iVar3(local) 4693 · e(local) 3918
|
||||
DECLARATIONS 99130 function definitions (1894 K&R) · 4279270 extern function declarations over 12088 names (3822 spelled >1 way) · 6419 names with >1 body text · 1078774 data externs over 55548 symbols (18493 typed >1 way) · asm-label aliases 5158 (165 names) · builtins {'memcpy': 301, 'abs': 1} · attributes {'aligned': 12, 'packed': 63}
|
||||
lying declarations 2367 over 256 callees {'K&R-empty': 1673, 'narrow': 694} · K&R sites (marked, counted apart) 5082 over 155 callees · cross-binary (the fleet's definitions disagree, this binary has none) 511 over 147 callees
|
||||
STRUCT MAP 17970 types explain 498894/503013 deref sites (99.2 %); unassigned 4119; 3947 types span ≥2 bodies (445199 sites), 14023 single-body; types with conflicts 738, suspect 11
|
||||
merges by evidence {'param': 36486, 'arg': 10422, 'ret-of': 3436, 'assign': 14608, 'assign&': 1051, 'return': 1527, 'arg&': 247, 'field': 9921}; vetoed {'arg-conduit': 115288, 'arg-no-overlap': 31131, 'arg&-conduit': 14628, 'assign-multisource': 34568, 'assign&-multisource': 12501, 'field-multisource': 7008, 'arg&-no-overlap': 3506, 'ret-of-multisource': 6686, 'assign&': 68, 'assign': 394, 'ret-of': 216, 'arg': 253, 'return': 6, 'field': 1004}
|
||||
Unkstruct_800D3888 sites 113273 bodies 10024 fields 133 size≥0x10c width-conflicts 50 sign-mixed 57 merges {'param': 9832, 'assign': 7528, 'arg': 7222, 'field': 3272} at D_800D3888,D_80181448,D_801818AC ptr D_8006386C,D_80074778,D_80074780
|
||||
Unkstruct_80126B58 sites 65452 bodies 17066 fields 177 size≥0x24c width-conflicts 50 sign-mixed 62 merges {'param': 2162, 'arg': 1118, 'assign&': 106, 'field': 52} at D_80126B58 ptr D_80126B58
|
||||
DECLARATIONS 99130 function definitions (1894 K&R) · 4279270 extern function declarations over 12088 names (3814 spelled >1 way) · 6419 names with >1 body text · 1078774 data externs over 55548 symbols (18493 typed >1 way) · asm-label aliases 5158 (165 names) · builtins {'memcpy': 301, 'abs': 1} · attributes {'packed': 63, 'aligned': 12}
|
||||
lying declarations 2171 over 189 callees {'K&R-empty': 1654, 'narrow': 517} · K&R sites (marked, counted apart) 5092 over 162 callees · cross-binary (the fleet's definitions disagree, this binary has none) 418 over 96 callees
|
||||
STRUCT MAP 18730 types explain 498894/503013 deref sites (99.2 %); unassigned 4119; 4060 types span ≥2 bodies (441236 sites), 14670 single-body; types with conflicts 729, suspect 11
|
||||
merges by evidence {'param': 36486, 'arg': 10185, 'assign': 14663, 'return': 1524, 'ret-of': 3374, 'assign&': 1052, 'arg&': 270, 'field': 9613}; vetoed {'arg&-conduit': 14628, 'arg-conduit': 115288, 'arg-no-overlap': 39819, 'assign-multisource': 34568, 'assign&-multisource': 12501, 'field-multisource': 7008, 'ret-of-multisource': 6686, 'ret-of': 679, 'arg&-no-overlap': 3456, 'assign': 349, 'assign&': 67, 'arg': 182, 'return': 12, 'field': 3224}
|
||||
Unkstruct_800B5CB8 sites 107600 bodies 11189 fields 134 size≥0x10c width-conflicts 50 sign-mixed 55 merges {'param': 9454, 'assign': 7400, 'arg': 6955, 'field': 2622} at D_800B5CB8,D_800D3888,D_80181448 ptr D_8006386C,D_80074778,D_80074780
|
||||
Unkstruct_80126B58 sites 65458 bodies 17068 fields 177 size≥0x24c width-conflicts 50 sign-mixed 62 merges {'param': 2160, 'arg': 1117, 'assign&': 106, 'field': 52} at D_80126B58 ptr D_80126B58
|
||||
Unkstruct_8018E71C sites 6745 bodies 396 fields 7 size≥0x10 width-conflicts 0 sign-mixed 0 merges {'param': 18, 'arg': 15, 'assign&': 2} at D_8018E71C
|
||||
Unkstruct_dac960ce sites 4464 bodies 124 fields 13 size≥0x24c width-conflicts 0 sign-mixed 2 merges {'param': 2}
|
||||
Unkstruct_0caecd54 sites 4340 bodies 124 fields 23 size≥0xfe width-conflicts 0 sign-mixed 1 merges {'param': 2, 'assign': 1, 'return': 1}
|
||||
Unkstruct_8014964C sites 4251 bodies 1800 fields 23 size≥0x84 width-conflicts 3 sign-mixed 9 merges {'field': 137}
|
||||
Unkstruct_f8ed2b9f sites 4061 bodies 4061 fields 1 size≥0x217 width-conflicts 0 sign-mixed 0 merges {'param': 2}
|
||||
Unkstruct_a32b99a1 sites 3936 bodies 123 fields 8 size≥0x4b width-conflicts 0 sign-mixed 1 merges {}
|
||||
Unkstruct_8e3dbe51 sites 3930 bodies 131 fields 5 size≥0x4c width-conflicts 0 sign-mixed 1 merges {}
|
||||
Unkstruct_8014A1B0 sites 3778 bodies 542 fields 13 size≥0xfe width-conflicts 0 sign-mixed 1 merges {'field': 13, 'arg': 10, 'param': 10, 'return': 1}
|
||||
Unkstruct_80128EA8 sites 3311 bodies 632 fields 18 size≥0x38 width-conflicts 0 sign-mixed 13 merges {'arg': 23, 'ret-of': 19, 'field': 7, 'param': 2}
|
||||
Unkstruct_ade2e8a0 sites 3271 bodies 196 fields 26 size≥0xa4 width-conflicts 3 sign-mixed 9 merges {'param': 268, 'arg': 133}
|
||||
Unkstruct_80126948 sites 3194 bodies 1040 fields 34 size≥0xa4 width-conflicts 0 sign-mixed 10 merges {'assign': 99, 'arg': 14, 'param': 6, 'assign&': 4} at D_80126948,D_80126E60 ptr D_80114EE8,D_801151D4,D_80126948
|
||||
GLOBAL BLOCKS 2117 runs of ≥4 adjacent scalar D_ symbols (14216 symbols): 0x800cf10c+0x34 ×29 (D_800CF10C..D_800CF13C) · 0x800a6580+0x3a ×27 (D_800A6580..D_800A65B8) · 0x801998a4+0x57 ×24 (D_801998A4..D_801998FA) · 0x80199840+0x56 ×23 (D_80199840..D_80199895) · 0x801a9608+0x50 ×22 (D_801A9608..D_801A9654) · 0x801ab708+0x54 ×21 (D_801AB708..D_801AB758) · 0x801b0df0+0x4b ×21 (D_801B0DF0..D_801B0E3A) · 0x801b83a0+0x4e ×21 (D_801B83A0..D_801B83ED)
|
||||
Unkstruct_1fa9e810 sites 3144 bodies 131 fields 3 size≥0x49 width-conflicts 0 sign-mixed 0 merges {}
|
||||
GLOBAL BLOCKS 2120 runs of ≥4 adjacent scalar D_ symbols (14230 symbols): 0x800cf10c+0x34 ×29 (D_800CF10C..D_800CF13C) · 0x800a6580+0x3a ×27 (D_800A6580..D_800A65B8) · 0x801998a4+0x57 ×24 (D_801998A4..D_801998FA) · 0x80199840+0x56 ×23 (D_80199840..D_80199895) · 0x801a9608+0x50 ×22 (D_801A9608..D_801A9654) · 0x801ab708+0x54 ×21 (D_801AB708..D_801AB758) · 0x801b0df0+0x4b ×21 (D_801B0DF0..D_801B0E3A) · 0x801b83a0+0x4e ×21 (D_801B83A0..D_801B83ED)
|
||||
PARKED (P36) 24 classes / 453 bodies / 691 needed sites → .run/P37/census/parked.tsv; needs {'signature': 13, 'struct': 7, '?': 4}; 22 PARK names are minimum-lever banks
|
||||
CONTROLS 4/4: player_block_widths OK (D_80078E8C:4/4 D_80078EB2:2/2 D_80078EB4:2/2 D_80078EB6:2/2 D_80078EB8:2/2 [doc-disputed D_80078F08: code 4 vs actor-struct.md 2] [doc-disputed D_80078F0C: code 4 vs actor-struct.md 2]) · matrix_layouts OK (MATRIX=32 MATRIX_L48=48) · prim_layout_class OK (defs in 1192 files, 2 spellings, 1192/1192 in one layout (64 B)) · tu_conflict_D_800A651C OK (s32:1202 | u8[]:9 | OtBlk[]:9 | OtBlk_80016450[]:8 | s32[]:7)
|
||||
|
||||
duplicate-layout classes (top 12): 8B×293 names (488 defs): GTESVec, GVec8, SIn_8017E95C, SV… | 8B×202 names (0 defs): Blk8L, Blk8S16, Blk8U, Blk8_80126940… | 32B×170 names (277 defs): M32_8017F154, M32_80188094, MATRIX, MATRIX2… | 8B×153 names (341 defs): Blk8_801807DC, Blk8_8018453C, COL_8001EFE0, MoveT… | 32B×129 names (0 defs): B20, Blk20, Blk20_800CB68C, Blk20_8016DF5C… | 4B×111 names (0 defs): B4, B4_80165140, B4_8017F154, B4_80181970… | 64B×91 names (1428 defs): Prim_8016E7C8, Prim_8016E7C8_8016B6BC, Prim_8016E7C8_8016B9F8, Prim_8016E7C8_8016C2C4… | 8B×82 names (0 defs): B8, B8_17F474, B8_80165140, B8_801851A8… | 8B×63 names (211 defs): Ang_8017E95C, DVEC_80183534, SOut_8017E95C, SVEC… | 4B×60 names (68 defs): PTAG_85910, PTag, PTag293C, PTag_1412A8… | 8B×59 names (0 defs): Bc8_80180E0C, CdFileLoc, Cmd_801805C8, M8_8016B6BC… | 8B×54 names (0 defs): Args_80182194, Blk8, Blk8017FD54, Blk8_801A6AD0…
|
||||
VARIANT names (top 12): Prim×5, V8×4, Blk8×4, Rec×4, St×4, S×4, Ent×3, Vec8×3, Obj×3, SV3×2, V4×2, Struct80078E78×2
|
||||
duplicate-layout classes (top 12): 8B×293 names (488 defs): GTESVec, GVec8, SIn_8017E95C, SV… | 8B×202 names (0 defs): Blk8L, Blk8S16, Blk8U, Blk8_80126940… | 32B×170 names (277 defs): M32_8017F154, M32_80188094, MATRIX, MATRIX2… | 8B×153 names (341 defs): Blk8_801807DC, Blk8_8018453C, COL_8001EFE0, MoveT… | 32B×129 names (0 defs): B20, Blk20, Blk20_800CB68C, Blk20_8016DF5C… | 4B×111 names (0 defs): B4, B4_80165140, B4_8017F154, B4_80181970… | 64B×91 names (1428 defs): Prim_8016E7C8, Prim_8016E7C8_8016B6BC, Prim_8016E7C8_8016B9F8, Prim_8016E7C8_8016C2C4… | 8B×82 names (0 defs): B8, B8_17F474, B8_80165140, B8_801851A8… | 8B×63 names (211 defs): Ang_8017E95C, DVEC_80183534, SOut_8017E95C, SVEC… | 4B×60 names (68 defs): PTAG_85910, PTag, PTag293C, PTag_1412A8… | 8B×59 names (0 defs): Bc8_80180E0C, CdFileLoc, Cmd_801805C8, M8_8016B6BC… | 16B×54 names (0 defs): B16, B16_8017CDE4, B16_80183ED8, B16_801841C8…
|
||||
VARIANT names (top 12): Prim×5, Rec×4, Blk8×4, St×4, S×4, V8×4, Vec8×3, Obj×3, Ent×3, Blk16×2, CdReq×2, Blk4×2
|
||||
|
||||
type_census: 7255 definitions (527 layouts, 206 duplicate classes, 40 variant camps) · 503013 cast sites in 69497 bodies over 8 base classes (4 forms + A, coverage OK) · 2367 lying declarations / 256 callees (+5082 K&R sites, +511 cross-binary apart) · controls 4/4
|
||||
struct_map: 17970 types over 17970 clusters explain 498894/503013 sites (99.2 %); 4119 unassigned sites; 738 types with conflicts
|
||||
type_census: 7255 definitions (527 layouts, 206 duplicate classes, 40 variant camps) · 503013 cast sites in 69497 bodies over 8 base classes (4 forms + A, coverage OK) · 2171 lying declarations / 189 callees (+5092 K&R sites, +418 cross-binary apart) · controls 4/4
|
||||
struct_map: 18730 types over 18730 clusters explain 498894/503013 sites (99.2 %); 4119 unassigned sites; 729 types with conflicts
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
delever_oracle --calibrate main md_SC07_004 ov_SC03_015 ov_SC04_011: 146/146 objects byte-identical untouched; twin checks 32 (0 mismatch); positive control DIFFERS on build/src/800.o; 2.1 s — OK
|
||||
main 85/85 identical, mean 0.084 s per object
|
||||
md_SC07_004 1/1 identical, mean 0.519 s per object
|
||||
ov_SC03_015 32/32 identical, mean 0.153 s per object
|
||||
ov_SC04_011 28/28 identical, mean 0.144 s per object
|
||||
@@ -3,3 +3,6 @@ cycle: batch t4_D53 committed 7dcae487c — restruct: batch t4_D53 rung D — 40
|
||||
log: t4_D54
|
||||
cycle: batch t4_D54 committed 4293d0a84 — restruct: batch t4_D54 rung D — 400 files (TUs; 607 drawable) · 800 declaration units: 800 canonical / 0 promoted / 0 K&R marked / 0 aliases typed / 0 __builtin_abs → abs / 0 kept · compiles 836 in 61 s wall · final 400/400 identical · written 400 files | check-all: 218 passed, 0 failed of 218
|
||||
log: t4_D55
|
||||
cycle: batch t4_D55 committed 06615fe89 — restruct: batch t4_D55 rung D — 207 files (TUs; 207 drawable) · 412 declaration units: 411 canonical / 0 promoted / 1 K&R marked / 0 aliases typed / 0 __builtin_abs → abs / 1 kept · compiles 414 in 38 s wall · final 207/207 identical · written 207 files | check-all: 218 passed, 0 failed of 218
|
||||
cycle: nothing drawable at t4_D56 — done
|
||||
cycle exit=0
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
restruct --plan D: 0 of 0 TUs with lying declarations · 0 callees
|
||||
restruct --apply D: nothing to do (no drawable file)
|
||||
t4_D56 wall=154.33 s
|
||||
exit=0
|
||||
@@ -0,0 +1 @@
|
||||
delever_oracle --snapshot-baseline: 7428 object(s) under .run/P36/delever/baseline at 06615fe89; link inputs for 218/218 binaries under .run/P36/delever/baseline/_link (links.json)
|
||||
@@ -200,5 +200,9 @@ table five times, and proved the oracle needs a linked-relocation mode before a
|
||||
has a linker in it, ask the linker (the build's own tail), never re-derive its arithmetic; snapshot an oracle's baseline only from a clean run
|
||||
and make the snapshot refuse what it cannot reproduce; compute every process pool before the first thread. Read a census's rows against the
|
||||
DEFINITIONS' names before pricing a campaign on them — a function defined under another name is a hole in the denominator, and a planner
|
||||
should count only the rows its engine can act on. In one line, the
|
||||
should count only the rows its engine can act on. S108 added the sharpest version of the lesson: a census can be wrong about its own denominator in five independent ways at once (an index
|
||||
that skips a sibling's includes, a name where an identity was needed, an anchored regex, a counter that never read included bodies, a
|
||||
snapshot that stamps an empty build), and every repair moved the count by thousands while no rung got smarter — so a "stalling" number is
|
||||
first a question about the instrument, then about the population, and only then about the method; and the stop rule for a mechanical
|
||||
campaign is the remainder bucketed by its recorded cause, never the yield of the last two batches. In one line, the
|
||||
generation's rule so far: *the byte gate is still the only judge, and after 100 % it judges spelling.*
|
||||
|
||||
@@ -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 | 28 | | 218 | 100.0% | 100.0% | 100.0% | 100.0% | 0 | 789 / 2091 | — | 503,016 |
|
||||
| 2026-09-12 | 100 | | 218 | 100.0% | 100.0% | 100.0% | 100.0% | 0 | 789 / 2091 | 3,730 | 503,013 |
|
||||
|
||||
78 dated rows · phase ticks from the 37 PhaseEnds · the chart: `docs/story-timeline.svg`.
|
||||
|
||||
+19
-18
@@ -63,25 +63,26 @@
|
||||
<line x1="60" y1="519.5" x2="980" y2="519.5" stroke="#ddd"/><text x="54" y="523.5" text-anchor="end" font-size="11" fill="#555">75%</text>
|
||||
<line x1="60" y1="464.0" x2="980" y2="464.0" stroke="#ddd"/><text x="54" y="468.0" text-anchor="end" font-size="11" fill="#555">100%</text>
|
||||
<line x1="60.0" y1="464" x2="60.0" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="63.0" y="474" font-size="9" fill="#a00">the census (T1)</text>
|
||||
<line x1="69.8" y1="464" x2="69.8" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="72.8" y="486" font-size="9" fill="#a00">mechanical strip — rung A/B (T4)</text>
|
||||
<line x1="197.0" y1="464" x2="197.0" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="200.0" y="498" font-size="9" fill="#a00">the GTE header (T5)</text>
|
||||
<line x1="216.6" y1="464" x2="216.6" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="219.6" y="510" font-size="9" fill="#a00">recipes + permuter — rungs R/D (T6)</text>
|
||||
<line x1="246.0" y1="464" x2="246.0" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="249.0" y="474" font-size="9" fill="#a00">the guided search — rung G (S101)</text>
|
||||
<line x1="304.7" y1="464" x2="304.7" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="307.7" y="486" font-size="9" fill="#a00">agents, one per class + the call-arity class (S102)</text>
|
||||
<line x1="510.2" y1="464" x2="510.2" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="513.2" y="498" font-size="9" fill="#a00">agents, TU batches + regen (S103)</text>
|
||||
<line x1="754.9" y1="464" x2="754.9" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="757.9" y="510" font-size="9" fill="#a00">agents, TU batches (S104)</text>
|
||||
<line x1="862.6" y1="464" x2="862.6" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="865.6" y="474" font-size="9" fill="#a00">S105</text>
|
||||
<line x1="970.2" y1="464" x2="970.2" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="973.2" y="486" font-size="9" fill="#a00">P36</text>
|
||||
<line x1="980.0" y1="464" x2="980.0" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="983.0" y="498" font-size="9" fill="#a00">P37</text>
|
||||
<line x1="69.7" y1="464" x2="69.7" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="72.7" y="486" font-size="9" fill="#a00">mechanical strip — rung A/B (T4)</text>
|
||||
<line x1="195.6" y1="464" x2="195.6" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="198.6" y="498" font-size="9" fill="#a00">the GTE header (T5)</text>
|
||||
<line x1="214.9" y1="464" x2="214.9" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="217.9" y="510" font-size="9" fill="#a00">recipes + permuter — rungs R/D (T6)</text>
|
||||
<line x1="244.0" y1="464" x2="244.0" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="247.0" y="474" font-size="9" fill="#a00">the guided search — rung G (S101)</text>
|
||||
<line x1="302.1" y1="464" x2="302.1" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="305.1" y="486" font-size="9" fill="#a00">agents, one per class + the call-arity class (S102)</text>
|
||||
<line x1="505.5" y1="464" x2="505.5" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="508.5" y="498" font-size="9" fill="#a00">agents, TU batches + regen (S103)</text>
|
||||
<line x1="747.6" y1="464" x2="747.6" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="750.6" y="510" font-size="9" fill="#a00">agents, TU batches (S104)</text>
|
||||
<line x1="854.1" y1="464" x2="854.1" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="857.1" y="474" font-size="9" fill="#a00">S105</text>
|
||||
<line x1="960.6" y1="464" x2="960.6" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="963.6" y="486" font-size="9" fill="#a00">P36</text>
|
||||
<line x1="970.3" y1="464" x2="970.3" y2="686" stroke="#d62728" stroke-dasharray="2,3" opacity="0.6"/><text x="973.3" y="498" font-size="9" fill="#a00">P37</text>
|
||||
<line x1="60.0" y1="686" x2="60.0" y2="692" stroke="#888"/><text x="62.0" y="702" font-size="9" fill="#333">09-09</text>
|
||||
<line x1="304.7" y1="686" x2="304.7" y2="692" stroke="#888"/><text x="306.7" y="702" font-size="9" fill="#333">09-10</text>
|
||||
<line x1="803.8" y1="686" x2="803.8" y2="692" stroke="#888"/><text x="805.8" y="702" font-size="9" fill="#333">09-11</text>
|
||||
<polyline fill="none" stroke="#d62728" stroke-width="2" points="60.0,464.0 69.8,478.3 79.6,492.4 89.4,504.5 99.1,513.3 108.9,519.5 118.7,525.1 128.5,532.6 138.3,534.1 148.1,542.3 157.9,543.8 167.7,545.0 177.4,545.7 187.2,545.7 197.0,544.6 206.8,543.8 216.6,544.4 226.4,544.4 236.2,546.6 246.0,547.1 255.7,548.2 265.5,556.6 275.3,557.1 285.1,557.5 294.9,559.4 304.7,560.5 314.5,562.1 324.3,562.6 334.0,562.8 343.8,562.8 353.6,564.2 363.4,564.4 373.2,564.4 383.0,565.0 392.8,565.5 402.6,569.3 412.3,574.6 422.1,575.6 431.9,575.6 441.7,575.6 451.5,576.7 461.3,577.2 471.1,582.1 480.9,582.6 490.6,585.4 500.4,585.4 510.2,585.9 520.0,601.7 529.8,605.6 539.6,607.7 549.4,612.1 559.1,612.2 568.9,618.1 578.7,619.2 588.5,619.2 598.3,622.4 608.1,628.3 617.9,631.4 627.7,632.0 637.4,633.5 647.2,633.7 657.0,633.9 666.8,635.8 676.6,635.9 686.4,636.0 696.2,644.5 706.0,648.3 715.7,663.5 725.5,663.6 735.3,664.2 745.1,664.7 754.9,665.3 764.7,666.2 774.5,666.3 784.3,666.6 794.0,666.8 803.8,667.3 813.6,667.5 823.4,667.9 833.2,668.2 843.0,668.4 852.8,668.7 862.6,668.8 872.3,668.8 882.1,668.9 891.9,669.0 901.7,669.0 911.5,669.1 921.3,669.1 931.1,669.1 940.9,669.2 950.6,669.2 960.4,669.3 970.2,669.3 980.0,669.3"/>
|
||||
<text x="976.0" y="663.3" text-anchor="end" font-size="10" fill="#d62728">4,010</text>
|
||||
<text x="970" y="557.2" text-anchor="end" font-size="12" fill="#d62728">register pins + asm statements (the lever series, 95 increments): 53,221 → 4,010</text>
|
||||
<polyline fill="none" stroke="#9467bd" stroke-width="2" stroke-dasharray="5,4" points="794.0,464.0 980.0,465.2"/>
|
||||
<line x1="302.1" y1="686" x2="302.1" y2="692" stroke="#888"/><text x="304.1" y="702" font-size="9" fill="#333">09-10</text>
|
||||
<line x1="796.0" y1="686" x2="796.0" y2="692" stroke="#888"/><text x="798.0" y="702" font-size="9" fill="#333">09-11</text>
|
||||
<line x1="980.0" y1="686" x2="980.0" y2="692" stroke="#888"/><text x="982.0" y="702" font-size="9" fill="#333">09-12</text>
|
||||
<polyline fill="none" stroke="#d62728" stroke-width="2" points="60.0,464.0 69.7,478.3 79.4,492.4 89.1,504.5 98.7,513.3 108.4,519.5 118.1,525.1 127.8,532.6 137.5,534.1 147.2,542.3 156.8,543.8 166.5,545.0 176.2,545.7 185.9,545.7 195.6,544.6 205.3,543.8 214.9,544.4 224.6,544.4 234.3,546.6 244.0,547.1 253.7,548.2 263.4,556.6 273.1,557.1 282.7,557.5 292.4,559.4 302.1,560.5 311.8,562.1 321.5,562.6 331.2,562.8 340.8,562.8 350.5,564.2 360.2,564.4 369.9,564.4 379.6,565.0 389.3,565.5 398.9,569.3 408.6,574.6 418.3,575.6 428.0,575.6 437.7,575.6 447.4,576.7 457.1,577.2 466.7,582.1 476.4,582.6 486.1,585.4 495.8,585.4 505.5,585.9 515.2,601.7 524.8,605.6 534.5,607.7 544.2,612.1 553.9,612.2 563.6,618.1 573.3,619.2 582.9,619.2 592.6,622.4 602.3,628.3 612.0,631.4 621.7,632.0 631.4,633.5 641.1,633.7 650.7,633.9 660.4,635.8 670.1,635.9 679.8,636.0 689.5,644.5 699.2,648.3 708.8,663.5 718.5,663.6 728.2,664.2 737.9,664.7 747.6,665.3 757.3,666.2 766.9,666.3 776.6,666.6 786.3,666.8 796.0,667.3 805.7,667.5 815.4,667.9 825.1,668.2 834.7,668.4 844.4,668.7 854.1,668.8 863.8,668.8 873.5,668.9 883.2,669.0 892.8,669.0 902.5,669.1 912.2,669.1 921.9,669.1 931.6,669.2 941.3,669.2 950.9,669.3 960.6,669.3 970.3,669.3 980.0,670.4"/>
|
||||
<text x="976.0" y="664.4" text-anchor="end" font-size="10" fill="#d62728">3,730</text>
|
||||
<text x="970" y="557.2" text-anchor="end" font-size="12" fill="#d62728">register pins + asm statements (the lever series, 96 increments): 53,221 → 3,730</text>
|
||||
<polyline fill="none" stroke="#9467bd" stroke-width="2" stroke-dasharray="5,4" points="786.3,464.0 970.3,465.2"/>
|
||||
<text x="970" y="526.2" text-anchor="end" font-size="12" fill="#9467bd">raw pointer-cast dereferences — the one-form regex count (until the census, 2026-09-12): 414,148 → 411,850</text>
|
||||
<polyline fill="none" stroke="#9467bd" stroke-width="2" stroke-dasharray="" points="980.0,464.0 980.0,464.0"/>
|
||||
<text x="970" y="541.7" text-anchor="end" font-size="12" fill="#9467bd">raw pointer-cast dereferences — the four-form census (2026-09-12 →; a new instrument, its own 100 %): 503,016 → 503,016</text>
|
||||
<polyline fill="none" stroke="#9467bd" stroke-width="2" stroke-dasharray="" points="970.3,464.0 980.0,464.0 980.0,464.0"/>
|
||||
<text x="970" y="541.7" text-anchor="end" font-size="12" fill="#9467bd">raw pointer-cast dereferences — the four-form census (2026-09-12 →; a new instrument, its own 100 %): 503,016 → 503,013</text>
|
||||
<text x="980" y="726" text-anchor="end" font-size="10" fill="#777">generated by tools/timeline.py — keyed by date</text>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
@@ -246,6 +246,29 @@ where that address is a different function. A hundred and twenty landed; twenty-
|
||||
translation unit holds callers that disagree with the definition inside one file — the original was several files, and only the file-layout
|
||||
phase can say so.
|
||||
|
||||
The next day the declaration layer went to its floor, and the story of that day is the story of five things the instruments could not
|
||||
see. The morning's first batch drew three hundred files and found nothing to do; the reason was not the code but the engine's index,
|
||||
which had never looked inside the shared bodies a neighbouring file includes — and since the dedup phase every shared function lives in
|
||||
exactly such a body, so every level's own shared functions had read as foreign. One loop fixed it, and the next batch alone put ten
|
||||
thousand declarations right. Then the census itself turned out to be counting wrong: it identified a function by its bare name, and the
|
||||
game has more than six thousand names that stand for two or three different functions in different levels, so nearly three thousand
|
||||
correct declarations had been counted as lies. Then a regular expression anchored at the start of a line had missed every function
|
||||
definition that happened to be indented, and repairing it revealed ten thousand more declarations nobody had known were wrong. Each time,
|
||||
the number fell by thousands without a new idea, only a repaired instrument: ninety-eight thousand lying declarations at the phase's start,
|
||||
two thousand one hundred at the day's end, with five thousand more counted apart as the original's own calling convention — a caller
|
||||
passing fewer arguments than the function takes, proven on the bytes and marked in place — and four hundred as cross-binary calls the
|
||||
fleet cannot agree about.
|
||||
|
||||
The parked signature changes from the levers phase landed the same day, and each taught something. The function whose pins had faked a
|
||||
missing argument in a hundred and thirty-two levels was one body over per-level data; renaming its data symbol to each level's own, by
|
||||
order of appearance, closed all of them in one judged unit and took two hundred and sixty-four pins off the count. Another needed its three
|
||||
zero-argument callers rewritten in the same unit as its definition — the pin had been the argument all along, and where the caller had
|
||||
compared a value before the call, spelling that value as a local put it exactly where the pin had forced it, in the first argument
|
||||
register. A third needed nothing but its return type: a function that falls off the end, declared to return an integer, keeps the
|
||||
compiler from stealing an instruction into a branch's delay slot. The levers count fell from four thousand and ten to three thousand seven
|
||||
hundred and thirty. One mistake of the day was mine: a restore run against a judge that had not yet finished stopping, which split a
|
||||
batch's bookkeeping — erased cleanly, and the rule written down: wait for the exit.
|
||||
|
||||
## 11. By the numbers
|
||||
|
||||
| | |
|
||||
|
||||
+53
-53
@@ -1,13 +1,13 @@
|
||||
# The struct map — the types the fleet's cast sites need (Phase 37 T1)
|
||||
|
||||
> **Generated by `tools/type_census.py` at `da26c05d6` (2026-09-12T07:20:21Z); never typed (R75).** Every raw pointer-cast dereference in `src/` was assigned to a base (a parameter, a local, a global by value or by address, an absolute address) and the bases were clustered by EVIDENCE only — the same global symbol, an argument passed to a callee's parameter, an assignment or return, a pointer field read, a shared body's fleet-wide identity — never by a similar offset signature. Each cluster is one type the tree needs. Names are placeholders (`Unkstruct_<addr>`: the lowest global instance's address, else the lowest member function's); fields are placeholders (`unk<HEX>`) until Phase 38 cites evidence.
|
||||
> **Generated by `tools/type_census.py` at `06615fe89` (2026-09-13T03:24:00Z); never typed (R75).** Every raw pointer-cast dereference in `src/` was assigned to a base (a parameter, a local, a global by value or by address, an absolute address) and the bases were clustered by EVIDENCE only — the same global symbol, an argument passed to a callee's parameter, an assignment or return, a pointer field read, a shared body's fleet-wide identity — never by a similar offset signature. Each cluster is one type the tree needs. Names are placeholders (`Unkstruct_<addr>`: the lowest global instance's address, else the lowest member function's); fields are placeholders (`unk<HEX>`) until Phase 38 cites evidence.
|
||||
|
||||
**18760 types explain 498896 of 503016 dereference sites (99.2 %); 4120 sites have a base the census could not classify; 729 types carry a width conflict.** Merges by evidence: param 36550, assign 14717, arg 10176, field 9623, ret-of 3410, return 1523, assign& 1051, arg& 270.
|
||||
**18730 types explain 498894 of 503013 dereference sites (99.2 %); 4119 sites have a base the census could not classify; 729 types carry a width conflict.** Merges by evidence: param 36486, assign 14663, arg 10185, field 9613, ret-of 3374, return 1524, assign& 1052, arg& 270.
|
||||
|
||||
| # | type | sites | bodies | fields | size ≥ | width conflicts (+sign mixes) | instance globals | pointer globals |
|
||||
|---:|---|---:|---:|---:|---:|---:|---|---|
|
||||
| 1 | `Unkstruct_800B5CB8` | 107598 | 11186 | 134 | 0x10c | 50 (+55 sign) | D_800B5CB8, D_800D3888, D_80181448, D_80181538… | D_8006386C, D_80074778, D_80074780, D_80074784… |
|
||||
| 2 | `Unkstruct_80126B58` | 65397 | 17047 | 175 | 0x24c | 50 (+60 sign) | D_80126B58 | D_80126B58 |
|
||||
| 1 | `Unkstruct_800B5CB8` | 107600 | 11189 | 134 | 0x10c | 50 (+55 sign) | D_800B5CB8, D_800D3888, D_80181448, D_80181538… | D_8006386C, D_80074778, D_80074780, D_80074784… |
|
||||
| 2 | `Unkstruct_80126B58` | 65458 | 17068 | 177 | 0x24c | 50 (+62 sign) | D_80126B58 | D_80126B58 |
|
||||
| 3 | `Unkstruct_8018E71C` | 6745 | 396 | 7 | 0x10 | 0 (+0 sign) | D_8018E71C | |
|
||||
| 4 | `Unkstruct_dac960ce` | 4464 | 124 | 13 | 0x24c | 0 (+2 sign) | | |
|
||||
| 5 | `Unkstruct_0caecd54` | 4340 | 124 | 23 | 0xfe | 0 (+1 sign) | | |
|
||||
@@ -23,7 +23,7 @@
|
||||
| 15 | `Unkstruct_adc0bee4` | 2646 | 126 | 8 | 0x34 | 0 (+3 sign) | | |
|
||||
| 16 | `Unkstruct_198fc7cc` | 2580 | 129 | 16 | 0x38 | 3 (+1 sign) | | |
|
||||
| 17 | `Unkstruct_801439FC` | 2489 | 981 | 57 | 0x10c | 9 (+22 sign) | | |
|
||||
| 18 | `Unkstruct_80130D48` | 2382 | 587 | 25 | 0x64 | 6 (+3 sign) | | D_80072C84, D_80078E78 |
|
||||
| 18 | `Unkstruct_80130D48` | 2363 | 585 | 17 | 0x64 | 2 (+3 sign) | | D_80072C84, D_80078E78 |
|
||||
| 19 | `Unkstruct_ed8f1335` | 2356 | 124 | 18 | 0x24 | 0 (+0 sign) | | |
|
||||
| 20 | `Unkstruct_8016B4F8` | 2140 | 535 | 5 | 0x30 | 0 (+0 sign) | | |
|
||||
| 21 | `Unkstruct_80139C7C` | 2111 | 265 | 14 | 0x44 | 0 (+3 sign) | | |
|
||||
@@ -34,7 +34,7 @@
|
||||
| 26 | `Unkstruct_a8d34bce` | 1948 | 1948 | 1 | 0x215 | 0 (+0 sign) | | |
|
||||
| 27 | `Unkstruct_568f7bda` | 1875 | 125 | 9 | 0x38 | 0 (+0 sign) | | |
|
||||
| 28 | `Unkstruct_8016DF5C` | 1791 | 131 | 9 | 0x38 | 0 (+3 sign) | | |
|
||||
| 29 | `Unkstruct_f1f49381` | 1764 | 126 | 10 | 0x38 | 0 (+0 sign) | | |
|
||||
| 29 | `Unkstruct_cd1bacd2` | 1764 | 126 | 10 | 0x38 | 0 (+0 sign) | | |
|
||||
| 30 | `Unkstruct_8011F7A8` | 1746 | 271 | 7 | 0x11e | 0 (+0 sign) | D_8011F7A8 | |
|
||||
| 31 | `Unkstruct_84612d18` | 1722 | 123 | 8 | 0x4b | 0 (+0 sign) | | |
|
||||
| 32 | `Unkstruct_57db4d07` | 1664 | 128 | 13 | 0x0 | 13 (+0 sign) | | |
|
||||
@@ -62,26 +62,26 @@
|
||||
| 54 | `Unkstruct_0b30043d` | 1128 | 376 | 3 | 0x5e | 0 (+0 sign) | | |
|
||||
| 55 | `Unkstruct_301381d4` | 1116 | 124 | 3 | 0x36 | 0 (+1 sign) | | |
|
||||
| 56 | `Unkstruct_0ced46e2` | 1116 | 124 | 5 | 0xfe | 0 (+0 sign) | | |
|
||||
| 57 | `Unkstruct_f153f338` | 1107 | 123 | 5 | 0x34 | 0 (+0 sign) | | |
|
||||
| 57 | `Unkstruct_4857195e` | 1107 | 123 | 5 | 0x34 | 0 (+0 sign) | | |
|
||||
| 58 | `Unkstruct_50a3f6b4` | 1040 | 130 | 3 | 0x36 | 0 (+0 sign) | | |
|
||||
| 59 | `Unkstruct_800B9A02` | 992 | 434 | 1 | 0x2 | 0 (+0 sign) | D_800B9A02 | |
|
||||
| 59 | `Unkstruct_800B9A02` | 993 | 435 | 1 | 0x2 | 0 (+0 sign) | D_800B9A02 | |
|
||||
| 60 | `Unkstruct_f74e3af7` | 992 | 124 | 5 | 0xfe | 0 (+0 sign) | | |
|
||||
| 61 | `Unkstruct_6b138cb0` | 931 | 133 | 7 | 0x20 | 1 (+0 sign) | | |
|
||||
| 61 | `Unkstruct_b6c7c603` | 931 | 133 | 7 | 0x20 | 1 (+0 sign) | | |
|
||||
| 62 | `Unkstruct_b774eeeb` | 917 | 131 | 4 | 0x41 | 0 (+0 sign) | | |
|
||||
| 63 | `Unkstruct_6d856e9d` | 917 | 131 | 5 | 0x1e | 3 (+1 sign) | | |
|
||||
| 64 | `Unkstruct_d0c6cce6` | 917 | 131 | 4 | 0x38 | 0 (+0 sign) | | |
|
||||
| 65 | `Unkstruct_859b4fab` | 910 | 130 | 4 | 0xb0 | 0 (+0 sign) | | |
|
||||
| 66 | `Unkstruct_801463A0` | 907 | 210 | 13 | 0x54 | 0 (+1 sign) | | D_80126B78 |
|
||||
| 67 | `Unkstruct_6d3f3f5d` | 889 | 127 | 6 | 0x38 | 0 (+0 sign) | | |
|
||||
| 63 | `Unkstruct_859b4fab` | 910 | 130 | 4 | 0xb0 | 0 (+0 sign) | | |
|
||||
| 64 | `Unkstruct_801463A0` | 907 | 210 | 13 | 0x54 | 0 (+1 sign) | | D_80126B78 |
|
||||
| 65 | `Unkstruct_6d3f3f5d` | 889 | 127 | 6 | 0x38 | 0 (+0 sign) | | |
|
||||
| 66 | `Unkstruct_6d856e9d` | 889 | 127 | 5 | 0x1e | 3 (+1 sign) | | |
|
||||
| 67 | `Unkstruct_d0c6cce6` | 889 | 127 | 4 | 0x38 | 0 (+0 sign) | | |
|
||||
| 68 | `Unkstruct_1e86c313` | 882 | 126 | 4 | 0x8 | 0 (+0 sign) | | |
|
||||
| 69 | `Unkstruct_a41ec127` | 882 | 126 | 6 | 0x38 | 0 (+0 sign) | | |
|
||||
| 70 | `Unkstruct_3f697924` | 875 | 125 | 5 | 0x38 | 0 (+0 sign) | | |
|
||||
| 71 | `Unkstruct_e505dcd3` | 868 | 124 | 4 | 0x8 | 0 (+0 sign) | | |
|
||||
| 72 | `Unkstruct_fe02110c` | 868 | 124 | 3 | 0x10 | 0 (+2 sign) | | |
|
||||
| 73 | `Unkstruct_92677d11` | 861 | 123 | 5 | 0x240 | 0 (+0 sign) | | |
|
||||
| 74 | `Unkstruct_86465c2c` | 861 | 123 | 7 | 0x20 | 0 (+0 sign) | | |
|
||||
| 75 | `Unkstruct_ffd2397c` | 854 | 122 | 5 | 0x34 | 0 (+0 sign) | | |
|
||||
| 76 | `Unkstruct_17738e2c` | 821 | 30 | 32 | 0xa4 | 12 (+5 sign) | | |
|
||||
| 70 | `Unkstruct_17738e2c` | 876 | 33 | 32 | 0xa4 | 12 (+5 sign) | | |
|
||||
| 71 | `Unkstruct_3f697924` | 875 | 125 | 5 | 0x38 | 0 (+0 sign) | | |
|
||||
| 72 | `Unkstruct_e505dcd3` | 868 | 124 | 4 | 0x8 | 0 (+0 sign) | | |
|
||||
| 73 | `Unkstruct_fe02110c` | 868 | 124 | 3 | 0x10 | 0 (+2 sign) | | |
|
||||
| 74 | `Unkstruct_92677d11` | 861 | 123 | 5 | 0x240 | 0 (+0 sign) | | |
|
||||
| 75 | `Unkstruct_86465c2c` | 861 | 123 | 7 | 0x20 | 0 (+0 sign) | | |
|
||||
| 76 | `Unkstruct_ffd2397c` | 854 | 122 | 5 | 0x34 | 0 (+0 sign) | | |
|
||||
| 77 | `Unkstruct_801270C0` | 821 | 820 | 1 | 0x2 | 0 (+0 sign) | D_801270C0 | |
|
||||
| 78 | `Unkstruct_2932a0a7` | 798 | 133 | 6 | 0x12 | 5 (+0 sign) | | |
|
||||
| 79 | `Unkstruct_0a8f505b` | 790 | 83 | 14 | 0x10c | 0 (+5 sign) | | |
|
||||
@@ -102,25 +102,25 @@
|
||||
| 94 | `Unkstruct_800AF630` | 671 | 537 | 3 | 0xa3dc | 0 (+0 sign) | D_800AF630 | |
|
||||
| 95 | `Unkstruct_8012C284` | 668 | 533 | 1 | 0x2 | 0 (+1 sign) | | D_80126720 |
|
||||
| 96 | `Unkstruct_80115128` | 667 | 534 | 1 | 0x2 | 0 (+0 sign) | D_80115128 | |
|
||||
| 97 | `Unkstruct_3271c3cc` | 665 | 133 | 3 | 0x5e | 0 (+0 sign) | | |
|
||||
| 97 | `Unkstruct_896c95f7` | 665 | 133 | 3 | 0x5e | 0 (+0 sign) | | |
|
||||
| 98 | `Unkstruct_61789347` | 665 | 133 | 0 | 0x0 | 0 (+0 sign) | | |
|
||||
| 99 | `Unkstruct_05fa9429` | 665 | 133 | 0 | 0x0 | 0 (+0 sign) | | |
|
||||
| 99 | `Unkstruct_b89d503f` | 665 | 133 | 0 | 0x0 | 0 (+0 sign) | | |
|
||||
| 100 | `Unkstruct_801345F8` | 665 | 133 | 0 | 0x0 | 0 (+0 sign) | | |
|
||||
| 101 | `Unkstruct_801345F8` | 665 | 133 | 0 | 0x0 | 0 (+0 sign) | | |
|
||||
| 102 | `Unkstruct_801152A0` | 665 | 399 | 1 | 0x2 | 0 (+0 sign) | D_801152A0 | |
|
||||
| 103 | `Unkstruct_89230a8b` | 665 | 133 | 5 | 0x1c | 0 (+0 sign) | | |
|
||||
| 104 | `Unkstruct_fdd04bae` | 650 | 130 | 3 | 0x38 | 0 (+0 sign) | | |
|
||||
| 105 | `Unkstruct_eb8b6fbf` | 645 | 129 | 5 | 0xfe | 0 (+0 sign) | | |
|
||||
| 106 | `Unkstruct_90d0825c` | 645 | 129 | 5 | 0x1c | 1 (+0 sign) | | |
|
||||
| 107 | `Unkstruct_27c177f1` | 645 | 129 | 4 | 0x34 | 0 (+0 sign) | | |
|
||||
| 108 | `Unkstruct_4f9f60b8` | 630 | 126 | 4 | 0x78 | 0 (+0 sign) | | |
|
||||
| 109 | `Unkstruct_7a31a22f` | 630 | 126 | 2 | 0x19c | 0 (+0 sign) | | |
|
||||
| 110 | `Unkstruct_187abeff` | 630 | 126 | 5 | 0x68 | 0 (+0 sign) | | |
|
||||
| 111 | `Unkstruct_dafba7ce` | 630 | 126 | 4 | 0x20 | 0 (+0 sign) | | |
|
||||
| 112 | `Unkstruct_20d4328b` | 630 | 126 | 4 | 0x38 | 0 (+0 sign) | | |
|
||||
| 113 | `Unkstruct_d94ab931` | 625 | 125 | 4 | 0x6 | 2 (+1 sign) | | |
|
||||
| 114 | `Unkstruct_7ef9c9ef` | 625 | 125 | 4 | 0x6 | 2 (+1 sign) | | |
|
||||
| 115 | `Unkstruct_8ce68494` | 625 | 125 | 2 | 0x1a | 0 (+0 sign) | | |
|
||||
| 103 | `Unkstruct_fdd04bae` | 650 | 130 | 3 | 0x38 | 0 (+0 sign) | | |
|
||||
| 104 | `Unkstruct_eb8b6fbf` | 645 | 129 | 5 | 0xfe | 0 (+0 sign) | | |
|
||||
| 105 | `Unkstruct_90d0825c` | 645 | 129 | 5 | 0x1c | 1 (+0 sign) | | |
|
||||
| 106 | `Unkstruct_27c177f1` | 645 | 129 | 4 | 0x34 | 0 (+0 sign) | | |
|
||||
| 107 | `Unkstruct_4f9f60b8` | 630 | 126 | 4 | 0x78 | 0 (+0 sign) | | |
|
||||
| 108 | `Unkstruct_7a31a22f` | 630 | 126 | 2 | 0x19c | 0 (+0 sign) | | |
|
||||
| 109 | `Unkstruct_187abeff` | 630 | 126 | 5 | 0x68 | 0 (+0 sign) | | |
|
||||
| 110 | `Unkstruct_f9fa1fb7` | 630 | 126 | 4 | 0x20 | 0 (+0 sign) | | |
|
||||
| 111 | `Unkstruct_20d4328b` | 630 | 126 | 4 | 0x38 | 0 (+0 sign) | | |
|
||||
| 112 | `Unkstruct_d94ab931` | 625 | 125 | 4 | 0x6 | 2 (+1 sign) | | |
|
||||
| 113 | `Unkstruct_7ef9c9ef` | 625 | 125 | 4 | 0x6 | 2 (+1 sign) | | |
|
||||
| 114 | `Unkstruct_ad0948d5` | 625 | 125 | 5 | 0x1c | 0 (+0 sign) | | |
|
||||
| 115 | `Unkstruct_fccefc1f` | 625 | 125 | 2 | 0x1a | 0 (+0 sign) | | |
|
||||
| 116 | `Unkstruct_57ae03d1` | 620 | 124 | 2 | 0x2c | 0 (+0 sign) | | |
|
||||
| 117 | `Unkstruct_af1e9d57` | 620 | 248 | 4 | 0x64 | 0 (+0 sign) | | |
|
||||
| 118 | `Unkstruct_172cbd29` | 620 | 124 | 2 | 0x1fc | 0 (+0 sign) | | |
|
||||
@@ -131,7 +131,7 @@
|
||||
| 123 | `Unkstruct_8011512E` | 532 | 133 | 1 | 0x2 | 0 (+0 sign) | D_8011512E | |
|
||||
| 124 | `Unkstruct_8016BFA8` | 532 | 133 | 4 | 0x24 | 0 (+0 sign) | | |
|
||||
| 125 | `Unkstruct_30befa8c` | 520 | 130 | 3 | 0xfe | 0 (+0 sign) | | |
|
||||
| 126 | `Unkstruct_00ddc7c9` | 520 | 130 | 1 | 0x2 | 1 (+0 sign) | | |
|
||||
| 126 | `Unkstruct_b7ae0eae` | 520 | 130 | 1 | 0x2 | 1 (+0 sign) | | |
|
||||
| 127 | `Unkstruct_01082f7a` | 520 | 520 | 1 | 0x4 | 0 (+0 sign) | | |
|
||||
| 128 | `Unkstruct_db0ee441` | 516 | 129 | 4 | 0x38 | 0 (+0 sign) | | |
|
||||
| 129 | `Unkstruct_7476116e` | 516 | 129 | 1 | 0x4 | 0 (+0 sign) | | |
|
||||
@@ -143,7 +143,7 @@
|
||||
| 135 | `Unkstruct_494cef68` | 496 | 124 | 2 | 0x188 | 0 (+0 sign) | | |
|
||||
| 136 | `Unkstruct_93df0322` | 496 | 124 | 4 | 0x38 | 0 (+0 sign) | | |
|
||||
| 137 | `Unkstruct_3b2b6e45` | 496 | 124 | 4 | 0x38 | 0 (+0 sign) | | |
|
||||
| 138 | `Unkstruct_31283f15` | 492 | 123 | 3 | 0x6 | 0 (+0 sign) | | |
|
||||
| 138 | `Unkstruct_9e228c39` | 492 | 123 | 3 | 0x6 | 0 (+0 sign) | | |
|
||||
| 139 | `Unkstruct_a05973fa` | 492 | 123 | 3 | 0x2c | 0 (+0 sign) | | |
|
||||
| 140 | `Unkstruct_48c11385` | 441 | 21 | 5 | 0x68 | 0 (+0 sign) | | |
|
||||
| 141 | `Unkstruct_a55a221e` | 428 | 428 | 1 | 0x215 | 0 (+0 sign) | | |
|
||||
@@ -153,16 +153,16 @@
|
||||
| 145 | `Unkstruct_8016B5C0` | 399 | 133 | 2 | 0x1c | 0 (+0 sign) | | |
|
||||
| 146 | `Unkstruct_8016BFA8` | 399 | 133 | 3 | 0x6 | 0 (+0 sign) | | |
|
||||
| 147 | `Unkstruct_8011F7F0` | 399 | 133 | 3 | 0x42 | 0 (+0 sign) | D_8011F7F0 | |
|
||||
| 148 | `Unkstruct_2552224c` | 393 | 131 | 3 | 0x10 | 0 (+0 sign) | | |
|
||||
| 149 | `Unkstruct_1649b9a7` | 392 | 28 | 8 | 0x38 | 0 (+2 sign) | | |
|
||||
| 150 | `Unkstruct_ea5ed765` | 390 | 130 | 1 | 0xdb | 0 (+0 sign) | | |
|
||||
| 151 | `Unkstruct_80135260` | 390 | 130 | 3 | 0x6 | 0 (+0 sign) | | |
|
||||
| 152 | `Unkstruct_a472a6ba` | 387 | 129 | 3 | 0x1c | 0 (+0 sign) | | |
|
||||
| 153 | `Unkstruct_630777a3` | 387 | 258 | 2 | 0x5 | 0 (+0 sign) | | |
|
||||
| 154 | `Unkstruct_f2440762` | 384 | 128 | 1 | 0x4 | 0 (+0 sign) | | |
|
||||
| 155 | `Unkstruct_80164BDC` | 384 | 128 | 5 | 0x64 | 0 (+1 sign) | | |
|
||||
| 156 | `Unkstruct_8c2ab96e` | 384 | 128 | 3 | 0x8 | 0 (+0 sign) | | |
|
||||
| 157 | `Unkstruct_d448adea` | 384 | 48 | 0 | 0x0 | 0 (+0 sign) | | |
|
||||
| 148 | `Unkstruct_1649b9a7` | 392 | 28 | 8 | 0x38 | 0 (+2 sign) | | |
|
||||
| 149 | `Unkstruct_ea5ed765` | 390 | 130 | 1 | 0xdb | 0 (+0 sign) | | |
|
||||
| 150 | `Unkstruct_80135260` | 390 | 130 | 3 | 0x6 | 0 (+0 sign) | | |
|
||||
| 151 | `Unkstruct_a472a6ba` | 387 | 129 | 3 | 0x1c | 0 (+0 sign) | | |
|
||||
| 152 | `Unkstruct_630777a3` | 387 | 258 | 2 | 0x5 | 0 (+0 sign) | | |
|
||||
| 153 | `Unkstruct_f2440762` | 384 | 128 | 1 | 0x4 | 0 (+0 sign) | | |
|
||||
| 154 | `Unkstruct_80164BDC` | 384 | 128 | 5 | 0x64 | 0 (+1 sign) | | |
|
||||
| 155 | `Unkstruct_8c2ab96e` | 384 | 128 | 3 | 0x8 | 0 (+0 sign) | | |
|
||||
| 156 | `Unkstruct_d448adea` | 384 | 48 | 0 | 0x0 | 0 (+0 sign) | | |
|
||||
| 157 | `Unkstruct_2552224c` | 381 | 127 | 3 | 0x10 | 0 (+0 sign) | | |
|
||||
| 158 | `Unkstruct_e79a0730` | 378 | 126 | 2 | 0x24 | 0 (+0 sign) | | |
|
||||
| 159 | `Unkstruct_1a8e907f` | 378 | 126 | 1 | 0x4 | 0 (+0 sign) | | |
|
||||
| 160 | `Unkstruct_e1c73ac0` | 378 | 126 | 3 | 0x6 | 0 (+0 sign) | | |
|
||||
@@ -170,7 +170,7 @@
|
||||
| 162 | `Unkstruct_93e44aed` | 378 | 126 | 2 | 0x1c | 0 (+0 sign) | | |
|
||||
| 163 | `Unkstruct_24687968` | 378 | 126 | 3 | 0xe | 0 (+0 sign) | | |
|
||||
| 164 | `Unkstruct_89684c99` | 375 | 125 | 3 | 0x6 | 0 (+0 sign) | | |
|
||||
| 165 | `Unkstruct_831a2d3a` | 375 | 125 | 2 | 0x24 | 0 (+0 sign) | | |
|
||||
| 165 | `Unkstruct_d0754cca` | 375 | 125 | 2 | 0x24 | 0 (+0 sign) | | |
|
||||
| 166 | `Unkstruct_89f82b52` | 372 | 124 | 3 | 0x1ca | 0 (+0 sign) | | |
|
||||
| 167 | `Unkstruct_924d03d6` | 372 | 124 | 3 | 0x6 | 0 (+0 sign) | | |
|
||||
| 168 | `Unkstruct_7fd6458b` | 372 | 124 | 1 | 0x40 | 0 (+0 sign) | | |
|
||||
@@ -194,9 +194,9 @@
|
||||
| 186 | `Unkstruct_801269F4` | 267 | 134 | 1 | 0x2 | 0 (+0 sign) | D_801269F4 | |
|
||||
| 187 | `Unkstruct_8012C1DC` | 267 | 134 | 3 | 0x1c | 0 (+0 sign) | | |
|
||||
| 188 | `Unkstruct_8011515C` | 267 | 267 | 1 | 0x2 | 0 (+1 sign) | D_8011515C | |
|
||||
| 189 | `Unkstruct_640f8122` | 266 | 133 | 1 | 0x2e | 0 (+0 sign) | | |
|
||||
| 190 | `Unkstruct_02495693` | 266 | 133 | 2 | 0x1e | 0 (+0 sign) | | |
|
||||
| 191 | `Unkstruct_3f149285` | 266 | 133 | 1 | 0x2 | 0 (+0 sign) | | |
|
||||
| 189 | `Unkstruct_1db7b82d` | 266 | 133 | 1 | 0x2e | 0 (+0 sign) | | |
|
||||
| 190 | `Unkstruct_6bd63257` | 266 | 133 | 2 | 0x1e | 0 (+0 sign) | | |
|
||||
| 191 | `Unkstruct_f85de09d` | 266 | 133 | 1 | 0x2 | 0 (+0 sign) | | |
|
||||
| 192 | `Unkstruct_a310cf42` | 266 | 133 | 1 | 0x4 | 0 (+0 sign) | | |
|
||||
| 193 | `Unkstruct_80115124` | 266 | 266 | 1 | 0x2 | 0 (+0 sign) | D_80115124 | |
|
||||
| 194 | `Unkstruct_800D4BE0` | 266 | 133 | 1 | 0x4 | 0 (+0 sign) | D_800D4BE0 | |
|
||||
@@ -207,4 +207,4 @@
|
||||
| 199 | `Unkstruct_80126B62` | 265 | 252 | 2 | 0xe | 0 (+1 sign) | D_80126B62 | |
|
||||
| 200 | `Unkstruct_76f4299b` | 262 | 131 | 1 | 0x4a | 0 (+0 sign) | | |
|
||||
|
||||
*18760 types in all; the table shows the 200 largest by site count. The full map with every type's layout (offset, width, sign, site count per field) and conflicts is `.run/P37/census/struct_map.json`.*
|
||||
*18730 types in all; the table shows the 200 largest by site count. The full map with every type's layout (offset, width, sign, site count per field) and conflicts is `.run/P37/census/struct_map.json`.*
|
||||
|
||||
+85
-79
@@ -733,63 +733,51 @@ bucketed by what each bucket needs before any plan is proposed. **Candidates for
|
||||
|
||||
- **2026-09-12 — T4 batch `t4_D55`** (`.run/P37/restruct/run_t4_D55.log`, `batch_t4_D55.json`): `restruct: batch t4_D55 rung D — 207 files (TUs; 207 drawable) · 412 declaration units: 411 canonical / 0 promoted / 1 K&R marked / 0 aliases typed / 0 __builtin_abs → abs / 1 kept · compiles 414 in 38 s wall · final 207/207 identical · written 207 files` → R22 (`.run/P37/baseline/r22_t4_D55.log`) **`check-all: 218 passed, 0 failed of 218`** (`wall=84.48 s`) → census `(census skipped)`.
|
||||
|
||||
## 🛑 SESSION CHECKPOINT — S107 (2026-09-12, FINAL — written for a FRESH session at 84 % context; the session's last commit follows this): gate 1 APPROVED, **T0 ☑ T1 ☑ T2 ☑ T3 ☑ — T4 IN PROGRESS (☐)** — 🛑 **T4 NEXT: resume the declaration layer where the cycle stopped (below, §1 "T4 — where it stands and the exact next commands"); xHigh** | R22 `check-all: 218 passed, 0 failed of 218` at `f2b58011e` (every one of the 21 T4 commits carries its own) | HEAD after this commit is the checkpoint's commit; tree clean; nothing pushed after `79b2f6f15` (Drew pushes, R6) | last batch `t4_D55` on 4293d0a84: 207 files (TUs; 207 drawable) · 412 declaration units: 411 canonical / 0 promoted / 1 K&R marked / 0 aliases typed / 0 __builtin_abs → abs / 1 kept · compiles 4
|
||||
## 🛑 SESSION CHECKPOINT — S108 (2026-09-12, FINAL — written for a FRESH session; the session's last commit follows this): gate 1 APPROVED, **T0 ☑ T1 ☑ T2 ☑ T3 ☑ — T4 IN PROGRESS (☐): steps (a)–(f) DONE, two owed items left** — 🛑 **T4 NEXT: (g) the 51 TU-CONFLICT rows retried through `share_body` (needs a `--retry-excepted` flag), (h) the 593 "no visible definition" rows read on one example; then the T4 ☑ line, the P6 rules check, T5 (Max for the head types); xHigh** | R22 `check-all: 218 passed, 0 failed of 218` at `06615fe89` (every one of the session's ~40 gated commits carries its own) | HEAD after this commit is the checkpoint's commit; tree clean; nothing pushed after `79b2f6f15` (Drew pushes, R6)
|
||||
|
||||
**Replay this block into the chat at the next session start (R64); it is the ONLY in-phase context the next session inherits. Everything below
|
||||
is what S107 knew and the next session must not re-derive.** **The checkpoint procedure (every session end, Drew 2026-09-12):** bank the
|
||||
is what S108 knew and the next session must not re-derive.** **The checkpoint procedure (every session end, Drew 2026-09-12):** bank the
|
||||
record (cookbook / decision log / accelerators / SETUP / stale assertions), **advance the post-100 % story — `docs/story.md` §10 and
|
||||
`docs/retrospective.md` §7 from the session's decision-log entry — and regenerate `tools/timeline.py`**, then rewrite this block, commit, recap (R18).
|
||||
|
||||
1. **Where we are — and T4's exact resume.** Phase 37 (structs) opened 2026-09-11 (S106, gate 1: grind to zero on raw casts / lying declarations /
|
||||
levers; placeholders + cited evidence; T7 = the P36 agent lane on Drew's word; the full canonical declaration layer; R107–R117 ratified; no
|
||||
tags at closes). S107 built T3 (the engine — the T3 ☑ line above) and ran T4 for ~4 h: **the rung-D fleet cycle** (`tools/restruct_cycle.sh`,
|
||||
batches `t4_D1`–`t4_D20`: ≈17,300 declaration units canonical, 1,302 K&R sites marked, 207 data aliases typed, 10 `__builtin_abs` → `abs`,
|
||||
1,522 kept with causes) and **the alias-defined-function class** (`--unalias`: 120 of 149 back under their real names, 29 kept — the S107
|
||||
log entries "T4 in progress" / "unalias sweep" / "CHECKPOINTED" carry every number and cause). Drew's two rulings this session: the
|
||||
`audit_public` size gate = GitHub's 100 MiB hard limit (the red CI was SIZE alone; no ROM content); "ready for T4, xHigh set".
|
||||
**T4's remaining work, in order (each step = detached run → R22 → commit; the cycle script does all three):**
|
||||
(a) **the D cycle again** — `setsid nohup bash -c 'LABEL_PREFIX=t4_ TASK=T4 CENSUS=0 tools/restruct_cycle.sh 21 34 300 D; echo "cycle exit=$?"'
|
||||
> .run/P37/restruct/cycle_t4e.log 2>&1 &` — the first batch is the TEST of the `DECL-NONE` settling (a batch that draws 300 TUs for 0 units
|
||||
means the planner still counts rows the engine cannot act on: read `work_file_D`'s `skipped` reasons in the ledger); the cycle stops itself
|
||||
on "nothing drawable". (b) **the 29 kept alias functions once more** (`--unalias $(cat .run/P37/restruct/kept_ua9.txt) --label t4_ua10` after
|
||||
regenerating the kept list from the ledger — the definition-TU `()` fix and the untouched-caller relaxation were added AFTER the last pass;
|
||||
expect the "jr merge" 11 to stay: they are the file-layout phase's). (c) **the shared headers**: `--apply --rung D --headers --batch 20 --label
|
||||
t4_H1` (230 headers with lying declarations; serial, each judged on every includer — ~35 s each on 141 includers; the `--headers` batches
|
||||
through the cycle: `HEADERS=1 tools/restruct_cycle.sh 1 12 20 D`). (d) **the 13 parked signature bodies** — per class `--apply --rung D
|
||||
--callee F --body <pack>/body.c [--all-defs] --label t4_sigN` then R22 + commit: func_800385C0 (`.run/P36/agents/main__func_800385C0/body.c`),
|
||||
func_80029D3C (`scratch/patch_signature.c`), func_80035210 (`body.c`), func_800384A8 (`body.c`), func_80183CC4 (4 TU copies, `--all-defs`,
|
||||
`body.c`), func_80185578 (`body.c`), func_80188DF4 (3 copies, `--all-defs`), func_80188A30 (`body_free.c`), func_801A1E94 / func_801A5C44
|
||||
(`body.c`), func_8017FC5C (2 copies), func_80157D20 (132 TU copies + a variant header `func_80157D20__99380536.h` — `--all-defs`; the biggest);
|
||||
SKIP func_80015608 and func_8013CF68 (not closed in P36). After each: the copies are identical → `tools/share_body.py --plan` may share them
|
||||
(the 51 TU-CONFLICT rows of `config/dedup_exceptions.tsv`: re-plan with `share_body --bucket extend --plan` after the D work, share what the
|
||||
gate accepts, delete the resolved rows). (e) **the 3,546 "carried decl layer" banner comment blocks**: comment-only removal (the two `/* ====
|
||||
… carried decl layer … */` lines around each block; the declarations inside STAY), one R22, one commit. (f) **the census + series:**
|
||||
`tools/type_census.py -j 16 --sites` (3.5 min) → `tools/readability_progress.py --snapshot t4` → `tools/progress.py --json --readme` →
|
||||
the honest new lying-declarations number (the 3,529 real-name callers of the unaliased functions were invisible at T1); the T4 ☑ line with
|
||||
its verify lines; **then the P6 rules check** (the plan asks for one after T4). Then T5 (Max for the head types).
|
||||
tags at closes). S107 built T3 (the engine) and started T4; **S108 (this session, ~10 h, ~60 commits, xHigh) ran T4's six checkpoint steps
|
||||
to their floor: (a) the D cycle — `t4_D22`–`t4_D36`, `t4_D40`–`t4_D47`, `t4_D49`–`t4_D55` (≈90,000 declarations canonical in total, 5,092 K&R
|
||||
sites marked); (b) the alias-defined functions — 133 of 149 back under their real names, 16 kept by cause; (c) the shared headers — the
|
||||
header plan is EMPTY (`0 of 0`); (d) the parked signature bodies — 10 of 12 landed (`func_80157D20` ×132 via `--map-data`, `func_80029D3C` +
|
||||
its 3 callers via `--with`, `func_80188A30` `void`→`s32`, seven more), the `md_SC07_004` pair and the other same-address copies of four
|
||||
functions named for T7; (e) the 3,546 "carried decl layer" banner comment blocks removed (21,274 comment lines, 0 insertions); (f) the census
|
||||
+ series published.** Every gated commit `check-all: 218 passed, 0 failed of 218`. The day's real story was FIVE instrument blind spots, each
|
||||
repaired at its cause (item 5 below; accelerators P37 S108). **T4's two owed items, in order:**
|
||||
(g) **the 51 TU-CONFLICT rows of `config/dedup_exceptions.tsv`** (P35's ledger — declaration-environment conflicts the D work may have
|
||||
dissolved: `D_800B9A02 undeclared`, `conflicting types for func_80146C3C`, …): `share_body --plan` reports `0 classes` for both buckets because
|
||||
`plan_classes` skips `c["excepted"]` (`tools/share_body.py:173`) — add a **`--retry-excepted`** flag (the excepted classes re-enter the plan;
|
||||
the ledger row is deleted only when the gate accepts the share), then `tools/share_body_cycle.sh` (unattended: batch → exit code → log →
|
||||
commit → periodic clean fleet run) on `--bucket extend` then `new`; the rows the gate still rejects keep their (refreshed) diagnostic.
|
||||
(h) **the 593 `DECL-NONE "no visible definition"` rows that survive the fleet-unique fallback** — read ONE on the tree (R14): take a row from
|
||||
the bucketing script in the "final census" log entry (e.g. a `.c` TU, not a header), run `restruct.defs_visible(tu).get(callee)` and
|
||||
`argcheck.resolve_definition(callee, tu, …)` side by side; the disagreement is one of: a name with 2+ bodies where argcheck picked the TU's
|
||||
binary's definition but the engine's `_files_in_dir` did not see it (an indented definition? a `_jr_` file outside the alias dir?), or a
|
||||
twin dir (`corpus.src_dir`). Fix at the cause, re-run `--redraw DECL-NONE:visible` (TUs then `HEADERS=1`), re-census. Then: **the T4 ☑ line**
|
||||
(its verify lines: the final census line, `lever_census --check`, the bucketed remainder), **the P6 rules check** (the plan asks for one after
|
||||
T4), and **T5 (Max for the head types)** — struct unification from the map (`--write-types --top 6` previews; `--audit-types`'s 26 legacy
|
||||
`pad<SIZE>` names; the 1,120 `parse error` declarations close with `--redraw DECL-KEPT` once `Pos800D20C0`-class types are canonical).
|
||||
|
||||
2. **The counters (T1, `tools/type_census.py`, coverage OK, controls 4/4; every verify line in the T1/T2 log entries).**
|
||||
Raw dereferences **503,016** = P `*(T *)(…)` 409,007 + I `*(T *)ident|&D_|0x80…` 60,666 + X `((T *)e)[i]` 13,800 + M `M2C_FIELD` 19,543,
|
||||
in 69,497 bodies (+18,912 A address-of casts and +36,681 C `((T *)p)->f` typed cast-member accesses, counted apart — C is rung 1's own
|
||||
form, already a COMPONENT_REF); by base: param 276,860 · local 149,915 · `&D_` 40,122 · nested 24,076 · `D_` by value 8,860 · other 1,678;
|
||||
the first parameter (`a0`/`param_1`/`arg0`) 241,554 = 48 %. Definitions **7,255** (canonical header 1,179 · `.c` file-scope 4,085 ·
|
||||
`.c` block-scope 1,904 · per-function shared headers 63 · other headers 24) over **527 layouts**; 206 duplicate classes / 2,789 names
|
||||
(tier 1 same-named 122, tier 2 opaque 84; **46 layout-twin classes / 1,844 names are NOT duplicates without flow evidence** — milestone
|
||||
item 1 reads "one definition per TYPE"); 40 VARIANT names; 141 dead canonical names; 75 canonical names redefined in `.c`.
|
||||
Declarations: 99,130 definitions (1,889 K&R); 4,279,365 extern function declarations over 12,139 names (3,870 spelled >1 way);
|
||||
**6,415 names carry >1 body text** (identity = body hash `F:<nhash>` / shared header `H:<path>` / external `X:<space>:<name>`, never the
|
||||
name); 1,078,837 data externs over 55,569 symbols (18,442 typed >1 way); asm-label aliases 5,749 (225 names); builtins memcpy 301 / abs
|
||||
144; attributes packed 64 / aligned 12; **lying declarations 98,648 over 1,609 callees** (K&R-empty 91,357, narrow 7,291).
|
||||
**Levers (`lever_census --check --strict`, made literal at T1): 4,010 marked (2,141 pins + 1,869 asm) + 6,717 direct GTE asm statements
|
||||
in bodies (kinds `gte`/`gte-unsigned`, incl. func_8013D9B0's 268) + 314 per-TU asm macro definitions** — the `--check` headline (4,010)
|
||||
keeps the P36 definition for the series. Global blocks: 2,123 runs of ≥4 adjacent scalar `D_` symbols (14,251 symbols). The 24 parked
|
||||
P36 classes with reasons: `.run/P37/census/parked.tsv` (453 bodies / 691 sites; needs: signature 13, struct 7, ? 4).
|
||||
**The struct map** (`.run/P37/census/struct_map_top.json` tracked; `struct_map.json` 6.4 MB and `body_base_type.json` 11 MB ignored,
|
||||
regenerable): 18,760 types explain 99.2 % of the deref sites; the two largest are `Unkstruct_800B5CB8` (107,598 sites / 0x10C over 9,753
|
||||
pointer globals — partly fused at low offsets) and `Unkstruct_80126B58` (65,397 sites / 0x24C, one instance global — the actor record of
|
||||
`docs/actor-struct.md`); merge rules in SETUP §P37 S106 (typed-use parameters; positive shared evidence ≥1 offset with the callee's map
|
||||
≥2 offsets; single-source locals; a width-conflict veto; `AT:`/`PTR:` global nodes seeded by the declared type; FLD nodes for pointer
|
||||
fields). It is a MODEL: T2 tested it on bytes (below); T5 authors from it after T3's engine can judge every type per body.
|
||||
2. **The counters at this checkpoint (`.run/P37/census/type_census.txt`, `census_t4c.log`; controls 4/4).** **`2171 lying declarations / 189
|
||||
callees (+5092 K&R sites, +418 cross-binary apart)`** — from 98,648 / 1,609 at T1 (S107's end: ≈81,000 by the ledger; S108's census steps
|
||||
13,832 → 8,830 → 2,367 → 2,171, each an instrument repair). Definitions **7,255** (527 layouts, 206 duplicate classes, 40 variant camps);
|
||||
cast sites **503,013** in 69,497 bodies (four forms + A; unchanged — T6's). **Levers `lever_census --check: 3,730 pin/asm sites, 3,730 marked,
|
||||
0 UNMARKED`** (from 4,010; `--strict` still FAIL by design: the 6,717 direct GTE statements + 314 per-TU asm macros are T6/T7's). The
|
||||
remainder of 2,171, by its ledger verdict (every row has one): 1,120 `DECL-KEPT parse error (type unknown to TU)` → T5; 593 `DECL-NONE no
|
||||
visible definition` → item (h); 417 `DECL-KEPT conflicting types elsewhere in TU` → T5/T7; 13 `syntax error` in `800.c`; 12 `void value not
|
||||
ignored` (a `void` definition whose callers use `$v0` — the return-type lie: `func_80161208`, `func_801376E8`, `func_80150480`, `func_8017E3F0`,
|
||||
`func_801843E0`, … a definition-side `--callee --body` each, judged as one unit); 8+2 arity; 2 bytes; 2 DECL-CANON; 2 still-aliased. K&R sites
|
||||
apart: 5,092 over 155 callees (`// K&R: n of m args (P37 …)` on each line); cross-binary apart: 418 over 147 callees. Alias-defined functions:
|
||||
133 / 149 back; the 16 kept = 10 jr-merge DIFFERS (`func_80146A6C` `func_8014C4AC` `func_8014F6F4` `func_801848DC` `func_80185EEC` `func_8018A224`
|
||||
`func_8018A860` `func_8018AFD0` `func_8018B1DC` `func_8018CB18` — the file-layout phase's) + 5 return-type lies (above) + `func_8016BF50`.
|
||||
Series: `docs/levers.md` (80 milestones, `lever_progress --check OK`), `docs/readability.md` (`t4` row: 8,830 at `274223396` — re-snapshot
|
||||
after (g)/(h) with the 2,171 line), `progress.json`/README fresh at the last publish (`progress.py --check`).
|
||||
|
||||
3. **What T2 proved on the bytes (the design inputs for T3; the full tables are the T2 log entry and `.run/P37/probe/*.md`).**
|
||||
(a) **Rung 1** (body-local `((P37S_<hash> *)base)->unk<HEX>` with the type from the cluster layout; misaligned layout entries skipped;
|
||||
@@ -867,38 +855,56 @@ record (cookbook / decision log / accelerators / SETUP / stale assertions), **ad
|
||||
`Unkstruct_80126B58` 146 fields / 28 overlaps + 1 misaligned — the overlaps are the map's width conflicts (T5: union vs split per offset).
|
||||
`--audit-types` on the legacy header: 26 violations, all legacy `pad<SIZE>` names → T5's rename list.
|
||||
|
||||
5. **T4's instruments (all in `tools/restruct.py`; SETUP §P37 S107 needs a T4 paragraph — owed at the T4 close).** Rung D: `d_units` (the definitions
|
||||
index = the TU's own file + its binary's dir + its headers + main/resident, REFUSING disagreeing definitions; `skipped` reasons → `DECL-NONE`
|
||||
rows), `e_units` (class-E data aliases: `extern T aD_x __asm__("D_x")` → `extern T D_x;` + renamed uses; a same-name alias = declaration-only; a
|
||||
conflicting typed view → ALIAS-KEPT "second typed view" — T6's aggregate), `b_units` (`__builtin_abs` → `abs`), the K&R marker `// K&R: n of m
|
||||
args (P37 rung D <label>)`, the all-`()` arity candidate, the promoted candidate; **`plan_D`** skips TUs whose every lying callee is settled
|
||||
(`settled_units`; `--redraw VERDICT` lifts it); the argcheck rows cached on the src stamp (`argcheck_cache.json`, 2.4 min to rebuild after any
|
||||
`src/` change — the per-batch overhead). **`--unalias NAMES|ALL`** (`fn_alias_index`, `unalias_function`): the ladder in §1; rows
|
||||
`UNALIAS-DONE/KEPT/REFUSED` with `mode` (ansi/krdef) and `cause`. **`--callee F --signature S | --body FILE [--all-defs] [--tu TU]`**
|
||||
(`signature_change`): the body file's head is the signature; declarations scoped to the definitions' binaries (a shared header reaching other
|
||||
binaries is left as is, logged). Cycle: `tools/restruct_cycle.sh START END BATCH D [ONLY]` with `LABEL_PREFIX= TASK= CENSUS=0 HEADERS=1
|
||||
REDRAW=`. **Gotchas learned the hard way:** stop a detached judge with `kill -INT <python pid>` (the in-place compile restores in `finally`; a
|
||||
TERM skips it), then `--restore`; never `pkill -f` a literal your own command line contains (exit 144, twice today); the walk's process pool
|
||||
runs before any thread; the fallback ladder's per-file re-judge costs ~20 s × objects — the escalation rule bounds it.
|
||||
5. **The instruments changed this session (all committed; SETUP §P37 S108 has every option).** `tools/restruct.py`: `defs_visible` (+ the sibling
|
||||
TUs' shared headers — the 10,495-row blindness; + the fleet-unique third level `_fleet_unique_defs`), `unit_call_counts` (arity from the TU AND
|
||||
its included bodies; the definition-head test), `--unalias` (data-typed declaration of the real name → the prototype, incl. `extern char f[];`;
|
||||
a header-side arity error marks the INCLUDING TUs; escalation counts attempts), `--callee --body` + **`--with REL=FILE`** (caller-body edits in
|
||||
the same unit) + **`--map-data`** (per-copy `D_` renames; count mismatch refuses) + header-borne definitions excluded from `--all-defs`,
|
||||
`--redraw VERDICT[:cause]`. `tools/argcheck.py`: `_ALL` + `resolve_definition` (per declaring binary; `cross_binary`), `kr_marked`, `DEF` with
|
||||
leading blanks, the K&R loop always feeds `_ALL`. `tools/type_census.py` + `tools/readability_progress.py`: K&R and cross-binary counted APART
|
||||
(`kr_sites`/`cross_binary` + callees; two TSV columns). `tools/delever_oracle.py --snapshot-baseline`: REFUSES an empty/shrunken `build/`.
|
||||
`tools/restruct_cycle.sh`: no fleet run when `src/` is unchanged after a batch. One-off drivers (ignored, commands in the log):
|
||||
`.run/P37/restruct/sig_cycle.sh` (entries list at its top; `--tu` fallback), `strip_banners.py`. **Known-true controls to re-run after any engine
|
||||
change:** `restruct --selftest` (54) · `--selftest --real` · `type_census --selftest` (21) · `defs_visible('src/ov_SC05_000/ov_SC05_000_jr_8017BEBC.c')
|
||||
['func_80147514']` → the shared header · `defs_visible('src/md_MAIN_013/md_MAIN_013.c')['func_80128EA8']` → the fleet-unique header ·
|
||||
`argcheck.resolve_definition('func_800CB8A4', 'src/md_MAIN_026/md_MAIN_026.c', …)` → its own `(void)` · `unit_call_counts` on
|
||||
ov_SC01_077_jr_8015C32C.c / func_801483E8 → `([0], ['src/shared/ov/func_80161124.h'])` · `call_arg_counts` on ov_SC07_007_jr_8015B950.c /
|
||||
func_80161B18 → `[0]`.
|
||||
|
||||
6. **Files and artifacts.** Tools: `tools/struct_layout.py`, `tools/restruct.py` (~3,300 lines), `tools/restruct_cycle.sh`, `tools/delever_oracle.py`
|
||||
(linked mode + guard), `tools/delever.py` (`marker_edits(phase=)`), `tools/type_census.py` (`walk_all`), `tools/audit_public.py` (100 MiB +
|
||||
WARN 80), `include/common.h` (the reinterpret macros; the `M2C_FIELD` note). Evidence (tracked): `.run/P37/restruct/{ledger.jsonl (36,032
|
||||
rows), batch_*.json, apply_*.log, run_*.log, cycle_*.log, kept_ua*.txt}`, `.run/P37/baseline/r22_*.log` (every gate). Ignored: `argcheck_cache.json`,
|
||||
`selftest/`, `macro_probe/`, `types_preview/`, the snapshot `.run/P36/delever/baseline/` (7,428 objects + `_link/`, at `033076501` — refresh
|
||||
after the next green R22 with `--snapshot-baseline`, then `--calibrate ov_SC04_011 md_SC07_004 main -j 16`; `--apply` refuses on a stale one).
|
||||
Docs this session: SETUP **§P37 S107** (T3; T4's paragraph owed), dictionary rows, cookbook **§458 addendum**, decision log **P37 S107** ×2,
|
||||
accelerators **P37 S107** (8 entries), story §10 + retrospective §7 advanced twice, the timeline regenerated (78 rows); the wiki pages
|
||||
`The-ROM-firewall` / `Verification-and-progress` (100 MiB) await Drew's wiki sync. **Still owed at T9:** `docs/actor-struct.md` (+0x108/+0x10C
|
||||
are 4-byte), the §396(a) correction; a `tools-health` run (RED only on the P36 ledger's size until this session's gate change — now OK on that
|
||||
rung; not re-run this session).
|
||||
6. **Files and artifacts.** Evidence (tracked): `.run/P37/restruct/{ledger.jsonl, batch_*.json, apply_*.log, run_*.log, cycle_t4[e-j].log,
|
||||
cycle_t4sig*.log, kept_ua*.txt, with_*.c/.h, body_func_80188A30_s32.c}`, `.run/P37/baseline/r22_*.log` (every gate), `.run/P37/census/
|
||||
census_t4*.log` + `type_census.{json,txt}`. Ignored: `argcheck_cache.json`, `sig_cycle.sh`, `strip_banners.py`, the snapshot
|
||||
`.run/P36/delever/baseline/` (7,428 objects + `_link/`; at the last batch's tree — refresh after the next green R22 with `--snapshot-baseline`,
|
||||
then `--calibrate ov_SC04_011 ov_SC03_015 md_SC07_004 main -j 16`; `--apply` refuses on a stale one). Docs this session: accelerators **P37 S108**
|
||||
(ten), decision log **P37 S108**, cookbook **§459**, SETUP **§P37 S108**, cookbook index (1,177), story §10 + retrospective §7 advanced, the
|
||||
timeline regenerated (78 rows). **Still owed at T9:** `docs/actor-struct.md` (+0x108/+0x10C are 4-byte), the §396(a) correction, a
|
||||
`tools-health` run (not re-run this session; the kit corpus will need `make kit-corpus` after the SETUP/cookbook edits — a `tool_census
|
||||
--check`/`kit_coverage` red is expected until then), the dictionary rows for the new options (restruct/argcheck rows exist; no new tools).
|
||||
|
||||
7. **Environment and commands.** `~/bfm-decomp` on ext4; `.venv/bin/python`; every build `JOBS=16`/`-j`. Ghidra MCP not needed until T8. R22:
|
||||
`make clean && make extract-all JOBS=16 && make check-all JOBS=16` (≈100 s; read the exit code). Oracle: `tools/delever_oracle.py
|
||||
--snapshot-baseline` (ONLY after a green R22) · `--calibrate ov_SC04_011 md_SC07_004 main -j 16`. Engine: `tools/restruct.py --plan --rung D
|
||||
--batch 300` · `--apply --rung D --batch 300 --label L -j 12` · `--headers` · `--unalias …` · `--callee F --body FILE [--all-defs]` · `--restore`
|
||||
· `--status` · `--selftest [--real]` (54 / 59). Health: `make tools-health` (foreground, 8–15 min), `tools/doc_links.py --strict`,
|
||||
`tools/tool_census.py --check`, `make kit-corpus`, `tools/cookbook_index.py --check`. No harness task-list tool exists (R28 = this file's ☐/☑).
|
||||
7. **Environment, commands and the gotchas of this session.** `~/bfm-decomp` on ext4; `.venv/bin/python`; every build `JOBS=16`/`-j`. Ghidra MCP
|
||||
not needed until T8. R22: `make clean && make extract-all JOBS=16 && make check-all JOBS=16` (≈90 s; read the exit code). Cycle: `setsid nohup
|
||||
bash -c 'LABEL_PREFIX=t4_ TASK=T4 CENSUS=0 tools/restruct_cycle.sh START END 400 D; echo "cycle exit=$?"' > .run/P37/restruct/cycle_<x>.log 2>&1 &`
|
||||
(+ `REDRAW="DECL-NONE:visible"` / `HEADERS=1 LABEL_PREFIX=t4_H`); it refreshes the snapshot + calibration itself when HEAD moved and stops on
|
||||
"nothing drawable". Unalias: `--apply --unalias NAMES --label L -j 12` (`--apply` is required). Signature: `--apply --rung D --callee F --body
|
||||
FILE [--all-defs [--map-data]] [--tu TU] [--with REL=FILE …] --label L -j 12`. **Gotchas:** (1) stop a judge with `kill -INT <pid>` and WAIT
|
||||
for its exit (`ps`; ~2 min — it finishes its in-flight units) BEFORE `--restore`; a restore run early consumes `inflight.json` and the judge's
|
||||
later writes have no tool-side restore (S108: 6 files reverted by hand, 197 orphan rows dropped). (2) `pgrep -f`/`pkill -f` never with a
|
||||
literal your own command line contains (exit 144 — twice this session); bracket a character: `restruct_cycl[e]`. (3) Never edit
|
||||
`CURRENT_PHASE.md` while a cycle is between its R22 and its commit (its python rewrites the file); check `ps` for `make` first. (4) A
|
||||
`--snapshot-baseline` only after a GREEN clean fleet run (build/ is the tree's); it now refuses an empty build/. (5) `DECL-NONE` is a DONE
|
||||
verdict: a settled row is redrawn only with `--redraw` — use the `VERDICT:cause` key, never bare `DECL-NONE` (it redraws every "already
|
||||
canonical"/external pair: the t4_D21–D36 cost). (6) A "flat yield" is not "nothing drawable": bucket the remainder by ledger verdict before
|
||||
stopping a cycle (the `md_*` modules were 3,700 never-judged pairs). (7) A pack's "one caller" is a claim: `grep -rnE '\bfunc_X\s*\(\s*\)' src`
|
||||
before a signature unit.
|
||||
|
||||
8. **T4's residue, by name, for T5/T7 (each with its cause in the ledger).** T7: the `md_SC07_004` pair `func_801A1E94`/`func_801A5C44` (the
|
||||
zero-argument caller `func_801A6A18(void) { func_801A1E94(); }` passes its OWN incoming `$a0` — re-sign the caller one level up in the same
|
||||
`--with` unit); the other same-address copies of `func_80185578` (ov_SC03_014), `func_80188DF4` (ov_SC02_011 — a caller passes MORE arguments;
|
||||
ov_SC03_104), `func_8017FC5C` (ov_SC04_002 — a short caller), `func_80183CC4` (ov_SC03_006/029/090 — per-overlay data with 1/0/4 symbols vs the
|
||||
pack's 1: per-copy bodies read against their bytes); the 5 return-type lies (`--callee F --body` with the `s32` head, callers in the unit);
|
||||
`func_8016BF50`; the 10 jr-merge functions (the file-layout phase's, not T7's). T5: the 1,120 `parse error` declarations (types the TU cannot
|
||||
see — canonical types, then `--redraw DECL-KEPT`); the 417 `conflicting types` (a second declaration elsewhere in the TU — most will fall to
|
||||
the canonical files). T6: 1,723 `ALIAS-KEPT "second typed view"` data aliases (aggregates), 253 kept from S107.
|
||||
|
||||
## Approved plan (verbatim, gate 1 — 2026-09-11)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user