phase10: ledger — B's band stop recorded as a yield basis (not the measured criterion), stack-switch asm proven end-to-end
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user