mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-05 08:57:59 -04:00
7.3 KiB
7.3 KiB
T3 log — rung S sweep, overlays (P, X)
Timeline
- start: context loaded (card slice, plan sections, T3 entry, T1/T2 summaries).
restruct --status(.run/logs/t3_status.log): 173,459 rows, rung S 0.restruct --plan --rung S(.run/logs/t3_planS.log): 50 of 2157 drawable files · 3929 bodies · 5642 typed bases · 35087 sites; skipped bases type-not-canonical 87,074; plan includes md_* → sweep needs an ov_* filter.- retriever-code (inline, no report): rung S mechanics. Unit = file; plan_S :3119 from CENSUS/body_base_type.json; S1 MEMBERS / S2 greedy_kept :753 / KEPT-ALL / REFUSED; site verdict
KEPT(<body hint>)(one hint per body, :1117-1122); kept sites are left raw (no respell); no-field skips never add fields;--applyallow_local=False; no code writes macro spellings. - restruct_cycle.sh read: per batch calibrate-if-stale → apply -j 12 → R22 → census → commit; S body ≈ 2 s.
- T3.c1 briefed (opus55): per-site class, KEPT() / RESIDUAL(), CAST_* respell of kept P sites,
--onlyglob, calibrate, exemplar ov_SC05_010_jr_80180F84.c. - T3.c1 done (3ff15ee462, 3507628e40, fe2e814776): selftest 85/85, --real 90/90, exemplar apply 1/1 IDENTICAL 25.5 s, R22 218/218, check-casts macros CAST_ALIAS=3 CAST_SIGN=10 CAST_WIDTH=6 unbacked 0. Deviation (coder): BACKED_S_VERDICTS += MEMBERS, S+A; new body verdict KEPT. Exemplar +0x34 store = RESIDUAL(TYPE-NOT-CANONICAL) in real apply (KEPT(SCHED-ALIAS) only under try-file local types).
- cycle batch 1 (
LABEL_PREFIX=t3_ TASK=T3 restruct_cycle.sh 1 1 50 S "ov_*", log .run/P39/restruct/cycle_t3_a.log): 08b5b03dd0, 50 files/2088 drawable, 3803 bodies, 24546 members / 2835 kept / 9346 skipped, 1707 s apply, R22 218/218 112 s. Batch kept at 50 files though > 10 min: detached (R115), heaviest first; deviation. - cycle 2..60 launched (.run/P39/restruct/cycle_t3_b.log).
- retriever-code (inline): --write-types is preview-only; canonical = struct defined in engine_types.h / struct_types.h; no-field = no leaf at exact off; head_types.py regenerates only its marked region; no tool adds fields to hand-authored structs.
- cycle 2..60 (cycle_t3_b.log): t3_S2..S5 green (R22 218/218 each, last 69f9da8c0f); members 12384/7786/7878/6694; then t3_S6
0 of 0 drawable … type-not-canonical 103469→ cycle exit 0 "nothing drawable". Drawable count never fell (2088→2089). Probe: current body_base_type.json 109,359 bases, top type Unkstruct_800D3888 (absent from canonical headers). Hypothesis: census rerun renames struct-map types as sites become members; plan reads drifting map; plan also re-draws finished files. - T3.c2 briefed: confirm, pin base→type (pre-sweep .run/P39/census/body_base_type.json), exclude finished files.
- T3.c2 done (d476f3c92e): cause confirmed (pinned 31,408/116,484 ov bases canonical vs current 0/103,469; ov_MAIN_012 func_8012E9C0 param_1 800B5CB8 → 800D3888);
--bbt/RESTRUCT_BBT pin + s_finished; plan 1901 drawable. - cycle 6..60 with pin (cycle_t3_c.log): t3_S6..S14, S16..S18 drew ~350 bodies each but 0 sites (written 7-9 files each); only t3_S15 real (5136 members, 37 kept, 1774 skipped). All R22 green. Stopped (TERM after INT ignored by bash during R22);
restruct --restoredropped t3_S19 (8 files, 310 rows); HEAD 2f4594dce3. - Hypothesis: apply path reads unpinned map; s_finished marks zero-site files done. T3.c3 briefed.
- T3.c3 done (568de6c713, 357451cbb9, e88040d15a): real cause = s_body_edits checked the drifting live struct_map before the canonical branch → every pinned base NO-TYPE-IN-MAP (t3_S6: 340 rows NO-SITE 332 / KEPT 8); written files in zero-site batches = MISALIGNED/NON-STRUCT respells. Fix: apply uses pin;
s_judged(≥1 CANONICAL/LOCAL base) gates s_finished and ledger_index. Probe ov_MAIN_012_jr_801549F8.c IDENTICAL members 1. Plan 1872 drawable. check-casts unbacked 96 (t3_S1..S10) → T3.c4 briefed. - T3.c4 done (0938e511ed, f1cae27da2, a83e31047f, ffc0d3ecc1): unbacked 96 = 60 alias-def params read as locals (restruct params_of fallback added) + 23 superseded by a later row (S_PRIOR carry of macro rows) + 13 nested-base respelling drift; 31 bodies re-walked (label t3c4_rejudge, 0 written). check-casts macros ALIAS 555 SIGN 5238 WIDTH 3966 MISALIGNED 258 NONSTRUCT 208, unbacked 0. R22 218/218. Open: a REFUSED/COMBINATION-FAILED row on a macro-holding body would unback it.
- cycle_t3_d: t3_S19..S49 green (R22 218/218 each), stopped after S49 commit 4f9445c6fa (648 drawable) to raise BATCH 50→200 (per-batch overhead ~20 min vs apply 1-2 min); interrupted snapshot is redone by the next cycle's calibrate step.
- cycle_t3_e (BATCH 200): t3_S50..S54 real (members 12305/5999/1456/1020/27), all R22 218/218; S55..S61 looped on 6 files (plan drawable, apply UNCHANGED rows 0: ov_SC02_000_jr_80187B40, ov_SC02_011_jr_80183178, ov_SC03_029_jr_8017FF7C, ov_SC04_002_jr_8017BEBC, ov_SC04_011_jr_8017D494, ov_SC03_006_jr_8017AE2C; plan/apply done-set disagreement, incl. c4 bases=[] rows). Killed by pid; src clean, HEAD b0951592bd.
- ledger scan (.run/T3/resid.py, pre-S50): 26,062 ov bodies with S rows; sites MEMBER 109,508 · RESIDUAL TYPE-NOT-CANONICAL 33,369 · KEPT WIDTH 17,925 / SIGN 9,740 / SCHED-ALIAS 1,127 / MISALIGNED 445 / NON-STRUCT 428 · RESIDUAL NO-FIELD 2,336 (site type None) / NO-TYPE-IN-MAP 632 / AGGREGATE-FIELD 410 / INDEX 341.
Attempt 3 (respawn after handoff 2; progress archived logs/T3.progress2.md, 01cb47ebe1)
- c6 cycle t3_S61 still live at start (pgrep
^bash tools/restruct_cycl[e].sh); woke on exit viatail --pid. S61 committed b6db95c62e: 141 files · 168 bodies · 529 sites → members · R22 218/218. - c6 hand-back was lost with attempt 2; header + head_types.py left uncommitted. Verified header =
head_types.py --add-pads .run/t3c6/candidates.jsonapplied to HEAD copy (.run/T3/st_head.h, cmp identical); selftest OK; committed 45cb633d08 (17 fields). Coder later added its log d3cb6dff35 (NO-FIELD 2455 → 1912; unbacked 2 pre-existing). - Coverage scan .run/T3/cover.py (log .run/logs/t3_cover.log): 34,131 ov bodies / 200,598 P/X sites with no S row (plan_S :3380 skips bodies whose bases are all non-canonical / invisible).
- Coder T3.c7 (brief:
--residueledger-only rows +--check-residue), f810278227: 34,131 rows (t3_resid); site causes TYPE-NOT-CANONICAL 197,600 · NO-TYPE-IN-MAP 2,349 · NO-EDIT 482 · FILE-SCOPE 167. Re-checked:--check-residueuncovered 0;--check-ledger0 violations. - check-casts (log t3_checkcasts) showed
unbacked 2(func_8017EA20, S28 respelled the nested base under a T2-era CAST_NONSTRUCT). Coder T3.c8, ffecb36e29:s_base_normcarry + repair row t3c8_repair. Re-checked (t3_checkcasts2): unbacked 0. - Gate t3_verify_gate: check-structs FAIL twins_stale=1. Cause: Unkstruct_80126B58 listed under
docs/struct-twins.md ## Dead keptbut now live in 1,633 .c files. Triedstruct_twins.py --writeafter make clean: rebinds fewer objects (118 vs 124); reverted. Removed the Dead-kept bullet (4bcaae8b11); check-structs OK. - Gate t3_verify_gate2: check-structs OK · extract-all 217/217 (+ main) · check-all 218/218.
- Final ov counts (.run/T3/ovpx.py, P39 T1 census vs P37 census now): P 387,001 → 238,399; X 13,441 → 13,431; K (kept macros) 0 → 20,390; C 35,414 → 169,472. Repo check-casts: P 408,974 → 260,372, X 13,800 → 13,790, I 60,666 → 51,514, M 19,542 → 15,130.
- H7: docs/ops/p39-t3-2026-10-02-restruct-rung-s-residue-head-types-add-pads.md + INDEX line.