From e074d947fbf992287f0310952e577663135dac62 Mon Sep 17 00:00:00 2001 From: Christopher Williams Date: Thu, 24 Sep 2026 18:16:47 -0400 Subject: [PATCH] phase12: credit-outage recovery (10 bodies recovered, 635/644) and the negatives re-dispatch --- phase-ends/logs/Phase12.md | 73 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/phase-ends/logs/Phase12.md b/phase-ends/logs/Phase12.md index cdf6cbe..33203e9 100644 --- a/phase-ends/logs/Phase12.md +++ b/phase-ends/logs/Phase12.md @@ -551,3 +551,76 @@ invariant is a *diagnostic*, not a gate. **To be reconciled at the phase close** census is available and the negatives-index reconciliation is done anyway — the two are probably the same question, since the divergence appeared on the first merge whose additions were all negatives-index rows that no earlier merge had registered. + +--- + +## THE CREDIT OUTAGE AND THE RECOVERY (2026-09-24 ~21:45) + +**All four workers stopped mid-flight when the account ran out of credit.** The developer re-upped +and instructed me to continue. The workers did **not** die — all four came back **idle** — so this +was a resumption, not a roster rebuild, and §4.0's "spawn fresh" rule did not apply. + +### The recovery: 10 verified bodies out of staging that no report had yet announced + +| | count | +|---|---| +| `src/` files produced this phase and still untracked | 11 | +| distinct addresses claimed in ANY staging file | **29** | +| `src/` files claimed by **nothing** (true orphans) | **0** | +| claims whose source file is missing | **0** | + +**All 29 claimed rows were re-verified by me from fresh `--work` directories with `--symbols` (and +`--cc1 gcc-2.8.1-psx/cc1` for the four `cc1bin` rows) BEFORE merging: 29 of 29 +`differing_bytes=0 result=MATCH`, exit 0.** One combined `apply --skip-registered`: 19 skipped as +already merged, **10 added**, 0 rejected. + +``` +sf3_match gate c_regions=644 differing_bytes=0 result=MATCH + sha1 e173426c157384ebf1b6caf8c6fea18a85a14af9 (unchanged) +make check exit 0 extents-verify regions=644 disagreements=0 AGREE +registry audit 644 rows, 635 distinct bodies, 0 missing, 4 carry cc1bin +``` + +**A defect in my own audit, recorded because it manufactured a false alarm.** My first orphan check +globbed `.run/p12/w-*/claims.tsv` and reported `src/func_801008DC.c` as unclaimed. It is claimed — +in `claims-altcc1.tsv`, a **deliberately separate pool** because those rows need the `cc1bin` +override. **The audit was wrong, not the worker.** A `src/`-against-claims audit must glob *every* +claims file the charter defines, not the default one, or it invents orphans and the next worker +investigates a phantom. + +### Position: **602 → 635 bodies = +33, past the cycle-1 checkpoint (+30)** + +| worker | bodies | the signal | +|---|---|---| +| D | **13** | 5 fresh-band + 4 Goal-B + 2 twins + 2 GTE | +| C | **9** | 4 default + 3 `cc1bin` + 2 GTE | +| B | **6** | 5 in ONE translation unit + 1 adjacency | +| A | **5** | **adjacency, 3-for-3 across three bands** + 2 | + +### The re-dispatch: all four workers onto the negatives (developer's decision) + +The developer chose **"keep 750, re-dispatch to the negatives"**. The rationale is entirely measured: + +| source | cost per body | +|---|---| +| worker B's fresh band | **4.2 attempts per match** (and it hit the leading indicator twice) | +| worker A's fresh band | 4-13 spellings, bimodal; **all three failures were allocation/block-order** | +| worker D's **classified negatives** | **4 bodies from 4 attempts at ONE SPELLING each** | +| worker C's negatives | **15 rows → 9 matched, 0 abandoned without a mechanism** | + +**The mechanism is already named in those rows, so the per-row reading cost is pre-paid** — which is +exactly what worker A asked for when it requested a cheap key away from the allocation/block-order +class and noted that finding 116 records the naive proxy failing. The negatives index *is* that key. + +New pools, split by `crc32(address) % 4` so membership cannot move: + +| worker | pool | rows | prio 1 (named mechanism) | prio 2 (`cc1bin`) | prio 3 (no mechanism) | +|---|---|---|---|---|---| +| A | `negatives-a-pool.tsv` | 47 | 19 | 0 | 28 | +| B | `negatives-b-pool.tsv` | 45 | 23 | 2 | 20 | +| C | `negatives-c-pool.tsv` | 43 | 31 | 1 | 11 | +| D | `negatives-d-pool.tsv` | 41 | 19 | 1 | 21 | + +**176 unregistered negatives rows; 92 carry a named mechanism; 8 are in the multi-exit `cc1bin` +class.** D was told to take its **three in-flight `wip` twins first** (`0x800161E0`, `0x80016224`, +`0x8008F478`) before the pool, because twins have closed at one spelling all phase.