From eedd97c5c7fb0a2bec71d17d6ab8fea5d7ac734b Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Wed, 30 Sep 2026 17:13:35 -0600 Subject: [PATCH] T5.1.c8: log --- phase-ends/current/logs/T5.1.c8.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 phase-ends/current/logs/T5.1.c8.md diff --git a/phase-ends/current/logs/T5.1.c8.md b/phase-ends/current/logs/T5.1.c8.md new file mode 100644 index 0000000000..86c92f1df2 --- /dev/null +++ b/phase-ends/current/logs/T5.1.c8.md @@ -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.