Files
BFM-decomp/phase-ends/current/logs/T2.md
T

1.7 KiB

T2 log — --check-structs instrument and actor-struct fix

  • Start: read card slice, plan Context/Interfaces/Cookbook/Research, T2 entry, tasks/T1.md, docs/actor-struct.md.
  • Hook denied a sed read of tools/restruct.py source (expert learns tools from --help); design delegated whole to coder.
  • Coder brief T2.c1 (opus55): add --check-structs (gating dup_classes, outside_canon, dead, variants, pad_names via restruct's own audit, parse_error_decls via restruct's latest-verdict function, controls); non-gating conflicting_types/tu_conflict/types_floor_lying; CANON_HEADERS single source; ≥2 selftests; actor-struct +0x108/+0x10C s16→s32; --check unchanged.
  • T2.c1 returned done, commit 3ac7abee7: restruct gains ledger_latest (one latest-row function; ledger_index, settled-set and apply_batch --redraw use it) and audit_type_violations; type_census --check-structs + 3 selftests (24/24); restruct selftest 54/54; --check line identical before/after; control list was hard-coded (not doc-parsed) so D_80078F08/F0C moved into PLAYER_BLOCK at width 4, doc_disputed=0; audit-types 26 violations all pad-name kind.
  • Verify (run.sh t2verify, .run/logs/t2verify.log): selftest OK; --check-structs FAIL dup_classes=206 outside_canon=6076 dead=141 variants=40 pad_names=26 parse_error_decls=1106 controls=4/4; doc_disputed=0; non-gating conflicting_types=160 tu_conflict=0 types_floor_lying=1796; rc=1.
  • Known-true vs T1 baseline: 206/6,076 (4,085+1,904+63+24)/141/40/26/4-4 all equal. parse_error_decls 1,106 latest-row (1,107 all-rows); P37's 1,120 was a pre-latest-row figure, T1 recorded none.
  • docs/struct-map.md regenerated by the verify census (stamp line) committed with the task.
  • Retrievers: none. Report ids: none.