diff --git a/.gitignore b/.gitignore index d11e9dbb5..c1e313a33 100644 --- a/.gitignore +++ b/.gitignore @@ -559,6 +559,8 @@ unsloth_compiled_cache/ /.run/P37/restruct/* !/.run/P37/restruct/*.log !/.run/P37/restruct/*.json +# the argcheck rows cached on the src stamp — regenerable (a trailing comment on a pattern line is PART of the pattern: own line) +/.run/P37/restruct/argcheck_cache.json /.run/P37/restruct/inflight.json /.run/P37/restruct/includers_cache.json !/.run/P37/restruct/*.jsonl diff --git a/.run/P36/delever/calibration.json b/.run/P36/delever/calibration.json index 22f2e0763..4a3b0f535 100644 --- a/.run/P36/delever/calibration.json +++ b/.run/P36/delever/calibration.json @@ -1,7 +1,7 @@ { - "head": "db212f167", + "head": "775a3eafb", "stamp": "e34b6679685f", - "generated": "2026-09-11 22:44", + "generated": "2026-09-12 08:50", "aliases": [ "main", "md_SC07_004", @@ -21,177 +21,177 @@ "main": { "objects": 85, "identical": 85, - "seconds": 9.177000000000001, - "mean_s": 0.108 + "seconds": 6.561000000000001, + "mean_s": 0.077 }, "md_SC07_004": { "objects": 1, "identical": 1, - "seconds": 0.504, - "mean_s": 0.504 + "seconds": 0.506, + "mean_s": 0.506 }, "ov_SC02_005": { "objects": 33, "identical": 33, - "seconds": 5.014000000000002, - "mean_s": 0.152 + "seconds": 4.772999999999999, + "mean_s": 0.145 }, "ov_SC04_011": { "objects": 28, "identical": 28, - "seconds": 4.561, - "mean_s": 0.163 + "seconds": 3.776, + "mean_s": 0.135 } }, "per_object_seconds": { - "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.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.066, + "build/src/800.o": 0.719, + "build/src/800_b.o": 0.076, + "build/src/800_b_2.o": 0.286, + "build/src/800_b_o0a.o": 0.076, + "build/src/800_c.o": 0.178, + "build/src/800b2.o": 0.068, + "build/src/apicard1.o": 0.065, + "build/src/apicard2.o": 0.064, + "build/src/apicard3.o": 0.069, + "build/src/apicard4.o": 0.071, + "build/src/apicard5.o": 0.073, + "build/src/apicard6.o": 0.069, + "build/src/apicard7.o": 0.059, + "build/src/boot.o": 0.103, + "build/src/gap.o": 0.086, + "build/src/libapi1.o": 0.062, + "build/src/libapi2.o": 0.057, + "build/src/libc2_1.o": 0.061, + "build/src/libc2_2.o": 0.062, + "build/src/libcd1.o": 0.075, + "build/src/libcd2.o": 0.06, + "build/src/libetc.o": 0.07, + "build/src/libgpu.o": 0.062, + "build/src/libgpu2.o": 0.065, + "build/src/libgs1.o": 0.07, + "build/src/libgs2.o": 0.063, + "build/src/libgs3.o": 0.061, + "build/src/libgs4.o": 0.056, + "build/src/libgs5.o": 0.058, + "build/src/libgs6.o": 0.077, + "build/src/libgs7.o": 0.062, + "build/src/libgs8.o": 0.061, + "build/src/libgte1.o": 0.065, + "build/src/libgte10.o": 0.065, + "build/src/libgte11.o": 0.063, + "build/src/libgte12.o": 0.06, + "build/src/libgte13.o": 0.066, + "build/src/libgte14.o": 0.067, + "build/src/libgte15.o": 0.071, + "build/src/libgte16.o": 0.054, + "build/src/libgte17.o": 0.066, + "build/src/libgte18.o": 0.065, + "build/src/libgte19.o": 0.061, + "build/src/libgte2.o": 0.062, + "build/src/libgte20.o": 0.06, + "build/src/libgte21.o": 0.062, + "build/src/libgte22.o": 0.066, + "build/src/libgte23.o": 0.063, "build/src/libgte24.o": 0.067, - "build/src/libgte25.o": 0.068, - "build/src/libgte26.o": 0.066, + "build/src/libgte25.o": 0.062, + "build/src/libgte26.o": 0.062, "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.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.075, - "build/src/libpad2.o": 0.075, - "build/src/sgap.o": 0.069, - "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.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/libgte28.o": 0.054, + "build/src/libgte29.o": 0.068, + "build/src/libgte3.o": 0.061, + "build/src/libgte30.o": 0.065, + "build/src/libgte4.o": 0.055, + "build/src/libgte5.o": 0.067, + "build/src/libgte6.o": 0.065, + "build/src/libgte7.o": 0.058, + "build/src/libgte8.o": 0.062, + "build/src/libgte9.o": 0.066, + "build/src/libmcrd1.o": 0.072, + "build/src/libmcrd2.o": 0.063, + "build/src/libpad1.o": 0.066, + "build/src/libpad2.o": 0.071, + "build/src/sgap.o": 0.061, + "build/src/sgap_2.o": 0.067, + "build/src/sgap_3.o": 0.062, + "build/src/sgap_4.o": 0.075, + "build/src/sgap_5.o": 0.064, + "build/src/sgap_6.o": 0.065, + "build/src/sgap_8.o": 0.069, + "build/src/snd1.o": 0.064, + "build/src/snd10.o": 0.062, + "build/src/snd11.o": 0.063, + "build/src/snd12.o": 0.063, + "build/src/snd2.o": 0.076, + "build/src/snd3.o": 0.053, + "build/src/snd4.o": 0.066, + "build/src/snd5.o": 0.065, + "build/src/snd6.o": 0.081, + "build/src/snd7.o": 0.062, "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.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/snd9.o": 0.067, + "build/src/md_SC07_004/md_SC07_004.o": 0.506, + "build/src/ov_SC02_005/ov_SC02_005.o": 0.126, + "build/src/ov_SC02_005/ov_SC02_005_after.o": 0.525, + "build/src/ov_SC02_005/ov_SC02_005_jr_8012ACE0.o": 0.395, + "build/src/ov_SC02_005/ov_SC02_005_jr_80135888.o": 0.062, + "build/src/ov_SC02_005/ov_SC02_005_jr_80135A4C.o": 0.06, + "build/src/ov_SC02_005/ov_SC02_005_jr_80135D20.o": 0.129, + "build/src/ov_SC02_005/ov_SC02_005_jr_801380E0.o": 0.167, + "build/src/ov_SC02_005/ov_SC02_005_jr_8013C98C.o": 0.121, + "build/src/ov_SC02_005/ov_SC02_005_jr_8013F350.o": 0.079, + "build/src/ov_SC02_005/ov_SC02_005_jr_8013FFD8.o": 0.07, + "build/src/ov_SC02_005/ov_SC02_005_jr_80140608.o": 0.183, + "build/src/ov_SC02_005/ov_SC02_005_jr_8015444C.o": 0.076, + "build/src/ov_SC02_005/ov_SC02_005_jr_80154C24.o": 0.157, + "build/src/ov_SC02_005/ov_SC02_005_jr_801588CC.o": 0.098, + "build/src/ov_SC02_005/ov_SC02_005_jr_80159C84.o": 0.066, + "build/src/ov_SC02_005/ov_SC02_005_jr_8015A3C8.o": 0.071, + "build/src/ov_SC02_005/ov_SC02_005_jr_8015AE2C.o": 0.092, + "build/src/ov_SC02_005/ov_SC02_005_jr_8015C32C.o": 0.461, + "build/src/ov_SC02_005/ov_SC02_005_jr_8016AB6C.o": 0.264, + "build/src/ov_SC02_005/ov_SC02_005_jr_80171B4C.o": 0.098, + "build/src/ov_SC02_005/ov_SC02_005_jr_801734BC.o": 0.193, + "build/src/ov_SC02_005/ov_SC02_005_jr_801789AC.o": 0.059, + "build/src/ov_SC02_005/ov_SC02_005_jr_80178D40.o": 0.102, + "build/src/ov_SC02_005/ov_SC02_005_jr_8017A4AC.o": 0.064, + "build/src/ov_SC02_005/ov_SC02_005_jr_8017AE2C.o": 0.111, + "build/src/ov_SC02_005/ov_SC02_005_jr_8017CF90.o": 0.167, + "build/src/ov_SC02_005/ov_SC02_005_jr_80181984.o": 0.062, + "build/src/ov_SC02_005/ov_SC02_005_jr_80181D30.o": 0.138, + "build/src/ov_SC02_005/ov_SC02_005_jr_80185060.o": 0.068, + "build/src/ov_SC02_005/ov_SC02_005_jr_80185E80.o": 0.274, + "build/src/ov_SC02_005/ov_SC02_005_jr_8018EA04.o": 0.115, + "build/src/ov_SC02_005/ov_SC02_005_o0b.o": 0.052, + "build/src/ov_SC02_005/ov_SC02_005_o0c.o": 0.068, + "build/src/ov_SC04_011/ov_SC04_011.o": 0.133, + "build/src/ov_SC04_011/ov_SC04_011_after.o": 0.415, + "build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.335, + "build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.046, + "build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.056, + "build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.101, + "build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.158, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.117, + "build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.074, "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 + "build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.161, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.065, + "build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.168, + "build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.079, + "build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.058, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.064, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.078, + "build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.338, + "build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.2, + "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.164, + "build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.058, + "build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.089, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.054, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.09, + "build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.405, + "build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.053, + "build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.051 }, "ok": true, - "seconds": 2.3 + "seconds": 2.0 } diff --git a/.run/P37/baseline/r22_t3a.log b/.run/P37/baseline/r22_t3a.log new file mode 100644 index 000000000..a3d0591e7 --- /dev/null +++ b/.run/P37/baseline/r22_t3a.log @@ -0,0 +1,476 @@ +clean: removed build/, expected/, and the regenerated splat tree (asm/, assets/, undefined_*_auto.txt). +disc-extract: up to date — extracted/retail/ matches the committed manifest (sha1 e5c6019249dec3c71bb2cf40658a78439dddb037) +splat 0.41.0 (powered by spimdisasm 1.41.0) + 0%| | 0/1096 [00:00` for accessed-unknown, `u8 pad[n]` for + never-touched gaps, `// size = 0x..` — and the INVARIANT `audit_definition`: every `unk/pad` at offset HEX, every comment = the computed + offset, the trailer = sizeof; selftest 9/9; `type_census.py` imports it — its selftest 21/21 unchanged; `walk_all()` factored out of + `run_census` for the engine). **`tools/delever_oracle.py`** gained the LINKED MODE: `link_vars` (the Makefile's own link variables per binary, + asked of make), `snapshot_links` (every binary's `.ld` + `undefined_*_auto.txt` + main's 11 `build/psyq/*_externals.ld` into the snapshot's + `_link/`, `links.json`), **`judge_linked`** (the candidate object linked by the build's own `ld/objcopy/trim` against the snapshot's other objects, + SHA1 vs `config/check..sha` — ~10 ms), `reloc_only_diff` (the cheap pre-check: `.text` words equal under the mask, only relocation operands + differ), `--linked-control` (the f3 body `func_801A4258`: **`p[1]/p[2]` whole-object DIFFERS · reloc-only True · linked IDENTICAL ✓; the negative + `p[2]/p[3]` linked DIFFERS ✓**) — and a GUARD on `--snapshot-baseline`: a changed object must reproduce from an untouched compile or the refresh is + REFUSED. **The guard was needed the same hour:** the first control read `whole-object IDENTICAL` for the `p[1]` spelling because + `build/src/md_SC07_004/md_SC07_004.o` was NOT the tree's object — T2's relocation control had run `make build BINARY=md_SC07_004` with the + candidate in place (linked-identical, differently spelled relocs) and my refresh copied it into the snapshot (R56/R112). Fixed by the clean fleet + run (`.run/P37/baseline/r22_t3a.log`: `check-all: 218 passed, 0 failed of 218`, exit 0), a re-snapshot (`1 changed since the previous snapshot`) and + `--calibrate main md_SC07_004 ov_SC02_005 ov_SC04_011` → `147/147 … positive control DIFFERS … OK`. **`tools/restruct.py`** (2,900 lines; the T2 + functions kept verbatim): the judge on a multi-file job (`judge_files`: whole-object, then linked when reloc-flagged or reloc-only), the ledger + `.run/P37/restruct/ledger.jsonl` keyed (rung, tu, unit, hash) with `--restore` from `inflight.json`, the shared ladder (all units at once, else + cumulative greedy — delever's rung-B shape), **rung S** on every typed base with the declared-type-aware spelling (`a1->unk4` / `D_x.unk4` / the cast + form), **S2** (greedy kept casts), **S+A** (delever's ladder on the struct-spelled text, `(P37 S+A …)` markers via `delever.marker_edits(phase=)`, stale + `_m` markers scrubbed), **X** (`pass_hint`: SCHED-ALIAS / CSE-KILL / WIDTH / ADDRESS-FOLD / ALIGNMENT / REGALLOC / OTHER), **R** (the registry: R1 the + pointer global as a struct member (§458), R2 `extern T X[]` (a18), R3 the walked pointer (f3, reloc-flagged)), **D** (every declaration of a callee → + the definition's ANSI signature > the width-promoted form > all-`()` + `// K&R: n of m args (P37 rung D