mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-06 01:04:13 -04:00
3.1 KiB
3.1 KiB
T8 — pins and asm the unified types explain; residue ledger
Status: done | expert: expert-opus55 (attempt 2) | ctx-at-completion: n/a | commit: see COMMIT | coder runs: c1 opus55 done (71636b5fbd), c2 opus55 done (ef90e38e83), c3 opus55 done (21f3aee1b2), c4 opus55 done (822728ab44) Done: delever run over the T3-T7 bodies (gte-lever 434 -> 91, asm 1409 -> 1405, R22 218/218); every remaining pin/asm/gte-lever/per-TU asm def has a config/lever_residue.tsv row (2433 rows, 3528 sites); strict-with-residue gate rc 0 (reading A). progress: readability snapshot 'P3.39 T8: lever residue TSV (2433 rows, reading A)'; timeline and README regenerated in 822728ab44. Files:
- config/lever_residue.tsv — file, func, kind, pass, instrument, cause; 3.40's input
- tools/lever_census.py —
--write-residue, per-TU-def strict entries keyed by macro name, cause vocabulary (c1) - src//*.c, src/shared/ — delever removals; GTE re-consolidated to gte_inline.h calls (c2, c3)
- docs/ops/p39-t8-2026-10-02-lever-residue.md, docs/ops/INDEX.md — H7 note for
--write-residueand TSV shape - README.md, docs/progress.json, docs/readability*.{md,tsv}, docs/story-timeline.*, docs/struct-map.md — D1 Decisions:
- binding: per-TU asm macro definitions are ledgered as kind asm-macro rows, func = macro name, cause
asm-macro-def(<launder|instruction|barrier>); same-name defs in one TU share one row (157 rows for 164 defs). - Pins: 0 removed; all 1868 judged NEEDED by the oracle and carry causes. Deviations:
- Plan: R recipes with --propagate. Done: no propagate; recipe rows carry no after_text. Header recipe phase bounded at 6 of ~101 headers (~60 min).
- Plan: delever until drained. delever --plan never drains: md_MAIN_003_jr_800D1E18.c 4 REFUSED asm-data sites are redrawn each plan.
- c2's delever regressed 343 GTE statements to inline asm; c3 re-consolidated them and reverted 139 no-op brace-wrap banks.
- Reading B (literal --strict 0) not reached; reading A satisfies the done-when. Findings:
- Residue causes: head-class 1066, singleton 589, missing-parameter 548, asm-macro-def 157, gte-clobber-steer 60 (57 flagged [3.40-agent]), asm-body-routine 13 [3.40-agent].
singleton(<kind>)is the kind-qualified fallback (one-off site, no shared head class). Gotchas:- generalizable: delever removing a gte-lever's extra clobbers leaves raw inline GTE asm; re-run gte_consolidate (--rejudge) after any delever pass.
- generalizable: rung R recipes bank no-op brace wraps on bodies with no live sites; filter "0 pin(s) gone" banks.
- harness: readability_progress.py --snapshot needs a LABEL and reads the newest .run/P*/census; run
type_census.py --out-dir .run/P39/censusfirst. - harness: expert hook denies reading tools/*.sh source even when the script has only a usage line (delever_cycle.sh). Next task needs: 3.40 reads config/lever_residue.tsv; the [3.40-agent] rows (70) are agent-shaped; singleton rows have no shared lever to attack. Verified: PY tools/lever_census.py --check && PY tools/lever_census.py --check --strict --residue config/lever_residue.tsv → 0 UNMARKED; residue 3528, residue-unused 0, OK, rc 0 (.run/logs/t8_verify.log) Full log: phase-ends/current/logs/T8.md