T5.1.c8: log

This commit is contained in:
Drew T
2026-09-30 17:13:35 -06:00
parent febb2c009f
commit eedd97c5c7
+20
View File
@@ -0,0 +1,20 @@
# T5.1.c8 — tag+typedef one type in class formation; fold F20T onto Obj20_80178D40
## Changes
- tools/type_census.py: new `n_types(defs)` (union-find: a def's tag + typedef names = one type; shared names across defs join). Class formation gates on `n_types` instead of `len(names)`: whole class, each meaningful camp, the opaque camp. Row names/dup_full_names unchanged (still list tag + typedef). +1 selftest `tag+typedef one type` → 33/33.
- Classes changed (diff of dup_layout_classes, .run/P38/c8/diffcls.py, base .run/P38/c8base vs .run/P38/c8a): only `9dec8574d64e {Actor4C, actor4c}` gone. 54 → 53.
- Fold 6ef8724a7464#0 {F20T, Obj20_80178D40}: `lift_types.py --fold .run/P38/c8/fold.tsv --fold-class '6ef8724a7464#0' --fold-canon Obj20_80178D40 --apply` (log c8lift1). Canon def moved to include/struct_types.h:2739 (where F20T sat), `typedef Obj20_80178D40 F20T;` alias; def removed from src/shared/engine_types.h:747; 3 `p10->f20->f12` → `->unk12` in src/shared/ov/func_80144B9C.h (cc1 round 2: 0 errors) + doc comment line 29 respelled by hand to match.
- docs/struct-twins.md regenerated (`struct_twins.py --write`, c8tw1): 53 rows · SEPARATE 44 · SHARED 0 · UNBOUND 9. 9dec8574d64e section gone; 6ef8724a7464 now {Obj20_80178D40, S801593E4, Sub_80155800_80155800, Sub_8015CD20}, no F20T. docs/struct-map.md regenerated by census.
## Verified
- `.venv/bin/python tools/type_census.py --selftest` → 33/33 OK
- R22 after fold (c8r22a, pre-commit 594ea80c8d tree): extract-all 217/217, check-all 218/218, rc 0
- census c8cen3 (.run/P38/census): dup_classes=0 outside_canon=0 dead=0 twins_stale=0 variants=0 pad_names=0 parse_error_decls=1106 controls=4/4; twins_listed=53 dead_kept=3
- `restruct.py --audit-types` → 0 violations (c8aud)
- R22 on final HEAD febb2c009f (c8r22b): 217/217, 218/218, rc 0
## Notes for the expert
- R22 did not refuse the fold.
- `actor4c` still in `## Dead kept` (not stale: dead_kept=3).
- 6ef8724a7464 cause no longer cites P10 (P10 now spells the member through alias F20T); the Actor_80178D40 0x80126B58 cite remains.
- harness: chaining census (rc 1 on parse_error_decls) `&&` struct_twins inside one call ran past 285 s and went background; run them as two calls.