From 53365e0df969ccd02f91c701635da72b521ac6e5 Mon Sep 17 00:00:00 2001 From: Christopher Williams Date: Thu, 24 Sep 2026 07:40:22 -0400 Subject: [PATCH] =?UTF-8?q?phase10:=20ledger=20=E2=80=94=20B's=20band=20st?= =?UTF-8?q?op=20recorded=20as=20a=20yield=20basis=20(not=20the=20measured?= =?UTF-8?q?=20criterion),=20stack-switch=20asm=20proven=20end-to-end?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phase-ends/logs/Phase10.md | 55 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/phase-ends/logs/Phase10.md b/phase-ends/logs/Phase10.md index f5906d8..1df2eb6 100644 --- a/phase-ends/logs/Phase10.md +++ b/phase-ends/logs/Phase10.md @@ -315,3 +315,58 @@ replacement session to rotate into; a mid-batch handoff must already be written. **Session budget at this point (quoted from `intercom list`):** coordinator 30%, A 33%, B 39%, C 42%. All inside the 70-80% cap. + +## Cycle 1 — worker B's band stop, and the stack-switch ruling paying off (2026-09-24) + +**450 distinct bodies / 459 regions** (from 400 / 409). Session budgets: coordinator 32%, A 38%, +B 47% (stopped), C 47%. + +### The inline-asm ruling returned a result within the hour + +Worker B proved the sanctioned idiom works end-to-end through `cc1` → `maspsx` → `as`: the 5-instruction +PSX scratchpad stack switch matched **byte-exactly**, with zero differences anywhere in either asm block. +maspsx passes the asm text through untouched and `$sp`/`$at` survive the pipeline. Two reusable details +came out of it and were broadcast to worker A, which holds the sibling row `0x800BC658`: + +1. **Three separate `__volatile__` statements (SAVE_SP / SET_SP / REST_SP), not one blob** — the call + must sit between the SET and the RESTORE, which a single asm block cannot express. +2. **A constant cc1 parks in a callee-saved register is one the source named and kept live across a + call** — adding `int one = 1;` and passing it to all four calls reproduced `addiu s2,zero,1` in the + right place. The mirror of Lever F (a value that is also an argument lands in `a0`). + +The remaining 12 bytes on B's row are pinned for whoever picks it up: the original loads the field into +the saved register and then moves (`lw s0,8(s0)` then `move a0,s0`) where cc1 emits a direct +`lw a0,8(s0)`, and it uses `move a1,s2` where the candidate re-materialises `li a1,1`. Next step: make +BOTH the field read and the constant come from variables live across the stack switch. Explicitly **not** +an allocator tie-break — the asm is proven and only the operand plumbing is left. + +### Worker B stopped — recorded honestly as a band stop, not a budget stop + +B stopped at 23 claims / 23 MATCH / 1 negative / 6 deferred. **This is a coordinator-approved band stop +on a yield basis and explicitly NOT the protocol's measured criterion** — B is at 47% context, inside the +70–80% cap, and did not report two consecutive zero-match cycles with attempts-per-match quoted. The +basis accepted: + +- 5 of B's last 6 rows ended in allocator/optimiser divergences (two prologue callee-saved assignments, + one induction-variable re-basing, one hoisted-value register choice, one operand plumbing) — the + leading-indicator signature; +- every one has an identified mechanism but **no controllable lever**, which is the distinction from + worker C's earlier tie-break band (C had named levers for all six, so C was kept going); +- Phase 9's strongest recorded lesson is that fresh context beats exhausted context, and B had ~30 rows + of lever archaeology behind it on the same class. + +The record says "band stop on a yield basis, explicitly not the measured criterion" rather than dressing +it as a rotation. B's own preference was for the record to be accurate rather than flattering. + +**B's handoff verified clean before stopping:** `CHECKPOINT.md` current (23 claim rows, all 15 levers, the +`pass=23 fail=0` sweep, all 6 deferrals with solved half + first-divergence address + spellings tried + +untried hypothesis); no non-claim source of B's left in `src/` (checked mechanically against the 7 +non-claim rows, so AGENTS.md rule 6 holds); both request files pruned to "NONE OUTSTANDING" with the +evidence inline; all 23 claims re-verified from fresh work dirs with 0 failures. B also independently +confirmed the coordinator's merges (`D_80122700`, `D_80122704`, `D_80121AD4` gp-marked; the +`gp=-D_801226F4` region option present) before pruning. + +**Roster decision (developer):** a fresh worker session is approved to take over B's partition at +lever-b line 28 using B's checkpoint as the brief. B's fallback recommendation if no session is +available: hand its partition to worker A (most headroom) and have A skip B's 6 deferred rows rather +than inherit them.