mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-04 00:20:10 -04:00
phase-end: Phase 3.39 archived
This commit is contained in:
Binary file not shown.
+2
-1
@@ -12,7 +12,7 @@ Numbering: this is the project's Gen3 continued (Gen1 = P1-7, Gen2 = P8-34, Gen3
|
||||
Order = build order. `depends:` names phase ids or `—`. Only plan_edit.py gen-close|gen-open flips `status:`. -->
|
||||
|
||||
- 3.38 Struct unification | milestone: `make tools-health` OK and `make kit-corpus` clean at phase start; `PY tools/type_census.py --check` → 0 duplicate defs, 0 dead names, controls 4/4 (from 7,255 defs / 206 dup classes / 40 variant camps / 26 `pad<SIZE>` names); 0 parse-error decls in the census; R22 218/218 | scope: old Phase 38 (legacy P37 carry T5) — owed tools-health + kit-corpus, R22 baseline, `delever_oracle --snapshot-baseline` + `--calibrate ov_SC04_011 ov_SC03_015 md_SC07_004 main -j 16` before the first batch; unify head types first (`Unkstruct_80126B58` entity, `Unkstruct_80078E00` player block, `Unkstruct_800B5CB8`), union-vs-split per offset decided by the expert at `effort: high`; then the long tail via `tools/lift_types.py`; the 1,537 types-floor lying decls, 417 conflicting types, 45 TU-CONFLICT rows; owed fixes `docs/actor-struct.md` and the 13 syntax-error units in `src/800.c` | depends: — | status: closed | phase-end: phase-ends/PhaseEnd_Phase3.38.md
|
||||
- 3.39 Casts to declared data | milestone: 0 raw address casts in the 4 census forms (reinterpret macros counted apart, each with its instrument); `PY tools/lever_census.py --check --strict` 0 (from 3,730); lying-decl census 0 outside ledgered exceptions; R22 218/218 | scope: legacy T6 — the 503,016 cast sites become member accesses / declared symbols, kept casts only where the gate proves the spelling moves bytes (cookbook §458, per-site minimal kept-cast set); GTE `_m` variants and direct GTE statements to one spelling; the surviving pins that the unified types now explain; body and declaration rewrites are expected, the object bytes are the gate; header edits batched (one header edit re-fans ~3,900 objects, ~6 min) | depends: 3.38 | status: open | phase-end: phase-ends/PhaseEnd_Phase3.39.md
|
||||
- 3.39 Casts to declared data | milestone: 0 raw address casts in the 4 census forms (reinterpret macros counted apart, each with its instrument); `PY tools/lever_census.py --check --strict` 0 (from 3,730); lying-decl census 0 outside ledgered exceptions; R22 218/218 | scope: legacy T6 — the 503,016 cast sites become member accesses / declared symbols, kept casts only where the gate proves the spelling moves bytes (cookbook §458, per-site minimal kept-cast set); GTE `_m` variants and direct GTE statements to one spelling; the surviving pins that the unified types now explain; body and declaration rewrites are expected, the object bytes are the gate; header edits batched (one header edit re-fans ~3,900 objects, ~6 min) | depends: 3.38 | status: closed | phase-end: phase-ends/PhaseEnd_Phase3.39.md
|
||||
- 3.40 Residue lane (toggleable) | milestone: every residue item from 3.39's ledger either off at the gate or marked with its pass, instrument and cause; `lever_census --check` 0 UNMARKED; R22 218/218 | scope: legacy T7 — the func_801A1E94/func_801A5C44 pair, same-address copies of 5 functions, 5 return-type lies, func_8016BF50, and whatever 3.39 ledgers as agent-shaped; developer decision: whether it runs and at what agent cap is decided when 3.39's ledger is known (no cap set now); skipped (closed as not-run) if declined | depends: 3.39 | status: open | phase-end: phase-ends/PhaseEnd_Phase3.40.md
|
||||
- 3.41 Types validated and mirrored | milestone: `type_census --check` wired into `make tools-health` and green; `attribution_check` folded into `lever_census`; canonical types authored into the Ghidra database from text and `tools/ghidra_rebuild.sh --proof` PASS; `PY tools/doc_links.py --strict` 0/0; clean-tree R22 218/218 | scope: legacy T8+T9 — the gates that keep 3.38-3.40 from regressing, the Ghidra mirror, the record (cookbook, wiki chapter, §396(a) correction, kit corpus regenerated) | depends: 3.38, 3.39 | status: open | phase-end: phase-ends/PhaseEnd_Phase3.41.md
|
||||
- 3.42 Rename harness and shared-function form | milestone: a rename scanner (R32) asserts every reference to a renamed symbol rewritten, proven on one known rename and one planted miss; 3,801 cross-address classes in the parameterized `SHARED_FN` form (0 left) and the 20 trampoline families shared; a leverage ranking of data symbols and functions (xrefs, struct ownership, shared-body fan-out) written with its denominator; R22 218/218; ghidra `--proof` PASS | scope: the byte-neutral naming machinery before any name — symbol-file renames mirrored through `tools/ghidra_apply_symbols.sh`, the S1 one-source-per-function gate kept at 0 violations | depends: 3.41 | status: open | phase-end: phase-ends/PhaseEnd_Phase3.42.md
|
||||
@@ -49,3 +49,4 @@ Numbering: this is the project's Gen3 continued (Gen1 = P1-7, Gen2 = P8-34, Gen3
|
||||
|
||||
<!-- - <date> planner|developer: <what> — <why> -->
|
||||
- 2026-09-30 router: phase 3.38 status -> closed
|
||||
- 2026-10-02 router: phase 3.39 status -> closed
|
||||
|
||||
+6
-3
@@ -53,10 +53,13 @@ ops-setup-decomp.md | extract the medium and verify against the committed manife
|
||||
wsl-disk-capped-75gb.md | wsl-disk-capped-75gb | 34
|
||||
p38-t4-2026-09-29-restruct-head-fold-mode.md | §P38 T4 — 2026-09-29: restruct rung L head-fold mode | 9
|
||||
p39-t1-2026-10-01-restruct-stale-supersede-timeline-check.md | §P39 T1 — 2026-10-01: restruct stale-row supersede; timeline --check | 5
|
||||
p39-t3-2026-10-02-restruct-rung-s-residue-head-types-add-pads.md | §P39 T3 — 2026-10-02: restruct rung S residue/check-residue; head_types --add-pads | 6
|
||||
p39-t3-2026-10-02-restruct-rung-s-residue-head-types-add-pads.md | §P39 T3 — 2026-10-02: restruct rung S residue/check-residue; head_types --add-pads | 8
|
||||
p39-t4-2026-10-02-restruct-only-main.md | §P39 T4 — 2026-10-02: restruct --only main | 5
|
||||
p39-t10-2026-10-02-check-casts-residue.md | §P39 T10 — 2026-10-02: type_census --check-casts --residue; restruct --forms per-site residue | 5
|
||||
p39-t5-2026-10-02-restruct-im-recipes.md | §P39 T5 — 2026-10-02: restruct rung S --forms I,M recipe ladder; residue GADDR | 6
|
||||
p39-t10-2026-10-02-check-casts-residue.md | §P39 T10 — 2026-10-02: type_census --check-casts --residue; restruct --forms per-site residue | 7
|
||||
p39-t5-2026-10-02-restruct-im-recipes.md | §P39 T5 — 2026-10-02: restruct rung S --forms I,M recipe ladder; residue GADDR | 9
|
||||
p39-t6-2026-10-02-restruct-rung-d-callers.md | §P39 T6 — 2026-10-02: restruct rung D caller-only units, alias defs, shared-header scope | 6
|
||||
p39-t71-2026-10-02-gte-one-spelling.md | §P39 T7.1 — 2026-10-02: GTE to one spelling | 5
|
||||
p39-t8-2026-10-02-lever-residue.md | §P39 T8 — 2026-10-02: lever_census --write-residue; config/lever_residue.tsv | 2
|
||||
| p39-t6-2026-10-02-restruct-rung-d-callers.md | §P39 T6 — 2026-10-02: restruct rung D caller-only units, alias defs, shared-header def scope | 4
|
||||
| p39-t71-2026-10-02-gte-one-spelling.md | §P39 T7.1 — 2026-10-02: lever_census strict via-header filter; gte_consolidate header variants, --keep-levers | 4
|
||||
| p39-t8-2026-10-02-lever-residue.md | §P39 T8 — 2026-10-02: lever_census --write-residue; config/lever_residue.tsv columns and cause vocabulary | 2
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
# Discussions -- cumulative
|
||||
# phase | id | topic | date | status | path
|
||||
3.38 | D1 | - | 2026-09-29 | executed | phase-ends/current/phase-3.38/discussions/D1.md
|
||||
3.39 | I1 | Phase 3.39 first task: regenerate the timeline and README after the 3.38 close (tools/timeline.py; tools/progress.py --r | 2026-10-01 | planned:3.39/T1 | phase-ends/current/phase-3.39/discussions/inbox-20261001-101339.md
|
||||
3.39 | D1 | README debt chart tracking and P3.39 progress; keeping the developer in the loop | 2026-10-02 | executed | phase-ends/current/phase-3.39/discussions/D1.md
|
||||
|
||||
@@ -3,3 +3,4 @@
|
||||
3.38 | R3.38-001 | remaining work after P37 close (T5-T10, P35/P36 end-state, Gen3 roadmap, constraints, open decisions) | What remains after Phase 37; shape of next generation | phase37, phase38, structs, gen3, roadmap, constraints | retriever-digest | 2026-09-29 | 35 lines | phase-3.38/research/R3.38-001.md
|
||||
3.38 | R3.38-002 | dup-class tiers, dead_canon_names, outside_canon, check-structs, selftest, lift_types scope | type_census / lift_types mechanics | type_census, lift_types, tier, dead_canon, check-structs | retriever-code | 2026-09-30 | 31 lines | phase-3.38/research/R3.38-002.md
|
||||
3.38 | R3.38-003 | terse chronological digest of T5.1 coder logs for writing logs/T5.1.md and tasks/T5.1.md | T5.1 coder-log digest (c1..c8) | T5.1, bfm-decomp, type_census, lift_types, struct_twins | retriever-digest | 2026-09-30 | 41 lines | phase-3.38/research/R3.38-003.md
|
||||
3.39 | R3.39-001 | find instruments for phase 3.39 | P39 cast/lever/lying-decl instruments | type_census, lever_census, argcheck, gte_inline | retriever-code | 2026-10-01 | 21 lines | phase-3.39/research/R3.39-001.md
|
||||
|
||||
@@ -11,3 +11,15 @@
|
||||
3.38 | T8 | done | docs/formats.md: LIST.CD verified on US, runtime reader, repack note, LZSS ring + terminator rules | - | phase-3.38/tasks/T8.md | phase-3.38/logs/T8.md | -
|
||||
3.38 | T9 | review | story §10 + retrospective §7 for P37 T5-close, PA3 migration and P38 | - | phase-3.38/tasks/T9.md | phase-3.38/logs/T9.md | -
|
||||
3.38 | T10 | done | publish the P38 type census in README and timeline | - | phase-3.38/tasks/T10.md | phase-3.38/logs/T10.md | -
|
||||
3.39 | T1 | done | phase-start health, carry cleanup and baselines | - | phase-3.39/tasks/T1.md | phase-3.39/logs/T1.md | R3.39-001
|
||||
3.39 | T2 | done | cast and lying gate instruments, reinterpret-macro set | - | phase-3.39/tasks/T2.md | phase-3.39/logs/T2.md | -
|
||||
3.39 | T3 | done | rung S sweep, overlays (forms P and X) | - | phase-3.39/tasks/T3.md | phase-3.39/logs/T3.md | -
|
||||
3.39 | T4 | blocked | rung S sweep, md_*, main and shared bodies (forms P and X) | - | phase-3.39/tasks/T4.md | phase-3.39/logs/T4.md | -
|
||||
3.39 | T10 | done | residue coverage gate (--check-casts --residue) and 3.40 sizing | - | phase-3.39/tasks/T10.md | phase-3.39/logs/T10.md | -
|
||||
3.39 | T5 | done | globals and absolute addresses to declared symbols (forms I and M, residual non-struct bases) | - | phase-3.39/tasks/T5.md | phase-3.39/logs/T5.md | -
|
||||
3.39 | T11 | done | progress snapshot and chart catch-up | - | phase-3.39/tasks/T11.md | phase-3.39/logs/T11.md | -
|
||||
3.39 | T6 | done | lying declarations to 0 outside the ledger | - | phase-3.39/tasks/T6.md | phase-3.39/logs/T6.md | -
|
||||
3.39 | T7.1 | done | GTE to one spelling (predicate read as the census documents it) | - | phase-3.39/tasks/T7.1.md | phase-3.39/logs/T7.1.md | -
|
||||
3.39 | T8 | done | pins and asm the unified types explain; residue ledger | - | phase-3.39/tasks/T8.md | phase-3.39/logs/T8.md | -
|
||||
3.39 | T9 | done | milestone gate and record (Phase 3.39, the cast campaign, reading A) | - | phase-3.39/tasks/T9.md | phase-3.39/logs/T9.md | -
|
||||
3.39 | T12 | done | phase-close docs: README graphs, story and hindsight lessons, wiki (Phase 3.39) | - | phase-3.39/tasks/T12.md | phase-3.39/logs/T12.md | -
|
||||
|
||||
@@ -1,4 +1,2 @@
|
||||
# Discussions -- one line per record
|
||||
# id | topic | date | status | path
|
||||
I1 | Phase 3.39 first task: regenerate the timeline and README after the 3.38 close (tools/timeline.py; tools/progress.py --r | 2026-10-01 | planned:3.39/T1 | phase-ends/current/discussions/inbox-20261001-101339.md
|
||||
D1 | README debt chart tracking and P3.39 progress; keeping the developer in the loop | 2026-10-02 | executed | phase-ends/current/discussions/D1.md
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
# Research reports -- this phase
|
||||
# id | task | title | tags | agent | date | lines
|
||||
R3.39-001 | find instruments for phase 3.39 | P39 cast/lever/lying-decl instruments | type_census, lever_census, argcheck, gte_inline | retriever-code | 2026-10-01 | 21 lines
|
||||
|
||||
@@ -1,14 +1,2 @@
|
||||
# Task summaries -- this phase
|
||||
# id | status | title | tags | summary | log | research
|
||||
T1 | done | phase-start health, carry cleanup and baselines | - | tasks/T1.md | logs/T1.md | R3.39-001
|
||||
T2 | done | cast and lying gate instruments, reinterpret-macro set | - | tasks/T2.md | logs/T2.md | -
|
||||
T3 | done | rung S sweep, overlays (forms P and X) | - | tasks/T3.md | logs/T3.md | -
|
||||
T4 | blocked | rung S sweep, md_*, main and shared bodies (forms P and X) | - | tasks/T4.md | logs/T4.md | -
|
||||
T10 | done | residue coverage gate (--check-casts --residue) and 3.40 sizing | - | tasks/T10.md | logs/T10.md | -
|
||||
T5 | done | globals and absolute addresses to declared symbols (forms I and M, residual non-struct bases) | - | tasks/T5.md | logs/T5.md | -
|
||||
T11 | done | progress snapshot and chart catch-up | - | tasks/T11.md | logs/T11.md | -
|
||||
T6 | done | lying declarations to 0 outside the ledger | - | tasks/T6.md | logs/T6.md | -
|
||||
T7.1 | done | GTE to one spelling (predicate read as the census documents it) | - | tasks/T7.1.md | logs/T7.1.md | -
|
||||
T8 | done | pins and asm the unified types explain; residue ledger | - | tasks/T8.md | logs/T8.md | -
|
||||
T9 | done | milestone gate and record (Phase 3.39, the cast campaign, reading A) | - | tasks/T9.md | logs/T9.md | -
|
||||
T12 | done | phase-close docs: README graphs, story and hindsight lessons, wiki (Phase 3.39) | - | tasks/T12.md | logs/T12.md | -
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
# INBOX
|
||||
|
||||
<!-- The developer writes here whenever they want; nobody asks them to. Freeform bullets.
|
||||
The router consumes it at the top of every loop (`tools/status.py inbox-consume`),
|
||||
which prints the contents, archives them to discussions/inbox-<ts>.md and empties
|
||||
this file. Items that change the plan become plan_edit.py edits with a Changes line;
|
||||
items that change a standing fact go to HOW_WE_WORK.md.
|
||||
Routing: each bullet becomes an I<n> row in discussions/INDEX.md, deferred:<P> or now.
|
||||
First match wins: `-> 3.12` / `-> Gen 4`; `Gen N` beyond this generation; a later
|
||||
plan phase id (`3.11 ...`); the word `later` (next open phase); else now. The current
|
||||
or an earlier phase, or an id not in GENERATION_PLAN.md, routes now. -->
|
||||
|
||||
- <note, correction, priority change, or question>
|
||||
@@ -0,0 +1,20 @@
|
||||
# D1 — README debt chart tracking and P3.39 progress; keeping the developer in the loop (2026-10-02, session router)
|
||||
Status: executed
|
||||
|
||||
## Decisions
|
||||
- Option 3 (recommended; developer said /proceed without picking another): catch-up chart task after T5 + standing per-task snapshot rule.
|
||||
- New task after T5: readability_progress --snapshot, timeline.py, progress.py --readme; README Types reads live check-casts numbers + uncovered split.
|
||||
- binding: every census-moving task closes with readability_progress --snapshot "P<phase> T<n>", timeline.py, progress.py --readme in its T<n> commit, and a `progress:` line in its summary's Done (raw P/I/X/M, uncovered, levers, lying, milestone gates passed).
|
||||
- Facts behind it: chart panel exists (timeline.py ← docs/readability-progress.tsv, docs/lever-progress.tsv) but last cast row = P38 close 502,983; raw now 337,889 (−165,094, −32.8%; tasks/T1.md, T10.md); 281,252 P/X ledgered RESIDUAL (TNC dominant), I 35,625 / M 14,762 uncovered (T5).
|
||||
|
||||
## Plan edits
|
||||
- PY tools/plan_edit.py add-task --after T5 --title "progress snapshot and chart catch-up" --done-when "docs/readability-progress.tsv has a P39 row at this commit; timeline.py --check fresh; README Types reads the live check-casts numbers and the uncovered split" --files docs/readability-progress.tsv,docs/story-timeline.md,docs/story-timeline.svg,README.md,docs/progress.json --verify "PY tools/readability_progress.py --check && PY tools/timeline.py --check" --by developer (executed: no)
|
||||
- PY tools/plan_edit.py append-change --by developer "D1 2026-10-02: every census-moving task closes with readability_progress --snapshot, timeline.py, progress.py --readme in its commit and a 'progress:' line in its summary Done" (executed: no)
|
||||
|
||||
## Open
|
||||
- Router quoting each task's `progress:` line to the developer at task close: harness (.claude/) change, developer's own edit or next planner session.
|
||||
- Levers 3,711 in working tree (vs 3,729 at T1) is uncommitted, likely T5; unverified.
|
||||
- Card (HOW_WE_WORK.md) row for the binding rule: lands at phase end via the binding: path.
|
||||
|
||||
## Deferred
|
||||
- deferred: "uncovered" series beside raw casts in the timeline chart (so green-by-ledger does not read as debt gone) → 3.40
|
||||
@@ -0,0 +1,4 @@
|
||||
# Discussions -- one line per record
|
||||
# id | topic | date | status | path
|
||||
I1 | Phase 3.39 first task: regenerate the timeline and README after the 3.38 close (tools/timeline.py; tools/progress.py --r | 2026-10-01 | planned:3.39/T1 | phase-ends/current/discussions/inbox-20261001-101339.md
|
||||
D1 | README debt chart tracking and P3.39 progress; keeping the developer in the loop | 2026-10-02 | executed | phase-ends/current/discussions/D1.md
|
||||
@@ -0,0 +1,3 @@
|
||||
# Research reports -- this phase
|
||||
# id | task | title | tags | agent | date | lines
|
||||
R3.39-001 | find instruments for phase 3.39 | P39 cast/lever/lying-decl instruments | type_census, lever_census, argcheck, gte_inline | retriever-code | 2026-10-01 | 21 lines
|
||||
@@ -0,0 +1,14 @@
|
||||
# Task summaries -- this phase
|
||||
# id | status | title | tags | summary | log | research
|
||||
T1 | done | phase-start health, carry cleanup and baselines | - | tasks/T1.md | logs/T1.md | R3.39-001
|
||||
T2 | done | cast and lying gate instruments, reinterpret-macro set | - | tasks/T2.md | logs/T2.md | -
|
||||
T3 | done | rung S sweep, overlays (forms P and X) | - | tasks/T3.md | logs/T3.md | -
|
||||
T4 | blocked | rung S sweep, md_*, main and shared bodies (forms P and X) | - | tasks/T4.md | logs/T4.md | -
|
||||
T10 | done | residue coverage gate (--check-casts --residue) and 3.40 sizing | - | tasks/T10.md | logs/T10.md | -
|
||||
T5 | done | globals and absolute addresses to declared symbols (forms I and M, residual non-struct bases) | - | tasks/T5.md | logs/T5.md | -
|
||||
T11 | done | progress snapshot and chart catch-up | - | tasks/T11.md | logs/T11.md | -
|
||||
T6 | done | lying declarations to 0 outside the ledger | - | tasks/T6.md | logs/T6.md | -
|
||||
T7.1 | done | GTE to one spelling (predicate read as the census documents it) | - | tasks/T7.1.md | logs/T7.1.md | -
|
||||
T8 | done | pins and asm the unified types explain; residue ledger | - | tasks/T8.md | logs/T8.md | -
|
||||
T9 | done | milestone gate and record (Phase 3.39, the cast campaign, reading A) | - | tasks/T9.md | logs/T9.md | -
|
||||
T12 | done | phase-close docs: README graphs, story and hindsight lessons, wiki (Phase 3.39) | - | tasks/T12.md | logs/T12.md | -
|
||||
Reference in New Issue
Block a user