phase12: checkpoint at 679 bodies / 688 regions (+77) -- the working band, the open items, the closed classes

This commit is contained in:
Christopher Williams
2026-09-24 19:21:41 -04:00
parent c16d97aaa2
commit 9cabd2c44f
+54 -1
View File
@@ -4,7 +4,60 @@
**Plan:** `phase-ends/Phase12_PLAN.md` — **APPROVED** by the developer 2026-09-24.
**Ledger:** `phase-ends/logs/Phase12.md` (the running record; staging under `.run/p12/`).
## Progress at the cycle-1 checkpoint approach (2026-09-24 21:30)
## STATE — 2026-09-24 23:20 (supersedes the cycle-1 block below, which is kept as history)
**679 bodies / 688 regions**, from 602 / 611 at the Phase 11 close — **+77 bodies**. Milestone 750
needs **+71** more; stretch 800 needs +121. SHA-1 `e173426c157384ebf1b6caf8c6fea18a85a14af9` unchanged
since Phase 9. `make check` exit 0. **344 tests.** Every merge gated; the gate has been green at all 28.
| worker | bodies (phase) | the band that produced them |
|---|---|---|
| **D** | **~19** | fresh band, then **its own un-attempted band at 11 matched / 15 attempted** |
| **C** | **~16** | the classified-negatives pool, 0 rows abandoned without a mechanism |
| **B** | **~18** | one TU, then the pool at 8/10, plus **two mode findings** (`moves`, and a maspsx patch) |
| **A** | **~10** | adjacency 3-for-3, the pool, a **harness bug fix**, and **two flag-closed rows** |
### THE PHASE'S CENTRAL MEASURED RESULT, which changes the method
**The band that works is "has this row been attempted with the CURRENT LEVER SET", not "which file is
it in".** Worker D's band — index rows with **no mechanism named**, attempted in phase 8/9 and never
pushed to a floor — is running at **73% (11 of 15)** against roughly **50% on prio-1**. All three
workers are now on that criterion (`negatives-{a,b,d}-unattempted.tsv`). **Worker D reached this by
reporting its own 2-for-7 pessimism rather than absorbing it**, and it took a re-rank to act on: three
workers separately proposed discriminators based on the *wording of a row's note*, and I **implemented
that rule, measured it (3/7 precision, would have demoted half the real successes), and disarmed it.**
The criterion that survived is about a row's HISTORY rather than its prose.
### OPEN ITEMS, in priority order
1. **The harness-transform list, and it is now the phase's largest single lever.** Three named
test cases with receipts: `0x800FFB74` (finding 85's base fold, 14 spellings across two phases),
`0x800FF6DC` + `0x80100998` + `0x800FFBBC` (**one compiler-boundary class: no vendored cc1 produces the
original's combination of a separate epilogue AND a correct delay filler** — 2.7.x merges the epilogue
and fills correctly; 2.8.x separates it and sinks the copy out of the slot). **The gp-rewrite/delay-slot
item is the most concrete:** `rewrite_gp_accesses` can REMOVE an instruction from a delay slot, and D's
framing is that a maspsx mode re-deriving the slot after the rewrite would close a class.
2. **`excluded_already_registered` lags the registry by a stable 2** since merge 8. Characterised, two
hypotheses refuted, no correctness risk (the gate proves every row simultaneously). Reconcile at close.
3. **The fragment predicate is not yet a triage rule.** `$8-$15` read before anything writes it. Two
worked instances (`0x800C3490`, `0x8001DC20`). Needs a fail-first test, not a hand edit.
4. **The twin instruments are not promoted** (C's `twin-scan.py` with the registered-parent label,
D's `twin.py`). Check the name against cookbook 186 before promoting.
5. **Per-region codegen flags** — 2 rows (`0x80101C7C`, `0x800AB504`) admitted under a four-condition
policy with **no mechanical byte predicate**, raised to the developer as a scope question.
### The classes now closed as unreachable, each with a named mechanism
**compiler-boundary** (3 rows, no vendored build) · **base-in-register** (3 rows, and the distinction is
*forced is not enough; the address must be NEEDED*) · **allocator tie-break** (**6 rows**, signature
identical every time: same count, same order, one register number apart, plus one `move`) ·
**zero-operand folding** (2 rows, cc1 folds or shares a constant the original materialised and kept) ·
**loop-invariant motion** (ADDS registers, unlike the scheduler class which reorders within a fixed
count) · rare-epilogue mutual exclusion · trapping arithmetic (charter-blocked).
---
## HISTORICAL — Progress at the cycle-1 checkpoint approach (2026-09-24 21:30)
**625 bodies / 634 regions**, from 602 / 611 at the Phase 11 close — **+23 bodies**.
`excluded_already_registered` divergence at merge 8 is OPEN and characterised in the ledger