diff --git a/.gitignore b/.gitignore index 22e840fb5e..c6480489a7 100644 --- a/.gitignore +++ b/.gitignore @@ -528,6 +528,55 @@ unsloth_compiled_cache/ !/.run/P36/waves/*.txt !/.run/P36/waves/*.md +# P37 (S106, 2026-09-12): the structs phase's evidence — the R22 baseline, oracle calibration and close logs, the type census +# JSON/tables (+ parked.tsv), the three probes' tables, the restruct ledger and batch logs, the per-TU declaration judgements, the +# agent packs and verdicts. Text only, nothing ROM-derived (no .o, no .s, no images). Contents form (R84). +!/.run/P37/ +/.run/P37/* +!/.run/P37/*.log +!/.run/P37/*.md +!/.run/P37/baseline/ +/.run/P37/baseline/* +!/.run/P37/baseline/*.log +!/.run/P37/baseline/*.txt +!/.run/P37/census/ +/.run/P37/census/* +!/.run/P37/census/*.json +!/.run/P37/census/*.txt +!/.run/P37/census/*.md +!/.run/P37/census/*.tsv +!/.run/P37/probe/ +/.run/P37/probe/* +!/.run/P37/probe/*.log +!/.run/P37/probe/*.txt +!/.run/P37/probe/*.md +!/.run/P37/probe/*.json +!/.run/P37/probe/*.jsonl +!/.run/P37/probe/*.py +!/.run/P37/restruct/ +/.run/P37/restruct/* +!/.run/P37/restruct/*.log +!/.run/P37/restruct/*.json +/.run/P37/restruct/inflight.json +/.run/P37/restruct/includers_cache.json +!/.run/P37/restruct/*.jsonl +!/.run/P37/restruct/*.txt +!/.run/P37/decls/ +/.run/P37/decls/* +!/.run/P37/decls/*.log +!/.run/P37/decls/*.json +!/.run/P37/decls/*.jsonl +!/.run/P37/decls/*.txt +!/.run/P37/agents/ +/.run/P37/agents/* +!/.run/P37/agents/*.md +!/.run/P37/agents/*.tsv +!/.run/P37/agents/*__func_*/ +/.run/P37/agents/*__func_*/* +!/.run/P37/agents/*__func_*/*.txt +!/.run/P37/agents/*__func_*/*.md +!/.run/P37/agents/*__func_*/body*.c + # Outreach drafts (P34 task 6, Drew's decision 2026-09-08): the notes to neighbouring projects were SENT (the Archipelago issue, # the decomp.me preset request, the tools post, the #ai reply); the drafts stay on the maintainer's machine and leave the tree # from here (no rewrite — they are in the published history). Contents form, R84. diff --git a/.run/P36/delever/calibration.json b/.run/P36/delever/calibration.json index 22f70f3149..22f2e07630 100644 --- a/.run/P36/delever/calibration.json +++ b/.run/P36/delever/calibration.json @@ -1,17 +1,17 @@ { - "head": "52a3953b2", + "head": "db212f167", "stamp": "e34b6679685f", - "generated": "2026-09-11 20:44", + "generated": "2026-09-11 22:44", "aliases": [ "main", - "ov_SC03_014", - "ov_SC03_015", + "md_SC07_004", + "ov_SC02_005", "ov_SC04_011" ], - "objects": 177, - "identical": 177, + "objects": 147, + "identical": 147, "failures": [], - "twin_checks": 32, + "twin_checks": 0, "twin_mismatch": [], "positive_control": { "obj": "build/src/800.o", @@ -21,206 +21,176 @@ "main": { "objects": 85, "identical": 85, - "seconds": 6.921000000000002, - "mean_s": 0.081 + "seconds": 9.177000000000001, + "mean_s": 0.108 }, - "ov_SC03_014": { - "objects": 32, - "identical": 32, - "seconds": 4.7490000000000006, - "mean_s": 0.148 + "md_SC07_004": { + "objects": 1, + "identical": 1, + "seconds": 0.504, + "mean_s": 0.504 }, - "ov_SC03_015": { - "objects": 32, - "identical": 32, - "seconds": 4.502000000000001, - "mean_s": 0.141 + "ov_SC02_005": { + "objects": 33, + "identical": 33, + "seconds": 5.014000000000002, + "mean_s": 0.152 }, "ov_SC04_011": { "objects": 28, "identical": 28, - "seconds": 3.8900000000000006, - "mean_s": 0.139 + "seconds": 4.561, + "mean_s": 0.163 } }, "per_object_seconds": { - "build/src/800.o": 0.795, - "build/src/800_b.o": 0.082, - "build/src/800_b_2.o": 0.316, - "build/src/800_b_o0a.o": 0.085, - "build/src/800_c.o": 0.194, - "build/src/800b2.o": 0.087, - "build/src/apicard1.o": 0.064, - "build/src/apicard2.o": 0.066, - "build/src/apicard3.o": 0.075, - "build/src/apicard4.o": 0.073, - "build/src/apicard5.o": 0.071, - "build/src/apicard6.o": 0.076, - "build/src/apicard7.o": 0.058, - "build/src/boot.o": 0.093, - "build/src/gap.o": 0.081, - "build/src/libapi1.o": 0.093, - "build/src/libapi2.o": 0.063, - "build/src/libc2_1.o": 0.066, + "build/src/800.o": 0.662, + "build/src/800_b.o": 0.21, + "build/src/800_b_2.o": 0.365, + "build/src/800_b_o0a.o": 0.19, + "build/src/800_c.o": 0.312, + "build/src/800b2.o": 0.258, + "build/src/apicard1.o": 0.246, + "build/src/apicard2.o": 0.243, + "build/src/apicard3.o": 0.253, + "build/src/apicard4.o": 0.243, + "build/src/apicard5.o": 0.242, + "build/src/apicard6.o": 0.244, + "build/src/apicard7.o": 0.237, + "build/src/boot.o": 0.272, + "build/src/gap.o": 0.236, + "build/src/libapi1.o": 0.225, + "build/src/libapi2.o": 0.066, + "build/src/libc2_1.o": 0.067, "build/src/libc2_2.o": 0.061, - "build/src/libcd1.o": 0.07, - "build/src/libcd2.o": 0.064, - "build/src/libetc.o": 0.059, - "build/src/libgpu.o": 0.062, - "build/src/libgpu2.o": 0.072, - "build/src/libgs1.o": 0.062, - "build/src/libgs2.o": 0.059, - "build/src/libgs3.o": 0.06, - "build/src/libgs4.o": 0.063, - "build/src/libgs5.o": 0.065, - "build/src/libgs6.o": 0.079, - "build/src/libgs7.o": 0.064, - "build/src/libgs8.o": 0.061, - "build/src/libgte1.o": 0.061, - "build/src/libgte10.o": 0.065, - "build/src/libgte11.o": 0.062, - "build/src/libgte12.o": 0.062, - "build/src/libgte13.o": 0.07, - "build/src/libgte14.o": 0.06, - "build/src/libgte15.o": 0.063, - "build/src/libgte16.o": 0.061, - "build/src/libgte17.o": 0.062, - "build/src/libgte18.o": 0.066, - "build/src/libgte19.o": 0.065, - "build/src/libgte2.o": 0.066, - "build/src/libgte20.o": 0.061, - "build/src/libgte21.o": 0.069, + "build/src/libcd1.o": 0.111, + "build/src/libcd2.o": 0.067, + "build/src/libetc.o": 0.06, + "build/src/libgpu.o": 0.071, + "build/src/libgpu2.o": 0.073, + "build/src/libgs1.o": 0.097, + "build/src/libgs2.o": 0.066, + "build/src/libgs3.o": 0.056, + "build/src/libgs4.o": 0.094, + "build/src/libgs5.o": 0.059, + "build/src/libgs6.o": 0.084, + "build/src/libgs7.o": 0.06, + "build/src/libgs8.o": 0.068, + "build/src/libgte1.o": 0.067, + "build/src/libgte10.o": 0.061, + "build/src/libgte11.o": 0.06, + "build/src/libgte12.o": 0.059, + "build/src/libgte13.o": 0.072, + "build/src/libgte14.o": 0.066, + "build/src/libgte15.o": 0.066, + "build/src/libgte16.o": 0.073, + "build/src/libgte17.o": 0.068, + "build/src/libgte18.o": 0.067, + "build/src/libgte19.o": 0.068, + "build/src/libgte2.o": 0.072, + "build/src/libgte20.o": 0.073, + "build/src/libgte21.o": 0.068, "build/src/libgte22.o": 0.067, - "build/src/libgte23.o": 0.065, - "build/src/libgte24.o": 0.065, - "build/src/libgte25.o": 0.079, - "build/src/libgte26.o": 0.068, - "build/src/libgte27.o": 0.066, - "build/src/libgte28.o": 0.075, - "build/src/libgte29.o": 0.073, - "build/src/libgte3.o": 0.061, + "build/src/libgte23.o": 0.066, + "build/src/libgte24.o": 0.067, + "build/src/libgte25.o": 0.068, + "build/src/libgte26.o": 0.066, + "build/src/libgte27.o": 0.065, + "build/src/libgte28.o": 0.067, + "build/src/libgte29.o": 0.063, + "build/src/libgte3.o": 0.07, "build/src/libgte30.o": 0.067, - "build/src/libgte4.o": 0.065, - "build/src/libgte5.o": 0.064, - "build/src/libgte6.o": 0.064, - "build/src/libgte7.o": 0.065, - "build/src/libgte8.o": 0.063, - "build/src/libgte9.o": 0.06, - "build/src/libmcrd1.o": 0.076, + "build/src/libgte4.o": 0.063, + "build/src/libgte5.o": 0.066, + "build/src/libgte6.o": 0.061, + "build/src/libgte7.o": 0.067, + "build/src/libgte8.o": 0.066, + "build/src/libgte9.o": 0.062, + "build/src/libmcrd1.o": 0.075, "build/src/libmcrd2.o": 0.067, - "build/src/libpad1.o": 0.067, + "build/src/libpad1.o": 0.075, "build/src/libpad2.o": 0.075, "build/src/sgap.o": 0.069, - "build/src/sgap_2.o": 0.067, - "build/src/sgap_3.o": 0.07, - "build/src/sgap_4.o": 0.07, + "build/src/sgap_2.o": 0.065, + "build/src/sgap_3.o": 0.075, + "build/src/sgap_4.o": 0.074, "build/src/sgap_5.o": 0.066, - "build/src/sgap_6.o": 0.067, - "build/src/sgap_8.o": 0.074, - "build/src/snd1.o": 0.075, - "build/src/snd10.o": 0.067, - "build/src/snd11.o": 0.07, - "build/src/snd12.o": 0.066, - "build/src/snd2.o": 0.077, - "build/src/snd3.o": 0.07, - "build/src/snd4.o": 0.073, - "build/src/snd5.o": 0.07, - "build/src/snd6.o": 0.076, - "build/src/snd7.o": 0.068, - "build/src/snd8.o": 0.07, - "build/src/snd9.o": 0.072, - "build/src/ov_SC03_014/ov_SC03_014.o": 0.131, - "build/src/ov_SC03_014/ov_SC03_014_after.o": 0.499, - "build/src/ov_SC03_014/ov_SC03_014_jr_8012ACE0.o": 0.416, - "build/src/ov_SC03_014/ov_SC03_014_jr_80135888.o": 0.06, - "build/src/ov_SC03_014/ov_SC03_014_jr_80135A4C.o": 0.065, - "build/src/ov_SC03_014/ov_SC03_014_jr_80135D20.o": 0.129, - "build/src/ov_SC03_014/ov_SC03_014_jr_801380E0.o": 0.161, - "build/src/ov_SC03_014/ov_SC03_014_jr_8013C98C.o": 0.124, - "build/src/ov_SC03_014/ov_SC03_014_jr_8013F350.o": 0.083, - "build/src/ov_SC03_014/ov_SC03_014_jr_8013FFD8.o": 0.075, - "build/src/ov_SC03_014/ov_SC03_014_jr_80140608.o": 0.185, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015444C.o": 0.091, - "build/src/ov_SC03_014/ov_SC03_014_jr_80154C24.o": 0.17, - "build/src/ov_SC03_014/ov_SC03_014_jr_801588CC.o": 0.099, - "build/src/ov_SC03_014/ov_SC03_014_jr_80159C84.o": 0.064, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015A3C8.o": 0.071, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015AE2C.o": 0.098, - "build/src/ov_SC03_014/ov_SC03_014_jr_8015C32C.o": 0.474, - "build/src/ov_SC03_014/ov_SC03_014_jr_8016AB6C.o": 0.267, - "build/src/ov_SC03_014/ov_SC03_014_jr_80171B4C.o": 0.104, - "build/src/ov_SC03_014/ov_SC03_014_jr_801734BC.o": 0.208, - "build/src/ov_SC03_014/ov_SC03_014_jr_801789AC.o": 0.063, - "build/src/ov_SC03_014/ov_SC03_014_jr_80178D40.o": 0.105, - "build/src/ov_SC03_014/ov_SC03_014_jr_8017A4AC.o": 0.068, - "build/src/ov_SC03_014/ov_SC03_014_jr_8017AE2C.o": 0.17, - "build/src/ov_SC03_014/ov_SC03_014_jr_8017EB7C.o": 0.208, - "build/src/ov_SC03_014/ov_SC03_014_jr_80184440.o": 0.048, - "build/src/ov_SC03_014/ov_SC03_014_jr_801848E4.o": 0.269, - "build/src/ov_SC03_014/ov_SC03_014_o0b.o": 0.059, - "build/src/ov_SC03_014/ov_SC03_014_o0c.o": 0.06, - "build/src/ov_SC03_014/ov_SC03_014_o0d.o": 0.054, - "build/src/ov_SC03_014/ov_SC03_014_o0e.o": 0.071, - "build/src/ov_SC03_015/ov_SC03_015.o": 0.121, - "build/src/ov_SC03_015/ov_SC03_015_after.o": 0.507, - "build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.397, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.05, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.051, - "build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.116, - "build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.145, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.108, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.068, - "build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.063, - "build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.172, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.065, - "build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.175, - "build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.09, - "build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.065, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.072, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.096, - "build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.434, - "build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.27, - "build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.085, - "build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.194, - "build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.059, - "build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.099, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.066, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.159, - "build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.2, - "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.281, - "build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.057, - "build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.06, - "build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.057, - "build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.064, - "build/src/ov_SC04_011/ov_SC04_011.o": 0.116, - "build/src/ov_SC04_011/ov_SC04_011_after.o": 0.421, - "build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.335, + "build/src/sgap_6.o": 0.062, + "build/src/sgap_8.o": 0.073, + "build/src/snd1.o": 0.076, + "build/src/snd10.o": 0.063, + "build/src/snd11.o": 0.064, + "build/src/snd12.o": 0.062, + "build/src/snd2.o": 0.07, + "build/src/snd3.o": 0.067, + "build/src/snd4.o": 0.07, + "build/src/snd5.o": 0.068, + "build/src/snd6.o": 0.067, + "build/src/snd7.o": 0.069, + "build/src/snd8.o": 0.067, + "build/src/snd9.o": 0.069, + "build/src/md_SC07_004/md_SC07_004.o": 0.504, + "build/src/ov_SC02_005/ov_SC02_005.o": 0.127, + "build/src/ov_SC02_005/ov_SC02_005_after.o": 0.53, + "build/src/ov_SC02_005/ov_SC02_005_jr_8012ACE0.o": 0.402, + "build/src/ov_SC02_005/ov_SC02_005_jr_80135888.o": 0.058, + "build/src/ov_SC02_005/ov_SC02_005_jr_80135A4C.o": 0.059, + "build/src/ov_SC02_005/ov_SC02_005_jr_80135D20.o": 0.142, + "build/src/ov_SC02_005/ov_SC02_005_jr_801380E0.o": 0.169, + "build/src/ov_SC02_005/ov_SC02_005_jr_8013C98C.o": 0.123, + "build/src/ov_SC02_005/ov_SC02_005_jr_8013F350.o": 0.082, + "build/src/ov_SC02_005/ov_SC02_005_jr_8013FFD8.o": 0.071, + "build/src/ov_SC02_005/ov_SC02_005_jr_80140608.o": 0.19, + "build/src/ov_SC02_005/ov_SC02_005_jr_8015444C.o": 0.073, + "build/src/ov_SC02_005/ov_SC02_005_jr_80154C24.o": 0.171, + "build/src/ov_SC02_005/ov_SC02_005_jr_801588CC.o": 0.099, + "build/src/ov_SC02_005/ov_SC02_005_jr_80159C84.o": 0.074, + "build/src/ov_SC02_005/ov_SC02_005_jr_8015A3C8.o": 0.087, + "build/src/ov_SC02_005/ov_SC02_005_jr_8015AE2C.o": 0.1, + "build/src/ov_SC02_005/ov_SC02_005_jr_8015C32C.o": 0.474, + "build/src/ov_SC02_005/ov_SC02_005_jr_8016AB6C.o": 0.281, + "build/src/ov_SC02_005/ov_SC02_005_jr_80171B4C.o": 0.11, + "build/src/ov_SC02_005/ov_SC02_005_jr_801734BC.o": 0.209, + "build/src/ov_SC02_005/ov_SC02_005_jr_801789AC.o": 0.058, + "build/src/ov_SC02_005/ov_SC02_005_jr_80178D40.o": 0.101, + "build/src/ov_SC02_005/ov_SC02_005_jr_8017A4AC.o": 0.091, + "build/src/ov_SC02_005/ov_SC02_005_jr_8017AE2C.o": 0.115, + "build/src/ov_SC02_005/ov_SC02_005_jr_8017CF90.o": 0.177, + "build/src/ov_SC02_005/ov_SC02_005_jr_80181984.o": 0.064, + "build/src/ov_SC02_005/ov_SC02_005_jr_80181D30.o": 0.146, + "build/src/ov_SC02_005/ov_SC02_005_jr_80185060.o": 0.073, + "build/src/ov_SC02_005/ov_SC02_005_jr_80185E80.o": 0.313, + "build/src/ov_SC02_005/ov_SC02_005_jr_8018EA04.o": 0.11, + "build/src/ov_SC02_005/ov_SC02_005_o0b.o": 0.062, + "build/src/ov_SC02_005/ov_SC02_005_o0c.o": 0.073, + "build/src/ov_SC04_011/ov_SC04_011.o": 0.131, + "build/src/ov_SC04_011/ov_SC04_011_after.o": 0.521, + "build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.51, "build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.05, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.054, - "build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.115, - "build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.139, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.101, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.071, - "build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.056, - "build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.179, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.067, - "build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.156, - "build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.091, - "build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.064, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.067, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.087, - "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.353, - "build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.221, - "build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.099, - "build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.187, - "build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.056, - "build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.09, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.064, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.095, - "build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.449, - "build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.052, - "build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.055 + "build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.053, + "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.155, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.107, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.072, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.065, + "build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.175, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.073, + "build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.167, + "build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.087, + "build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.065, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.065, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.094, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.357, + "build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.351, + "build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.105, + "build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.321, + "build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.064, + "build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.095, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.073, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.099, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.473, + "build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.058, + "build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.056 }, "ok": true, "seconds": 2.3 diff --git a/.run/P37/baseline/oracle_t0.log b/.run/P37/baseline/oracle_t0.log new file mode 100644 index 0000000000..bdea5955e7 --- /dev/null +++ b/.run/P37/baseline/oracle_t0.log @@ -0,0 +1,8 @@ +delever_oracle: 4284 recipes captured in 14.6 s at -j16; errors 0 +delever_oracle --snapshot-baseline: 7428 object(s) under .run/P36/delever/baseline at db212f167 +delever_oracle --calibrate main md_SC07_004 ov_SC02_005 ov_SC04_011: 147/147 objects byte-identical untouched; twin checks 0 (0 mismatch); positive control DIFFERS on build/src/800.o; 2.3 s — OK + main 85/85 identical, mean 0.108 s per object + md_SC07_004 1/1 identical, mean 0.504 s per object + ov_SC02_005 33/33 identical, mean 0.152 s per object + ov_SC04_011 28/28 identical, mean 0.163 s per object +exit=0 diff --git a/.run/P37/baseline/r22_t0.log b/.run/P37/baseline/r22_t0.log new file mode 100644 index 0000000000..b14a8075f7 --- /dev/null +++ b/.run/P37/baseline/r22_t0.log @@ -0,0 +1,11 @@ +HEAD=db212f167 date=2026-09-12T04:42:27Z +[ OK ] md_SC07_003 +extract-all: 217 extracted, 0 failed of 217 (+ main, serial) +[ OK ] md_SC03_053 +[ OK ] md_SC03_054 +check-all: 218 passed, 0 failed of 218 + +real 1m25.976s +user 22m10.933s +sys 3m0.938s +exit=0 diff --git a/phase-ends/CURRENT_PHASE.md b/phase-ends/CURRENT_PHASE.md new file mode 100644 index 0000000000..cda3036933 --- /dev/null +++ b/phase-ends/CURRENT_PHASE.md @@ -0,0 +1,448 @@ +# CURRENT_PHASE — Phase 37: the structs phase — the original's types back into the matched C (v2.2.0 → v2.3.0) + +> **Gate 1 approved by Drew on 2026-09-11 (S106; plan mode at Max; Opus 5).** The Gen3 order is Drew's: dedup (P35, closed) → pins +> (P36, closed) → **structs** → names. The phase's product: one canonical struct definition per layout, every raw pointer cast a member +> of a typed base, one canonical prototype per definition, the 4,010 Phase-36 lever survivors closed by the shape that was missing — with +> Drew's stop rule **grind to zero** on all three volume counters (raw casts, lying declarations, levers), each "zero" defined honestly in +> the plan's §"What zero means". Names are placeholders + cited evidence (`Unkstruct_`, `unk`); meaning-naming is Phase 38. +> The approved plan is reproduced VERBATIM at the end of this file (§"Approved plan"). **Baseline HEAD at open: `79b2f6f15`** (the +> Phase-36 close commit, v2.2.0 — made by Claude on Drew's word "you commit the last phase end", a one-off R6 waiver; the push is Drew's). +> **R22 obligation:** every batch that touches `src/` is followed by the clean fleet run (218/218) before its commit — this phase changes +> no byte, ever. **Rules ratified at gate 1 by the plan approval: R107–R117** (the PhaseEnd_Phase36 candidates (a)–(k); Drew may still +> veto any of them — say so and the DIGEST entry is amended). + +## Milestone (gate 2 — what Drew confirms, each with its literal output) + +1. **Definitions:** `type_census --check` → **0 duplicate struct definitions fleet-wide** (one canonical definition per layout, in the + canonical type files, hex offset comments, VARIANT camps named apart), 0 dead names, 0 definitions outside the canonical files, every + converted site a field of its type, controls green. +2. **Casts:** `type_census --check` → **0 raw cast sites** in all four forms (`*(T *)(…)`, `*(T *)ident`, `((T *)e)[i]`, `M2C_FIELD(`); + reinterpret sites counted apart by macro; the player block and the first-parameter entity type are structs in `src/`; the counts + published in the readability series with the dated snapshot (R75). +3. **Declarations:** **0 lying declarations**; K&R sites counted apart, each marked with its bytes' cause; one canonical prototype per + definition; the 51 TU-CONFLICT rows resolved (the ledger rows deleted with the bytes that resolved them); the 24 parked P36 classes + landed; classes E/F/G at 0. +4. **Levers:** `lever_census --check --strict` → **0 pins, 0 asm statements outside the GTE header, 0 per-TU asm macro definitions**; every + removal attributed `(P37 …)` in the ledger; `verbatim_check --strict` unchanged (the 1998 routines untouched). +5. `make clean && make extract-all JOBS=16 && make check-all JOBS=16` → `check-all: 218 passed, 0 failed of 218` (R22); `make tools-health` + OK with the new rung; `ghidra_rebuild --proof` PASS with the types; the record (T9), the PhaseEnd, the DIGEST append, the log archived; + v2.3.0. + +## Effort / model (R7/R26/R27 — every transition is PROMPTED, never assumed) + +- **Max** for T2 (the probe and its pricing), T3's design, T5's head-type layouts, T10 (the PhaseEnd); **xHigh** for T0, T1, T3's finish, + T4, T6, T8, T9; **low** for T0's bookkeeping. Max is session-only (re-apply each session); xHigh is the highest persistent level. +- **T7 = the P36 lane:** the Agent tool, one agent per TU batch, at Drew's concurrency cap (he sets and retunes it); it STARTS only on his + word in the session that runs it (the S98 rule); **never an Ultracode wave without his direct approval** (R27). The coordinator's own + judgment (harvest, toolify, the packs) stays at Max. +- **Drew-only (R6):** every `git push`; the gate-2 confirmation; the milestone-close commit + the `v2.3.0` tag. +- No harness task-list tool exists in this build (no TaskCreate/TodoWrite — checked 2026-09-11) — R28's list is THIS file's ☐/☑ checklist. + +## Tasks (plan order; one commit each; ☐ → ☑ with the verify line quoted in the log) + +- ☑ **T0** (S106; the commit carrying this line) — Precondition, baseline and the phase file: the P36 close commit `79b2f6f15` + tag `v2.2.0` (done, this + session, on Drew's word); R22 clean fleet at the open `extract-all: 217 extracted, 0 failed of 217 (+ main, serial)` · `check-all: 218 + passed, 0 failed of 218` · `real 1m25.976s` · exit 0 (`.run/P37/baseline/r22_t0.log`, HEAD `db212f167` — the close commit adds no + build input); `delever_oracle --recipes` `4284 recipes captured in 14.6 s at -j16; errors 0` · `--snapshot-baseline` `7428 object(s) + under .run/P36/delever/baseline at db212f167` · `--calibrate main md_SC07_004 ov_SC02_005 ov_SC04_011: 147/147 objects byte-identical + untouched; twin checks 0 (0 mismatch); positive control DIFFERS on build/src/800.o; 2.3 s — OK` (main 0.108 s/object, ov 0.15–0.16, + md_SC07_004 0.504) (`.run/P37/baseline/oracle_t0.log`); `.gitignore` P37 allowlist (by-contents, R84; `git check-ignore` verified: logs + and `.tsv` tracked, `.o` ignored); this file. Verify at the commit: `git status` clean. +- ☐ **T1** (xHigh; the layout/cluster model reviewed at Max) — `tools/type_census.py`: definitions with o32 layouts + duplicate classes + + VARIANT camps + dead names; cast sites in all four forms + `M2C_FIELD` with base class/offset/width/sign/load-store; the declaration + layer (definitions K&R-read, in-scope declarations per TU, the lying set, multi-spelled callees, aliases, builtins, attributes); the P36 + inheritance in ONE file (`.run/P37/census/parked.tsv`) and the func_8013D9B0 `gte-unsigned` inconsistency resolved; coverage (R32) vs + the raw regex totals; controls (the player block's live-verified fields, MATRIX vs MATRIX_L48, one TU-CONFLICT diagnostic); `progress.py` + `types` block + README sentence; `readability_progress` learns the uncounted forms; dictionary + SETUP rows; `lever_census`'s stale + controls re-keyed. Verify: `type_census: definitions ( layouts, duplicate classes, variant camps) · cast sites in + bodies over bases ( forms, coverage OK) · lying declarations / callees · controls 4/4`. +- ☐ **T2** (Max) — The probe: (i) struct spelling on ~150 bodies over the top bases (identical / differing / closing under S+A / residual + by pass); (ii) the canonical prototype per TU on ~300 TUs (free / byte-changing / refused, causes) + the 24 parked patches as the known-true + set; (iii) the definition fold on 20 TUs; seconds per object, objects per header edit. Prices T4–T7 with denominators (R41). Verify: the + probe table in the log with its commands. +- ☐ **T3** (Max design; xHigh finish) — `tools/restruct.py` (rungs L/D/S/S+A/X/R, the delever pattern, the ledger, inflight restore, + selftest + known-true no-op + negative controls), `tools/struct_layout.py`, the canonical type files' writer (final style; one file per + symbol space), the reinterpret macros in `include/common.h`, `tools/restruct_cycle.sh` (detached, R115). The Plan agent's stress-test + lands here as design notes. Verify: selftest; the calibration line; one batch on one overlay end-to-end with R22 green. +- ☐ **T4** (xHigh; unattended cycles) — The declaration layer over the fleet by symbol space (rung D): canonical prototypes where free, the + free repairs, the 24 parked signature changes with their callers, the 51 TU-CONFLICT rows, class E aliases, `__builtin_abs`, K&R sites + marked and counted apart, the "carried decl layer" banners deleted. R22 every 2 batches; one commit per batch. **Rules check (P6) after T4.** +- ☐ **T5** (Max for the head types; xHigh to run) — Struct unification (rung L): one canonical definition per layout in the final style, + VARIANT camps uniquified, dead names deleted, PsyQ layouts under Sony's names, the entity type and the player block authored, main + `md_*` + onboarded. Verify: `type_census: 0 duplicate definitions …; 0 dead names; controls 4/4`; R22. +- ☐ **T6** (xHigh; unattended cycles) — The cast campaign (rungs S/S+A/X/R), largest leverage first; the 138 absolute casts; `M2C_FIELD`; + `__builtin_memcpy`; carved word runs (R60 audits). R22 every 2 batches; the readability and lever series fall per commit. **Rules check + (P6) every 4 batches' worth of tasks.** +- ☐ **T7** (agents at Drew's cap; starts on his word) — The residue lane to zero (rung E), harvest → toolify → regen between draws, the + residue re-bucketed at every landing (R117). +- ☐ **T8** (xHigh) — The gates: `type_census --check` in `make tools-health`; `attribution_check` folded into `lever_census --check`; the + close snapshots published; the canonical types into the Ghidra programs (`ExportAnnotations` type rows) with `ghidra_rebuild --proof` PASS. +- ☐ **T9** (xHigh) — The record: cookbook § (incl. the §396(a) correction with its bytes), decision log P37, accelerators, SETUP rows, the + wiki, the Gen3 pages, the series rendered, tool-index + kit corpus, `doc_links --strict`, tools-health OK. +- ☐ **T10** (Max) — Close: R22 218/218; tools-health OK; PhaseEnd_Phase37.md + DIGEST §0/§2/§3 + this log archived (R19) + kit corpus; + left uncommitted for Drew's close commit; v2.3.0. + +## Decisions (owner's words, in order) + +- **Gate 1 (2026-09-11, S106), the four forks (AskUserQuestion):** stop rule → **"Grind to zero"** (the phase does not close while any raw + cast, lying declaration or lever remains; the agent lane runs until the counters are 0 regardless of token cost); naming → **"Placeholders + + cited evidence"**; T7 → **"P36 pattern at your cap"**; the declaration layer → **"Full canonical layer"**. The plan's §"What zero means" + gives each counter its honest, reachable definition (reinterpret macros and unions for the genuine reinterpretations; byte-proven K&R sites + counted apart; legitimate GTE sequences as project-local macros in the one header, clobber-only steers closed by the shape). +- **Gate 1, Drew's question mid-plan:** *"did we do this project wrong from the start? should we have focused on building structs and not + letting compiler hints/register pins add up?"* → answered from the record (levers.md §5, DK-65, the S91-b hindsight, P36's `/s` finding): + the levers' error was the SILENCE, not the lever (38 % never load-bearing; the rest needed knowledge that did not exist until P23–P32); + types were the larger error — Phase 17 measured correctly that types did not move match-% for m2c and wrongly concluded they could wait: + they were the banking lever (§236), the width lever, and — P36's finding — a codegen lever through `MEM_IN_STRUCT_P`. A canonical type + layer growing from the first bank (sotn's shape) was achievable and is the kit's day-one rule. The T2 probe puts the number on it (how much + of the 4,010 the struct hypothesis closes) → the decision log (R31). +- **Gate 1, after the plan approval:** *"you commit the last phase end"* → Claude made the Phase-36 close commit `79b2f6f15` and the local + `v2.2.0` tag (a one-off R6 waiver for the close commit; R6 unchanged: Drew pushes). + +## Rules at gate 1 (P10) + +**R107–R117 ratified by the plan approval (2026-09-11; the PhaseEnd_Phase36 candidates (a)–(k), operated through P36):** +R107 ban the silence, not the lever — a compiler-forcing construct is allowed in a banked body only marked, ledgered and published from the +first bank, with a one-compile bank-time trial of the body without it · R108 a generator ships with a negative-control corpus of real bodies +where it must fire, and a regen pass reports its refusal reasons as a histogram · R109 at every landing, run every registered family on the +agent's START text before banking · R110 a scorer's target is the tree's own bytes compiled by the build's own tail, never a disassembly — a +known-true case (the tree's body scores 0) before any campaign · R111 scratch is keyed by the unit of work, never by a worker tag or a file +(R48 extended) · R112 a gate's baseline is a snapshot, not the build directory — a clean rebuild never runs where a live scorer reads `build/` +· R113 a lever's marker names its PASS and its INSTRUMENT (R65 for markers), asserted by an attribution check at the close · R114 a ledger's +"done" is per body (unit, function, after-hash), never by text alone · R115 a long unattended run is DETACHED with a progress log, never a +harness background task (R55 operated) · R116 a marked ordinary-C fake (do-while, dead initialiser) is counted apart from levers and never an +orphan; an invented condition, a dead store or a dummy reassignment is never banked · R117 a "stalling?" question is answered with the residue +bucketed by what each bucket needs before any plan is proposed. **Candidates for Phase 38 gate 1 accumulate here as the phase produces them.** + +## Log (append-only; one entry per step, with the literal verify line) + +- **S106 2026-09-11 — session start.** Session-start protocol at low effort (the P36 close artifacts still uncommitted in the tree), then + Drew: `/effort max` + plan mode. Reconnaissance: three Explore agents (the type layer as it stands — 196k tokens; the P36 residue and its + artifacts — 243k; sotn-decomp's type layer + our types doctrine — 207k) and one Plan agent (the tool/oracle design stress-test, still + running at the T0 commit — its report lands in T3's design notes). Four AskUserQuestion forks answered (the decisions above). Plan approved + (ExitPlanMode). Facts the plan rests on, verified this session: `PROMOTE_PROTOTYPES` at `tools/reference/gcc-2.7.2/config/mips/mips.h:1153` + and the caller-side conversion at `c-typeck.c:1740` (convert to the parameter type, THEN default-promote); the `/s` model in + `docs/gcc-2.7.2-map/cse_expr.md` §4; `ExportAnnotations.java` carries `type` rows (0 tracked today); `delever_oracle.py` is object-scoped + and header-capable through `delever.includers()`. +- **S106 — the P36 close commit.** Drew: *"you commit the last phase end"* → `git add -A phase-ends decomp-architect config/kit_coverage_map.tsv + docs/story-timeline.md docs/story-timeline.svg` (8 files, 632 insertions; nothing ROM-derived) → `79b2f6f15` with the PhaseEnd's message; + `git tag -a v2.2.0` created locally. **Not pushed (R6) — Drew: `git push origin main --tags`.** +- **S106 — T0 baseline.** `make clean && make extract-all JOBS=16 && make check-all JOBS=16` → `extract-all: 217 extracted, 0 failed of 217 + (+ main, serial)` · **`check-all: 218 passed, 0 failed of 218`** · `real 1m25.976s` · `exit=0` (`.run/P37/baseline/r22_t0.log`; run at HEAD + `db212f167` 04:42 UTC, before the close commit — which adds no build input). `delever_oracle --recipes -j 16` → `4284 recipes captured in + 14.6 s at -j16; errors 0`; `--snapshot-baseline` → `7428 object(s) under .run/P36/delever/baseline at db212f167` (the oracle's baseline path + is still P36's — T3 decides whether `restruct` shares it or takes `.run/P37/`); `--calibrate main md_SC07_004 ov_SC02_005 ov_SC04_011 -j 16` + → `147/147 objects byte-identical untouched; twin checks 0 (0 mismatch); positive control DIFFERS on build/src/800.o; 2.3 s — OK` · `main + 85/85 identical, mean 0.108 s per object` · `md_SC07_004 1/1, 0.504 s` · `ov_SC02_005 33/33, 0.152 s` · `ov_SC04_011 28/28, 0.163 s` + (`.run/P37/baseline/oracle_t0.log`). `.gitignore` P37 block inserted before the outreach block (by-contents form); `git check-ignore -v`: + `r22_t0.log`/`oracle_t0.log` → `!/.run/P37/baseline/*.log`, `census/parked.tsv` → `!/.run/P37/census/*.tsv`, a `.o` → ignored. + +## 🛑 SESSION CHECKPOINT — S106 (2026-09-11/12, LIVE — refreshed at every task close): gate 1 APPROVED, **T0 ☑** (baseline + oracle + allowlist + this file, committed) — 🛑 **T1 NEXT (the type census, xHigh; its layout/cluster model at Max)** | R22 `check-all: 218 passed, 0 failed of 218` at `db212f167` | the P36 close is committed `79b2f6f15` + tag `v2.2.0`, **NOT PUSHED** + +**Replay this block into the chat at the next session start (R64); it is the ONLY in-phase context the next session inherits.** + +1. **Where we are.** Phase 37 (the structs phase) opened 2026-09-11 in S106 at Max. Gate 1 approved with Drew's four decisions: **grind to + zero** (raw casts, lying declarations, levers — the plan's §"What zero means" defines each honestly); **placeholders + cited evidence** + for every type/field name; **T7 = the P36 agent lane at Drew's cap, started only on his word**; **the full canonical declaration layer**. + R107–R117 ratified. T0's baseline and oracle calibration are done (the log entry above has every verify line). T0 is committed (this file, `.gitignore`, `.run/P37/baseline/*.log`, the recalibrated `.run/P36/delever/calibration.json`). + NEXT = **T1 — the type census `tools/type_census.py`** at xHigh (its layout/cluster model at Max). +2. **What the next session must know before T1.** (a) The population table in the approved plan below is a gate-1 grep census — T1 + re-derives every number with a self-asserting tool (R32/R37) and its verify line is the plan's. (b) The four cast forms: `*(T *)(…)` + (411,850, the readability regex `tools/readability_progress.py:31`), `*(T *)ident` (26,279), `((T *)e)[i]` (14,491), `M2C_FIELD(` + (19,542) — the last three are UNCOUNTED by the series today (R32 gap; T1 adds them with a dated `corrections` entry). (c) The 24 parked + P36 classes have NO list with reasons anywhere — the reasons are split across `phase-ends/logs/Phase36.md:2261-2267` and `:2197-2199`, + the bank lists' MSG column (`.run/P36/s105/banks_*.txt`), and each pack's `mechanism.md` headline; `.run/P36/s105/pick.py`'s PARK set (44 + names) mixes parked classes with minimum-lever banks; patch files exist for 6 (`main__func_800385C0/scratch/signature.patch`, + `main__func_80029D3C/scratch/patch_signature.c`, `ov_SC07_007__func_80180FA4/scratch/signature_3args.patch`, + `ov_SC02_027__func_80180A54/scratch/signature.patch`, `md_SC07_004__func_801A1E94/signature.diff`, `…__func_801A5C44/signature.diff`), + whole-TU scratch copies for 8 more; `func_80180200` has no pack (it lives in `ov_SC03_115__func_8017FC5C/`). (d) `func_8013D9B0`'s 268 + markers are kind `gte-unsigned` (NON_LEVER) — OUTSIDE the 4,010 headline though the PhaseEnd lists it among the residue heads; T1 resolves + this on the bytes. (e) `lever_census`'s known-true controls: three of four return N-A (their T1 body hashes are stale) — re-key them (R85). + (f) The 4,010 reconcile exactly against the ledger: 1,637 drawable RESIDUE + 1,080 minimum-lever banks in PARK + 593 parked RESIDUE + + 450 GTE clobber variants (`gte-lever`; 64 per-TU `_m` macro definitions, `gte_rt_m` 55) + 94 arg-only pins (83 classes) + 83 whose latest + ledger row is a failed attempt (invisible to `pick.py`; `delever.py --redraw`) + 24 + 18 + 13 asm-body + 10 drawn + 8 file-scope. + (g) The §396(a) refuting body IS recorded: `.run/P36/agents/ov_SC03_110__func_801800F0/mechanism.md:64-70` (d11) — T9 writes the correction. + (h) The type tools' reach: `lift_types.py` scans only `src/ov_*/*.c` (line 49); `engine_types.h` is included by 3,818 TUs via + `engine_prelude.h` but by 0 of the 85 root `.c` and 12 of 87 `md_*`; `decl_repair.py` compares `.text/.rodata/.data` sections (the scratch + path lands in the object) while `delever_oracle` compares whole objects compiled in place. +3. **Environment.** `~/bfm-decomp` on ext4; `.venv/bin/python`; every build with `JOBS=16`/`-j`; the headless Ghidra MCP was started by + the SessionStart hook (pid in `.run/ghidra-mcp.log`) and is NOT needed until T8 — stop it via the sentinel before any commit that touches + `ghidra/` (nothing does until T8; R23). The oracle's snapshot baseline: `.run/P36/delever/baseline/` (7,428 objects at `db212f167`, taken + after the green R22 — R112). The Plan agent (tool design stress-test) may still be running or have reported: its report goes into T3's + design notes; if it is lost, T3's design at Max re-derives it from the plan's §B questions. +4. **Commands that work.** R22: `make clean && make extract-all JOBS=16 && make check-all JOBS=16` (≈86 s; read the exit code with + `pipefail`). Oracle: `.venv/bin/python tools/delever_oracle.py --calibrate -j 16` (147/147 in 2.3 s). Census (P36's, for the + lever side): `.venv/bin/python tools/lever_census.py --check -j 16`. Series: `tools/readability_progress.py --snapshot