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:
Drew T
2026-06-23 02:07:35 -06:00
parent c694c9d7a1
commit e59e8b5ef6
3 changed files with 50 additions and 6 deletions
+33 -1
View File
@@ -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, &copy 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` |
+4 -4
View File
@@ -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% |
+13 -1
View File
@@ -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).