Files
BFM-decomp/phase-ends/current/logs/T4.md
T
2026-09-29 23:24:25 -06:00

4.0 KiB
Raw Blame History

T4 log — fold the head types fleet-wide (rung L)

expert: expert-opus55 · 2026-09-29

Timeline

  • Start: HEAD f75e99c83. Baseline --check-structs (.run/logs/t4_census0.log): dup_classes=206 outside_canon=6075 dead=143 variants=40 pad_names=26 parse_error_decls=1106 controls 4/4; head names in no dup class / camp (layouts unique by construction).
  • restruct --plan --rung L --only Unkstruct_* → "0 of 0 files" (.run/logs/t4_planL.log). Retriever-code (no report): rung L folds only EXACT layout-hash twins of canonical defs (tier 1/2), file scope only, .c only; --only matches file paths only; uses keep local name via typedef Canon Local;; renames were textual.
  • Scratch scan .run/P38/t4/defs.py → headsized.json: 0x10C 194 local defs / 17 layouts (131 block-scope Ent in func_8014D820 copies, 29 in engine_types.h, 2 shared/ov/func_8014D820__.h), 0x98 21 (md_MAIN_011 six = player block; Blk152 = struct-copy blob 800_b.c:311; Fr_* = stack frame), 0x24C 0 local. None hash-equal to the canonical → rung L as-is yields 0.
  • Decision: head-fold mode keyed by canonical name + size, exclusions with cause, judge decides width/sign mismatches.
  • c1 (d87c35435): head-fold mode, 70/70 selftest, probe t38_4probe 4 FOLDED, R22 green.
  • Cycle t38_4L1: launched twice by mistake (setsid launch with 0-byte log looked dead; relaunched via run.sh --bg) → two concurrent --apply t38_4L1; 5 TOOL-ERROR JSONDecodeError on inflight.json; 3 files edited-unjudged → reverted by hand (git checkout); R22 on the rest green (.run/logs/t4r22_L1.log) → committed 418a0a294; stale inflight.json moved to .run/P38/t4/inflight_L1.json.
  • Player block pad44[3] → u8 unk44..46 (md_MAIN_011 locals' widths), include/struct_types.h, R22 green (.run/logs/t4r22_pad44.log) → 1bf438607.
  • c2 (5ae5fe94c): atomic+flocked inflight, apply.lock, TOOL-ERROR restores, hf_settled unsettles on same-label file TOOL-ERROR; cycle commits ledger with add -f; 75/75.
  • Cycle t38_4L2/L3 (REDRAW FOLD-REFUSED:no canonical field): ea4ab8089 (6 folded, R22 green), 4cae59454 (0 written).
  • Header cycle t38_4HL1 (HEADERS=1, 29 defs, 1679 s): 3 folded / 26 refused, R22 green → 7fd9f2cd8. 5 COMPILE-ERROR from sibling per-function headers / a macro body.
  • c3 (61c49eda0): renames reach sibling .h in the includers' include closure and #define bodies; 76/76.
  • Redraw t38_4RL1 (.c COMPILE-ERROR, 0 folded) 0e8b2a60b; t38_4HRL1 (headers, 5 defs): 3 folded / 2 refused, R22 green → a21682ae7.
  • Final status (.run/P38/t4/status_final.txt): 200 units, FOLDED 162 onto Unkstruct_800B5CB8, FOLD-REFUSED 38.
  • Verify (.run/logs/t4verify.log): check-structs FAIL overall (dup_classes=205 outside_canon=5917 dead=142 variants=40 pad_names=25 parse_error_decls=1106) with 0 head names in dup classes/twins/variants; check-ledger 0 violations; extract-all 217/0; check-all 218/0; rc 0.

Kept units (FOLD-REFUSED, cause)

  • DIFFERS (29): md_MAIN_011 six player-block copies (Gs_80078E78, Gs_80078E78_init, S, S1254, S2BC4, St78); ov_SC03_094 Ent_8017D898; ov_SC03_102_after Ent@func_8014D820; engine_types.h Ent_801202A0 and the Ent_8017FD58 family (20).
  • indexed array spans canonical fields (4): Cnt_8018E8A0 ×3 (f[0x10C]), engine_types.h Actor_80178D40 unkDC[7].
  • canonical pad at 0x3C (3): Ent_8018D654 ×2, Ent_8018D3A4 (generated max-site-split block; not hand-editable).
  • COMPILE-ERROR (2): ov_SC06_029_jr_8017C954 Obj8017EBC4 (:4027 invalid ->), engine_types.h Obj1CDC (ov_SC05_010_jr_80181CDC.c:2873 invalid ->).
  • Excluded by cause: Blk152* (13 defs), Fr_* (2 defs).

Hypotheses rejected

  • "rung L already folds heads": refuted, exact-hash only (plan 0 files).
  • "all 0x98 defs are the player block": refuted, Blk152 copy blob, Fr_ stack frame.

Coder briefs

  • T4.c1 head-fold mode; T4.c2 inflight race/tool-error restore/cycle ledger; T4.c3 sibling-header + macro renames. Logs logs/T4.c{1,2,3}.md.

Retriever questions

  • retriever-code: rung L mechanics, --only, cycle env, census def enumeration → inline answer, no report id.