phase12: checkpoint at 679 bodies / 688 regions (+77) -- the working band, the open items, the closed classes
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user