diff --git a/docs/struct-map.md b/docs/struct-map.md index 62067f5092..aefdafddad 100644 --- a/docs/struct-map.md +++ b/docs/struct-map.md @@ -1,136 +1,136 @@ # The struct map — the types the fleet's cast sites need (Phase 37 T1) -> **Generated by `tools/type_census.py` at `a21682ae7` (2026-09-30T05:21:20Z); 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_`: the lowest global instance's address, else the lowest member function's); fields are placeholders (`unk`) until Phase 38 cites evidence. +> **Generated by `tools/type_census.py` at `6f01332bc` (2026-09-30T06:31:48Z); 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_`: the lowest global instance's address, else the lowest member function's); fields are placeholders (`unk`) until Phase 38 cites evidence. -**18208 types explain 498866 of 502985 dereference sites (99.2 %); 4119 sites have a base the census could not classify; 725 types carry a width conflict.** Merges by evidence: param 36460, assign 14671, arg 10231, field 9963, ret-of 3443, return 1519, assign& 1055, arg& 281. +**19130 types explain 498866 of 502985 dereference sites (99.2 %); 4119 sites have a base the census could not classify; 856 types carry a width conflict.** Merges by evidence: param 38884, assign 16776, arg 10821, field 9909, ret-of 4320, return 1524, assign& 1184, arg& 270. | # | type | sites | bodies | fields | size ≥ | width conflicts (+sign mixes) | instance globals | pointer globals | |---:|---|---:|---:|---:|---:|---:|---|---| -| 1 | `Unkstruct_800B5CB8` | 113069 | 10168 | 133 | 0x10c | 50 (+61 sign) | D_800B5CB8, D_800D3888, D_80181448, D_80181538… | D_8006386C, D_80074778, D_80074780, D_80074784… | -| 2 | `Unkstruct_80126B58` | 65451 | 17062 | 175 | 0x24c | 50 (+60 sign) | D_80126B58 | D_80126B58 | -| 3 | `Unkstruct_8018E71C` | 6745 | 396 | 7 | 0x10 | 0 (+0 sign) | D_8018E71C | | +| 1 | `Unkstruct_800B5CB8` | 107580 | 11184 | 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 | +| 3 | `Unkstruct_cb638a45` | 6477 | 381 | 6 | 0x10 | 0 (+0 sign) | | | | 4 | `Unkstruct_dac960ce` | 4464 | 124 | 13 | 0x24c | 0 (+2 sign) | | | | 5 | `Unkstruct_0caecd54` | 4340 | 124 | 23 | 0xfe | 0 (+1 sign) | | | -| 6 | `Unkstruct_8014964C` | 4249 | 1798 | 23 | 0x84 | 3 (+9 sign) | | | -| 7 | `Unkstruct_f8ed2b9f` | 4061 | 4061 | 1 | 0x217 | 0 (+0 sign) | | | -| 8 | `Unkstruct_a32b99a1` | 3936 | 123 | 8 | 0x4b | 0 (+1 sign) | | | -| 9 | `Unkstruct_8e3dbe51` | 3930 | 131 | 5 | 0x4c | 0 (+1 sign) | | | -| 10 | `Unkstruct_8014A1B0` | 3778 | 542 | 13 | 0xfe | 0 (+1 sign) | | | +| 6 | `Unkstruct_f8ed2b9f` | 4061 | 4061 | 1 | 0x217 | 0 (+0 sign) | | | +| 7 | `Unkstruct_a32b99a1` | 3936 | 123 | 8 | 0x4b | 0 (+1 sign) | | | +| 8 | `Unkstruct_8e3dbe51` | 3930 | 131 | 5 | 0x4c | 0 (+1 sign) | | | +| 9 | `Unkstruct_8014A1B0` | 3778 | 542 | 13 | 0xfe | 0 (+1 sign) | | | +| 10 | `Unkstruct_80128EA8` | 3311 | 632 | 18 | 0x38 | 0 (+13 sign) | | | | 11 | `Unkstruct_ade2e8a0` | 3271 | 196 | 26 | 0xa4 | 3 (+9 sign) | | | -| 12 | `Unkstruct_80126948` | 3237 | 1083 | 34 | 0xa4 | 0 (+10 sign) | D_80126948, D_80126E60 | D_80114EE8, D_801151D4, D_80126948, D_80126E60… | -| 13 | `Unkstruct_1fa9e810` | 3144 | 131 | 3 | 0x49 | 0 (+0 sign) | | | -| 14 | `Unkstruct_30b21035` | 3100 | 124 | 13 | 0x54 | 0 (+0 sign) | | | +| 12 | `Unkstruct_1fa9e810` | 3144 | 131 | 3 | 0x49 | 0 (+0 sign) | | | +| 13 | `Unkstruct_30b21035` | 3100 | 124 | 13 | 0x54 | 0 (+0 sign) | | | +| 14 | `Unkstruct_80126948` | 2986 | 832 | 34 | 0xa4 | 0 (+10 sign) | D_80126948, D_80126E60 | D_80114EE8, D_801151D4, D_80126948, D_80126E60… | | 15 | `Unkstruct_adc0bee4` | 2646 | 126 | 8 | 0x34 | 0 (+3 sign) | | | | 16 | `Unkstruct_198fc7cc` | 2580 | 129 | 16 | 0x38 | 3 (+1 sign) | | | -| 17 | `Unkstruct_80130D48` | 2382 | 587 | 25 | 0x64 | 6 (+3 sign) | | D_80072C84, D_80078E78 | -| 18 | `Unkstruct_ed8f1335` | 2356 | 124 | 18 | 0x24 | 0 (+0 sign) | | | -| 19 | `Unkstruct_8016B4F8` | 2140 | 535 | 5 | 0x30 | 0 (+0 sign) | | | -| 20 | `Unkstruct_80139C7C` | 2111 | 265 | 14 | 0x44 | 0 (+3 sign) | | | -| 21 | `Unkstruct_b047cdf2` | 2108 | 124 | 6 | 0x20 | 0 (+0 sign) | | | -| 22 | `Unkstruct_2729e670` | 2091 | 123 | 6 | 0x4b | 0 (+0 sign) | | | -| 23 | `Unkstruct_dd542e54` | 2016 | 126 | 7 | 0x18 | 0 (+0 sign) | | | -| 24 | `Unkstruct_f49880fd` | 2000 | 125 | 6 | 0x54 | 0 (+1 sign) | | | -| 25 | `Unkstruct_a8d34bce` | 1948 | 1948 | 1 | 0x215 | 0 (+0 sign) | | | -| 26 | `Unkstruct_568f7bda` | 1875 | 125 | 9 | 0x38 | 0 (+0 sign) | | | -| 27 | `Unkstruct_8016DF5C` | 1791 | 131 | 9 | 0x38 | 0 (+3 sign) | | | -| 28 | `Unkstruct_cd1bacd2` | 1764 | 126 | 10 | 0x38 | 0 (+0 sign) | | | -| 29 | `Unkstruct_8011F7A8` | 1746 | 271 | 7 | 0x11e | 0 (+0 sign) | D_8011F7A8 | | -| 30 | `Unkstruct_84612d18` | 1722 | 123 | 8 | 0x4b | 0 (+0 sign) | | | -| 31 | `Unkstruct_57db4d07` | 1664 | 128 | 13 | 0x0 | 13 (+0 sign) | | | -| 32 | `Unkstruct_4692fc17` | 1612 | 124 | 4 | 0x1e | 0 (+3 sign) | | | -| 33 | `Unkstruct_eda88e53` | 1596 | 133 | 6 | 0x54 | 6 (+0 sign) | | | -| 34 | `Unkstruct_4e09b6d9` | 1572 | 131 | 9 | 0x32 | 0 (+1 sign) | | | -| 35 | `Unkstruct_23e45db5` | 1512 | 126 | 11 | 0x16 | 0 (+0 sign) | | | -| 36 | `Unkstruct_8012D3B4` | 1496 | 165 | 23 | 0x24 | 12 (+7 sign) | | | -| 37 | `Unkstruct_47470ce3` | 1488 | 124 | 6 | 0x1e | 0 (+0 sign) | | | -| 38 | `Unkstruct_b5c0372a` | 1441 | 131 | 9 | 0x58 | 0 (+0 sign) | | | -| 39 | `Unkstruct_0980b9f0` | 1441 | 131 | 4 | 0x49 | 0 (+0 sign) | | | -| 40 | `Unkstruct_ba6e2e9f` | 1439 | 1439 | 1 | 0x4 | 0 (+0 sign) | | | -| 41 | `Unkstruct_a68f6d03` | 1364 | 124 | 9 | 0x14 | 0 (+0 sign) | | | -| 42 | `Unkstruct_8fdd92d1` | 1300 | 130 | 4 | 0x24 | 2 (+0 sign) | | | -| 43 | `Unkstruct_110cf29e` | 1250 | 125 | 7 | 0x2c | 0 (+0 sign) | | | -| 44 | `Unkstruct_4db8cec8` | 1240 | 124 | 8 | 0x36 | 0 (+0 sign) | | | -| 45 | `Unkstruct_f0bc3b7a` | 1240 | 124 | 7 | 0x100 | 0 (+0 sign) | | | -| 46 | `Unkstruct_297e7547` | 1240 | 124 | 10 | 0x58 | 0 (+0 sign) | | | -| 47 | `Unkstruct_dd59c999` | 1240 | 124 | 6 | 0x38 | 0 (+2 sign) | | | -| 48 | `Unkstruct_919ca3ea` | 1230 | 123 | 6 | 0x10 | 0 (+0 sign) | | | -| 49 | `Unkstruct_a459e3e5` | 1220 | 122 | 6 | 0x34 | 0 (+0 sign) | | | -| 50 | `Unkstruct_8014CA00` | 1219 | 407 | 4 | 0x2e | 0 (+3 sign) | | | -| 51 | `Unkstruct_74787850` | 1206 | 1073 | 1 | 0x2 | 0 (+1 sign) | | D_801152A8 | -| 52 | `Unkstruct_f9a7989e` | 1179 | 131 | 3 | 0x36 | 0 (+1 sign) | | | -| 53 | `Unkstruct_0b30043d` | 1128 | 376 | 3 | 0x5e | 0 (+0 sign) | | | -| 54 | `Unkstruct_301381d4` | 1116 | 124 | 3 | 0x36 | 0 (+1 sign) | | | -| 55 | `Unkstruct_0ced46e2` | 1116 | 124 | 5 | 0xfe | 0 (+0 sign) | | | -| 56 | `Unkstruct_4857195e` | 1107 | 123 | 5 | 0x34 | 0 (+0 sign) | | | -| 57 | `Unkstruct_50a3f6b4` | 1040 | 130 | 3 | 0x36 | 0 (+0 sign) | | | -| 58 | `Unkstruct_800B9A02` | 993 | 435 | 1 | 0x2 | 0 (+0 sign) | D_800B9A02 | | -| 59 | `Unkstruct_f74e3af7` | 992 | 124 | 5 | 0xfe | 0 (+0 sign) | | | -| 60 | `Unkstruct_b6c7c603` | 931 | 133 | 7 | 0x20 | 1 (+0 sign) | | | -| 61 | `Unkstruct_b774eeeb` | 917 | 131 | 4 | 0x41 | 0 (+0 sign) | | | -| 62 | `Unkstruct_859b4fab` | 910 | 130 | 4 | 0xb0 | 0 (+0 sign) | | | -| 63 | `Unkstruct_801463A0` | 907 | 210 | 13 | 0x54 | 0 (+1 sign) | | D_80126B78 | -| 64 | `Unkstruct_6d3f3f5d` | 889 | 127 | 6 | 0x38 | 0 (+0 sign) | | | -| 65 | `Unkstruct_6d856e9d` | 889 | 127 | 5 | 0x1e | 3 (+1 sign) | | | -| 66 | `Unkstruct_d0c6cce6` | 889 | 127 | 4 | 0x38 | 0 (+0 sign) | | | -| 67 | `Unkstruct_1e86c313` | 882 | 126 | 4 | 0x8 | 0 (+0 sign) | | | -| 68 | `Unkstruct_a41ec127` | 882 | 126 | 6 | 0x38 | 0 (+0 sign) | | | -| 69 | `Unkstruct_17738e2c` | 876 | 33 | 32 | 0xa4 | 12 (+5 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_801270C0` | 821 | 820 | 1 | 0x2 | 0 (+0 sign) | D_801270C0 | | -| 77 | `Unkstruct_2932a0a7` | 798 | 133 | 6 | 0x12 | 5 (+0 sign) | | | -| 78 | `Unkstruct_0a8f505b` | 790 | 83 | 14 | 0x10c | 0 (+5 sign) | | | -| 79 | `Unkstruct_12f4cee2` | 786 | 131 | 5 | 0x28 | 0 (+0 sign) | | | -| 80 | `Unkstruct_d2490774` | 786 | 131 | 3 | 0xb0 | 0 (+0 sign) | | | -| 81 | `Unkstruct_80135260` | 780 | 130 | 3 | 0x54 | 0 (+0 sign) | | | -| 82 | `Unkstruct_b196f9c0` | 768 | 128 | 5 | 0x14 | 1 (+0 sign) | | | -| 83 | `Unkstruct_36c327cf` | 762 | 127 | 2 | 0x18 | 0 (+0 sign) | | | -| 84 | `Unkstruct_6cd0e445` | 756 | 126 | 2 | 0x10 | 0 (+0 sign) | | | -| 85 | `Unkstruct_c0b9c5d5` | 750 | 125 | 6 | 0x10 | 0 (+0 sign) | | | -| 86 | `Unkstruct_64375b18` | 744 | 124 | 5 | 0xa0 | 0 (+0 sign) | | | -| 87 | `Unkstruct_438adcd1` | 744 | 124 | 5 | 0x14 | 0 (+0 sign) | | | -| 88 | `Unkstruct_97b6f459` | 744 | 124 | 5 | 0x28 | 0 (+0 sign) | | | -| 89 | `Unkstruct_38975874` | 744 | 124 | 4 | 0x84 | 0 (+0 sign) | | | -| 90 | `Unkstruct_76b1caf3` | 744 | 124 | 2 | 0x3 | 0 (+0 sign) | | | -| 91 | `Unkstruct_8016BBE0` | 690 | 139 | 9 | 0x38 | 0 (+0 sign) | | | -| 92 | `Unkstruct_80146A6C` | 680 | 137 | 7 | 0x2c | 0 (+0 sign) | | | -| 93 | `Unkstruct_800AF630` | 671 | 537 | 3 | 0xa3dc | 0 (+0 sign) | D_800AF630 | | -| 94 | `Unkstruct_8012C284` | 668 | 533 | 1 | 0x2 | 0 (+1 sign) | | D_80126720 | -| 95 | `Unkstruct_80115128` | 667 | 534 | 1 | 0x2 | 0 (+0 sign) | D_80115128 | | -| 96 | `Unkstruct_896c95f7` | 665 | 133 | 3 | 0x5e | 0 (+0 sign) | | | -| 97 | `Unkstruct_61789347` | 665 | 133 | 0 | 0x0 | 0 (+0 sign) | | | -| 98 | `Unkstruct_b89d503f` | 665 | 133 | 0 | 0x0 | 0 (+0 sign) | | | -| 99 | `Unkstruct_801345F8` | 665 | 133 | 0 | 0x0 | 0 (+0 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 | +| 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) | | | +| 22 | `Unkstruct_b047cdf2` | 2108 | 124 | 6 | 0x20 | 0 (+0 sign) | | | +| 23 | `Unkstruct_2729e670` | 2091 | 123 | 6 | 0x4b | 0 (+0 sign) | | | +| 24 | `Unkstruct_dd542e54` | 2016 | 126 | 7 | 0x18 | 0 (+0 sign) | | | +| 25 | `Unkstruct_f49880fd` | 2000 | 125 | 6 | 0x54 | 0 (+1 sign) | | | +| 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_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) | | | +| 33 | `Unkstruct_4692fc17` | 1612 | 124 | 4 | 0x1e | 0 (+3 sign) | | | +| 34 | `Unkstruct_eda88e53` | 1596 | 133 | 6 | 0x54 | 6 (+0 sign) | | | +| 35 | `Unkstruct_8012D3B4` | 1588 | 183 | 23 | 0x24 | 16 (+9 sign) | | D_80074808, D_800A5E60 | +| 36 | `Unkstruct_4e09b6d9` | 1572 | 131 | 9 | 0x32 | 0 (+1 sign) | | | +| 37 | `Unkstruct_23e45db5` | 1512 | 126 | 11 | 0x16 | 0 (+0 sign) | | | +| 38 | `Unkstruct_47470ce3` | 1488 | 124 | 6 | 0x1e | 0 (+0 sign) | | | +| 39 | `Unkstruct_b5c0372a` | 1441 | 131 | 9 | 0x58 | 0 (+0 sign) | | | +| 40 | `Unkstruct_0980b9f0` | 1441 | 131 | 4 | 0x49 | 0 (+0 sign) | | | +| 41 | `Unkstruct_ba6e2e9f` | 1439 | 1439 | 1 | 0x4 | 0 (+0 sign) | | | +| 42 | `Unkstruct_a68f6d03` | 1364 | 124 | 9 | 0x14 | 0 (+0 sign) | | | +| 43 | `Unkstruct_8fdd92d1` | 1300 | 130 | 4 | 0x24 | 2 (+0 sign) | | | +| 44 | `Unkstruct_110cf29e` | 1250 | 125 | 7 | 0x2c | 0 (+0 sign) | | | +| 45 | `Unkstruct_4db8cec8` | 1240 | 124 | 8 | 0x36 | 0 (+0 sign) | | | +| 46 | `Unkstruct_f0bc3b7a` | 1240 | 124 | 7 | 0x100 | 0 (+0 sign) | | | +| 47 | `Unkstruct_297e7547` | 1240 | 124 | 10 | 0x58 | 0 (+0 sign) | | | +| 48 | `Unkstruct_dd59c999` | 1240 | 124 | 6 | 0x38 | 0 (+2 sign) | | | +| 49 | `Unkstruct_919ca3ea` | 1230 | 123 | 6 | 0x10 | 0 (+0 sign) | | | +| 50 | `Unkstruct_a459e3e5` | 1220 | 122 | 6 | 0x34 | 0 (+0 sign) | | | +| 51 | `Unkstruct_8014CA00` | 1219 | 407 | 4 | 0x2e | 0 (+3 sign) | | | +| 52 | `Unkstruct_74787850` | 1206 | 1073 | 1 | 0x2 | 0 (+1 sign) | | D_801152A8 | +| 53 | `Unkstruct_f9a7989e` | 1179 | 131 | 3 | 0x36 | 0 (+1 sign) | | | +| 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_4857195e` | 1107 | 123 | 5 | 0x34 | 0 (+0 sign) | | | +| 58 | `Unkstruct_50a3f6b4` | 1040 | 130 | 3 | 0x36 | 0 (+0 sign) | | | +| 59 | `Unkstruct_800B9A02` | 993 | 435 | 1 | 0x2 | 0 (+0 sign) | D_800B9A02 | | +| 60 | `Unkstruct_f74e3af7` | 992 | 124 | 5 | 0xfe | 0 (+0 sign) | | | +| 61 | `Unkstruct_b6c7c603` | 931 | 133 | 7 | 0x20 | 1 (+0 sign) | | | +| 62 | `Unkstruct_b774eeeb` | 917 | 131 | 4 | 0x41 | 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_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) | | | +| 80 | `Unkstruct_12f4cee2` | 786 | 131 | 5 | 0x28 | 0 (+0 sign) | | | +| 81 | `Unkstruct_d2490774` | 786 | 131 | 3 | 0xb0 | 0 (+0 sign) | | | +| 82 | `Unkstruct_80135260` | 780 | 130 | 3 | 0x54 | 0 (+0 sign) | | | +| 83 | `Unkstruct_b196f9c0` | 768 | 128 | 5 | 0x14 | 1 (+0 sign) | | | +| 84 | `Unkstruct_36c327cf` | 762 | 127 | 2 | 0x18 | 0 (+0 sign) | | | +| 85 | `Unkstruct_6cd0e445` | 756 | 126 | 2 | 0x10 | 0 (+0 sign) | | | +| 86 | `Unkstruct_c0b9c5d5` | 750 | 125 | 6 | 0x10 | 0 (+0 sign) | | | +| 87 | `Unkstruct_64375b18` | 744 | 124 | 5 | 0xa0 | 0 (+0 sign) | | | +| 88 | `Unkstruct_438adcd1` | 744 | 124 | 5 | 0x14 | 0 (+0 sign) | | | +| 89 | `Unkstruct_97b6f459` | 744 | 124 | 5 | 0x28 | 0 (+0 sign) | | | +| 90 | `Unkstruct_38975874` | 744 | 124 | 4 | 0x84 | 0 (+0 sign) | | | +| 91 | `Unkstruct_76b1caf3` | 744 | 124 | 2 | 0x3 | 0 (+0 sign) | | | +| 92 | `Unkstruct_8016BBE0` | 690 | 139 | 9 | 0x38 | 0 (+0 sign) | | | +| 93 | `Unkstruct_80146A6C` | 680 | 137 | 7 | 0x2c | 0 (+0 sign) | | | +| 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_896c95f7` | 665 | 133 | 3 | 0x5e | 0 (+0 sign) | | | +| 98 | `Unkstruct_61789347` | 665 | 133 | 0 | 0x0 | 0 (+0 sign) | | | +| 99 | `Unkstruct_44ce00ff` | 665 | 133 | 0 | 0x0 | 0 (+0 sign) | | | | 100 | `Unkstruct_801345F8` | 665 | 133 | 0 | 0x0 | 0 (+0 sign) | | | -| 101 | `Unkstruct_801152A0` | 665 | 399 | 1 | 0x2 | 0 (+0 sign) | D_801152A0 | | -| 102 | `Unkstruct_fdd04bae` | 650 | 130 | 3 | 0x38 | 0 (+0 sign) | | | -| 103 | `Unkstruct_eb8b6fbf` | 645 | 129 | 5 | 0xfe | 0 (+0 sign) | | | -| 104 | `Unkstruct_90d0825c` | 645 | 129 | 5 | 0x1c | 1 (+0 sign) | | | -| 105 | `Unkstruct_27c177f1` | 645 | 129 | 4 | 0x34 | 0 (+0 sign) | | | -| 106 | `Unkstruct_4f9f60b8` | 630 | 126 | 4 | 0x78 | 0 (+0 sign) | | | -| 107 | `Unkstruct_7a31a22f` | 630 | 126 | 2 | 0x19c | 0 (+0 sign) | | | -| 108 | `Unkstruct_187abeff` | 630 | 126 | 5 | 0x68 | 0 (+0 sign) | | | -| 109 | `Unkstruct_f9fa1fb7` | 630 | 126 | 4 | 0x20 | 0 (+0 sign) | | | -| 110 | `Unkstruct_20d4328b` | 630 | 126 | 4 | 0x38 | 0 (+0 sign) | | | -| 111 | `Unkstruct_d94ab931` | 625 | 125 | 4 | 0x6 | 2 (+1 sign) | | | -| 112 | `Unkstruct_7ef9c9ef` | 625 | 125 | 4 | 0x6 | 2 (+1 sign) | | | -| 113 | `Unkstruct_ad0948d5` | 625 | 125 | 5 | 0x1c | 0 (+0 sign) | | | -| 114 | `Unkstruct_fccefc1f` | 625 | 125 | 2 | 0x1a | 0 (+0 sign) | | | -| 115 | `Unkstruct_57ae03d1` | 620 | 124 | 2 | 0x2c | 0 (+0 sign) | | | -| 116 | `Unkstruct_af1e9d57` | 620 | 248 | 4 | 0x64 | 0 (+0 sign) | | | -| 117 | `Unkstruct_172cbd29` | 620 | 124 | 2 | 0x1fc | 0 (+0 sign) | | | -| 118 | `Unkstruct_2c2c1d2e` | 620 | 124 | 4 | 0x24 | 0 (+0 sign) | | | -| 119 | `Unkstruct_aaf4c4dd` | 615 | 615 | 1 | 0x16 | 0 (+0 sign) | | | -| 120 | `Unkstruct_293d71dc` | 600 | 75 | 0 | 0x0 | 0 (+0 sign) | | | -| 121 | `Unkstruct_78eaa73c` | 553 | 7 | 15 | 0x10a | 0 (+7 sign) | | | -| 122 | `Unkstruct_8011512E` | 532 | 133 | 1 | 0x2 | 0 (+0 sign) | D_8011512E | | -| 123 | `Unkstruct_8016BFA8` | 532 | 133 | 4 | 0x24 | 0 (+0 sign) | | | -| 124 | `Unkstruct_30befa8c` | 520 | 130 | 3 | 0xfe | 0 (+0 sign) | | | -| 125 | `Unkstruct_b7ae0eae` | 520 | 130 | 1 | 0x2 | 1 (+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_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) | | | +| 119 | `Unkstruct_2c2c1d2e` | 620 | 124 | 4 | 0x24 | 0 (+0 sign) | | | +| 120 | `Unkstruct_aaf4c4dd` | 615 | 615 | 1 | 0x16 | 0 (+0 sign) | | | +| 121 | `Unkstruct_293d71dc` | 600 | 75 | 0 | 0x0 | 0 (+0 sign) | | | +| 122 | `Unkstruct_78eaa73c` | 553 | 7 | 15 | 0x10a | 0 (+7 sign) | | | +| 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_01082f7a` | 520 | 520 | 1 | 0x4 | 0 (+0 sign) | | | | 127 | `Unkstruct_db0ee441` | 516 | 129 | 4 | 0x38 | 0 (+0 sign) | | | | 128 | `Unkstruct_7476116e` | 516 | 129 | 1 | 0x4 | 0 (+0 sign) | | | @@ -181,30 +181,30 @@ | 173 | `Unkstruct_b39064df` | 366 | 14 | 24 | 0xa2 | 3 (+3 sign) | | | | 174 | `Unkstruct_5c635b4b` | 364 | 14 | 13 | 0x34 | 0 (+0 sign) | | | | 175 | `Unkstruct_800AE620` | 325 | 322 | 0 | 0x0 | 0 (+0 sign) | D_800AE620 | | -| 176 | `Unkstruct_80137D08` | 301 | 38 | 18 | 0x20 | 13 (+4 sign) | | D_80074808, D_800A5E60 | -| 177 | `Unkstruct_814e4d87` | 300 | 75 | 0 | 0x0 | 0 (+0 sign) | | | -| 178 | `Unkstruct_09b02bee` | 300 | 75 | 2 | 0x4 | 0 (+0 sign) | | | -| 179 | `Unkstruct_1ef3b11b` | 280 | 10 | 7 | 0x10c | 0 (+1 sign) | | | -| 180 | `Unkstruct_80115188` | 274 | 270 | 1 | 0x4 | 0 (+0 sign) | D_80115188 | | -| 181 | `Unkstruct_80129CF8` | 273 | 90 | 33 | 0xa435 | 0 (+5 sign) | | D_800AF630 | -| 182 | `Unkstruct_a2d6c72b` | 273 | 21 | 4 | 0x100 | 0 (+0 sign) | | | -| 183 | `Unkstruct_80078EB4` | 270 | 137 | 1 | 0x2 | 0 (+0 sign) | D_80078EB4 | | -| 184 | `Unkstruct_80115118` | 268 | 265 | 1 | 0x2 | 0 (+1 sign) | D_80115118 | | -| 185 | `Unkstruct_801152B0` | 268 | 268 | 0 | 0x0 | 0 (+0 sign) | D_801152B0 | | -| 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_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 | | -| 195 | `Unkstruct_800D4F8C` | 266 | 133 | 1 | 0x4 | 0 (+0 sign) | D_800D4F8C | | +| 176 | `Unkstruct_814e4d87` | 300 | 75 | 0 | 0x0 | 0 (+0 sign) | | | +| 177 | `Unkstruct_09b02bee` | 300 | 75 | 2 | 0x4 | 0 (+0 sign) | | | +| 178 | `Unkstruct_1ef3b11b` | 280 | 10 | 7 | 0x10c | 0 (+1 sign) | | | +| 179 | `Unkstruct_80115188` | 274 | 270 | 1 | 0x4 | 0 (+0 sign) | D_80115188 | | +| 180 | `Unkstruct_80129CF8` | 273 | 90 | 33 | 0xa435 | 0 (+5 sign) | | D_800AF630 | +| 181 | `Unkstruct_a2d6c72b` | 273 | 21 | 4 | 0x100 | 0 (+0 sign) | | | +| 182 | `Unkstruct_80078EB4` | 270 | 137 | 1 | 0x2 | 0 (+0 sign) | D_80078EB4 | | +| 183 | `Unkstruct_80115118` | 268 | 265 | 1 | 0x2 | 0 (+1 sign) | D_80115118 | | +| 184 | `Unkstruct_801152B0` | 268 | 268 | 0 | 0x0 | 0 (+0 sign) | D_801152B0 | | +| 185 | `Unkstruct_801269F4` | 267 | 134 | 1 | 0x2 | 0 (+0 sign) | D_801269F4 | | +| 186 | `Unkstruct_8012C1DC` | 267 | 134 | 3 | 0x1c | 0 (+0 sign) | | | +| 187 | `Unkstruct_8011515C` | 267 | 267 | 1 | 0x2 | 0 (+1 sign) | D_8011515C | | +| 188 | `Unkstruct_1db7b82d` | 266 | 133 | 1 | 0x2e | 0 (+0 sign) | | | +| 189 | `Unkstruct_6bd63257` | 266 | 133 | 2 | 0x1e | 0 (+0 sign) | | | +| 190 | `Unkstruct_f85de09d` | 266 | 133 | 1 | 0x2 | 0 (+0 sign) | | | +| 191 | `Unkstruct_a310cf42` | 266 | 133 | 1 | 0x4 | 0 (+0 sign) | | | +| 192 | `Unkstruct_80115124` | 266 | 266 | 1 | 0x2 | 0 (+0 sign) | D_80115124 | | +| 193 | `Unkstruct_800D4BE0` | 266 | 133 | 1 | 0x4 | 0 (+0 sign) | D_800D4BE0 | | +| 194 | `Unkstruct_800D4F8C` | 266 | 133 | 1 | 0x4 | 0 (+0 sign) | D_800D4F8C | | +| 195 | `Unkstruct_8016BFA8` | 266 | 133 | 0 | 0x0 | 0 (+0 sign) | | | | 196 | `Unkstruct_8016BFA8` | 266 | 133 | 0 | 0x0 | 0 (+0 sign) | | | -| 197 | `Unkstruct_8016BFA8` | 266 | 133 | 0 | 0x0 | 0 (+0 sign) | | | -| 198 | `Unkstruct_80176734` | 266 | 133 | 1 | 0x2c | 0 (+0 sign) | | D_8011F7B0 | -| 199 | `Unkstruct_80126B62` | 265 | 252 | 2 | 0xe | 0 (+1 sign) | D_80126B62 | | -| 200 | `Unkstruct_76f4299b` | 262 | 131 | 1 | 0x4a | 0 (+0 sign) | | | +| 197 | `Unkstruct_80176734` | 266 | 133 | 1 | 0x2c | 0 (+0 sign) | | D_8011F7B0 | +| 198 | `Unkstruct_80126B62` | 265 | 252 | 2 | 0xe | 0 (+1 sign) | D_80126B62 | | +| 199 | `Unkstruct_76f4299b` | 262 | 131 | 1 | 0x4a | 0 (+0 sign) | | | +| 200 | `Unkstruct_3816caab` | 260 | 130 | 2 | 0x1c | 0 (+0 sign) | | | -*18208 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`.* +*19130 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`.* diff --git a/phase-ends/current/logs/T5.md b/phase-ends/current/logs/T5.md new file mode 100644 index 0000000000..8b358d4524 --- /dev/null +++ b/phase-ends/current/logs/T5.md @@ -0,0 +1,25 @@ +# T5 log — long tail, one definition per type (attempt 1, expert-opus55) + +## Timeline +- Baseline census (`.run/logs/t5census0.log`): dup_classes=205 outside_canon=5917 dead=142 variants=40 pad_names=25 parse_error_decls=1106 controls=4/4. +- `lift_types.py --candidates` → 1464 liftable; dry-run (`.run/logs/t5liftdry.log`): 3006 local defs / 425 files; list saved `.run/P38/t5_lift_all.txt` (now stale: c1 changed --candidates). +- retriever-code (no report): exact definitions of the five gating counts + lift_types --apply steps. Key facts: + - dup_classes groups ALL defs by layout hash; tier 2 = every def all-placeholder member names; layout twins (tier 3, ≥2 meaningful signatures) not counted, but each camp with >1 name inside counts. No allowlist/evidence input: opaque layout twins without evidence ARE tier-2 dup classes. + - outside_canon = every non-enum body outside CANON_HEADERS incl. .c block-scope (function-local stack-frame structs), src/shared/* fn headers, other headers; no exemption. + - dead = canon names with 0 ident uses outside the two canon headers; uses inside canon (member types, alias typedefs) do not count. + - lift_types scans src/ov_*/*.c only; writes engine_types.h only. +- Coder T5.c1 (commit 907138d26): lifted 1308 names; lift_types.py fixed (file-scope only, refuse struct-with-object defs, skip common.h scalars u8/u16/u32/s32, skip names also in overlay-local .h). 156 not lifted, causes in `.run/P38/t5/c1_excluded.txt`. R22 green (`t5c1r22c`). Counts: dup 205, outside 3680, dead 447, variants 40, pad 72. +- Coder T5.c2 (bc9c5bebb pads, 81fc2be28 dead, e5ba08739 variants, 6f01332bc Vec_td, 5bd5236ab log): pad 72→0 (`pad_`), 314 dead defs deleted, 543 divergent defs renamed `_` (scope-aware), 9 tag/typedef namespace pairs split `N_tag`/`N_td`. R22 green after each sub-step. Census (`t5c2census2`): dup_classes=198 outside_canon=3680 dead=134 variants=0 pad_names=0 parse_error_decls=1106 controls=4/4. Residual 134 dead listed `.run/P38/t5/c2_residual.txt`: 114 referenced by live canon defs, 12 used where census cannot see (D_*, macro bodies), 6 single-char names (census ident filter len>1, type_census.py:603; deleting `W` broke ov_SC01_077), 1 self-ref tag actor4c, 1 generated head type Unkstruct_80126B58. +- Verify R22 at 5bd5236ab (`.run/logs/t5verify.log`): extract-all 217/0, check-all 218 passed 0 failed, rc 0. + +## Stopped: done-when vs instrument conflict +- dup_classes=0: tier-2 classes are opaque layout twins with no evidence; the done-when says those stay apart and listed, the gate counts them. Reaching 0 = collapsing e.g. 293 opaque 8-byte names into one, i.e. "per layout", which G62/S106 forbids. +- outside_canon=0: 1774 block-scope stack-frame structs + fn-header + md/main file-scope bodies would all move into canon headers; lift_types cannot reach them; block-scope frames are TU-local by nature. +- dead: 114+6+12 residuals are live by construction; the metric ignores intra-canon references and short/D_ identifiers. Fixing the metric is an instrument change I did not make unilaterally (§5). +- Not started: PsyQ SDK names, 800B5CB8 split/union call, twins list. + +## Hypotheses rejected +- "lift_types covers the long tail": it sees only ov .c file-scope; 3680 remain outside canon. + +## Commands +- `.run/logs/`: t5census0, t5liftdry, t5c1r22c (coder), t5c2r22a/c/e/f, t5c2census2 (coder), t5verify. diff --git a/phase-ends/current/tasks/INDEX.md b/phase-ends/current/tasks/INDEX.md index f994e03921..d70406e444 100644 --- a/phase-ends/current/tasks/INDEX.md +++ b/phase-ends/current/tasks/INDEX.md @@ -4,3 +4,4 @@ T1 | done | phase-start health and baselines | - | tasks/T1.md | logs/T1.md | - T2 | done | --check-structs instrument and actor-struct fix | - | tasks/T2.md | logs/T2.md | - T3 | done | head-type layouts and canonical files | - | tasks/T3.md | logs/T3.md | - T4 | done | fold the head types fleet-wide (rung L) | - | tasks/T4.md | logs/T4.md | - +T5 | question | long tail: one definition per type (partial; question) | - | tasks/T5.md | logs/T5.md | - diff --git a/phase-ends/current/tasks/T5.md b/phase-ends/current/tasks/T5.md new file mode 100644 index 0000000000..6811372f1a --- /dev/null +++ b/phase-ends/current/tasks/T5.md @@ -0,0 +1,27 @@ +# T5 — long tail: one definition per type (partial; question) + +Status: question | expert: expert-opus55 | ctx-at-completion: n/a | commit: see COMMIT | coder runs: c1 opus55 done (907138d26), c2 opus55 done (bc9c5bebb, 81fc2be28, e5ba08739, 6f01332bc) +Done: 1308 types lifted to engine_types.h; pad_names 0; variants 0; dead 142→134 listed residuals; dup_classes 198 and outside_canon 3680 not reachable under the current gate definitions without violating the done-when's own "twins apart" clause. +Files: +- tools/lift_types.py — file-scope only; refuse struct defs declaring an object; skip common.h scalars; skip names in overlay-local .h +- src/shared/engine_types.h — lift block (1308), 72 pad renames, 314 dead defs removed, tag/typedef splits +- src/ov_*/*.c, src/md_*, src/800*.c (~690 files) — stripped identical copies; variant renames `_` +- docs/struct-map.md — regenerated +Decisions: +- binding: a divergent-layout local of a VARIANT name is renamed `_` (TU suffix); the canon/most-used layout keeps the name. +- A struct tag and a typedef of the same name with different layouts are split `N_tag`/`N_td` (census counts the two C namespaces as one name). +Deviations: +- Stopped before dup_classes/outside_canon/PsyQ/800B5CB8 work: gate definitions conflict with the done-when (see Findings). +Findings: +- Counts now: dup_classes=198 outside_canon=3680 dead=134 variants=0 pad_names=0 parse_error_decls=1106 controls=4/4 (from 205/5917/142/40/25). +- dup_classes has no evidence/allowlist input: opaque layout twins (tier 2) always count, so 0 means one name per layout, contrary to G62/S106 and the done-when's "left apart and listed". +- outside_canon counts every body incl. 1774 block-scope stack frames and fn-header/md/main bodies; lift_types reaches only ov file-scope. +- dead residual 134 (`.run/P38/t5/c2_residual.txt`): 114 used as member/alias by live canon defs (census ignores intra-canon uses), 12 invisible uses (D_*, macros), 6 single-char names (ident filter len>1, type_census.py:603), actor4c self-ref, Unkstruct_80126B58 (generated). +- lift exclusions (156) with cause: `.run/P38/t5/c1_excluded.txt`. +Gotchas: +- generalizable: a "dead name" metric that skips references inside the canonical header set flags every member-only type as dead; deleting them breaks the build. +- harness: commit_task.sh stages pending logs/ of other coder runs (T5.c1 log rode in bc9c5bebb). +- harness: `lift_types --candidates` output changed after c1; `.run/P38/t5_lift_all.txt` is stale. +Next task needs: plan decision on the gate (see RECOMMENDED); then PsyQ SDK names, 800B5CB8 split/union call (T4 kept units), twins list, block-scope/md/main relocation tool. +Verified: make clean && make extract-all JOBS=16 && make check-all JOBS=16 → extract-all 217 extracted 0 failed, check-all 218 passed 0 failed, rc 0 at 5bd5236ab (.run/logs/t5verify.log); census --check-structs FAIL dup_classes=198 outside_canon=3680 dead=134 variants=0 pad_names=0 (.run/logs/t5c2census2.log, same src tree) +Full log: phase-ends/current/logs/T5.md