mirror of
https://github.com/Druthulu/BFM-decomp
synced 2026-10-08 09:43:04 -04:00
chore(phase-21): checkpoint — session 2026-06-23 reach-1 progress (fleet 61.19%, 165 banked, 4 idioms, pool fix)
CURRENT_PHASE.md SESSION UPDATE + regenerated fleet/backlog/progress digests. Captures waves 17-22 state for crash-recovery (R30). No source change.
This commit is contained in:
+33
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
> Generated by `tools/backlog.py render` from `.run/backlog.jsonl`. These are functions the Phase-21 automation got **close** on but did NOT byte-match. The whole-binary byte-gate is the sole arbiter (G3/P9): **byte-matches bank and are NOT listed here** — only genuine near-misses/blockers are. Ranked by hand-session priority: **reach** (×N propagation leverage) → **closeness** (match_one mismatch count, lower = closer) → **size**. Each row's `best_draft` is the closest C the machine reached — resume from there.
|
||||
|
||||
**Open near-misses:** 115 · by status {'near': 72, 'failed': 43} · by class {'WAVE': 20, 'plumbing': 15, 'schedule': 28, 'struct': 15, 'regalloc-order': 27, 'remat': 2, 'other': 5, 'iv-combine': 2, 'loop-guard': 1}
|
||||
**Open near-misses:** 147 · by status {'near': 101, 'failed': 46} · by class {'WAVE': 20, 'plumbing': 21, 'schedule': 30, 'struct': 33, 'regalloc-order': 30, 'remat': 2, 'other': 8, 'iv-combine': 2, 'loop-guard': 1}
|
||||
|
||||
| # | addr | reach | class | nins | status | closeness | where it stuck | best draft |
|
||||
|--:|------|------:|-------|-----:|--------|----------:|----------------|------------|
|
||||
@@ -121,3 +121,35 @@
|
||||
| 113 | func_8014F74C | 134 | other | 174 | failed | | none — MATCH (174 ins). Keys: sibling func_8014FA70 template; in/out/sp20 u8[8] short-trio bufs (lwl/lwr/swl/swr unaligned copies); load each a0 field once into b0/b1/b2 (stored to both sp20+out, reused in the 0x146-add block); 3-way memcpy branch on s1 (0x2000->D_801152A8, 0x4000->D_801152B0, else->D_800D3918); goto-form cmp-chain; final `""::: "memory"` barrier blocks gcc store-flag fold of (in4==out4)<<15 back to a branch | `.run/backlog_drafts/func_8014F74C.c` |
|
||||
| 114 | func_80156B74 | 134 | struct | 214 | failed | | none — MATCH | `.run/backlog_drafts/func_80156B74.c` |
|
||||
| 115 | func_80144B9C | 134 | other | 770 | failed | | -O0 cluster fn (prologue 21F0A003, fp-frame, all locals spilled+reloaded, load-delay nops). match_one compiles -O2 so it CANNOT match this; needs its own per-file -O0 split (Makefile CC1FLAGS:=-O0), like ov_SC01_077_o0.c. Body below is the faithful -O0 source; gate via whole-binary -O0 build only. | `.run/backlog_drafts/func_80144B9C.c` |
|
||||
| 116 | func_80151944 | 4 | struct | 15 | near | 0 | none — MATCH (fn-pointer table dispatch; array-of-ptr indexing folds %lo) | `.run/backlog_drafts/func_80151944.c` |
|
||||
| 117 | func_8016039C | 2 | struct | 15 | near | 1 | none — MATCH (function-pointer table dispatch indexed by unsigned-halfword field) | `.run/backlog_drafts/func_8016039C.c` |
|
||||
| 118 | func_8015CC74 | 2 | struct | 15 | failed | | none — MATCH (analog func_8015BE38 idiom: D_80189354[a0->idx]() with Obj.idx at off 2) | `.run/backlog_drafts/func_8015CC74.c` |
|
||||
| 119 | func_8015DAF8 | 1 | struct | 15 | near | 0 | none — MATCH (proxy); identical idiom to matched func_8016901C in same overlay | `.run/backlog_drafts/func_8015DAF8.c` |
|
||||
| 120 | func_801577C8 | 1 | plumbing | 16 | near | 0 | none — MATCH expected (scalar global store + two sequential calls, param preserved across first call) | `.run/backlog_drafts/func_801577C8.c` |
|
||||
| 121 | func_80178B70 | 1 | struct | 18 | near | 0 | none — MATCH; local ptr p=&D_8018A458 used for store AND (int)p-0xC arg forces $s0-base reuse across call1, param_1 into $s1 | `.run/backlog_drafts/func_80178B70.c` |
|
||||
| 122 | func_8017F240 | 1 | regalloc-order | 20 | near | 0 | none — MATCH (base &D_801270D0 pinned to $s0 holds across call; one lui/addiu reused for load+store) | `.run/backlog_drafts/func_8017F240.c` |
|
||||
| 123 | func_80157D20 | 1 | plumbing | 21 | near | 0 | none — MATCH expected (call, indexed u16-global load as 2nd arg, then call; param_1 saved across all three calls) | `.run/backlog_drafts/func_80157D20.c` |
|
||||
| 124 | func_80163408 | 1 | struct | 21 | near | 0 | local 8-byte struct copied from D_801D8BB0, © passed as 5th arg (s32) | `.run/backlog_drafts/func_80163408.c` |
|
||||
| 125 | func_80175184 | 1 | struct | 21 | near | 0 | none — MATCH (fnptr-array %lo-fold dispatch; idx = *(u16*)(a0+2) < 2 ? D_8018A1A4[idx]() : func_80175268()) | `.run/backlog_drafts/func_80175184.c` |
|
||||
| 126 | func_8014FBC0 | 1 | schedule | 22 | near | 0 | none — MATCH (22 ins). Stack-switch primitive: register $sp var, manual save/switch/restore around the call. | `.run/backlog_drafts/func_8014FBC0.c` |
|
||||
| 127 | func_80178B18 | 1 | other | 22 | near | 0 | none — MATCH | `.run/backlog_drafts/func_80178B18.c` |
|
||||
| 128 | func_8017B8E8 | 1 | plumbing | 22 | near | 0 | none — MATCH (two inlined unaligned 8-byte memcpy blocks: src[0..7]->D_801DA794, src[8..15]->D_801DA78C) | `.run/backlog_drafts/func_8017B8E8.c` |
|
||||
| 129 | func_80182988 | 1 | plumbing | 22 | near | 0 | none — MATCH (u16 store of 0xAA10 forces ori, not sign-extended addiu) | `.run/backlog_drafts/func_80182988.c` |
|
||||
| 130 | func_801609B8 | 1 | struct | 28 | near | 0 | none — MATCH (pending byte-gate); function-pointer table %lo-fold via extern array | `.run/backlog_drafts/func_801609B8.c` |
|
||||
| 131 | func_8017E224 | 1 | struct | 29 | near | 0 | none — MATCH (unaligned 8-byte memcpy of global onto stack + cond byte incr) | `.run/backlog_drafts/func_8017E224.c` |
|
||||
| 132 | func_80165140 | 1 | regalloc-order | 30 | near | 0 | none — MATCH (pin i=$v1/eight=$a0/p=$a2; DON'T pin param — let it self-copy to $a3 first; memcpy 8/4 unaligned) | `.run/backlog_drafts/func_80165140.c` |
|
||||
| 133 | func_80161D20 | 1 | struct | 14 | near | 1 | none — MATCH (array-of-u16 %lo-fold, §18) | `.run/backlog_drafts/func_80161D20.c` |
|
||||
| 134 | func_8015F00C | 1 | struct | 15 | near | 1 | none — MATCH | `.run/backlog_drafts/func_8015F00C.c` |
|
||||
| 135 | func_8015FAAC | 1 | struct | 15 | near | 1 | none — MATCH expected; fn-ptr table indexed by u16 field at +2, *4 scaled load then jalr | `.run/backlog_drafts/func_8015FAAC.c` |
|
||||
| 136 | func_8016084C | 1 | struct | 15 | near | 1 | none — MATCH (jump-table dispatch via array-of-fn-ptr %lo-fold) | `.run/backlog_drafts/func_8016084C.c` |
|
||||
| 137 | func_801429C4 | 1 | struct | 19 | near | 1 | none — MATCH expected (guard short + fnptr table indexed by halfword field) | `.run/backlog_drafts/func_801429C4.c` |
|
||||
| 138 | func_8017F714 | 1 | plumbing | 27 | near | 1 | none — MATCH (27/27 ins, match_one verified) | `.run/backlog_drafts/func_8017F714.c` |
|
||||
| 139 | func_80142A10 | 1 | struct | 28 | near | 1 | none — MATCH (pending byte-gate) | `.run/backlog_drafts/func_80142A10.c` |
|
||||
| 140 | func_80161C24 | 1 | struct | 29 | near | 1 | none — MATCH (array-of-struct %lo-fold; even/odd u16 fields at off 0/2, stride 4) | `.run/backlog_drafts/func_80161C24.c` |
|
||||
| 141 | func_801549F8 | 1 | schedule | 31 | near | 3 | 3-ins rotation — bound-copy `addu $a3,$v0,0` schedules ONE slot too early (before the hoisted jtbl lui/addiu); target emits it LAST in the preheader. Body+regalloc all match; pure list-scheduler priority tie (permuter-class). | `.run/backlog_drafts/func_801549F8.c` |
|
||||
| 142 | func_8014D3E0 | 1 | other | 22 | near | 6 | none — MATCH | `.run/backlog_drafts/func_8014D3E0.c` |
|
||||
| 143 | func_80164E40 | 1 | struct | 25 | near | 8 | none — MATCH expected; byte 0 keeps base $v1 (reused by final lw word), bytes 1/2 standalone | `.run/backlog_drafts/func_80164E40.c` |
|
||||
| 144 | func_80161CD0 | 1 | regalloc-order | 20 | near | 14 | param_2 must survive the call in $s0; try plain C first then pin to $16 | `.run/backlog_drafts/func_80161CD0.c` |
|
||||
| 145 | func_8018301C | 1 | plumbing | 28 | near | 24 | none — MATCH (straight-line, statement-order; verify with match_one) | `.run/backlog_drafts/func_8018301C.c` |
|
||||
| 146 | func_80160B34 | 1 | struct | 15 | failed | | none — MATCH | `.run/backlog_drafts/func_80160B34.c` |
|
||||
| 147 | func_80182338 | 1 | other | 26 | failed | | none — straight-line init; rely on gcc scheduler to hoist $a1/$v0=6 into prologue/delay-slot | `.run/backlog_drafts/func_80182338.c` |
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
# source-derived (committed src/*.c + config/dedup.us.yaml). Live byte gate: `make check-all`;
|
||||
# cross-binary collapsible-byte leverage: docs/duplicates.cross.md.
|
||||
|
||||
FLEET REAL substantive : 208751 (of which dedup-shared 208246 via 1566 groups / 208290 instances)
|
||||
FLEET REAL substantive : 208859 (of which dedup-shared 208246 via 1566 groups / 208290 instances)
|
||||
FLEET LINKED PsyQ objs : 959
|
||||
FLEET byte-identical : 210398 / 344010 = 61.16% (REAL+LINKED+empties)
|
||||
FLEET byte-identical : 210506 / 344010 = 61.19% (REAL+LINKED+empties)
|
||||
FLEET NON_MATCHING : 7 (0 in any default build — G4)
|
||||
FLEET INCLUDE_ASM stubs : 133605
|
||||
FLEET INCLUDE_ASM stubs : 133497
|
||||
FLEET matchable : 344010
|
||||
|
||||
| binary | REAL | shared | LINKED | byte-ident | matchable | byte-ident % |
|
||||
@@ -22,7 +22,7 @@ FLEET matchable : 344010
|
||||
| ov_SC01_008 | 1550 | 1550 | 0 | 1552 | 2428 | 63.9% |
|
||||
| ov_SC01_009 | 1550 | 1550 | 0 | 1551 | 2510 | 61.8% |
|
||||
| ov_SC01_074 | 1550 | 1550 | 0 | 1552 | 2427 | 63.9% |
|
||||
| ov_SC01_077 | 1848 | 1518 | 0 | 1850 | 2586 | 71.5% |
|
||||
| ov_SC01_077 | 1956 | 1518 | 0 | 1958 | 2586 | 75.7% |
|
||||
| ov_SC01_080 | 1554 | 1554 | 0 | 1554 | 2515 | 61.8% |
|
||||
| ov_SC01_084 | 1554 | 1554 | 0 | 1559 | 2581 | 60.4% |
|
||||
| ov_SC02_000 | 1558 | 1558 | 0 | 1565 | 2684 | 58.3% |
|
||||
|
||||
@@ -14,7 +14,19 @@
|
||||
> Everything below this section (the prior ×134 QUEUED-RUN block, TRIP HAND-OFF, POST-REBOOT, etc.) is a
|
||||
> HISTORICAL session-layer kept for the trail. **THIS section is the current state + the fresh-session plan.**
|
||||
|
||||
**Fleet ≈ 61.16% byte-identical** · 136/136 binaries byte-identical · 0 NON_MATCHING.
|
||||
**★ SESSION UPDATE 2026-06-23 (waves 17–22, reach-1 harvest LIVE — Drew's `/loop`):** Fleet **61.19%** ·
|
||||
banked_total **165** (session **+108** reach-1 ×1 banks over 6 waves; close-rate 0.63→0.91→0.67 as the size-band
|
||||
climbed 14→31 ins) · 136/136 byte-identical · 0 NON_MATCHING throughout (per-wave byte-gate, G3/P9). **4 new
|
||||
cookbook idioms distilled** (`commit:0225` u16-store→`ori` · `commit:0227` $sp-switch trampoline + 3 maspsx rules ·
|
||||
`commit:0230` byte-predecrement `+0xFF` not `-1` · `commit:0232` combined store-and-capture call-result). **Pool-exclusion
|
||||
bug FIXED** (`commit:0228`): `wave_targets.plumbing_blocked()` now scans ALL raw backlog records (was `load_best()`,
|
||||
which masked `none — MATCH` self-match-gate-reject records) → 83 churners correctly skipped from waves (hand-finish
|
||||
fuel). **STOP left in place per Drew** (AskUserQuestion: kill switch = interrupt / `auto_stop.sh`, NOT the file).
|
||||
Orch_state: `pool=reach1`, `waves=22`. The fresh-session cycle below is unchanged. Honest ROI note: reach-1 is ×1,
|
||||
so fleet barely moves per wave — the value is `ov_SC01_077` completeness + the distilled idioms (reach-134-applicable
|
||||
→ a future wall re-attempt could bank ×134).
|
||||
|
||||
**Fleet ≈ 61.16% byte-identical** *(↑ 61.19% — see SESSION UPDATE above)* · 136/136 binaries byte-identical · 0 NON_MATCHING.
|
||||
**Nothing running** — grinder STOPPED (Drew; `.run/auto/STOP` present), no worker wave in flight. Paused at a
|
||||
clean, committed checkpoint (HEAD = the reach-1 handoff commit). Committed locally; **not pushed** (R6 — Drew pushes).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user