T3.c1: rung S exemplar ov_SC05_010_jr_80180F84: members + CAST_* respells, ledger t3_ex1

This commit is contained in:
Drew T
2026-10-01 12:24:09 -06:00
parent 610b918ed8
commit 1f8eb7e594
3 changed files with 261 additions and 222 deletions
+157 -157
View File
@@ -1,7 +1,7 @@
{
"head": "b5e18e5f83",
"head": "3507628e40",
"stamp": "588cbf38c6e4",
"generated": "2026-10-01 10:57",
"generated": "2026-10-01 12:16",
"aliases": [
"main",
"md_SC07_004",
@@ -21,176 +21,176 @@
"main": {
"objects": 85,
"identical": 85,
"seconds": 7.198999999999999,
"mean_s": 0.085
"seconds": 8.519999999999998,
"mean_s": 0.1
},
"md_SC07_004": {
"objects": 1,
"identical": 1,
"seconds": 0.516,
"mean_s": 0.516
"seconds": 0.602,
"mean_s": 0.602
},
"ov_SC03_015": {
"objects": 32,
"identical": 32,
"seconds": 5.2540000000000004,
"mean_s": 0.164
"seconds": 6.038,
"mean_s": 0.189
},
"ov_SC04_011": {
"objects": 28,
"identical": 28,
"seconds": 4.247,
"mean_s": 0.152
"seconds": 5.418000000000002,
"mean_s": 0.194
}
},
"per_object_seconds": {
"build/src/800.o": 0.764,
"build/src/800_b.o": 0.095,
"build/src/800_b_2.o": 0.328,
"build/src/800_b_o0a.o": 0.058,
"build/src/800_c.o": 0.206,
"build/src/800b2.o": 0.078,
"build/src/apicard1.o": 0.094,
"build/src/apicard2.o": 0.061,
"build/src/apicard3.o": 0.084,
"build/src/apicard4.o": 0.062,
"build/src/apicard5.o": 0.079,
"build/src/apicard6.o": 0.093,
"build/src/apicard7.o": 0.071,
"build/src/boot.o": 0.095,
"build/src/gap.o": 0.07,
"build/src/libapi1.o": 0.084,
"build/src/libapi2.o": 0.067,
"build/src/libc2_1.o": 0.068,
"build/src/libc2_2.o": 0.063,
"build/src/libcd1.o": 0.074,
"build/src/libcd2.o": 0.066,
"build/src/libetc.o": 0.067,
"build/src/libgpu.o": 0.066,
"build/src/libgpu2.o": 0.071,
"build/src/libgs1.o": 0.066,
"build/src/libgs2.o": 0.062,
"build/src/libgs3.o": 0.06,
"build/src/libgs4.o": 0.066,
"build/src/libgs5.o": 0.072,
"build/src/libgs6.o": 0.076,
"build/src/libgs7.o": 0.06,
"build/src/libgs8.o": 0.065,
"build/src/libgte1.o": 0.069,
"build/src/libgte10.o": 0.067,
"build/src/libgte11.o": 0.062,
"build/src/libgte12.o": 0.064,
"build/src/libgte13.o": 0.076,
"build/src/libgte14.o": 0.071,
"build/src/libgte15.o": 0.073,
"build/src/libgte16.o": 0.074,
"build/src/libgte17.o": 0.072,
"build/src/libgte18.o": 0.07,
"build/src/libgte19.o": 0.068,
"build/src/libgte2.o": 0.07,
"build/src/libgte20.o": 0.073,
"build/src/libgte21.o": 0.07,
"build/src/libgte22.o": 0.07,
"build/src/libgte23.o": 0.068,
"build/src/libgte24.o": 0.07,
"build/src/libgte25.o": 0.073,
"build/src/libgte26.o": 0.068,
"build/src/libgte27.o": 0.068,
"build/src/libgte28.o": 0.064,
"build/src/libgte29.o": 0.068,
"build/src/libgte3.o": 0.072,
"build/src/libgte30.o": 0.064,
"build/src/libgte4.o": 0.06,
"build/src/libgte5.o": 0.062,
"build/src/libgte6.o": 0.071,
"build/src/libgte7.o": 0.064,
"build/src/libgte8.o": 0.071,
"build/src/libgte9.o": 0.062,
"build/src/libmcrd1.o": 0.077,
"build/src/libmcrd2.o": 0.068,
"build/src/libpad1.o": 0.078,
"build/src/libpad2.o": 0.069,
"build/src/sgap.o": 0.064,
"build/src/sgap_2.o": 0.062,
"build/src/sgap_3.o": 0.066,
"build/src/sgap_4.o": 0.081,
"build/src/sgap_5.o": 0.077,
"build/src/sgap_6.o": 0.066,
"build/src/sgap_8.o": 0.079,
"build/src/snd1.o": 0.079,
"build/src/snd10.o": 0.077,
"build/src/snd11.o": 0.067,
"build/src/snd12.o": 0.078,
"build/src/snd2.o": 0.111,
"build/src/snd3.o": 0.077,
"build/src/snd4.o": 0.084,
"build/src/snd5.o": 0.071,
"build/src/snd6.o": 0.079,
"build/src/snd7.o": 0.077,
"build/src/snd8.o": 0.087,
"build/src/snd9.o": 0.08,
"build/src/md_SC07_004/md_SC07_004.o": 0.516,
"build/src/ov_SC03_015/ov_SC03_015.o": 0.161,
"build/src/ov_SC03_015/ov_SC03_015_after.o": 0.505,
"build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.428,
"build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.083,
"build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.082,
"build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.146,
"build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.182,
"build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.152,
"build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.109,
"build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.117,
"build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.217,
"build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.091,
"build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.188,
"build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.131,
"build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.086,
"build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.079,
"build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.102,
"build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.463,
"build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.287,
"build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.12,
"build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.222,
"build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.076,
"build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.109,
"build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.084,
"build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.178,
"build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.213,
"build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.067,
"build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.282,
"build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.057,
"build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.077,
"build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.077,
"build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.083,
"build/src/ov_SC04_011/ov_SC04_011.o": 0.135,
"build/src/ov_SC04_011/ov_SC04_011_after.o": 0.44,
"build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.349,
"build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.063,
"build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.068,
"build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.135,
"build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.154,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.112,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.086,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.069,
"build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.181,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.081,
"build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.16,
"build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.105,
"build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.082,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.085,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.105,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.366,
"build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.223,
"build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.107,
"build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.191,
"build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.069,
"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.077,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.108,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.465,
"build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.061,
"build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.066
"build/src/800.o": 0.9,
"build/src/800_b.o": 0.111,
"build/src/800_b_2.o": 0.368,
"build/src/800_b_o0a.o": 0.081,
"build/src/800_c.o": 0.239,
"build/src/800b2.o": 0.093,
"build/src/apicard1.o": 0.089,
"build/src/apicard2.o": 0.084,
"build/src/apicard3.o": 0.105,
"build/src/apicard4.o": 0.073,
"build/src/apicard5.o": 0.102,
"build/src/apicard6.o": 0.098,
"build/src/apicard7.o": 0.121,
"build/src/boot.o": 0.128,
"build/src/gap.o": 0.093,
"build/src/libapi1.o": 0.081,
"build/src/libapi2.o": 0.071,
"build/src/libc2_1.o": 0.081,
"build/src/libc2_2.o": 0.073,
"build/src/libcd1.o": 0.1,
"build/src/libcd2.o": 0.079,
"build/src/libetc.o": 0.081,
"build/src/libgpu.o": 0.09,
"build/src/libgpu2.o": 0.086,
"build/src/libgs1.o": 0.08,
"build/src/libgs2.o": 0.081,
"build/src/libgs3.o": 0.074,
"build/src/libgs4.o": 0.079,
"build/src/libgs5.o": 0.077,
"build/src/libgs6.o": 0.1,
"build/src/libgs7.o": 0.081,
"build/src/libgs8.o": 0.071,
"build/src/libgte1.o": 0.083,
"build/src/libgte10.o": 0.075,
"build/src/libgte11.o": 0.076,
"build/src/libgte12.o": 0.088,
"build/src/libgte13.o": 0.083,
"build/src/libgte14.o": 0.09,
"build/src/libgte15.o": 0.074,
"build/src/libgte16.o": 0.085,
"build/src/libgte17.o": 0.079,
"build/src/libgte18.o": 0.08,
"build/src/libgte19.o": 0.077,
"build/src/libgte2.o": 0.078,
"build/src/libgte20.o": 0.08,
"build/src/libgte21.o": 0.075,
"build/src/libgte22.o": 0.085,
"build/src/libgte23.o": 0.09,
"build/src/libgte24.o": 0.082,
"build/src/libgte25.o": 0.077,
"build/src/libgte26.o": 0.079,
"build/src/libgte27.o": 0.087,
"build/src/libgte28.o": 0.087,
"build/src/libgte29.o": 0.086,
"build/src/libgte3.o": 0.09,
"build/src/libgte30.o": 0.091,
"build/src/libgte4.o": 0.107,
"build/src/libgte5.o": 0.094,
"build/src/libgte6.o": 0.077,
"build/src/libgte7.o": 0.074,
"build/src/libgte8.o": 0.082,
"build/src/libgte9.o": 0.084,
"build/src/libmcrd1.o": 0.09,
"build/src/libmcrd2.o": 0.083,
"build/src/libpad1.o": 0.089,
"build/src/libpad2.o": 0.093,
"build/src/sgap.o": 0.1,
"build/src/sgap_2.o": 0.077,
"build/src/sgap_3.o": 0.082,
"build/src/sgap_4.o": 0.093,
"build/src/sgap_5.o": 0.079,
"build/src/sgap_6.o": 0.08,
"build/src/sgap_8.o": 0.085,
"build/src/snd1.o": 0.099,
"build/src/snd10.o": 0.084,
"build/src/snd11.o": 0.08,
"build/src/snd12.o": 0.074,
"build/src/snd2.o": 0.091,
"build/src/snd3.o": 0.079,
"build/src/snd4.o": 0.082,
"build/src/snd5.o": 0.083,
"build/src/snd6.o": 0.088,
"build/src/snd7.o": 0.089,
"build/src/snd8.o": 0.074,
"build/src/snd9.o": 0.081,
"build/src/md_SC07_004/md_SC07_004.o": 0.602,
"build/src/ov_SC03_015/ov_SC03_015.o": 0.174,
"build/src/ov_SC03_015/ov_SC03_015_after.o": 0.626,
"build/src/ov_SC03_015/ov_SC03_015_jr_8012ACE0.o": 0.475,
"build/src/ov_SC03_015/ov_SC03_015_jr_80135888.o": 0.088,
"build/src/ov_SC03_015/ov_SC03_015_jr_80135A4C.o": 0.087,
"build/src/ov_SC03_015/ov_SC03_015_jr_80135D20.o": 0.164,
"build/src/ov_SC03_015/ov_SC03_015_jr_801380E0.o": 0.199,
"build/src/ov_SC03_015/ov_SC03_015_jr_8013C98C.o": 0.154,
"build/src/ov_SC03_015/ov_SC03_015_jr_8013F350.o": 0.123,
"build/src/ov_SC03_015/ov_SC03_015_jr_8013FFD8.o": 0.091,
"build/src/ov_SC03_015/ov_SC03_015_jr_80140608.o": 0.232,
"build/src/ov_SC03_015/ov_SC03_015_jr_8015444C.o": 0.105,
"build/src/ov_SC03_015/ov_SC03_015_jr_80154C24.o": 0.225,
"build/src/ov_SC03_015/ov_SC03_015_jr_801588CC.o": 0.122,
"build/src/ov_SC03_015/ov_SC03_015_jr_80159C84.o": 0.081,
"build/src/ov_SC03_015/ov_SC03_015_jr_8015A3C8.o": 0.093,
"build/src/ov_SC03_015/ov_SC03_015_jr_8015AE2C.o": 0.125,
"build/src/ov_SC03_015/ov_SC03_015_jr_8015C32C.o": 0.574,
"build/src/ov_SC03_015/ov_SC03_015_jr_8016AB6C.o": 0.322,
"build/src/ov_SC03_015/ov_SC03_015_jr_80171B4C.o": 0.133,
"build/src/ov_SC03_015/ov_SC03_015_jr_801734BC.o": 0.251,
"build/src/ov_SC03_015/ov_SC03_015_jr_801789AC.o": 0.097,
"build/src/ov_SC03_015/ov_SC03_015_jr_80178D40.o": 0.141,
"build/src/ov_SC03_015/ov_SC03_015_jr_8017A4AC.o": 0.099,
"build/src/ov_SC03_015/ov_SC03_015_jr_8017AE2C.o": 0.219,
"build/src/ov_SC03_015/ov_SC03_015_jr_8017EB7C.o": 0.251,
"build/src/ov_SC03_015/ov_SC03_015_jr_80184440.o": 0.084,
"build/src/ov_SC03_015/ov_SC03_015_jr_801848E4.o": 0.344,
"build/src/ov_SC03_015/ov_SC03_015_o0b.o": 0.076,
"build/src/ov_SC03_015/ov_SC03_015_o0c.o": 0.095,
"build/src/ov_SC03_015/ov_SC03_015_o0d.o": 0.084,
"build/src/ov_SC03_015/ov_SC03_015_o0e.o": 0.104,
"build/src/ov_SC04_011/ov_SC04_011.o": 0.177,
"build/src/ov_SC04_011/ov_SC04_011_after.o": 0.549,
"build/src/ov_SC04_011/ov_SC04_011_jr_8012ACE0.o": 0.435,
"build/src/ov_SC04_011/ov_SC04_011_jr_80135888.o": 0.081,
"build/src/ov_SC04_011/ov_SC04_011_jr_80135A4C.o": 0.078,
"build/src/ov_SC04_011/ov_SC04_011_jr_80135D20.o": 0.163,
"build/src/ov_SC04_011/ov_SC04_011_jr_801380E0.o": 0.209,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013C98C.o": 0.154,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013F350.o": 0.111,
"build/src/ov_SC04_011/ov_SC04_011_jr_8013FFD8.o": 0.099,
"build/src/ov_SC04_011/ov_SC04_011_jr_80140608.o": 0.233,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015444C.o": 0.104,
"build/src/ov_SC04_011/ov_SC04_011_jr_80154C24.o": 0.218,
"build/src/ov_SC04_011/ov_SC04_011_jr_801588CC.o": 0.135,
"build/src/ov_SC04_011/ov_SC04_011_jr_80159C84.o": 0.098,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015A3C8.o": 0.107,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015AE2C.o": 0.137,
"build/src/ov_SC04_011/ov_SC04_011_jr_8015C32C.o": 0.463,
"build/src/ov_SC04_011/ov_SC04_011_jr_8016AB6C.o": 0.287,
"build/src/ov_SC04_011/ov_SC04_011_jr_80171B4C.o": 0.148,
"build/src/ov_SC04_011/ov_SC04_011_jr_801734BC.o": 0.23,
"build/src/ov_SC04_011/ov_SC04_011_jr_801789AC.o": 0.097,
"build/src/ov_SC04_011/ov_SC04_011_jr_80178D40.o": 0.134,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017A4AC.o": 0.099,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017AE2C.o": 0.145,
"build/src/ov_SC04_011/ov_SC04_011_jr_8017D494.o": 0.58,
"build/src/ov_SC04_011/ov_SC04_011_o0b.o": 0.069,
"build/src/ov_SC04_011/ov_SC04_011_o0c.o": 0.078
},
"ok": true,
"seconds": 2.1
"seconds": 2.6
}
+39
View File
@@ -0,0 +1,39 @@
# T3.c1 — rung S per-site classes, CAST_* respell, --only glob; exemplar apply
## Change
- `tools/restruct.py`
- `s_edits(..., why=None)` / `s_body_edits(..., why=None)`: record {id(site): skip reason} (index, negative-offset, no-field, aggregate-field, width, sign, pointee, overlap).
- `site_row(..., cause=None)`: `cause` on every site.
- new `S_KEPT_MACRO`, `S_RESPELL_VERDICTS`, `site_class()` (order: MISALIGNED > SIGN > WIDTH(width skip / overlap / drop_overlaps loser) > SCHED-ALIAS(kept S2/KEPT-ALL edit) > NON-STRUCT(base not typed in body_base_type.json; an indexed / negative untyped site → INDEX / NEGATIVE-OFFSET) > other skip uppercased), `respell_edit()` (P-form `*(T *)(p + k)` → `CAST_<X>(T, p, k)`; refuses no literal `+ k`, a lower-precedence op in p, comments inside, or p/k not reparsing to the site's base/off), `s_site_rows()` (every RAW_FORMS site of the body, source order; respells never overlap an accepted edit or each other), `typed_bases_of()` (bases bbt types but the plan does not draw → RESIDUAL(TYPE-NOT-CANONICAL|TYPE-NOT-VISIBLE)).
- `work_file_S`: replaces the old site loop (body hint / KEPT(overlap-edit)); respells composed with accepted edits (`compose_text(base_text, accepted + resp + inserts)`, or `resp` alone for KEPT-ALL) → proved by the final whole-file judge. No-edit body with respellable kept sites → verdict `KEPT`. REFUSED body: edit sites stay REFUSED, nothing respelled. `--recipes` (try): no respell (recipes need raw kept sites). `row["hint"]` unchanged. `out/row["respelled"]` counts.
- `matches_only`: glob items (`*?[`) fnmatch the path or the `src/<dir>` component.
- `--try-file` prints full site verdicts, non-member sites, and the respelled `CAST_` lines (was `verdict.split("(")[0]`).
- selftest +8: class order, fixture `FIXTURE_TU_S2`/`fx_c` (S2 body: MEMBER, KEPT(SIGN|SCHED-ALIAS|MISALIGNED|NON-STRUCT|WIDTH), RESIDUAL(NO-FIELD|NEGATIVE-OFFSET)), cause present, respell text + final IDENTICAL + respelled 5, census backs all 5 (unbacked 0), negative (NO-SITE row backs nothing), respell_edit refusals, `--only ov_*` glob. Existing all-DIFFERS stub now IDENTICAL for the final tag (`…F`) only (the respelled-only final text is judged).
- `tools/type_census.py:1963` `BACKED_S_VERDICTS` += `MEMBERS`, `S+A` (old value kept in comment). S+A: a body whose levers came off after respell keeps verdict S+A; without it its macros would be unbacked.
## Commands
- `restruct.py --selftest` → 85/85 OK; `type_census.py --selftest` → 50/50 OK.
- `make kit-corpus` → ok; `make tools-health` → `tools-health: OK`.
- commit 3ff15ee462 (tool), 3507628e40 (try-file print).
- `delever_oracle --snapshot-baseline` + `--calibrate ov_SC04_011 ov_SC03_015 md_SC07_004 main -j 16` → 146/146 OK (rerun after the 2nd commit: R56 refused the apply at the stale calibration).
- `restruct.py --selftest --real` → 90/90 OK.
- `--try-file … func_801814AC` → S2, final IDENTICAL; `global:D_801C7E30+0x34 store KEPT(SCHED-ALIAS)` → `CAST_ALIAS(u16, D_801C7E30, 0x34) = 0;` (local type in try mode).
- `--apply --rung S --batch 1 --only src/ov_SC05_010/ov_SC05_010_jr_80180F84.c --label t3_ex1 -j 12` → rc 0, final 1/1 IDENTICAL, 3 bodies, members 62 kept 16 skipped 36, compiles 21; WALL 25.5 s.
- `make check BINARY=ov_SC05_010` → BYTE-IDENTICAL.
- R22 `make clean && make extract-all JOBS=16 && make check-all JOBS=16` → 218 passed, 0 failed.
## Exemplar rows (label t3_ex1)
- func_80180F84 MEMBERS respelled 9: MEMBER 38, KEPT(SIGN) 6, KEPT(WIDTH) 15, RESIDUAL(NO-FIELD) 5.
- func_801814AC S2 respelled 6: MEMBER 4, KEPT(SIGN) 3, KEPT(SCHED-ALIAS) 3, RESIDUAL(TYPE-NOT-CANONICAL) 8.
- func_80181B4C MEMBERS respelled 4: MEMBER 20, KEPT(SIGN) 2, KEPT(WIDTH) 5, RESIDUAL(TYPE-NOT-CANONICAL) 13.
- file forms (file_view): before P 160 I 2 → after P 79 I 2 K 19 C 49.
## check-casts
- before (derived: after + this file's P delta 81, macros only in this file): `raw P=408974 I=60666 X=13800 M=19542; macros none`.
- after: `check-casts: raw P=408893 I=60666 X=13800 M=19542; macros CAST_ALIAS=3 CAST_SIGN=10 CAST_WIDTH=6 (unbacked 0); lying=229 (ledgered 0)` (rc 1: raw > 0, expected).
## Expert should know
- In the real apply the +0x34 store (`D_801C7E30`) is RESIDUAL(TYPE-NOT-CANONICAL): its type is not canonical, only try mode's local type draws it. The try shows the KEPT(SCHED-ALIAS)/CAST_ALIAS outcome.
- KEPT sites ≠ respelled: a kept inner site inside an ACCEPTED member edit's base (`((T *)*(s32 *)(arg0 + 0x20))->unk12`, KEPT(WIDTH) inner) stays raw (respell refused on overlap with an accepted edit); also X/I/M kept sites and an outer-over-inner respell pair (outer wins). 21 kept in func_80180F84, 9 respelled. Composing the inner respell into the member replacement text would cover the first case.
- NON-STRUCT = base absent from body_base_type.json for the body (any bclass), per brief; those sites leave the P census once respelled.
- `tools/commit_task.sh` also picked up the untracked `phase-ends/current/logs/T3.md` into 3ff15ee462 (the script stages logs/).
+65 -65
View File
@@ -2816,39 +2816,39 @@ void func_80180F84(s32 arg0)
s16 scnt;
s32 arr[3];
switch (*(u16 *)(arg0 + 0x34)) {
switch (((Unkstruct_800B5CB8 *)arg0)->unk34) {
case 0:
*(u16 *)(arg0 + 0xFC) = *(u16 *)(arg0 + 0xFC) + 0x40;
scnt = *(s16 *)(arg0 + 0xFE) - 1;
*(s16 *)(arg0 + 0xFE) = scnt;
((Unkstruct_800B5CB8 *)arg0)->unkFC = CAST_SIGN(u16, arg0, 0xFC) + 0x40;
scnt = ((Unkstruct_800B5CB8 *)arg0)->unkFE - 1;
((Unkstruct_800B5CB8 *)arg0)->unkFE = scnt;
if (((s32)scnt << 16) > 0) {
return;
}
*(u16 *)(arg0 + 0x34) = 1;
((Unkstruct_800B5CB8 *)arg0)->unk34 = 1;
break;
case 1:
*(u16 *)(arg0 + 0xFC) = *(u16 *)(arg0 + 0xFC) - 0x180;
*(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) + 0x400;
((Unkstruct_800B5CB8 *)arg0)->unkFC = CAST_SIGN(u16, arg0, 0xFC) - 0x180;
((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 = ((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 + 0x400;
t = func_8012B8E4(arg0, 0x10);
*(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) - 0x400;
*(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) + t;
((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 = ((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 - 0x400;
((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 = ((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 + t;
if ((u32)(t + 8) >= 0x11) {
return;
}
if (func_8012BCCC(arg0) < 0x4001) {
*(u16 *)(arg0 + 0x34) = 3;
*(u16 *)(arg0 + 0xFC) = 0;
*(u16 *)(arg0 + 0xFE) = 0x1E;
((Unkstruct_800B5CB8 *)arg0)->unk34 = 3;
((Unkstruct_800B5CB8 *)arg0)->unkFC = 0;
((Unkstruct_800B5CB8 *)arg0)->unkFE = 0x1E;
} else {
*(u16 *)(arg0 + 0x34) = 2;
*(u16 *)(arg0 + 0xFE) = 0x20;
((Unkstruct_800B5CB8 *)arg0)->unk34 = 2;
((Unkstruct_800B5CB8 *)arg0)->unkFE = 0x20;
}
break;
case 2:
*(u16 *)(arg0 + 0xFC) = *(u16 *)(arg0 + 0xFC) - 0x80;
t = func_80047948((s16)*(u16 *)(arg0 + 0xFC)) << 5;
((Unkstruct_800B5CB8 *)arg0)->unkFC = CAST_SIGN(u16, arg0, 0xFC) - 0x80;
t = func_80047948((s16)CAST_SIGN(u16, arg0, 0xFC)) << 5;
if (t > 0) {
t = 0;
}
@@ -2863,27 +2863,27 @@ void func_80180F84(s32 arg0)
if (func_8017ECE4(arg0) < 0) {
goto die;
}
scnt = *(s16 *)(arg0 + 0xFE) - 1;
*(s16 *)(arg0 + 0xFE) = scnt;
scnt = ((Unkstruct_800B5CB8 *)arg0)->unkFE - 1;
((Unkstruct_800B5CB8 *)arg0)->unkFE = scnt;
if (scnt != 0) {
return;
}
*(u16 *)(arg0 + 0x34) = 1;
((Unkstruct_800B5CB8 *)arg0)->unk34 = 1;
break;
case 3:
scnt = *(s16 *)(arg0 + 0xFE) - 1;
*(s16 *)(arg0 + 0xFE) = scnt;
scnt = ((Unkstruct_800B5CB8 *)arg0)->unkFE - 1;
((Unkstruct_800B5CB8 *)arg0)->unkFE = scnt;
if (scnt != 0) {
return;
}
*(u16 *)(arg0 + 0xFC) = 0x800;
*(s32 *)(arg0 + 0x14) = 0xFFF00000;
((Unkstruct_800B5CB8 *)arg0)->unkFC = 0x800;
((Unkstruct_800B5CB8 *)arg0)->unk14 = 0xFFF00000;
arr[0] = 0xFFF80000;
arr[1] = 0;
arr[2] = 0;
func_8012B1B4(arg0, (s32)arr);
*(u16 *)(arg0 + 0x34) = 4;
((Unkstruct_800B5CB8 *)arg0)->unk34 = 4;
func_8002D4C8(0x897, 0);
break;
@@ -2892,9 +2892,9 @@ void func_80180F84(s32 arg0)
func_8012C218((void *)arg0);
}
if (func_8012D5E4(arg0, (s32)D_80192844, (s32)&D_8019284C, 0xC) != 0) {
*(u16 *)(arg0 + 0x34) = 5;
*(s32 *)(arg0 + 0x10) = -*(s32 *)(arg0 + 0x10);
*(s32 *)(arg0 + 0x18) = -*(s32 *)(arg0 + 0x18);
((Unkstruct_800B5CB8 *)arg0)->unk34 = 5;
CAST_WIDTH(s32, arg0, 0x10) = -CAST_WIDTH(s32, arg0, 0x10);
CAST_WIDTH(s32, arg0, 0x18) = -CAST_WIDTH(s32, arg0, 0x18);
}
goto join;
@@ -2907,7 +2907,7 @@ void func_80180F84(s32 arg0)
break;
}
e28 = D_801C7E28;
*(u16 *)(arg0 + 0x34) = 6;
((Unkstruct_800B5CB8 *)arg0)->unk34 = 6;
if (e28 != 0) {
D_801C7E2C = D_801C7E2C + 1;
if (D_801C7E2C >= 9) {
@@ -2923,18 +2923,18 @@ void func_80180F84(s32 arg0)
break;
case 6:
*(u16 *)(arg0 + 0xFC) = *(u16 *)(arg0 + 0xFC) - 0x80;
t = func_8012B608(*(s16 *)(*(s32 *)(arg0 + 0x20) + 0x12), 0x400, 0x10);
*(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) + t;
*(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) = *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) & 0xFFF;
if ((u32)(*(u16 *)(*(s32 *)(arg0 + 0x20) + 0x12) - 0x3F0) < 0x21) {
*(u16 *)(arg0 + 0x34) = 7;
((Unkstruct_800B5CB8 *)arg0)->unkFC = CAST_SIGN(u16, arg0, 0xFC) - 0x80;
t = func_8012B608(*(s16 *)(((Unkstruct_800B5CB8 *)arg0)->unk20 + 0x12), 0x400, 0x10);
((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 = ((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 + t;
((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 = ((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 & 0xFFF;
if ((u32)(((Unkstruct_800B5CB8 *)*(s32 *)(arg0 + 0x20))->unk12 - 0x3F0) < 0x21) {
((Unkstruct_800B5CB8 *)arg0)->unk34 = 7;
*(s16 *)(arg0 + 0x16) = -0x10;
*(s16 *)(arg0 + 0x1A) = 4;
((Unkstruct_800B5CB8 *)arg0)->unk1A = 4;
func_8002D4C8(0x897, 0);
break;
}
t = func_80047948(*(s16 *)(arg0 + 0xFC)) << 5;
t = func_80047948(((Unkstruct_800B5CB8 *)arg0)->unkFC) << 5;
if (t > 0) {
t = 0;
}
@@ -2995,14 +2995,14 @@ void func_801814AC(s32 param_1) {
s32 var;
u8 t;
func_8016AA50(param_1, *(s16 *)(param_1 + 0x60));
if (*(u16 *)(param_1 + 0x82) & 1) {
func_8016AA50(param_1, ((Unkstruct_800B5CB8 *)param_1)->unk60);
if (CAST_SIGN(u16, param_1, 0x82) & 1) {
func_8016B428(param_1);
func_80019064(D_80192860);
}
*(s32 *)(param_1 + 0x1C) = 10;
*(u16 *)(param_1 + 0x5C) = 0;
*(u16 *)(param_1 + 0x76) = *(u16 *)(param_1 + 0x76) - *(u16 *)(param_1 + 0x60);
CAST_ALIAS(s32, param_1, 0x1C) = 10;
CAST_ALIAS(u16, param_1, 0x5C) = 0;
CAST_ALIAS(u16, param_1, 0x76) = CAST_SIGN(u16, param_1, 0x76) - CAST_SIGN(u16, param_1, 0x60);
*(u16 *)(D_801C7E30 + 0x34) = 0;
*(u16 *)(D_801C7E30 + 2) = 9;
*(u8 *)(D_801C7E30 + 0xC2) = 0xE;
@@ -3019,11 +3019,11 @@ void func_801814AC(s32 param_1) {
*(u16 *)(D_801C7E30 + 0x70) &= 0xFFFE;
}
func_8002D4C8(0x8A0, 0);
if (*(u8 *)(param_1 + 0x5E) != 0x1D) {
if (*(u8 *)(param_1 + 0xC8) != 0) {
if (((Unkstruct_800B5CB8 *)param_1)->unk5E != 0x1D) {
if (((Unkstruct_800B5CB8 *)param_1)->unkC8 != 0) {
func_8002A520(param_1);
}
if (*(u8 *)(param_1 + 0xC9) != 0) {
if (((Unkstruct_800B5CB8 *)param_1)->unkC9 != 0) {
func_8002A790(param_1);
}
}
@@ -3185,37 +3185,37 @@ void func_80181B4C(void *a0)
s32 ptr64;
s32 rec;
if (*(u16 *)((s32)a0 + 0x2) == 0) {
if (CAST_SIGN(u16, (s32)a0, 0x2) == 0) {
v0 = func_8012C1B8();
*(s32 *)((s32)a0 + 0x20) = v0;
((Unkstruct_800B5CB8 *)a0)->unk20 = v0;
if (v0 == 0) {
func_8012CAE4(a0);
return;
}
func_8001C2C4(v0);
*(u16 *)((s32)a0 + 0x5C) = 0x8000;
*(s32 *)((s32)a0 + 0x58) = (s32)D_801928B8 | 0x40000000 | 0x20000000;
*(u16 *)((s32)a0 + 0x76) = 10000;
*(u8 *)((s32)a0 + 0xC0) = 1;
*(s16 *)((s32)a0 + 0xAE) = -1;
*(s32 *)((s32)a0 + 0xBC) = (s32)D_801928C8;
*(s32 *)((s32)a0 + 0x4) = 0x25B0000;
*(s32 *)((s32)a0 + 0x8) = 0xFF900000;
*(s32 *)((s32)a0 + 0xB4) = 0;
*(u16 *)((s32)a0 + 0x2) += 1;
*(s32 *)((s32)a0 + 0xC4) |= 3;
((Unkstruct_800B5CB8 *)a0)->unk5C = 0x8000;
((Unkstruct_800B5CB8 *)a0)->unk58 = (s32)D_801928B8 | 0x40000000 | 0x20000000;
((Unkstruct_800B5CB8 *)a0)->unk76 = 10000;
((Unkstruct_800B5CB8 *)a0)->unkC0 = 1;
((Unkstruct_800B5CB8 *)a0)->unkAE = -1;
((Unkstruct_800B5CB8 *)a0)->unkBC = (s32)D_801928C8;
CAST_WIDTH(s32, (s32)a0, 0x4) = 0x25B0000;
CAST_WIDTH(s32, (s32)a0, 0x8) = 0xFF900000;
((Unkstruct_800B5CB8 *)a0)->unkB4 = 0;
CAST_SIGN(u16, (s32)a0, 0x2) += 1;
((Unkstruct_800B5CB8 *)a0)->unkC4 |= 3;
} else {
ptr64 = *(s32 *)((s32)a0 + 0x64);
ptr64 = ((Unkstruct_800B5CB8 *)a0)->unk64;
if (*(u16 *)ptr64 != 0) {
rec = *(s32 *)(*(s32 *)(ptr64 + 0x20) + 0x20);
*(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x10) = *(u16 *)(rec + 0x6);
*(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12) = *(u16 *)(rec + 0x8);
*(s16 *)(*(s32 *)((s32)a0 + 0x20) + 0x14) = *(u16 *)(rec + 0xA) - 0x100;
*(s16 *)((s32)a0 + 0x6) = *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0x6) + *(u16 *)(rec + 0x0);
*(s16 *)((s32)a0 + 0xA) = *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0xA) + *(u16 *)(rec + 0x2);
*(s16 *)((s32)a0 + 0xE) = *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0xE) + *(u16 *)(rec + 0x4);
((Unkstruct_800B5CB8 *)*(s32 *)((s32)a0 + 0x20))->unk10 = *(u16 *)(rec + 0x6);
((Unkstruct_800B5CB8 *)*(s32 *)((s32)a0 + 0x20))->unk12 = *(u16 *)(rec + 0x8);
*(s16 *)(((Unkstruct_800B5CB8 *)a0)->unk20 + 0x14) = *(u16 *)(rec + 0xA) - 0x100;
((Unkstruct_800B5CB8 *)a0)->unk6 = *(u16 *)(((Unkstruct_800B5CB8 *)a0)->unk64 + 0x6) + *(u16 *)(rec + 0x0);
((Unkstruct_800B5CB8 *)a0)->unkA = *(u16 *)(((Unkstruct_800B5CB8 *)a0)->unk64 + 0xA) + *(u16 *)(rec + 0x2);
((Unkstruct_800B5CB8 *)a0)->unkE = *(u16 *)(((Unkstruct_800B5CB8 *)a0)->unk64 + 0xE) + *(u16 *)(rec + 0x4);
func_8012B2CC((s32)a0);
if (*(s32 *)(*(s32 *)((s32)a0 + 0x64) + 0x90) == (s32)D_801A3E2C) {
if (*(s32 *)(((Unkstruct_800B5CB8 *)a0)->unk64 + 0x90) == (s32)D_801A3E2C) {
func_80181670(a0);
}
}