T5.1.c8: struct_twins --write + census regen after F20T fold and tag+typedef counting

This commit is contained in:
Drew T
2026-09-30 17:11:29 -06:00
parent 594ea80c8d
commit febb2c009f
2 changed files with 9 additions and 16 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
# The struct map — the types the fleet's cast sites need (Phase 37 T1)
> **Generated by `tools/type_census.py` at `7a54682a25` (2026-09-30T22:44:05Z); never typed (R75).** Every raw pointer-cast dereference in `src/` was assigned to a base (a parameter, a local, a global by value or by address, an absolute address) and the bases were clustered by EVIDENCE only — the same global symbol, an argument passed to a callee's parameter, an assignment or return, a pointer field read, a shared body's fleet-wide identity — never by a similar offset signature. Each cluster is one type the tree needs. Names are placeholders (`Unkstruct_<addr>`: the lowest global instance's address, else the lowest member function's); fields are placeholders (`unk<HEX>`) until Phase 38 cites evidence.
> **Generated by `tools/type_census.py` at `594ea80c8d` (2026-09-30T23:11:17Z); never typed (R75).** Every raw pointer-cast dereference in `src/` was assigned to a base (a parameter, a local, a global by value or by address, an absolute address) and the bases were clustered by EVIDENCE only — the same global symbol, an argument passed to a callee's parameter, an assignment or return, a pointer field read, a shared body's fleet-wide identity — never by a similar offset signature. Each cluster is one type the tree needs. Names are placeholders (`Unkstruct_<addr>`: the lowest global instance's address, else the lowest member function's); fields are placeholders (`unk<HEX>`) until Phase 38 cites evidence.
**19124 types explain 498868 of 502988 dereference sites (99.2 %); 4120 sites have a base the census could not classify; 857 types carry a width conflict.** Merges by evidence: param 38876, assign 16781, arg 10825, field 9896, ret-of 4335, return 1524, assign& 1184, arg& 270.
+8 -15
View File
@@ -481,15 +481,6 @@ cause: 6 names (12 B, all members placeholders) bound to 11 distinct objects, no
- `Elm12`: 1 obj — 0x80064D49
- `Rsc12`: 1 obj — 0x80064D4A
### 6ef8724a7464
names: F20T, Obj20_80178D40, S801593E4, Sub_80155800_80155800, Sub_8015CD20
cause: 5 names (20 B, all members placeholders); 3 bound to no object (UNBOUND), used only by: type Actor_80178D40 (0x80126B58, ov_MAIN_012/0x80178D40:Cmd_80178D40, ov_MAIN_012/0x80178D40:arg0 …), type Ent_80155800_80155800 (shared/ov/0x80155800:arg0), type P10 (0x80126B58, shared/ov/0x80144B9C:p10); the other 2 bound to 3 distinct objects, none bound to two names: ov_MAIN_012/0x8015CD20:sp, ov_SC07_010/0x80181204:v1, shared/ov/0x801593E4:v1; full list: tools/struct_twins.py --show 6ef8724a7464
- `F20T`: 0 obj — used by type P10 (0x80126B58, shared/ov/0x80144B9C:p10)
- `Obj20_80178D40`: 0 obj — used by type Actor_80178D40 (0x80126B58, ov_MAIN_012/0x80178D40:Cmd_80178D40, ov_MAIN_012/0x80178D40:arg0 …)
- `S801593E4`: 2 obj — ov_SC07_010/0x80181204:v1, shared/ov/0x801593E4:v1
- `Sub_80155800_80155800`: 0 obj — used by type Ent_80155800_80155800 (shared/ov/0x80155800:arg0)
- `Sub_8015CD20`: 1 obj — ov_MAIN_012/0x8015CD20:sp
### 313fe9a920e0
names: A098Rec, Struct800D2E20, Struct800D2E6C, Struct800D3104
cause: 4 names (26 B, all members placeholders); 1 bound to no object (UNBOUND), used only by: type A098Ctx (0x8003A098(arg0)); the other 3 bound to 3 distinct objects, none bound to two names: 0x800D2E20(arg0), 0x800D2E6C(arg0), 0x800D3104(arg0); full list: tools/struct_twins.py --show 313fe9a920e0
@@ -498,6 +489,14 @@ cause: 4 names (26 B, all members placeholders); 1 bound to no object (UNBOUND),
- `Struct800D2E6C`: 1 obj — 0x800D2E6C(arg0)
- `Struct800D3104`: 1 obj — 0x800D3104(arg0)
### 6ef8724a7464
names: Obj20_80178D40, S801593E4, Sub_80155800_80155800, Sub_8015CD20
cause: 4 names (20 B, all members placeholders); 2 bound to no object (UNBOUND), used only by: type Actor_80178D40 (0x80126B58, ov_MAIN_012/0x80178D40:Cmd_80178D40, ov_MAIN_012/0x80178D40:arg0 …), type Ent_80155800_80155800 (shared/ov/0x80155800:arg0); the other 2 bound to 3 distinct objects, none bound to two names: ov_MAIN_012/0x8015CD20:sp, ov_SC07_010/0x80181204:v1, shared/ov/0x801593E4:v1; full list: tools/struct_twins.py --show 6ef8724a7464
- `Obj20_80178D40`: 0 obj — used by type Actor_80178D40 (0x80126B58, ov_MAIN_012/0x80178D40:Cmd_80178D40, ov_MAIN_012/0x80178D40:arg0 …), type F20T
- `S801593E4`: 2 obj — ov_SC07_010/0x80181204:v1, shared/ov/0x801593E4:v1
- `Sub_80155800_80155800`: 0 obj — used by type Ent_80155800_80155800 (shared/ov/0x80155800:arg0)
- `Sub_8015CD20`: 1 obj — ov_MAIN_012/0x8015CD20:sp
### 9865e09a793d
names: Blk3_8017D730, Blk3_801E40A8, Blk3_801E95E8, Blk3_801EF448
cause: 4 names (3 B, all members placeholders) bound to 8 distinct objects, none bound to two names: 0x80183F30, 0x801E26C0, 0x801E7C00, 0x801EDA60, md_SC03_135/0x801E40A8:arr, md_SC04_027/0x801E95E8:arr, md_SC05_026/0x801EF448:arr, ov_MAIN_012/0x8017D730:arr; full list: tools/struct_twins.py --show 9865e09a793d
@@ -673,12 +672,6 @@ cause: 2 names (56 B, all members placeholders) bound to 4 distinct objects, non
- `PRIM_8018FE20`: 2 obj — ov_SC04_011/0x8018FE20:pp, ov_SC04_011/0x8018FE20:prim
- `Prim_8017DAC4`: 2 obj — shared/ov/0x8017DAC4:prim, shared/ov/0x8017DAC4:q
### 9dec8574d64e
names: Actor4C, actor4c
cause: 2 names (428 B, all members placeholders); 1 bound to no object (UNBOUND), used only by: type Actor4C (0x80126748, 0x80126848, shared/ov/0x8015444C:arg0 …); the other 1 bound to 5 distinct objects, none bound to two names: 0x80126748, 0x80126848, shared/ov/0x8015444C:arg0, shared/ov/0x8015444C:op, shared/ov/0x8015444C:p; full list: tools/struct_twins.py --show 9dec8574d64e
- `Actor4C`: 5 obj — 0x80126748, 0x80126848, shared/ov/0x8015444C:arg0, shared/ov/0x8015444C:op, shared/ov/0x8015444C:p
- `actor4c`: 0 obj — used by type Actor4C (0x80126748, 0x80126848, shared/ov/0x8015444C:arg0 …)
### a3d1be6495e4
names: Rec027, Rec_8017C738
cause: 2 names (12 B, all members placeholders); 1 bound to no object (UNBOUND), used only by: type Blk027 (0x801D3148, 0x801D9F40, ov_SC02_027/0x8017BFEC:dst …); the other 1 bound to 4 distinct objects, none bound to two names: 0x801D3148, ov_SC02_027/0x8017C738:a0, ov_SC02_027/0x8017C738:p, ov_SC02_027/0x8017C738:q; full list: tools/struct_twins.py --show a3d1be6495e4