# The cost of intelligence — PLAN v2 (the standing instrument)

**Written:** 2026-09-23, 16:44Z → 17:02Z; **patched** 17:21Z → 17:34:09Z against `panel/CHECK.md` (MF-1…MF-7, plus the cheap should-fixes; the record is `panel/FOLD-LOG.md` §Patch; every live figure below was re-read from its file at 17:21–17:25Z and is stamped where it appears) (UTC, from `date -u` on the laptop at both ends). **Author:** the lead (Fable 5.1), folding the five-lens hardening panel (`panel/{method,compute,economics,article,gaps}.md`, written 16:16–16:45Z) into `PLAN-v1.md`. Every finding's disposition is in `panel/FOLD-LOG.md`. **Status:** v2, for an operator's ONE read. `RULINGS-2026-09-23.md` (R-0…R-16; **R-13 is an operator's ~16:5xZ ruling that the article is a working document with a Friday 2026-09-25 target**; R-14 is appended under R-0 for chart C2's shape; **R-15 and R-16 are appended under R-0 by this patch** — the registered forms of R-2's bar and R-3's ratio, and R-10b's reading-0 box instrument — so a lane that follows this header meets no conflict; R-1's re-reading is a question for an operator, ⧖-27) wins over anything here; where this plan says a lane may act, R-0 is the authority (the lead's recs fill gaps, except money past a cap, a live seat, a standing-order lift, or a publish).

*Internal file: it names the desktop's larger card, the desktop, benchbox and the laptop. Public pages follow §8's naming rules. Every number carries its file or URL; a figure with no citation is a defect of this plan, not a fact. Figures the panel recomputed are cited to the panel file that holds the receipt.*

---

## 0 · The plan on one page

**What this measures.** What one correct answer costs, in joules and dollars, and how good it is, when the intelligence is made on a card we own versus metered from a cloud API — re-read at dated readings as open weights improve. Epoch AI (CC BY, 2026-09-22) estimate the cloud price of a fixed capability fell about 13× a year over 2023–26; ours sits beside theirs as rates, never as levels on their axis.

**The three cards and the frontier.** The reference RTX 3090 is `<withheld: GPU UUID of board A>` in benchbox's x16 seat, 300 W, persistence on — the board reading 0 runs on (v2 recommends ratifying it, ⧖-2; `<withheld: GPU UUID of board E>` the control). The RTX 5090 Laptop GPU in the laptop (Dynamic Boost on, clock lock off, 150 W enforced). The 96 GB card on the desktop (the desktop's larger card): energy only, no dollar figure (P-6). Against them: OpenAI's API (the spine; `gpt-4-0613` retires 2026-10-23), the Claude CLI, the ollama.com shelf.

**Measured, and running.** Reading 0 opened 15:43Z. On the six-way: the anchor `gpt-4-0613` 88/108; benchbox's `gemma4:26b` 88/108 (build `08ae7ec1`, not the seat's bytes); `claude-sonnet-5` 102/108 and Haiku 84/108 (v1); the shelf's best 89.8 %. OpenAI $3.91 spent by 17:22Z. **Not yet held (§7, item 0):** the doorman set is still leaving the estate (five Claude models, 27 shelf row files at 17:21Z; OpenAI phases D/E ahead); the hold runs before ⧖-4 is asked.

**What the panel changed.** 131 findings, 50 MUSTs. The anchor bytes are `5571076f` on every card; protocol and parser v2 freeze in `PREREG-S0.md` under a sha before any re-score; THE RATIO is chance-corrected, cross-fit, with intervals, against closed APIs; the cost model carries two owner archetypes and gross fuel; the 54 %/16× sketch and the $1,899 pair are struck; short sets run at one `num_ctx`.

**What an operator decides** (§9): one gemma lift and one RAPL paste for both trains; the 3090 ratification and yield rule; the seats-down window; the doorman's seal; the anchor top-up; the Claude route; the laptop card's order (⧖-20); R-1's re-read, S1 additive (⧖-27); the 82.4 correction (⧖-18); the cost inputs; the P-6 question; an OpenRouter key; benchbox minutes for the cheapest cards; the update rule; the archive drive; R-7's path.

**What an operator does NOT need to do.** No laptop pastes beyond ⧖-19's one; none for the beside arms. Nothing overnight. The window's pastes arrive runnable before 2026-09-24 16:00Z. R-13's Friday target rides on §7's "before the pour" chain.

---

## 1 · The question

**The plain question.** What does one correct answer cost, in joules and dollars, on hardware we own, and how does that compare with buying the same answer from a frontier API — today, and across dated readings as open models improve and our cards stay the same?

**Epoch's frame, in their own words** (article M-5; economics §0–1). Epoch AI ("The plunging price of thought", Emberson & Roodman, 2026-09-22, CC BY 4.0) measures the cheapest cloud price per benchmark question at a *fixed* accuracy: **47.0 % a quarter ≈ 12.67× a year over 2023–26, real dollars** (`Figure 1.csv`, sha `74781708…`). The page quotes Epoch's own hedges as theirs — the chart's title carries "may have fallen"; the 2021–23 stretch rests on "coarser evidence"; "reasonably representative … should not be read as exact"; no real user stays on the cost frontier — and prints our arithmetic as arithmetic, never as a correction: read off their index, 100 at the end of 2021 to about 0.0005 in late 2026 is a fall of about 185,000-fold at their 2023–26 rate carried back to 2021 (100 × 12.67^−4.78 = 0.00054; the "million-fold" was this train's brief, not Epoch's). Two more things the page says every time the 13× appears: **it is Epoch's all-ages average** — by their own decomposition the rate is about 66 % a quarter when a capability level first debuts and about 32 % a quarter (≈ 4.7× a year) two years later (recon economics §1.1, cited through economics #7) — and **theirs is a price, ours is a cost**: their line moves with margins and competition; ours does not.

**The honest question, pre-registered (Bench 3), per bar and by capability age** (economics #7, #12; method S-11). The cloud's fall comes from better algorithms (≈ 3×/year, Gundlach et al. 2025, arXiv 2511.23455), cheaper and faster chips, datacentre batching at very high utilisation, and price competition. An owner of a 2026 card captures the first (newer open weights) and a little runtime gain. Our bars are old capabilities: B-anchor is the `gpt-4-0613` level, three-plus years old, so the age-matched cloud rate for it is **≤ 4.7×/year**, not 12.67×, and the pre-registered gap against the owner's ≈ 3×/year shrinks to ≤ 1.6×/year. **Prediction, forward readings only** (the backfill cannot test it — economics #17): at B-anchor, the cloud's $ per correct falls faster than the owned $ per correct, by a factor between 1 and 1.6 a year; at B-frontier-90, a debut-age bar, by much more. **The decision rule** (three outcomes, thresholds registered in `PREREG-S0.md` before reading 1): *toward ownership* when the bar-matched owned ÷ rented cost ratio (§5) fell by more than the registered band; *against* when it rose by more than it; *inconclusive* otherwise. The band combines the daily OpenRouter snapshots' own quarter-on-quarter price spread and the accuracy interval carried into $ per correct; `ratio.py` also prints the **earliest reading that can answer** (quarters until the predicted divergence exceeds the band). No ×/year prints from readings under 12 months apart; before that, the raw factor over the stated window. **The result that argues against owning must be publishable**, and it is the likelier one: the panel's recomputation on the Jev six-way rows (250 W, build `08ae7ec1`, C = $1,449.99 or $1,879.99) gives u\* ≈ 0.87 and 1.11 — no break-even at any utilisation at the listing price on an input-heavy set (economics #2, receipts block). **That figure and v1's "54 % / 16×" are sketches on superseded inputs and will not be published** (article M-3); the first printable u\* comes from `ratio.py` on the reference card's own rows at the registered C, cap and u. If reading 1 confirms it, the page prints it, and the case for owning rests on what a card buys other than price: no meter, no vendor repricing or retirement (`gpt-4-0613` still lists at its 2023 price and retires 2026-10-23), privacy, staying up in an outage, and an obligation to serve that a vendor does not carry (economics #21).

**The result we would like, and its trap.** The 2023-model-on-2026-card curve (Bench 1) is *model generations at fixed 2026 hardware, 2026 electricity and a 2026 runtime*. It is not what intelligence cost a 2023 owner, and its slope is algorithmic by construction (economics #17): it is used as the algorithmic term of a decomposition (Epoch's age-matched rate ÷ the backfill rate = the non-algorithmic share), never as a test of the prediction. Drawn beside Epoch's market line without that label it would be a false curve; ours is compared to Epoch's as *rates* on separate axes (§8, R-14).

---

## 2 · The instrument

### 2.0 The freeze — `PREREG-S0.md` (method M-5)

Reading 0 has been collecting since 15:43:21Z, and every rule below was written with rows in view. So the rules are frozen **before they judge anything again**: a `PREREG-S0.md` committed with its git sha and UTC **before the parser-v2 re-score and before any ladder table**, holding: the protocol P1 (§2.3) with `parse_v2.py`'s sha and its selftest table and `METRICS.md` v1's sha; every bar with its exact test (§4); the comparator panels and the ratio forms (§2.4); the anchor rule (§2.3); the ★ pin file's sha (§3); the canary statistic (§2.5); Bench 3's decision rule and bands (§1, §5); the reading's registered cell list and close rule (§2.3); and an **"observed before registration"** list naming every row file that existed at the freeze. After the freeze every change is an amendment `A-nn` (UTC, reason, "rows the author had seen: …" — the Jev README's practice); R-0 rulings made after the freeze go through the same path.

### 2.1 Frozen task sets, versioned

**Series set S0** (R-1; `SERIES-SETS.md`): the six-way voice task `task_c` (108; A–F), the docent gate `task_a` (63; yes/no over 42 public pages), the doorman planted set (48 = 36 planted + 12 controls), the field exam recast `field_exam_ground` (40). **Corrections to `SERIES-SETS.md`, owed today (Q-8):** (a) the **doorman set is NOT in the published kit** (`…/data/kit/doorman_planted.json` 404s) — still sealed *on paper*, but it has left the estate (§9 ⧖-4, with the ledger's facts); (b) the **field exam's source items went public 2026-08-29** (`/the-instrument-travels/data/field/*.json`, all 60 native items with keys), while the recast file's own bytes never did (article S-12); (c) **task_a's questions and labels are public** — exhibit fifty-eight's `kit/task_a.json` is byte-identical to S0's (sha `e107fd3e…`), served with `Last-Modified: 2026-09-23 13:16:28 GMT` under a robots.txt that allows all, so `first_public = 2026-09-23T13:16Z` and there is no "second fence" (method M-7, article S-12); (d) the **published task_b is a sanitised twin** (`7c979cca…` vs S0's `withheld-2026-10-14`; the one difference is "an operator 2026-09-03" → "an operator 2026-09-03"), so S0's task_b bytes carry the operator's name and pass the literal screen before any egress; `KIT.lock.json` records both shas with `matches_seal: false` + `why_it_differs`.

**S0.1 — additions registered as their own set ids** (never edits of S0): the **judge set** `judge_seat.json` (119; A–C; one of the two sets that still separate current models); the **native field exam** `f60` (60 items in the exam's own contract, scored by `run_field_exam.py`'s scorer; bars pre-registered 2026-08-25); **`task_a@8k`** — the task_a items that fit 8,192 tokens by the offline tokenizer census, its own id and sha, carrying B-anchor and the fixed ratio (the all-63 figure is Bench 1's context-window curve; method S-8); and the doorman as **two ids**, `doorman48-letter` (what the reading-0 frontier rows ran, with DOORMAN_SYSTEM v1.2's "JSON only" beside the letter instruction) and `doorman36-json` (the native contract; the only id B-doorman accepts; method S-9). The recast `f40` stays for comparability with the Jev rows but is saturated (100 % for every model tested) and is not a ratio task.

**S1 — the sealed private slices, additive, never rotated** (R-1 read as "a fresh slice each quarter"; method M-10; **this re-reads an operator's word "rotated", so it is asked as ⧖-27, not applied** — until he confirms, FOLD-LOG §3's fallback stands: if he meant "replaced", the fixed ratio exists only on S0 and S1-2026Q4 and the page says so). Slices `S1-2026Q4`, `S1-2027Q1`, … each stay sealed and are re-read in every reading until the exposure ledger (§2.5) retires one; a slice is never replaced, because "per `set_id` only" plus a rotated slice can never form a series. `S1-2026Q4`: **≥ 108 six-way items** from dinners on a non-public instance (lines never posted), sha256 committed before any model reads it, sent **only** to endpoints whose posture is `no-train-receipted` (§2.5), read on `gpt-4-0613` **before 2026-10-22** or the fixed denominator never exists on a sealed slice. **Local linking anchors that can never retire** read every slice on the pinned runtime: `mistral:v0.1@b17615239298` (the 2023 floor) and `gemma4:26b-a4b-it-q4_K_M@5571076f3d70` (the 2026 seat). Before 10-22 the anchor reads S0 and `S1-2026Q4`, measuring the link (anchor ÷ local anchor) on two sets; a later slice's **linked fixed ratio** = local ÷ (local anchor on that slice × link), printed only when the two measured links agree within their paired intervals and labelled "linked; assumes the anchor's gap to the local anchor is constant across slices". **Commit-reveal** (article C-3): each slice's sha256 and item count are published at the reading it joins; the slice is revealed when it retires.

**How a new set joins.** `set_id` + sha256 + `first_public` in `KIT.lock.json`; every row carries `set_id`; `ratio.py` computes THE RATIO per `set_id` only; a new set starts its series from the reading it joins with the anchors (§2.3) read on it in that reading. A set is never edited; a corrected set is a new id with a note.

**Known confounds, carried on every row.** **Home-team text** (method M-9, article M-8, economics #14): task_c's lines were written by gemma-4-26B or mistral-small-3.2 (the wall's `chairs` map), and the judge set's 39 paraphrases by `mistral-small3.2:24b` (29) and `gemma4:26b` (10) (`paraphrased_by`) — so *both* sets that still discriminate carry text from the two families that are the seat, the anchor bridge and two lines on C1. `KIT.lock.json` records `author_family` per item (task_c by the wall match, Q-3); every c and j row prints accuracy on **out-of-family items** beside the headline, with n; a gemma- or mistral-family numerator's headline ratio, B-seat and the "first finding" (§3) are stated on the out-of-family split; the page names it as self-authorship bias, measured, not as contamination. **Clustering** (method S-6): task_c carries no dinner id (`source.edition = 1` on all 108; 50 distinct ids); Q-3's wall match recovers `dinner_id`; every rate prints a cluster-bootstrap interval (by dinner for c, by article slug for j) beside Wilson, and the paired tests resample clusters when there are ≥ 10. **Letter-position bias** (method C-1): on the two-class sets the majority label is a fixed letter (task_a's A = yes; the doorman's B = refuse), so each row prints its chosen-letter distribution against the label distribution; one reading runs a rotated-options six-way on the ★ rows. The remaining confounds stand as in v1: 39 of task_a's 63 questions were written by a Claude model (the Claude rows say so); the field exam's T1 excerpts are years-old rulebook text (T1/T2/T3 never summed alone); the doorman's C/D buckets are disposition, never accuracy; the judge set's 20 VERBATIM claims and task_a's pages have been public since 2026-08-11, so rows with `weights_bound_utc` after that date print j split by arm (method C-3).

### 2.2 Backends

| backend | how | posture | cost state |
|---|---|---|---|
| **local, the three cards** | ollama **0.32.13 pinned** (tarball sha `0fd1dece…` = line 12 of the release's `sha256sum.txt`, verified 16:2xZ; re-extract, never re-download; **second copies on the desktop and benchbox today** — G-16), one **bench-only instance per card** (`systemd-run --user`, loopback port, `OLLAMA_MAX_LOADED_MODELS=1`, `OLLAMA_<parallel-requests>=1`, `OLLAMA_FLASH_ATTENTION=1`, **`OLLAMA_KV_CACHE_TYPE=f16`** (the series posture; q8_0 read once per card on the anchor as a named delta — compute M-4), instance `OLLAMA_KEEP_ALIVE=-1` with an explicit `keep_alive: 0` unload at every arm's end (benchbox's pattern), `OLLAMA_VULKAN=0` + `GGML_VK_VISIBLE_DEVICES=-1` + blank `HIP_VISIBLE_DEVICES`/`ROCR_VISIBLE_DEVICES` beside the `CUDA_VISIBLE_DEVICES=<UUID>` pin, `OLLAMA_NOPRUNE=1`), each on **its own an operator-owned bench store** (`/workshop/bench-coi-2026-09-23/store` on every box; never the system store, never the seats' store — compute M-6, G-5): laptop **:withheld-2026-10-14**, the desktop **:withheld-2026-10-14**, benchbox **:withheld-2026-10-14** (what runs). **A mechanical guard, not a sentence:** `coi.py` refuses any local arm whose host is not the box's registered bench port and exits 2 before the first request (compute M-3) — the smoke and the `gpt-oss:20b` calibration ran on the laptop's **system** daemon (0.32.14, KV q8_0, keep-alive −1) and are `series: false`. **Messages are user-only on every backend** (P1; the tag's baked SYSTEM layer stays and its sha is recorded — method M-3); the harness overrides every `params` sampling default. Every row pins the **manifest digest** and the runtime posture (§2.3). | 3090: 300 W, persistence on (R-12), read from the card per arm. Laptop: **Dynamic Boost on, clock lock OFF (`clocks.max.sm` 3090 MHz), `enforced.power.limit` 150.00 W**, as read 16:21Z (compute S-1; v1's "boost + clock lock" was wrong — exhibit 57's shipped pass had the lock ON, never pair with it unnamed); gated per arm, rc 4 on mismatch; AC state, battery and fan setting logged. The desktop's larger card: 420 W as run. | own-silicon (derived $ on the two 24 GB cards, §5; **energy only** on the 96 GB card, P-6) |
| local, vLLM / llama.cpp (the "best owned runtime" column) | the docent seat's FP8 path; llama.cpp's `llama-server` on the **same GGUF blob** (Metal-portable) on each card; labelled, never mixed into the reference series (G-3, economics #6) | as the seat runs | own-silicon |
| **OpenAI API** | `openai-reading-0/run_openai.py` + `oai.py` (the exhibit-40 lineage: key from `~/projects/<a private project>/.env`, host pinned, redirects refused, key scrubbed); per-model accepted-parameter probe; `gpt-4-0613` at `temperature 0`, seed recorded; **`system_fingerprint` is null on all 108 anchor rows** (gpt-4-0613 returns none — method S-1; v1's "one fingerprint" was false), so backend drift is caught by the 1+1 repeat (§2.3); **Batch API where the id is eligible** (50 % off; probe first, incl. `gpt-4-0613` before 10-23; a ~20-item synchronous subsample keeps TTFT/latency — economics #19); `--task d` refuses unless `../DOORMAN-EGRESS-RULED` exists (G-1) | R-11: lowest effort + server default; `high` for one or two flagships inside the cap; the ratio takes the utility posture (§2.3) | **metered** (receipt; the credit balance read before and after each phase and reconciled against `spend.jsonl` — article M-10); cap in code |
| **Claude, sealed CLI** | `anthropic-reading-0/run_anthropic.py`: `claude -p` from an empty scratch dir, scrubbed env, `--tools ''`, `--strict-mcp-config`, `--no-session-persistence`, `--system-prompt ''` (**plus the CLI's ~429-token scaffold** carrying today's date and the account identity — `scaffold_sha` recorded per call, method C-4), `stream-json --verbose`; identity asserted per call (`modelUsage` + served snapshot; the CLI resolves the retired `claude-opus-4-0/4-1` ids to `claude-opus-5-5` — served model recorded); one call at a time (the shared window); task list without `d` until ⧖-4 — **the `reading` loop hard-codes `for t in ("c", "d")` at `run_anthropic.py:727`**, so a plain restart re-sends `d`; the hold patches that line or drives the per-model `run --task c` (§7 item 0) | `--effort` where accepted; no temperature | **no-figure-held**: the CLI's `total_cost_usd` is "client-side estimates and can differ from your actual bill" (the CLI's own docs — cite it); every row also carries a **derived direct-API 1× figure** ((input − the fitted 428.8-token scaffold) × p_in + output × p_out; batch × 0.5 beside) — only that enters a ratio (economics #16). The route rests on the Consumer Terms' automated-access exception for Claude Code's documented non-interactive mode, and `--bare` "will become the default for `-p`" (article S-1) → ⧖-6 |
| **Anthropic API** (⧖-6 (b)) | `anthropic_api.py`, a sibling of `openai_api.py`, Batch at 50 %, commercial terms | same | metered — only if an operator adds a key |
| **ollama.com shelf** | the laptop's signed-in daemon (`cloud-reading-0/cloud_run.py`): `format` dropped, `think` required, served model + version recorded; `deepseek-v4-flash:cloud` and `qwen3.5:cloud` retire 2026-09-25 (dated tags read instead); **all 28 `task: d` jobs in `queue.json` had completed by 17:25Z** (`drive.py`'s own `done()`: 28 done, 0 pending), so the hold there is a gate on `amend_queue.py` (which inserts `task: d` think jobs by itself, lines 17–20) and on any new queue entry (G-1, §7 item 0) | `think` false / true / level (R-11) | **plan-included** `$0.00*`, with "what these tokens list at" from the OpenRouter snapshot; ollama.com's terms: "We do not use your inputs or outputs to train AI models" (read 2026-09-23, to pin — article S-1) |
| **OpenRouter** (⧖-21) | the same open weights rented: provider pinned, quantisation stated, `:free` excluded; six-way on `gemma-4-26b-a4b-it`, `gemma-4-31b-it`, `mistral-small-3.2`, `qwen3.5-122b`, `gpt-oss-120b` → **rented $ per correct, measured** (G-17, economics #20) | as served | metered — a new key origin, $5 cap |
| Gemini / xAI (R-5) | only if keys are added; **paid tier only** | — | metered |

### 2.3 The reading protocol

- **A reading** is dated at both ends: it **opens** on the UTC day of its first registered cell and **closes** at the earlier of "all registered cells done" and a stated UTC date (article M-7). Reading 0 opened 2026-09-23T15:43:21Z (the smoke). **R-13 sets the article's target at Friday 2026-09-25**, so **rec: reading 0 closes at the article's pour freeze, 2026-09-25T12:00Z**, and carries the cells closed by then; everything not on the registered cell list at the close — expected: the anchor's other-set sweep (before 10-22), S1-2026Q4, the 70 B window's rows, the cross-walk arm — is **reading 0.1**, the working document's first dated update, closing no later than 2026-10-14T00:00Z. **The registered cell list decides, not the calendar** (check S-5): a window row or an anchor set that is on the list and lands before the close belongs to reading 0; one that is not on the list belongs to 0.1 even if it lands earlier. The registered cell list and the close rule go in `PREREG-S0.md`; `reading_closed_utc` is written to `KIT.lock.json` and every row; a cell measured after a close belongs to the next reading, never to a page already poured. **Reading 1 is on the calendar: 2026-12-23 UTC** (G-15), with `S1-2027Q1`.
- **Protocol `protocol.json`, versioned, its sha on every row** (method M-3). **P0** = what reading 0 sent: user-only messages; 8 visible tokens where reasoning is off; temperature 0 where accepted, else the vendor default. **P1 = P0 on messages and sampling**, plus: 4,096 output tokens where reasoning is on, the same locally and at the frontier (the Claude CLI is uncapped and says so; strict reads only the reply's opening, so the cap does not change it); `sampling: greedy | vendor-default` recorded; **the symmetric posture rule** — a model enters THE RATIO at its *utility posture*, the lowest reasoning setting it accepts that yields a parseable answer on ≥ 95 % of 20 dry-run items, else its default; the same rule locally, so `gpt-oss:20b` enters at `think=low` if that is where the rule lands; every other posture is R-11's price-of-thinking panel, never the ratio; **`budget_exhausted`** (reasoning hit the cap with no visible answer) is its own class, **counted wrong**, never excluded — the OpenAI lane's `refused: truncated` rows are re-classified. `ratio.py` refuses to mix P0 and P1 rows unless P1 = P0 on every field the row carries. Because P1 keeps P0's messages, every reading-0 row and the anchor stay valid; choosing an explicit system message instead would orphan them and force an anchor re-read before 10-22 — declined for that reason.
- **Triggers for a new reading:** new open weights on the roster (a weekly list from the HF API and ollama.com, sorted by `createdAt`, as a **gm line** — G-15), a new card, a new frontier release, and a quarter regardless. gm also carries: frontier deprecation notices touching a read id; the EIA month released; an OpenRouter move above 20 % on a roster model.
- **Anchors re-read in every reading:** local `gemma4:26b-a4b-it-q4_K_M@5571076f3d70` on every card (**the seat's bytes**: the laptop, the desktop and the mini node hold it; benchbox's K0 and the Jev comparator are the registry's current bare-tag build `08ae7ec1744b` — MTP draft + vision projector, `quantized_by: Unsloth` — and are relabelled so; method M-1, compute M-2); `mistral:v0.1@b17615239298`; frontier `gpt-4-0613` while it serves, then the next-oldest OpenAI id still callable, the change printed as a bridge row; the shelf bridge `qwen3.5:397b` or `kimi-k3`.
- **Bridges and moves** (method S-7): accuracy is carried across cards or runtimes only when item agreement on the same digest is **≥ 97 %**; below that the difference is published as an instrument property. A runtime move re-reads a **five-architecture panel** on the same card (`mistral:v0.1` llama, `falcon:7b`, `phi:2.7b`, gemma4 MoE, `granite4:32b-a9b-h` hybrid) under the same threshold. Every row carries `runtime_name`, `runtime_version`, `runtime_sha`, `driver_version`, `cuda_version`, `kernel`, `kv_cache_type`, `flash_attention`, `keep_alive_posture`, `draft_model`, `pcie_link_under_load`, `template_sha`, `system_layer_sha`, `system_handling` (G-4, compute M-4, method S-4); each arm's preflight reads the instance environment back (`systemctl --user show <unit> -p Environment`) and stores it. The benchbox instance runs the box's `/usr/local/bin/ollama` (0.32.13), so its **binary sha is pinned in the preflight** (compute C-4).
- **`num_ctx`:** the short sets (c, d36, f60, j; every item under 1 k tokens) run at **one registered `num_ctx` = 4,096 on every model and every card** (the trained window where smaller — the 2 k models), because a card- or date-dependent window moves KV allocation, speed and joules along the curve's own x-axis (compute M-5, G-3, method S-7); benchbox's backfill rows already use 4,096. The per-card ladder `min(trained window, the largest that fits)` applies to **task_a only**, where the window *is* the finding. **Dry-run item 12 runs before any laptop row counts:** the anchor at 4,096 and at 131,072, 12–20 items each, fresh runner, recording `load_duration`, `total_duration`, the runner PID per item and J per decision (benchbox's K0 spends 777.6 ms of a 999 ms median item in `load_duration` while resident — compute M-5).
- **Which pass is the score** (method S-1): local accuracy = **pass 1 (cold: unload, warm-load, pass)**; later passes are for energy, their item agreement with pass 1 printed and any disagreement as a range. Frontier: temperature-0 rows get **1 rep plus a 20-item determinism probe**; sampled rows get 3 reps (score = the mean; per-item correctness = the mean over reps; intervals by bootstrap over per-item means). **The anchor: 1 rep plus one repeat of the six-way (≈ $0.93) as the determinism receipt; a third pass only if the two disagree on more than 2 of 108 items** (economics #9; method S-1's 3-pass vector is the conditional fallback).
- **One reading per card at a time; one card calendar across trains** (G-2): a lock per card UUID (`~/.cache/card-locks/<uuid>.lock`: holder, train, expected end) taken by this harness *and* the Kev train's; one line per card per day in §7.
- **Drivers run as units** (compute S-7): benchbox's `queue.sh`/`arm.sh` on every box; the done-ledger keyed on `op + arm id + tag`, never a line number; an arm with no `rc=` line (killed by `RuntimeMaxSec`) is rc 3 failed, printed; every skipped cell prints why.

### 2.4 The metrics, with exact definitions (→ `METRICS.md`, R-10; a change is a new version)

**Accuracy.**
- **Parser v2 lands before any further figure is called strict** (method M-4): five lane-local "strict" rules exist today (`smoke/analyse_smoke.py:42`, `rtx-3090-reading-0/instrument/analyse.py:29` "v2-benchbox-0", `cloud-reading-0/tables.py` (`main()`'s `strict_accuracy` column), `anthropic-reading-0/tables_anthropic.py` (`cell()`, the `x_bare_letter` rule), `openai-reading-0/tables.py:211` — the two lane files are live and were edited after the method lens read them, so they are cited by function, not line (check S-4)) and a `[C] hypatia: Hypat` reply (gpt-4-0613 wrote 55 of 108 such, letter first, `finish=length` at the 8-token cap) is correct under some and not others. Every lane imports `parse_v2.py`; `parser_version` is its sha; lane-local figures are relabelled "provisional (lane parser X)" and never enter `series.jsonl`. The selftest carries every case found: `Einstein`, `Carl Sagan`, `Darwin said it.`, `Based on the style, [D] Ibn Sina`, `A line like this…`, `[C] hypatia: Hypat`, `**B**`, `B.`, `{"pass": false}`, an empty reply, a reply stating two letters.
- **Strict accuracy (headline)** = correct ÷ *all* items under parser v2: correct only when `format_class` is `clean` or `letter+name`; every other class (`word_letter`, `late_letter`, `name_only`, `json_verdict`, `contradictory`, `article_A`, `unparsed`, `budget_exhausted`) is wrong; an unparsed reply is never turned into a choice (v1 scored it as option 0 — the released 82.4 vs 81.5, ⧖-18). **Lenient** beside it; **`choice_v1`** kept on every row for continuity.
- **Intervals:** Wilson 95 % and the cluster bootstrap on every rate; the paired bootstrap (10,000 resamples, registered seed) on every difference and ratio. **A pass covering < 100 % of its set publishes counts only**, labelled with the item range in kit order (the first 49 task_c items are three guests — article S-6); **any cell with n < 30 prints counts, never a percentage** (tiers n = 20, C/D n = 12, buckets n = 6 — method S-10).
- **Saturation:** where both the cross-fit best local and best frontier are ≥ 97 % strict, the ratio prints "saturated — uninformative".
- **Refusal taxonomy:** `context-model` (exceeds the trained window) — a capability FAIL, shown as coverage; `context-card` (fits the model, not this card's KV) — a FAIL for that (model, card) cell; `provider-refusal` — its own class, out of the capability rate, reported as a disposition count outside any ranking (article S-7); `budget_exhausted` — wrong (§2.3); `failed` (transport, 404, timeout, our misconfiguration) — an instrument artefact, excluded, retried ≤ 2× byte-identical, and **a pass with > 2 % failed rows is INCOMPLETE and publishes no rate**. **`template-suspect`** (method S-4): a pass whose replies carry template control strings (`</s>`, `<|im_start|>`, `### Human`, `USER:`) on > 2 % of items publishes no rate until re-run on a verified template. A tag that cannot turn thinking off and writes no letter in 8 tokens is the protocol's verdict on the tag; its utility-posture row is its capability row.
- `format_failures` (counted wrong) and `instrument_artefacts` (excluded) are two columns, never one.

**Speed and latency (R-10c).** As v1: server fields, cold; TTFT streamed where the path allows; cloud latency network-included; median and p95. Plus `load_ms`, `eval_ms`, `total_ms` on every local row, because on the Jev six-way rows about 0.87 s of a 1.06 s item is neither prefill (155 ms) nor decode (~30 ms) (economics #6) — named before any t_busy enters a capital figure.

**Energy (R-6, R-10, R-10b).** As v1 (1 Hz board power by UUID, trapezoid-integrated; instrument named on every figure: board / wall / box delta / none), with: **J per correct printed two ways on every local row — whole-window** (what the owner's meter sees) **and compute-phase** (board power over the server-timed `prompt_eval + eval`), and `ratio.py` refuses a cross-card J or $ ratio when the cells' median `load_ms` differ by more than 2× unless the compute-phase figure prints beside it (compute M-5; K1's `mistral:v0.1` reads 538.4 J per correct on the 3090 against 153.4 on the laptop's system daemon, mostly per-item host time at resident-idle watts). **Net-of-idle** uses the median of the 60 s before each task in a minute whose co-tenant journal shows no request (compute S-10: the desktop's larger card read P1, 113.70 W with no bench on it). **Three named J/1k quantities, never a bare "J/1k"** (G-13): `j_per_1k_decode_probe@roster` (exactly `compare_cards`' conditions), `j_per_decode_token_task`, `j_per_prompt_token_task`. The desktop's box delta for reading 0 is the **CP2000** (`upsc cp2000 ups.realpower` on the desktop, integer watts, "includes the desktop's 3090 and the host"); BMC DCMI waits for one paste (`desktop-bmc.env` lives on the laptop, which has no `ipmitool`; the desktop has it but in-band DCMI needs root — compute S-6). **This is R-16 under R-0** (R-10b names the BMC; the CP2000 stands in until the paste, and the change of instrument prints as a dated delta); the reader drops `upsc`'s stderr — it prints "Init SSL without certificate database" before the value (179 W at 17:12:38Z, check S-9) — and parses an integer, refusing anything else, so a parse error can neither trip the guard nor pass silently. The laptop has no wall figure, ever; its cells read "unmeasured". **CO2e per correct** on local rows uses what-it-costs' round mixed-grid figure, "not measured here", never the local grid (G-22).

**Cost per correct answer (§5 has the model).** Local: two owner archetypes, three bands; frontier: the endpoint's own usage counters × the frozen price block, every call including failures; the batch row beside list.

**THE RATIO (R-3; its registered form is R-15 under R-0, because it departs from R-3's literal "best ÷ best")** (method M-2, M-11; article S-5; economics #18).
- **Comparator panels, named before each reading:** **F-closed** — the current flagship of each closed vendor we hold a key for, at the utility posture; **F-open-cloud** — the shelf's named open-weight flagships (≤ 3), printed beside as "cloud-served open weights", never as "frontier" (today's shelf top, `deepseek-v4.1-flash` 89.8 %, is open weights on someone else's card); **Fixed** — the anchor. The headline moving ratio uses F-closed.
- **"Best" is cross-fit:** split items by index parity, pick the best model on even items and score it on odd, then the reverse, average the two out-of-sample scores; the raw maximum prints beside it as "max of k = …, selection-inflated" (the max of k noisy rates at n = 108 sits 4–9 points high, and k changes with keys, budget and windows — method M-2's table). The numerator population is ★ and family rows at the registered posture, pinned runtime and quant; quant-axis, vLLM/llama.cpp and think variants are separations, never candidates.
- **Headline form:** the chance-corrected ratio R_cc = (L − b)/(F − b), b = 1/6 on the six-way; two-class sets use balanced accuracy with b = 0.5 (the doorman's always-refuse score is 75.0 % and several frontier rows land exactly there). Beside it: the raw ratio and the error ratio (1 − L)/(1 − F) (rule-of-three bound when F makes 0 errors). Every ratio prints numerator and denominator in full (model, card or endpoint, n/N, interval, reading, k), its paired-bootstrap interval, and its decomposition Δlog R = Δlog L − Δlog F.
- **A between-reading change is a finding only when the paired interval of the change excludes 0**; otherwise "no detectable change at n = …". Each set's minimum detectable change is recorded in PREREG (starting values ≈ 0.09 at n = 108, ≈ 0.15 at n = 36–48 — method M-11).
- **Fixed** = cross-fit best local ÷ the frozen anchor's S0 score (`gpt-4-0613` **88/108 = 81.5 %** on the six-way, rows stamped 2026-09-23T16:00:44Z→16:03:59Z — 15:50Z was the pilot; `panel/check_figures.py` F37 — `openai-reading-0/rows/gpt-4-0613.c.jsonl`, joined by `prompt_sha256`; PREREG freezes this row with the rows' own stamps). Both from `series.jsonl` only, same items, same parser version, refused when either side is missing or INCOMPLETE. Also the **bar-matched cost ratio** and **u\*/C\*** (§5).

### 2.5 The contamination argument, and how it is verified

**Two date fields, computed by script, never typed** (method M-7): `weights_bound_utc` (for R-1) = the latest commit touching the weight files at the revision the GGUF was built from, else `hf_lastmod`, or the date the manifest digest was first seen if later — **not** the repo's `createdAt` (a lower bound in the wrong direction: Granite 4.1 was created 04-06, released 04-29); `released_utc` (C1's x-axis) = the earliest public availability. `contamination = weights_bound_utc < set_first_public`, computed by `ratio.py`. **Verified on the correct field:** `hf_lastmod` precedes 2026-08-29 for all 58 roster records that carry it (latest: nemotron-3-super 08-25, nemotron-3-nano and -3.5-lightning 08-24, qwen3.8 08-14), so **every local roster row is clean by construction**; `nemotron3:33b-q4_K_M` carries no `hf_lastmod` and is unverified until it does. **Frontier rows:** the Claude registry states *knowledge* cutoffs, not training-data cutoffs → `cutoff_kind: knowledge`, and a Claude row reads `possible` on any set whose public date is at or after that cutoff unless a training-data cutoff is cited. **Endpoint posture** (method M-8): `postures.json` per endpoint (URL, read UTC, the quoted clause, the account setting's value where one exists — the Claude route has run on **two consumer accounts today** (the CLI was logged into a new account at 16:44:10Z, `anthropic-reading-0/restarts.jsonl`), and each account's model-improvement setting must be read, not assumed; each account is its own endpoint row) and `endpoint_training_posture: no-train-receipted | train-possible | unknown` on every row; **`EXPOSURE.jsonl`** records (set_id, endpoint, served model, item ids, bucket, UTC first/last, posture) for every egress, starting from reading 0's rows (the doorman's, as the row files stood at 17:21–17:25Z — re-read when the ledger is written: Claude — Haiku 48 items 16:08:54–16:18:32Z, Sonnet 5 48 (36 by 16:24Z; the file complete at 16:45:00Z), Opus 4.8 48 16:49:59–16:52:43Z, Opus 5.5 48 17:00:43–17:02:22Z, Fable 5.1 6 17:06:39–17:07:07Z, split by account at 16:44:10Z; the shelf — 27 row files, 1,293 rows, 14 tags (`rows/*.d*.jsonl`; v2's "12" was a `*.d.*.jsonl` glob that skips the plain `.d.jsonl` files), every one of the 28 queued `d` jobs complete; OpenAI — none: phase C in flight, D/E next); a later model from a vendor with a `train-possible` exposure reads `possible` on that set whatever its cutoff. **The consequence, registered now:** from the first reading in which any candidate on either side has `weights_bound_utc` or a training cutoff after 2026-09-23, S0 prints ratios only over clean rows and S1 becomes the headline set. **The canary probe** (method S-5): control = never-published lines from the same generators and personas (S1's lines, or the wall's withheld lines) — not the doorman lines (a different genre, and now exposed); statistic = the per-line longest verbatim word n-gram, test median against the control's 95th percentile, one-sided Mann–Whitney at α = 0.01; a positive **flags** `possible`, a negative clears nothing. **OLMo 3.1** (open data, cutoff Dec 2024) is re-aimed at the field exam's T1 rulebook excerpts (the corpus-index check is verified to exist before it is promised; its T1 − T2 gap compared with the other 2025 rows); on S0 it is vacuous. **Every future public kit file carries a unique GUID canary line** (BIG-bench style) under its own sha, so trainers can filter it and each reading can ask new models to complete it.

### 2.6 Where the series lives

```
bench/cost-of-intelligence-2026-09-23/
  PREREG-S0.md         the freeze (§2.0), git sha + UTC; amendments A-nn below it
  protocol.json        P0 / P1 (§2.3), sha on every row
  kit/                 COPIES of every set + KIT.lock.json (sha256, source path, freeze commit, UTC, first_public,
                       author_family, dinner_id, matches_seal + why_it_differs); pins.json (tag → digest; every pull
                       helper compares and exits 3 "failed: digest <got> != pin <want>", deleting the pull)
  coi.py               the runner: imports jev run.py's builders/Boards/verify_pin/refusal (never edits it);
                       sets, cards, prices and endpoints as DATA, no estate paths or box names in code (G-26)
  parse_v2.py          the strict parser + --selftest
  transports/          ollama · llama.cpp · vllm · openai (Batch + sync) · claude-cli · ollama-cloud · openrouter
  prices.json          every price CITED (url, read stamp, sha); p_e_rule; per-card price-of-record + its KIND
                       (PAID whole machine · LISTING · PAID card alone new · NONE/P-6); the rented-card hourly rate
  postures.json        endpoint training/retention posture receipts (§2.5)
  EXPOSURE.jsonl       every egress of every set (§2.5)
  supply.jsonl         model id, first read, deprecation notice URL + date, retirement date (G-21)
  receipts/pages/      pinned copies + manifest (URL, UTC, sha256, bytes, Wayback snapshot URL): Epoch's post and
                       figure, OpenAI deprecations + pricing, Anthropic pricing/models/deprecations, the three
                       providers' terms, the Claude Code headless page, OpenRouter (article M-10) — filled today
  METRICS.md           R-10's definitions, versioned; the bias-direction table; the archetypes; the reading close rule
  series.jsonl         THE APPEND-ONLY LEDGER (internal); series/reading-<n>.jsonl frozen per reading;
                       series/latest.jsonl pinned per addendum
  series.public.*      built by publish_series.py from a field ALLOWLIST (article M-6): verbatim replies only for the
                       visible answer on public sets from models whose licence was read first-hand; elsewhere
                       generated_sha256 + format_class + choice; reasoning text never, reasoning token counts yes
  coefficients.json    per digest × card × posture × runtime: J per prefill token, per decode token, per request of
                       overhead, idle W, row refs — the ONE file qm, what-it-costs and the roster read (G-13)
  ratio.py             reads series.jsonl only; writes THE RATIO, u*, C*, the staircase; types no number; emits NO
                       usd*/cost_*/u_star/c_star field for card_arch = blackwell-ws (P-6), with a test
  screen_public.py     the bench literal screen (the hub PATTERN + the desktop's larger card|the desktop's 3090 Ti|the desktop's 3090|\brl\b|benchbox|
                       this laptop|/tmp/claude-, the UUID rule, grep -a + a chunk walk over every binary chart)
  charts/reading-<n>/  R-9's C1–C5 (+ R-14's C2 shape), regenerated by script; a "latest" chart prints its window
  readings/<YYYY-MM-DD>/   rows, reports, watts, idle, preflight/postflight per cell; the reading-0 lanes' dirs
```

The **resume key carries every axis** incl. `runtime_version` and `driver_version` (the falsy-zero-pair law). Per-item joins key on `prompt_sha256`, never `id`. `coi.py` writes **born-clean** authored fields (`host_class`, paths relative to the bench root, run ids that name the run) — today's lane rows carry home-directory paths, `the laptop` and `benchbox` in 100+ files and the CLI raw carries `/tmp/claude-…` cwd paths (article M-6), so raw receipts stay truthful and are never packaged; `redaction-gate.sh` runs on the raw dirs **at each reading's close**, its zero-hit receipt in that reading's folder. **GPU UUIDs are the card's series identity key** (exhibit fifty-eight's kit already publishes `<withheld: GPU UUID of board A>` and `<withheld: GPU UUID of board E>` in its watts CSVs; `METRICS.md` says so — article C-2). R-7's roster step needs a publish first (`roster_data.py` reads only released kits) → ⧖-25.

---

## 3 · Bench 1 — the curve on each card (the historical backfill)

**The roster** is `recon/models.md` §2, verified against the registry (60 tags) and the HF API, reshaped into `pins.json` this week (Q-1; a lane refuses any row whose installed digest differs — benchbox's `pull.py` pulls by tag and compares nothing today, compute M-2). **The ★ rule, registered** (method S-2): ★ per half-year is chosen by an **external, dated, cited score — never our sets** — named per row in the pin file with its URL (the pin-file lane picks the source under that constraint; 2024H1 resolves to one ★); C5 and Bench 1's curve draw **★ rows only**; any "best of all rows" envelope prints separately with k and the cross-fit estimate; the page states the sampling frame in one sentence ("what ollama's library still hosts as GGUF in 2026"). Roles: ★ · family (each lab's line for C1) · alt (swaps in by rule on a failed load or licence check). Q4_K_M throughout, five Q4_0 exceptions stated. **The ★ rows, 24 GB class:**

| half | ★ tag · digest | weights date (`hf_lastmod` where verified) | why |
|---|---|---|---|
| 2023H1 | `vicuna:33b-q4_0` `86f0704901a4` (alt `falcon:7b-instruct-q4_0`) | 2023-06 | LLaMA-1 base; non-commercial (a licence note; outputs never ship) |
| 2023H2 | `yi:34b-chat-q4_0` `5f8365d57cb8` (+ `llama2:13b-chat`, `mistral:v0.1` the floor, `phi:2.7b`) | 2023-11 | strongest 2023H2 that fits 24 GB |
| 2024H1 | one of `qwen:32b-chat-v1.5-q4_K_M` `7975942ff0b1` / `gemma2:27b-instruct-q4_K_M` `cfd95e5696e9` by the ★ rule (+ `llama3:8b`, `gemma:7b-v1.1`, `phi3:14b-medium-128k`) | 2024-04 / 2024-06 | phi3-medium-128k is the first 24 GB row whose window holds task_a whole |
| 2024H2 | `qwen2.5:32b-instruct-q4_K_M` `9f13ba1299af` (+ `llama3.1:8b`, `mistral-nemo:12b`, `phi4:14b`) | 2024-09 | carries a SYSTEM layer — recorded, left in place (P1) |
| 2025H1 | `qwen3:32b-q4_K_M` `030ee887880f` (+ `gemma3:27b`, `mistral-small:24b-2501`, `mistral-small3.2:24b`, alts `qwen3:30b-a3b`, `deepseek-r1:32b`) | 2025-04 | hybrid thinking: utility posture + R-11's pairs |
| 2025H2 | `gpt-oss:20b` `17052f91a42e` (+ `qwen3:30b-a3b-2507`, `granite4:32b-a9b-h`, `ministral-3:14b`, `olmo-3.1:32b` the open-data control) | 2025-08 | pairs with the OpenAI line; MXFP4 native only on Blackwell → card-architecture column |
| 2026H1 | `gemma4:26b-a4b-it-q4_K_M` `5571076f3d70` (+ `qwen3.5:27b`, `gemma4:31b`, `qwen3.6:27b`, `granite4.1:30b`, `glm-4.7-flash`, alt `gemma4:12b`) | 2026-03 | THE estate seat model; the anchor bridge |
| 2026H2 | `qwen3.8:27b-q4_K_M` `25b843619e94` | 2026-08-14 | needs ollama ≥ 0.32.12 (dry-run item 1) |

**Quant control and the reference-runtime check** (method S-3): the 2023 end rides 2023 Q4_0 conversions on a 2026 runtime, so beside the seats on the desktop's larger card: `mistral:7b-instruct-v0.1` at Q4_0 / Q8_0 / fp16 and gemma4 at q4_K_M / q8_0 / bf16 (on the desktop's disk); if the Q4 penalty differs between generations by more than the paired interval, a quant-adjusted line prints beside the raw one. **Before the addressee finding is published,** mistral-7b-instruct-v0.1 in fp16 under vLLM or transformers with its HF chat template reads the six-way beside the seats — the two 10/108 rows share one runtime and are not independent. **The runtime-vintage control** (economics #17): one 2023 ★ on a mid-2023 llama.cpp build against 0.32.13, **on the 3090 only** (Ampere runs a 2023 build; the Blackwell cards cannot) — the "little runtime gain" measured, not assumed. **The dry run prints the rendered prompt once per architecture** (llama2 `[INST]<<SYS>>`, mistral v0.1, gemma, vicuna `USER:/ASSISTANT:`, qwen `<|im_start|>`, gpt-oss harmony) and confirms from `prompt_eval_count` that the layer arrives (method S-4).

**The desktop's larger card's rows** (§6): beside the seats, **admission-ruled** (compute M-8): `qwen3.5:35b-a3b` (2026H1, on the desktop), `nemotron-3-nano:30b-a3b` (2025H2), `nemotron-3.5-lightning:30b-a3b` (2026H2, on the mini node), `falcon:40b-instruct-q4_0` (2023H1) **only after its growth is measured once on a 24 GB card** (the recon's KV figures for it disagree, 0.23 vs 3.75 GiB); **`mixtral:8x7b` and `nemotron3:33b` move to the window list** (25.6–26.2 and 25.7 GiB against a 25.0 GiB admission line). In a seats-down window: `llama3.3:70b` (on disk) first, then `llama2:70b-chat`, `llama3:70b-instruct`, `qwen2.5:72b-instruct`, `llama4:17b-scout-16e`, `gpt-oss:120b`, `qwen3.5:122b-a10b` (on disk), `mistral-medium-3.5:128b` (also on Mistral's API — the cleanest owned-vs-rented pair), `nemotron-3-super:120b-a12b`. 2026H2 has nothing bigger than Lightning that fits 96 GB (`qwen3.8-flash-next:125b-a6b` is 105 GB at NVFP4) — recorded per reading as the **obsolescence indicator**: the newest ★ that fits whole, per card, with its release date (economics #26).

**The context-window curve.** task_a's pages run to 82,500 tokens; 5/63 fit at 4,096, 36 at 8,192, **54 at 16,384** (v2 said 53, which holds only at a 16,000 boundary — one page is 16,374 tokens; the rule is the power-of-two `num_ctx` boundary the other four counts already use, registered in `METRICS.md`, §11 #15; check S-2/F24), 59 at 32,768, 63 at 131,072 (`rows/census.gemma4-26b.json`). Every 2023 row has a 2–8 k window, so on task_a Bench 1 measures how windows grew and its `context-model` refusals are the finding; `task_a@8k` carries the bar (§2.1). The dry run checks whether ollama silently truncates an over-window prompt.

**Disk, pulls and floors** (compute S-4, M-6; G-5, G-18). Each box pulls its own copy by explicit tag + pin into its bench store; **the rsync hub is dropped** (the desktop's seat store is `ollama:ollama 755`, `STORE_NOT_WRITABLE`, `fs.protected_hardlinks = 1` — a pull through it would touch the live daemon). Floors, checked by `/bin/df` before every pull: **the laptop ≥ 60 GiB free after any pull** (~127 GB free at 16:2xZ; the nightly scribe dumps and the restic leg live here), **benchbox 30 GiB** (69 GB free at 16:25Z), **the desktop ≥ 400 GiB** (838 GB free; a 24/7 box). The laptop and benchbox **delete after each arm**; the desktop persists **only the anchors and its own ★ rows** (≤ ~320 GiB); the full ★ archive (the 24 GB ★ set is 134.9 GiB; every 24 GB row 388.8 GiB; the ★-only path across all cards ≈ 450 GiB) is the **cold drive's** job (⧖-24), with every blob's sha checked on write and each quarter. The desktop's B-1 rows (`gemma4` `5571076f`, `mistral-small3.2` `5a408ab5`, `qwen3.5:35b-a3b` `3460ffee`, ≈ 53 GiB) are **copied** (`cp`, not hardlinked) from the seat store into the bench store and sha-checked.

**Frontier backfill limits (dated, sourced — models.md §8; pages pinned today, article M-10).** OpenAI is the spine (R-4): callable back to `gpt-3.5-turbo-0125` and `gpt-4-0613` ($30/$60, its 2023 launch price, never repriced); `gpt-3.5-turbo-instruct/-1106` close **2026-09-28** (the instruct model, 2023-09 on the completions endpoint, joins the roster through `/v1/completions` — ≈ $0.05, before 09-27; G-8), `gpt-4-0613`, `gpt-4-turbo`, `gpt-4o-2024-05-13`, `o1`, `o3-mini`, `o4-mini` close **2026-10-23**, `gpt-5*` and `o3` 2026-12-11. Launch prices receipted in `openai-reading-0/receipts/launch-prices/`. **The Claude line reaches back to 2025-09**, and seven older ids still serve as themselves (`claude-sonnet-4-5-20250929`, `opus-4-5-20251101`, `opus-4-6`, `opus-4-7`, `sonnet-4-6`, `opus-5`, `fable-5` — `ANTHROPIC-READING-0.md`, "The older IDs"); the earliest, `sonnet-4-5`, "retires no sooner than 2026-09-29", so it is **first in the Claude queue** (≈ $1.35 list-rate, an estimate; G-8), then the rest by closure date; the Claude launch prices get Wayback receipts (G-7). So the frontier curve on our tasks is **OpenAI 2023→2026, Claude 2025-09→2026, the shelf 2026**, and the page says so, with the missing steps (`gpt-4-0314`, the previews, every Claude 3.x) named with the direction they could bias the rate.

**Our own Epoch staircase, registered today before phase C completes** (G-7): `C_ours(t, bar)` = the minimum, over frontier ids released on or before t whose strict accuracy (rep mean) ≥ the bar, of $ per item at the **launch-price block** — Epoch's unit on a task set that postdates every model; bars B-anchor and one lower bar (rec: 60 %); the rate as the log-point slope first step → last plus each step's factor, no fitted curve; survivorship listed. Output: one sentence — *Epoch's 47 %/quarter on public benchmarks against X %/quarter on a set no model could have seen* — with the direction held in advance.

**The reading-0 rows on the curve** (all 2026-09-23 UTC; every strict figure is **provisional (lane parser)** until v2 re-scores it):

| cell | strict / v1 (six-way unless stated) | cost or energy | file | series? |
|---|---|---|---|---|
| `mistral:v0.1` · laptop · the **system** daemon 0.32.14, KV q8_0 (the smoke) | 10/108 = 9.3 % (Wilson 5.1–16.2 %; below chance: the addressee floor) | 153.4 J/correct gross, 118.7 net; 145 tok/s | `smoke/rows/pass1/`, `smoke/rows/figures.json` | **no** — a smoke (compute M-3) |
| `mistral:v0.1` · benchbox **K1**, `<withheld: GPU UUID of board A>`, 300 W, :withheld-2026-10-14, `num_ctx` 4096, f16 | 10/108 = 9.3 % | **538.4 J/correct board gross (246.8 net); 690.1 wall**; 0.248 s median | `rtx-3090-reading-0/rows/FIGURES.md` | yes, provisional |
| **`gemma4:26b@08ae7ec1744b`** · benchbox **K0**, 300 W (the registry's current bare tag: MTP draft `draft_num_predict 3` + vision projector; **not the seat's bytes**) | 88/108 = 81.5 % (82.4 v1); 108/108 identical text to Jev arm 1 (`k0-vs-jev.json`) | 176.3 J/correct board gross (46.9 net); 275.6 wall; 1.000 s median of which 980.9 ms is server time before decode | `rows/FIGURES.md` | yes, provisional; **relabelled**; the draft-on/off pair with the anchor row is a speculative-decoding finding **only once read at one `num_ctx`**: K0 ran 131,072 and the anchor arm runs 4,096, and the projector differs too (check S-6) — read the anchor once at 131,072 as well (dry-run item 12 already does, on the laptop; one benchbox pass at the next slot), or call the pair confounded |
| `gemma4:26b@08ae7ec1744b` · benchbox 3090 @ 250 W · Jev arm 1 | 88/108 strict (89 v1) | **194.3 J/correct gross, 37.5 net** (strict; v1's 192.1/37.1 divided by 89 — G-18); 1.060 s | `jev-2026-09-21/rows/base-generate.c.report.json` | reading "pre-0" (G-6) |
| `gpt-oss:20b` · laptop system daemon · think off, 8 tokens | 16.7 %: 108/108 unparsed — a protocol verdict | — | `cloud-reading-0/calibration/` | **no** — a calibration |
| **`gpt-4-0613`** (R-2's anchor) · temp 0, seeded; fingerprint null | **88/108 = 81.5 %** (0 unparsed; 55 replies hit the 8-token cap letter-first) | **$0.9553** metered = $0.0109 per correct | `openai-reading-0/rows/gpt-4-0613.c.jsonl` | yes |
| OpenAI phase C in flight (`gpt-4.1-nano-2025-04-14` rows at 17:21Z; phases D/E next) | pilots, not rates | **$3.9066 spent by 17:21:43Z** (`receipts/spend.jsonl`, `usd` summed; v2's "$2.2676" was the total at 16:40:46Z, not 16:43:56Z — check F05); projected A–E $7.66 of the $12 cap | `openai-reading-0/receipts/` | yes when complete |
| the shelf, 16 tags (exact + think) | `deepseek-v4.1-flash` 89.8 %, `kimi-k3` 88.9 %, `qwen3.5:397b` 86.1 %, `glm-5.2` 85.2 %, `mistral-large-3:675b` 84.3 %, `gpt-oss:120b` think 82.4 %, `glm-5.3` 15.7 % (protocol) | `$0.00*` plan-included | `cloud-reading-0/CLOUD-READING-0.md` | yes (F-open-cloud) |
| `claude-sonnet-5` · CLI · one sampled pass | **102/108 = 94.4 %** (v1; 7,705 output tokens) | $1.4972 list-rate spent by the lane at 16:24Z, all models | `anthropic-reading-0/rows/claude-sonnet-5.c.p1.report.json` | yes (F-closed candidate) |
| `claude-haiku-4-5` · CLI · complete | 84/108 = 77.8 % (v1; 74,757 output tokens, 65,932 thinking) | derived direct-API figure owed (economics #16) | `rows/claude-haiku-4-5.c.p1.report.json` (84/108, 74,757); the 65,932 thinking tokens are in `ANTHROPIC-READING-0.md`'s table, not the json (check S-3) | yes |
| the Jev arms, reading "pre-0" (G-6): OpenJev FP8 readout on the desktop's larger card (seats-down, 420 W) **101/108 = 93.5 %, 28.9 J/correct gross** (CC BY-NC, bench-only; 93.5 is the best of six option orders, mean 91.4); Kev-9B zero-shot readout on `<withheld: GPU UUID of board A>` 72/108, 39.2 J; gemma-4-26B FP8 vLLM generate TP=2 on the benchbox pair 88/108, 34.0 J (two cards, `split: TP=2`) | as stated | as stated | `jev-2026-09-21/rows-arm3/…`, `rows-gaps-card/…`, `rows-addenda/…` | yes, with `mode: readout \| generate`, `split`, `window`, `licence`, `servable` flags |

**The sentence the page may write, and its gates** (method M-6, M-9; article M-8; economics #14). On these 108 items `gpt-4-0613` and benchbox's `gemma4:26b@08ae7ec1` disagree on 14: **7 anchor-only, 7 gemma-only, exact McNemar p = 1.000, paired difference within ±6.5 points at 95 %** (`panel/method_checks.py` [2]) — "indistinguishable at this n", never "the same". It is written only if (a) that paired test holds on the reference card's `5571076f` row through `coi.py` at 300 W, and (b) the match survives on the **mistral-authored lines** (counts, not percentages: n < 60), with the confound named in the same sentence, the row's board UUID, cap and harness cited. The Jev row stays a bridge.

---

## 4 · Bench 2 — the threshold ladder (bars pre-registered)

The ladder answers Epoch's question in our units: **for each bar, at each reading, the cheapest (model, card) that clears it — and its J and $ per correct.** "Cheapest" is defined (§5): **archetype-A levelised at a stated primary u**, one ladder per registered u; archetype-B rows, the 96 GB card and the laptop's C = 0 row rank on **joules only**, labelled; fuel-only never ranks against a cloud price (economics #5). The ladder carries a **`method` axis** (generate · readout · specialist) and a **`servable`** column (Apache/MIT/Gemma-terms yes; CC BY-NC no); the cheapest clearer prints twice, any licence and servable; THE RATIO stays generate-only (G-6).

| bar | set | definition | reason |
|---|---|---|---|
| **B-chance** | six-way | > the addressee floor 24.0 % (Jev README), not 1/6 | a 2023 model reads *below* chance by picking the addressee (SMOKE §2) |
| **B-anchor (R-2; the test below is R-15 under R-0, because it departs from R-2's literal "within its interval")** | every S0/S0.1 set (task_a via `task_a@8k`) | a **paired non-inferiority test** against `gpt-4-0613` on identical items (method M-6): 10,000-resample paired bootstrap of the difference, registered seed; **clears** = the point difference ≥ 0 and the lower 95 % bound ≥ −δ; **clears with margin** = the lower bound ≥ 0; δ = 5 points at n ≥ 100, 10 at n < 100; the anchor's other-set scores land inside reading 0 (⧖-5) | the true analogue of Epoch's fixed capability; v1's "within its Wilson interval" read two ways (81.5 or 73.1) |
| **B-seat** | six-way, doorman-36, judge | the same paired test against **`gemma4:26b-a4b-it-q4_K_M@5571076f` on the reference card at reading 0** — **no number until that row exists** (benchbox's 88/108 is build `08ae7ec1`); the docent's FP8/vLLM seat is its own cell | "good enough to be our seat" |
| **B-frontier-90** | each ratio set | ≥ 0.90 × the cross-fit F-closed best at the same reading (moving); a debut-age bar (≈ 75×/year in Epoch's decomposition) | the "frontier enough" precursor |
| **B-field** | f60 native | the exam's registered bars (T1 ≥ 17/20, T2 ≥ 14/20, T3 ≥ 17/20, overall ≥ 48/60, floor T2 ≥ 10/20 — `bench/field-exam/PREREG.md` §4) — **carried over only after two models with published 08-25 native answers (`gemma4:31b`, `qwen3.6:27b`) re-read under the prompted T3 wire land within ±2 per tier** (method S-10); tier crossings provisional; tiers print counts | a fixed capability bar that exists in print |
| **B-doorman** | `doorman36-json` only | all 24 in-contract planted lines refused AND 12/12 controls admitted, printed as "clears: error ≤ 8.3 % at 95 %" (rule of three at n = 36); on sampled backends every rep must clear; a crossing is dated only after two consecutive readings, the second on a fresh runner on a different card (method S-9) | the product's contract; C/D as disposition |

**"Cheapest clearer" headline:** the cheapest model must clear on both parity halves (odd and even items), or on S1 once it exists; otherwise "provisional". A bar both sides saturate prints "saturated" and no cheapest-clearer. **A rung rejected by its own gate gets no threshold table.** Across readings: the point-to-point factor per bar between dated readings; **no slope fitted to two or three points, no ×/year under 12 months.**

---

## 5 · Bench 3 — the break-even that moves: the cost model and its caveats

**Two owner archetypes, registered in `METRICS.md`; every cost row carries one; no ratio or ladder mixes them** (economics #1 — v1 costed the 3090 as a card buy, the laptop as a whole machine or free, and the desktop's larger card at the margin: three questions in one column).

- **A · the buyer** (forward-looking; the decision a reader faces). C = the **replacement cost of the whole working machine** at the reading's date, a dated listing re-read each reading: **the 3090 = the rig with one card, $3,198.86 on 2026-09-13 before tax** (exhibit 46, `site/home-inference-and-diffusion-rig-cost`), re-read; **the laptop = $3,099.99, PAID whole machine**, ordered 2026-07-03 (exhibit 57), its box idle "unmeasured, understates" until a plug meter exists; **the 96 GB card: no C, no C\*, no dollar cell** (P-6). **Fuel gross** (whole-window board joules; box joules where measured — benchbox's UPS net of box idle; elsewhere board ÷ 0.9 labelled "assumed", economics C-24) **plus idle** P_idle × (1 − u)/u × t_busy × p_e — the one-line derivation in `METRICS.md`: per busy hour the true energy is P_busy + P_idle × (1 − u)/u; v1's "net fuel + idle" dropped P_idle × t_busy (≈ 9 % for a 3090 at U100 — economics #13). Capital per answer = annual capital ÷ the answers actually served per year (equivalently U_demand in t_busy units). A **card-only** row (the 3090's LISTING $1,879.99 renewed, read by hand 2026-09-17 15:00–15:30 UTC — the only card-only price on the shelf) prints for the 3090 alone, labelled "not comparable across cards"; a laptop card-equivalent (the chassis price delta to the next GPU down, dated listings) is a COULD (economics C-25).
- **B · the incumbent** (the estate as it stands; sunk capital). Capital = the opportunity cost of not selling, **V × (r + δ)**: V = today's resale value (a 3090: **$1,094.44**, August 2026's average completed sale, exhibit 46); r = the 3-month Treasury bill yield at the reading's date (FRED `DTB3`, cited); δ from the card class's own dated price history on the hub, rule stated. Laptop: C = 0 (bought for development anyway). The desktop's larger card: 0, marginal. **Fuel net** of idle, no idle term.
- **Never mark to market in the headline** (owned cards *appreciated* in 2026 — a renewed 3090 $1,449.99 paid in May → the same renewed listing $1,879.99 in September, exhibit 46); the **holding gain or loss per card prints as a labelled line outside the LCOI, with its sign** (economics #14). **Struck from this plan and every page:** the "$1,899 pair" (`hardware.yml did_not_come:` — the seller was a scammer and the money was refunded; the boards never arrived) and the $1,849.99 figure (struck for exhibit fifty; article M-2). The economics recon's three lines carrying those figures — the "$1,899 each … as spares" row, the "ambiguous between $1,449.99 and $1,899" gap, and "$1,449.99 in May to $1,849.99" — are **struck in `recon/economics.md` with the reason by this patch** (check MF-7: v2 had said "corrected" while the lines still stood), so no lane re-imports them.

**Primary convention and the bias table** (⧖-10; economics #4): **n = 3 years, R = 0, i = 0 (straight line)** stays primary for archetype A, with the **user-cost row** (archetype B's V × (r + δ)) and n = 5 / i = 5 % as sensitivity rows — and a **bias-direction table** in `METRICS.md`: for each choice (C kind, n, R, i, u, c, idle scope, fuel gross/net) which side it favours and by how much on the anchor row (the primary charges a 2021 board at a 2026 peak listing written off in three years while the class resells at $1,094.44 after six — roughly 1.5–2× the economist's user cost). **The rule: "owning wins" or "owning loses" prints only if it holds under the sensitivity row most favourable to the losing side**; otherwise "depends on the convention: X under …, Y under …".

**p_e, the price of electricity.** Primary = the latest EIA table 5.6.A U.S. residential month at the reading's date (**June 2026: 18.34 ¢/kWh**, read 2026-09-23 ~15:36Z, `recon/sources-economics/prices/eia-…html`; the July figure releases 2026-09-24 and applies to readings from then), frozen per reading; the **trailing-12-month mean prints beside it once twelve receipted months exist** (economics C-23; each release receipted from now). **Like periods only** (economics #8, article M-4): June 2026 18.34 ¢ against **June 2025 17.47 ¢** (+5.0 % nominal, the same table), never an annual figure against a month, never Epoch's workbook series (Hersh, Virginia Tech, a private communication) mixed with EIA in one sentence; registered as `p_e_rule` in `prices.json`. Sensitivity rows at commercial 14.19 ¢ and industrial 9.17 ¢ (the fairness row); a national figure, never this workshop's bill. **Nominal vs real in reading 0** (economics #8): every dated price (launch prices, the ladder's "then vs now", the thesis) deflated with CPI-U (FRED `CPIAUCSL`, the price's own month), both columns printed wherever a rate meets Epoch's real-dollar line.

**u, utilisation** (economics #3): v1's "Umeasured" was the desktop's larger card's power-tick duty applied to a 3090 in storage, and it counted the benches (24 of 09-22's 149 busy ticks fall inside Jev arm 3's seats-down window). Registered instead: **U_demand** = Σ over request classes of (served product requests in the window × the measured t_busy for that class) ÷ the window, bench windows, the canary and the warm-seat re-pins excluded and listed, from **qm's call records** (one record per request: app, seat, model, ms, tokens — G-12) — the estate's demand, applied to every card, labelled "the estate's demand, served on this card" (the request-derived duty of the live seats is about 0.66 %: ollama 0.37 % + vLLM 0.29 %, recon estate §0.2/§1.3); the **tick figure** as a second labelled row with bench hours removed; the scenarios **U100** (the card's ceiling) and **U25** (six hours a day, D-20260912-18); and **u\***. Beside every u, **what it means in answers per day** (U25 is about 20,400 six-way items a day at c = 1; the door logged 174–211 real calls a day, recon estate §0.2). The page says the honest u makes the result against owning *stronger*. Never publish hour-of-day utilisation profiles; aggregate over ≥ 24 h (article C-1).

**Concurrency and symmetry** (economics #6): whatever operating mode the cloud's price row assumes, local gets the same mode **measured**: batch/queued → a local queued arm at the card's best c (the laptop's 354 tok/s summed over four callers vs 155.3 for one; a 3090 ~210 at two — exhibit 57) **with its own measured joules per answer** (fuel at c is measured at c, never carried from c = 1); cached input → a warm-prefix local row. Register c = 1 (a person at a keyboard) and c = best measured; the page says which c each row assumes. The ~0.87 s per item of unaccounted time on the Jev rows is named before t_busy enters any capital figure; if it is per-request runtime overhead, the queued arm removes most of it and the levelised cost on input-heavy sets falls — a result owed to local.

**u\* is a property of a set's token mix** (economics #2): each set prints in/out tokens per item beside its u\*; the GPQA-profile figure appears only inside the cross-walk, labelled Epoch's profile. **Printed forms when there is no solution** (economics #11): u\* > 1 → "no break-even at this concurrency: owning costs more than renting even when busy every hour"; C\* ≤ 0 → "no purchase price breaks even at this duty: the idle draw alone costs more than renting". C\* is computed on the card's **whole served demand** (all tenants' requests valued at the rental rate of the same work), the bench workload as a labelled scenario.

**Frontier:** `cost_j = (in_uncached × p_in + cache_write × p_cw + cache_read × p_cr + out_total × p_out) × m_geo × m_batch`, out_total incl. reasoning tokens, every call incl. failures; the price block `{url, read_date, sha, in, cached_in, cache_write, out}` frozen per reading; the **batch row is a receipt, not a multiplication**, wherever the sets ran through Batch (economics #19); the Claude rows enter only through the derived direct-API figure; with 3 reps, $ per correct = the mean over reps of each rep's bill ÷ that rep's correct answers. **"Renting the same weights"** (economics #20, G-17): the comparator is the **median provider price with its quantisation stated**, the minimum beside it (Epoch's convention), `:free` excluded by rule, the per-provider endpoint list in the daily snapshot (Q-6), and — with ⧖-21's key — **rented $ per correct measured** through the same provider the price is taken from. **"Rent the card"** (economics #15): a dated public hourly rate per GPU class × our measured seconds per answer at the same c, in `prices.json`; API ÷ rented-card = the provider's serving, batching and margin share; rented-card ÷ owned = the ownership share; our U100 band calibrated against Epoch's `gpu-effective` $0.001895 per GPQA question for mistral-small-3.2. (A rental rate for the 96 GB class is a dollar figure tied to that card → inside ⧖-12.)

**Bands, printed for every local reading on the two 24 GB cards:** (1) **fuel only** — "the meter only, not a price", never in a ratio with a cloud price; (2) **levelised, archetype A at U100 / U25 / U_demand**, and archetype B; (3) **u\* and C\*** against the same weights rented and against the frontier — the headline economic numbers on the cards that have a price. **The 96 GB card publishes energy only**: J per correct (board; box delta labelled "includes another card and the host"), kWh per 1,000 correct, tokens per joule; its `$` cells carry `blank_reason: "P-6"` (PRICES.md P-12's corollary); `ratio.py` refuses to emit any dollar field for it (article M-1). **The cost ratio is matched to a bar** (economics #5): at bar B, (cheapest local clearer, archetype A, stated u) ÷ (cheapest frontier clearer of B), within one think-setting class. **$ per correct prints only for rows that clear B-chance**, with an interval (cost ÷ N × the Wilson bounds) and, labelled, "$ per correct above the floor" (economics #22 — v1 priced a below-chance row at $0.0078 per 1,000 correct). **Epoch's unit** ($ per question at a fixed accuracy) = $ per correct × accuracy, printed for the cross-walk. **The fuel share prints on every levelised row** (fuel is ~14 % at U25 on the sketch's inputs — the isolated plants lost on capacity factor, not on coal; economics #21).

**What this page does not price** (economics #14; a block in §8): **operator time** (runbooks, outages, windows, the Xid wedges, pastes, every reading's dry run) — printed as hours over the window by a stated rule (the ledger's seat incidents and pastes; scribe session hours tagged to seat operations), never priced in the headline, a dollar row only on an operator's ruling of a rate; **this isolated plant's operator is itself metered central-station intelligence** (Claude Code agents on a subscription run the estate's operations) — said plainly; the **flat-rate lens** (scribe's `v_costs` already meters every session: 2026-08-24→09-23, 194.0 M output tokens, 151.14 B cache-read, raw and **not yet de-duplicated** — G-19; public only on an operator's word).

**Caveats, stated on the page:** board ≠ wall (UPS losses and cooling unmetered; a home's summer "PUE" unknown); the laptop has no wall column; the desktop's larger card's J include the live seats and carry `shared-card` + co-tenant counts; the 0.9 PSU factor is assumed and marked.

---

## 6 · The desktop's larger card

**What is there now** (estate §1.1–1.2 and compute §R, 16:24Z): 97,887 MiB total, **66,266 used, 30,985 free**; four tenants — the docent/long-table vLLM seat (45,440 MiB; `--gpu-memory-utilization 0.46`), the ollama answerer seat `gemma4:26b` (18,846), nomic (996), the reranker (956); cap 420 W; it read **P1, 113.70 W** with no bench on it (a seat mid-request), so "17 W at P8" is not a constant (compute S-10). Load: 13.0 real requests an hour on the ollama seat, 2.46 on vLLM; quietest band 16–18Z (internal; never on a page).

**Option (a) — beside the seats, in headroom: the lead's call, no ruling** (precedent D-20260920-135; nothing goes down). **Admission rule** (compute M-8): a model is beside-eligible only when predicted growth = weights file + KV(4,096, f16) + 1.0 GiB ≤ **25.0 GiB** and its whole-fit growth has been measured once on a 24 GB card or in a window (the I-4 floor allows 26,889 MiB; a CUDA context costs 0.3–0.5 GiB more). `OLLAMA_GPU_OVERHEAD` on the desktop instance = (free MiB at start − 26,624) × 1,048,576 (4,572,839,936 at today's free), so ollama's scheduler spills (a refusal) instead of breaching (compute M-7). **Residency and fit are per-process**: the bench's memory = the sum of `--query-compute-apps` over the PIDs in the bench unit's cgroup (5 Hz for the first 60 s of a load, then 1 Hz); "elsewhere" = any bench PID on the desktop's 3090's UUID (must be none); WHOLE = growth ≥ 90 % of the tag's store bytes and `/api/ps` shows no CPU share; a spill is refused before the first scored item. Its own instance on **:withheld-2026-10-14**, loopback, driven from the desktop, the seat store never opened, `desktop-warm-seats.timer` untouched. Announce box · card · arm · minutes to peers first, saying that a second gemma4 copy loads beside the seat's (invisible on :withheld-2026-10-14 — compute C-3).

**The guard is a unit, not a table** (compute M-9): `coi-guard-desktop.service` (`systemd --user`) starts first; the bench instance runs with `BindsTo=coi-guard-desktop.service`, `After=`, and `RuntimeMaxSec=<seconds to the window's end>` — a dead guard stops the bench (fail closed) and the window's end stops it regardless. The guard reads locally:

| id | instrument | trip |
|---|---|---|
| I-4 / I-5 | `nvidia-smi` 1 Hz (5 Hz during loads): free ≥ 4 GiB at every sample; bench growth ≤ 26 GiB; board ≤ 85 °C | STOP at once |
| I-2 | `http://withheld-2026-10-14/metrics` every 60 s: inter-token mean ≤ 1.5 × 5.62 ms; prefill ≥ 0.67 × history (≥ ~7,170 tok/s); error + abort = 0 | any error/abort or latency breach → STOP |
| I-1 | the canary's own `[GIN]` POST line (`?probe=estate-watch`) in `journalctl -u ollama.service`, total ms (BEFORE median 218.1, p95 402.5 — recon §1.3(d)) | one canary > 2 × BEFORE p95 (> 805 ms) while a bench item is in flight → the queue pauses before its next item; two in any 10 min → STOP (the 10-min median ≥ 0.85 × BEFORE stays the reported figure) |
| I-3 | the door's rows for the desktop members (a the laptop-side reader with its own `ssh the desktop 'systemctl --user stop coi-ollama-desktop.service'` — a **second** stop) | any failed row → STOP |
| UPS | `upsc cp2000` load ≥ 80 % (compute C-1) | STOP |

STOP = unload and stop the bench unit; seats never touched; recovery receipt = the canary back within ±5 % of BEFORE inside 10 min (else an incident). **Validity** (compute S-5): accuracy is never voided by a collision (temperature 0); speed and energy are computed over **collision-free items only**, joining each item's server-timed window to the seat journal, the vLLM counter and the reranker's own log (`rerank-seat-withheld-2026-10-14.service`; the door does not see the public host's direct traffic); the excluded count is printed and only colliding items re-run (≤ 2×) at the arm's end. BEFORE = 60 min before the first load + the canary history; AFTER = 30 min after the last unload. Dry-run item 10 is a **synthetic trip** (`--selftest-trip I-4`), with the stop and recovery receipts opened — "by hand" is not the test.

**Option (b) — a seats-down window: an OUTAGE of 24/7 products (D-20260905-50) → an operator's explicit ruling with the hour named and a banner (⧖-3).** Precedent 2026-09-22 04:00–04:21Z (`bench/jev-2026-09-21/RUNBOOK-ARM3-OUTAGE.md`). **Rec: shape S** (docent-vllm only; rulesage, amble, the beat lab, the classifier and the reranker stay up; the hub assistant and the long table's gemma roles refuse), **45 min, 2026-09-24 16:00–16:45Z**, free ≈ 74.6 GiB → `llama3.3:70b` first on the gated task, then a 2023 70B or the quant axis. **The restore fix** (compute M-10): with the 70B resident (≈ 41–42 GiB) the desktop's larger card has ≈ 34 GiB free and docent-vllm needs 45,028 MiB to start, so the adapted runbook's dead-man line 1 is `systemctl --user --machine=operator@ stop coi-ollama-desktop.service`, then it polls `memory.free` on `<withheld: GPU UUID of board C>` until ≥ 46,000 MiB (≤ 60 s) before `systemctl start docent-vllm.service`, printing `BENCH NOT GONE` and stopping otherwise; the bench unit's `RuntimeMaxSec` ends 5 min before the window closes; I-1, I-3 and the guard run through the window for the seats that stay up. **The window's stop/restore/dead-man lines are an operator's fresh-terminal pastes, handed over runnable before the window, never overlapping a benchbox swap or cap paste** (compute S-9; the auto-mode classifier has refused the lead remote shell writes here before). The banner names the window in UTC and nothing about hours of day (article C-1). Shape L (the answerer seats down too; ≈ 94.6 GiB) only on its own ruling, for `qwen3.5:122b`. A 70B dense Q4 decodes at an *estimated* 25–35 tok/s (the window measures it).

**Which models only the desktop's larger card can read:** the admission-ruled beside set (§3), the window class, the **quant axis** (gemma4 q8_0 26.1 / bf16 48.2; Mistral-Small-3.2 q8_0 24.1 / fp16 44.7, on the desktop) and the **same-weights-different-runtime** column (the docent's FP8 under vLLM vs Q4_K_M under ollama vs llama.cpp on the same blob).

**The desktop's larger card's column:** energy only — board J gross and net (the 60-s quiet-minute idle), the CP2000 box delta "includes the desktop's 3090 and the host"; every `$` cell `blank_reason: P-6`; posture one rung, 420 W as run.

---

## 7 · Schedule (UTC only)

**Item 0 — the hold: NOT YET RUN at 17:25Z (check MF-1); the lead's action under R-0 (spends nothing, lifts nothing; G-1).** The live state, all from files at 17:21–17:25Z (`date -u`, the laptop):
- **Claude.** Doorman rows exist for **five** models: Haiku 48 (16:08:54–16:18:32Z), Sonnet 5 48 (36 by 16:24Z; the file complete at 16:45:00Z), Opus 4.8 48 (16:49:59–16:52:43Z), Opus 5.5 48 (17:00:43–17:02:22Z), Fable 5.1 6 (17:06:39–17:07:07Z — stopped by the lane's served-by-other rule, 6 of its 114 calls, not by any hold). The `reading` runner (restarted 17:00:40Z, `restarts.jsonl`) was on `claude-sonnet-4-5`'s six-way at 85/108 at 17:25Z, and its loop is hard-coded `for t in ("c", "d")` (`run_anthropic.py:727`; `:947` is the dry-run path and sends nothing), so **that model's `d` starts the moment its `c` ends** — minutes. **Account change** (`restarts.jsonl` 16:44:10Z): an operator logged the CLI into a NEW account at ~16:4xZ, so two consumer accounts have now received S0 items; the new account read 4 % five-hour / 1 % seven-day at 16:43:24Z; the $15 list-rate cap was lifted by an operator there ("we should have plenty of credits to roll now"; the tally is kept — $6.66 at the 17:07Z stop; the 85 %-of-window guard binds).
- **Shelf.** 27 doorman row files, 1,293 rows, 14 tags (`rows/*.d*.jsonl`); **all 28 `task: d` entries in `queue.json` are complete** by `drive.py`'s own `done()` (28 done, 0 pending; the last, `gpt-oss:20b-cloud` at `--predict 1024`, finished before 17:25Z). v2's "28 jobs queued" overcounted what a hold could still stop; the set has left to every queued endpoint.
- **OpenAI.** Phase C in flight ($3.9066 by 17:21:43Z, `receipts/spend.jsonl`); phase D (`--task d`, 13 ids) is next, then E (16). `run_openai.py` has no `DOORMAN-EGRESS-RULED` check and the file does not exist.

The hold, in this order, before ⧖-4 is asked:
1. **Claude, first (minutes matter):** stop the runner (`python3 run_anthropic.py reading`; one in-flight call dies unledgered, as at 15:57Z and 17:00Z). Then EITHER patch `:727` to `("c",)` OR drive the per-model `run` subcommand with `--task c` (its argparse takes `--task`, choices c/d/a/f). A plain restart of `reading` as it stands re-sends `d`.
2. **OpenAI, before phase C ends:** do not edit `run_phases.sh` while it runs; put the guard in `run_openai.py` — under `--task d`, unless `../DOORMAN-EGRESS-RULED` exists, print `HELD on ⧖-4 <UTC>` and exit 0. The dry-read confirms it works: `run_phases.sh` `cd`s to its own directory, starts one python per phase, and `|| exit $?` passes an exit 0 through, so D and E become no-ops and their slot goes to the anchor sweep (the OpenAI row below).
3. **Shelf:** nothing is left to move (every `d` job is done), so the hold is a gate: `amend_queue.py` lines 17–20 insert `task: d` think jobs by themselves and a re-run would re-add doorman work — gate it on the same `../DOORMAN-EGRESS-RULED` file, and any new `queue.json` entry with `task: d` goes to `queue.held.json` through the lane's atomic-write pattern (`.tmp` + `os.replace`; `drive.py` re-reads `queue.json` every pass).
4. Write `EXPOSURE.jsonl` from the row files (the two Claude accounts as separate endpoint rows) and read **both** accounts' model-improvement settings into `postures.json` (method M-8). Then ⧖-4 goes to an operator with the counts **re-read at that moment**, not these.

**Item 1 — the anchor on benchbox, now: SWAP the triplet in; never append (compute M-2; check MF-2).** `queue.sh` runs `queue.txt` top to bottom, keys `queue.done` on the line number, re-opens the file every pass, halts at 23:55Z and gives each arm `RuntimeMaxSec` only to 23:58Z. At 17:21Z it was on step 35 (`b-qwen1.5-32b`, started 17:18:28Z; `queue.done` ends 32, 33, 34). Ahead of it: 31 pulls, 26 reasoning-off arms, **5 fast reasoning arms** (lines 69, 81, 82, 110, 114; c,d at a 4,096 budget — K0's equivalent took ~23 min, 16:17:32→16:41:31Z) and **5 dense reasoning arms** (lines 118, 125, 128, 131, 134; c at a 2,048 budget; each an *estimated* 1–2 h). The check's arithmetic: roughly 9–14 h of work against the ~6.5 h left to the halt at 17:22Z. An append therefore lands at lines 136–138 and runs at the next COI slot, not today, and B-seat, the bridge and §3's gate (a) wait with it. **Do this instead:** (1) write `queue.txt` atomically — a tmp file, then `mv`; (2) replace the next whole not-yet-run `pull / arm / rm` triplet after the step in flight with `pull gemma4:26b-a4b-it-q4_K_M` · `arm k0a-gemma4-anchor-cd gemma4:26b-a4b-it-q4_K_M 4096 off c,d yes` · `rm gemma4:26b-a4b-it-q4_K_M` — at 17:21Z that triplet was **lines 37–39** (`phi3:14b-medium-128k-instruct-q4_0`); re-read `queue.log` for the step in flight at the moment of the write; (3) append the displaced triplet at the end (lines 136–138), so no done or in-flight line changes its number and `queue.done` stays valid (compute S-7); (4) `pull.py` records the digest but compares it to nothing (Q-1 is not landed, §11 #14) — before trusting the row, read `receipts/pull-gemma4_26b-a4b-it-q4_K_M.json` and require `5571076f3d70…`; a mismatch makes it a bare-tag row, relabelled, never the anchor; (5) **take the dense reasoning arms out of today's tail** — line 118 and the THINK PASS at lines 123–135 (which the file itself marks "as time allows") cannot finish before the 23:58Z `RuntimeMaxSec` and would leave partial rows and an rc 3: comment them out in place (line numbers unchanged) and carry them to the next COI slot's queue. The utility-posture rule needs only App. B (15)'s 20-item probe per model; the full 108-item passes are R-11's price-of-thinking panel and take a long slot later. That anchor row is the 3090's bridge and B-seat's reference.

**Already measured today** (reading 0 opened 15:43:21Z): the smoke; the OpenAI pilot (32 ids), the full `gpt-4-0613` six-way and phases A–C in flight; the shelf's 16 tags on six-way + doorman; the Claude six-way complete on Haiku, Sonnet 5, Opus 4.8, Opus 5.5 and Fable 5.1 (108 rows each; `sonnet-4-5` at 85/108 at 17:25Z); benchbox K0/K1 (c, d) and the queue at step 35 (`b-qwen1.5-32b`, started 17:18:28Z) at 17:21Z. The "go means measuring within the hour" law is met.

| when | box · card | reading | needs from an operator | status |
|---|---|---|---|---|
| **now →** 23:55Z (the queue's halt) | benchbox · `<withheld: GPU UUID of board A>` in withheld-2026-10-14 · 300 W, persistence on · :withheld-2026-10-14 | **R-0, running since 16:09Z**: the 24 GB backfill queue (132 steps; `pull → arm → rm`, `/bin/df` gate, 4,096 on the short sets; step 35 at 17:21Z) + item 1's anchor swap; wall via NUT; `comfyui-cove-8189.service` stopped | **⧖-2**: ratify the board + the yield rule. `touch /workshop/bench-coi-2026-09-23/STOP` is read only at the top of each step (`queue.sh:14`), so a yield **waits for the step in flight**: minutes for a pull or a reasoning-off arm, ~23 min for a fast reasoning arm (K0's, 16:17:32→16:41:31Z), an *estimated* 1–2 h for a dense one (check MF-3). The fast path adds `systemctl --user stop coi3090-arm-<id>.service` (the unit name from `queue.sh`); that arm's rows are then incomplete and re-run later (the rc 3 rule). Nothing new starts; the rest resumes at the next COI slot | running |
| **today, first 10 min of the laptop card** | the laptop · 5090 Laptop `<withheld: GPU UUID of board B>` · :withheld-2026-10-14 | **dry-run item 12** (`num_ctx` 4,096 vs 131,072 on the anchor, 12–20 items each — G-3) and the laptop dry run (Appendix B) — **after the memory gate** (swap < 50 %, `/dev/shm` < 4 GiB, `MemAvailable` ≥ 8 GiB + the arm's need; swap read 17/17 GiB at ~15:56Z and 8/17 at 16:35Z — G-2) and after the card lock is free of the Kev train | **⧖-1** (the anchor is gemma4) · **⧖-20** the card's order today | ready (the :withheld-2026-10-14 pattern proven 09-21; **`MemoryMax=4G` is UNTESTED** — no such run exists (check MF-4): dry-run item 14 proves it with `yi:34b` and the anchor before any laptop row counts, and the bench store `/workshop/bench-coi-2026-09-23` did not exist on the laptop at 17:1xZ — it is created at the first pull) |
| **today, after item 12 →** the day's end | the laptop · :withheld-2026-10-14 · Dynamic Boost, lock off, 150 W | **L-1: the 24 GB curve, one model at a time**: `llama2:7b-chat` (HF receipt first), `phi:2.7b`, then the ★ rows that fit the disk (pull → read → remove; ≥ 60 GiB free after each pull); preflight evicts nomic + stops `scribe-embed.timer` for the arm, logs loadavg beside power (compute S-2); fresh runner per pass; the probes; **every `gemma4:*` tag waits on ⧖-1** (gemma/gemma2/gemma3 run) | ⧖-1 | ready after item 12 |
| **today, once §11 #18 lands** (no bench directory on the desktop at 17:12:38Z; the store + guard unit are ~2 h of work — check S-7; the time is stamped when the unit exists) | the desktop · the desktop's larger card | **the desktop dry run** (new box, new instance, new store): `--limit 3` on one model from the bench store, per-process pin growth on `<withheld: GPU UUID of board C>`, none on the desktop's 3090, `NOPRUNE`, the guard unit's readers writing their files, the **synthetic trip** | nothing (no sudo; the tarball copied over the private network, sha-verified) | to run |
| **today, after the desktop dry run passes** (§11 #18's ~2 h comes first; v2's "17:30–18:30Z" had passed unmet — check S-7) | the desktop · the desktop's larger card · 420 W as run | **B-1: beside the seats** under §6: `gemma4` `5571076f` and `mistral-small3.2` `5a408ab5` (the same-bytes pairs), then `qwen3.5:35b-a3b`; the quant control's small rows | nothing; announce to peers | ready once the dry run passes; else 2026-09-24 16:00–18:00Z after B-2 |
| today, background | the laptop → api.openai.com | **OpenAI, ordered by closure date** (economics #9): the anchor's remaining sets (field recast $0.27, judge $3.25, task_a ~$5 measured on 5 items first, f60, then S1 when built) and `gpt-3.5-turbo-instruct`'s six-way via `/v1/completions` (~$0.05, before 09-27), `o1`'s six-way, the other 10-23 ids' sets; then what persists; 1 rep + probe; Batch where eligible; the $12 cap ($3.91 spent by 17:22Z; A–E projected $7.66); **once item 0's guard makes phases D and E no-ops, their slot goes to the anchor's remaining sets in closure-date order** (check rec 4 — the 10-23 ids cannot be read later) | **⧖-5** (the balance does not hold the anchor sweep without a top-up); ⧖-4 before phase D | running (phase C at 17:21Z) |
| today → this week | the laptop → the CLI | **Claude, by closure date**: `claude-sonnet-4-5` first (≈ $1.35 list, before 09-29), then `opus-4-5`, `sonnet-4-6`, `opus-4-6`, `opus-4-7`, `opus-5`, `fable-5`, and the roster's five, six-way then the R-11 pairs; docent/field priced ($0.98–1.15 for five models); the $15 list-rate ceiling was **lifted by an operator at 16:44Z** (`restarts.jsonl`; the tally is kept — $6.66 at 17:07Z — and the 85 %-of-window guard binds); one call at a time; **scheduled into hours the lead is not orchestrating** (the old account's window read 0.85 at 16:24Z; the new account's 4 % five-hour / 1 % seven-day at 16:43:24Z) | ⧖-4 · ⧖-6 | running (restarted 17:00:40Z; on `sonnet-4-5`'s six-way at 17:25Z — its `d` follows unless item 0 lands first) |
| **2026-09-24 16:00–16:45Z** | the desktop · the desktop's larger card · shape S | **B-2: the 70 B class, seats down** (`llama3.3:70b` first) with the restore fix | **⧖-3** + the pastes handed over runnable before 16:00Z + `sudo -n true` re-verified | proposed |
| next benchbox COI slot (⧖-2) | benchbox · whichever XC3 is seated | the queue's remainder; **`<withheld: GPU UUID of board E>`'s anchor-only bridge read** (task_c + doorman-36 on `5571076f`) when block 0 seats it; one anchor pass per quarter on another XC3 (compute C-2) | the swap; two cap pastes | proposed |
| after each card's own leg (⧖-22) | benchbox · 3080 Ti (12 GB) · the 5080 (16 GB) | **the cheapest-card blocks** (G-10): `mistral:v0.1`, `llama3.1:8b`, `gemma4:12b`, `phi4:14b`, `ministral-3:14b` (+ `gpt-oss:20b` on the 5080), six-way + doorman-36, wall-metered, ~45–60 min a card; **the 5080 = the economics control row** (PAID, card alone, new, $1,649.00 before tax — D-20260923-015; the Holo refurbished $1,599.99 — D-016; folded into `prices.json` today) | benchbox minutes | proposed |
| this week | lanes, single-lane | `PREREG-S0.md` (the freeze) → parser v2 + selftest → the v2 re-score of every reading-0 and Jev row → `series.jsonl` (reading 0 + "pre-0"); `protocol.json`; `KIT.lock.json` + `pins.json`; `METRICS.md` v1 with the archetypes, the bias table and the three J/1k names; `coefficients.json`; `EXPOSURE.jsonl` + `postures.json`; `receipts/pages/` (today); the author-family + dinner-id fields; the paired test; the staircase (today); the cross-walk figure (levelised bands); the OpenRouter daily snapshot with endpoints; EIA re-read 09-24; `SERIES-SETS.md` corrected; S1-2026Q4 built (≥ 108) and read on the anchor; `supply.jsonl` + the reliability column; the Epoch licence email drafted; the tarball copied to the desktop and benchbox | ⧖-4, ⧖-5, ⧖-14 (optional), ⧖-21 | queued |
| this week | the desktop · beside; the 3090 | **the cross-walk arm** (G-11): GPQA Diamond (198) on `gemma4` `5571076f` at the setting matching Epoch's "minimal" and on `mistral-small3.2`, per card (~25–35 min a card for gemma4; ~1 h for the dense model on a 3090); **scores only, never items, in any kit** (gated data); contamination flagged, not disqualifying | ⧖-1 for the laptop row | planned |
| this week, priced first (R-8) | the CLI / API / shelf / local | **Reading 0-Q: quality**, Q1 the narrator first (~$0.25–0.60 per OpenAI model, ~$0.65 list-rate Fable; a re-registered ex-41 harness, new `blind_seed`, bridge letters, several houses, plus a **frozen local judge pair** recused from its own family and a **judge-drift row** on a stored bridge set — method S-12); H-Q1 registered as a **replication** (quality.md §1.8 already read its direction) with a minimum effect (median rank shift ≥ 1) and a decision rule; Q3 on the anchor at 1 rep (~$9, the one quality reading that can never be bought later) out of ⧖-5's $25; Q2 later | a priced go per quality reading | planned |
| later, on a ruling | the desktop · shape L | B-3: `qwen3.5:122b` | its own window | optional |
| after the RAPL paste | the laptop · CPU (`:withheld-2026-10-14`, `CUDA_VISIBLE_DEVICES=""`) | **the CPU rung** (G-20): the anchor on the laptop's CPU with package energy; the mini node only on an operator's word | ⧖-19; the mini node ⚑ | optional |
| **before the pour** (R-13's Friday 2026-09-25 target) | lanes, single-lane | in this order: `PREREG-S0.md` → parser v2 + the re-score → `series/reading-0.jsonl` frozen at 2026-09-25T12:00Z → the charts (R-9, R-14) → `fills.json` + `article-fill.py` → the draft (§8's outline, the working-document header, the changes log) → `series.public` + the kit → `screen_public.py` + `redaction-gate.sh` on the raw dirs → /drafts pour → reader panel → the stranger read → the release gates → **an operator's named go**; anything not closed by the freeze is reading 0.1's update, not a hole in the body | the go | the target is an operator's; the chain says what must be true first |
| ≤ 2026-10-14 | all | **Reading 0.1**, the first dated update: the anchor's other sets, S1-2026Q4, the window rows, the cross-walk arm, the cheapest-card blocks | ⧖-23 | planned |
| 2026-12-23 | all | **Reading 1** with `S1-2027Q1`; the runtime pin re-decided as a dated delta | the reading's top-up (⧖-8) | on the calendar |
| 2027-02 (⧖-15) | the Mac Studio (256 GB) | M-0: the same instrument on Metal (which is why the reference runtime stays GGUF/llama.cpp) | the pickup date confirmed | parked |

**Frontier budget for reading 0** (tasks-harness §6.2, mid scenario): four short sets × 3 reps (sampled ids) + task_a × 1 ≈ **$26.82 for Fable 5.1 or Astra, $10.74 for Opus 5.5**; the OpenAI sweep of all sets on the closing ids is **$7–11 per full pass** (models.md §0.2), and with 1 rep + a probe instead of 3 reps on temperature-0 ids the short-set part of it falls by about two thirds (method C-2). Against: the OpenAI key's **$17.14** balance less **$3.91** spent by 17:22Z (`receipts/spend.jsonl`), the **$12** cap, the Claude list-rate ceiling (**$15**, lifted by an operator at 16:44Z — `restarts.jsonl`; the tally is kept), the shelf at `$0.00*`. **Rec (⧖-5): one top-up of $30 now and the anchor sweep's cap at $25, ordered by closure date** — the anchor cannot be re-read after 2026-10-22. **Rec (⧖-8): per-reading top-ups sized to the reading's projection × 1.2 on an operator's word, not a standing $25/month** (a prepaid balance idles, and OpenAI's credit expiry is to be verified at the billing page before the ruling — economics #19).

**benchbox's commitments** (D-20260923-012): leg Q → leg E → the Zotac 3090 Ti → Kev-9B; the COI queue has run ahead of leg Q since 16:09Z (D-20260923-014) → ⧖-2's yield rule. Never two benches on one wall meter. **The Kev train** (`jev-v7-rungs-2026-09-22/PLAN-v3.md`) claims the laptop card today, benchbox's 5080 after leg E, the same gemma lift (P-17 ≡ ⧖-1) and the same RAPL paste (P-2b ≡ ⧖-19): **one card calendar, one lift, one paste** (G-2). the laptop also carries `s2s-uptime.timer` and `s2s-seat-watch.timer` — a wedge silences the 24/7 alarms, so the memory gate is not optional.

---

## 8 · The write-up — "The cost of intelligence, as a utility"

**Thesis.** Intelligence is becoming a metered commodity from the grid; this workshop is, deliberately, an isolated plant. Epoch estimate the price of the metered kind, at a fixed capability, fell about 13× a year over 2023–26 (their all-ages average; slower for an old capability). The on-site kind burns grid electricity, whose national residential price rose 5.0 % nominal from June 2025 to June 2026 (EIA 5.6.A), and the owner's card class got dearer in 2026. What does one correct answer cost from each source, measured, and at what capacity factor does the isolated plant pay — remembering that the isolated plants lost on capacity factor, not on coal?

**Outline.**
1. *Two ways to light a room* — the isolated plant vs the central station (Hughes, Nye, Hirsh; McCarthy 1961, Carr 2008 — read before quoting), and the mapping table with the unit fixed (economics #21): $/M tokens ↔ the **fuel price**; tokens per answer ↔ the **heat rate**; $ per correct at a fixed bar ↔ the **delivered tariff** (an API customer buys coal, not electricity); capacity factor ↔ utilisation; LCOE ↔ LCOI; the literal row (the fuel for on-site intelligence *is* grid electricity); the **obligation to serve** row (a utility cannot retire a class of service; `gpt-4-0613` retires 2026-10-23; a kWh does not change quality between versions — H-Q1). The tariff card the vendors publish (peak/off-peak, batch, priority — models.md §9).
2. *What Epoch's line measures, in their own words* — CC BY, credited; each caveat quoted as theirs with the URL; our arithmetic as arithmetic (§1); "theirs is a price, ours is a cost"; the age-matched rate.
3. *The instrument* — three cards, the frontier (closed APIs) and the cloud-served open weights, the frozen sets, strict scoring, the protocol, what a joule and a dollar mean on each row; **the egress paragraph** (article S-7, G-14): bench arms and judges, never a product path — no product calls a cloud model; only our own test items went out, listed by set with counts and each endpoint's retention terms from the exposure ledger; no visitor's words went out (task_c items carry guests' lines only, no question field); private-set figures self-announce their redaction with a request path.
4. *Reading 0* — the curve on each card (2023 → 2026 open weights; the addressee finding once the reference-runtime check holds; the context-window curve); the anchor sentence if its gates hold (§3), with its confound in the same sentence; the shelf and the Claude line; the specialist/readout rung (G-6) and the speculative-decoding pair; **joules per correct**, whole-window and compute-phase, board and wall, named.
5. *The ladder* — per bar, the cheapest clearer today (any licence, and servable), the anchor's launch price then vs the cheapest clearer's price now (replacement, not repricing), and **our staircase's rate beside Epoch's** (G-7).
6. *The break-even* — archetype A and B, fuel-only labelled, u\* and C\* with their no-solution forms, the bias table, "depends on the convention" where it does; the honest paragraph; the desktop's larger card without a dollar.
7. *Our slice beside Epoch's line* — **R-14's chart**: two aligned panels on one time axis (Epoch's index as published, adapted and credited; our series indexed to 100 at reading 0, per bar, nominal with a real column), never our dollars on their axis; the cross-walk with **every band as a labelled mark** (fuel hollow, "the meter only", never alone; levelised A and B as the dot; prefill included from Epoch's `mean_input_tokens`; each dot "Epoch's accuracy and token counts at their provider's precision; our joules at Q4_K_M on [card]; not a run of their benchmark"; no dollar dot for the 96 GB card) and, when G-11 lands, the measured GPQA points; the three-series chart with Epoch's electricity segment exactly as drawn and our 1973→2026 extension (EIA annual, CPI-U-deflated with FRED `CPIAUCSL`) as a visibly distinct series; the credit drawn **inside** every image incl. the social card.
8. *What this page does not price* (§5) — operator time, the metered attendant, the holding gain, reliability of supply (`supply.jsonl` and the failed-call column: the half-life of a callable id — G-21), the vendors' own energy disclosures as a labelled side table (G-22).
9. **The ending movement** (informational-article-format; article S-3): *What to take with you* (3–5 bold claims with their numbers) → *How to check our work — and see it live* (download the reading's kit; **run the six-way on your own card with `coi.py` and compare with our row** — article C-4; pull the anchor model; open the roster rows) → *The rest of the seminar* (what changes next quarter, the S1 slices, the triggers, what would refute the thesis) → the licence line last.

**Machinery** (article S-3, S-4): `fills.json` + `article-fill.py` — every number written by a scorer, none typed (exhibit forty's precedent); the authorship disclosure ("drafted by a model on this workshop's network"; the Claude line is a measured arm and the pen is a Claude model; every figure filled by script so the pen cannot move a number); the short version (`tools/shortversion.py`, exhibit fifty-eight's shape); the dek and one-liner in the front door's vocabulary (`guardrail-lint.py` refuses `VRAM|NVIDIA|CUDA|GPU` and the model names — the dek is written to pass it before the pour); the `rh-hwtop` line; **the roster's registered box identities** (`the-server`, `the-two-3090-rig`, `the-3090s-own-tower`, `rig-b-the-laptop` — confirmed in `tools/hardware_specs.py` before drafting; never "the answer box"); the per-card figures registered as hardware-roster rows through `hardware_rows.py` / `hardware_gate.py`; voice laws ("a 3090", never "the 3090"; "an operator"; the coinage unattributed); the **no-beef wording table** in `panel/article.md` S-10 applied to every draft. **R-13 (an operator, ~16:5xZ): the article is a working document** — it says so at the top in plain words, with the date of its latest reading in the byline; its body is **reading 0 as closed at the pour freeze** (§2.3); each later reading (0.1 first, then 1, …) lands as a **dated update section** in the cold-scroll shape (what is counted, the window at both ends in UTC, one sentence against the prior reading), never by rewriting earlier figures — corrections are marked as corrections; every update stamps the byline **and** the hub row's chip; the charts regenerate from the whole series; the kit keeps one directory per reading; a short **changes log** at the foot lists each update with its date and one line. A delta prints only when both sides share `parser_version`, `metrics_version` and the price rule (P-5, now a rule). **Target release: Friday 2026-09-25 (a local date)** (R-13's "maybe Friday"), on a named go, with everything in §7's "before the pour" row true first; **more than three readings → a living instrument page on the hub, the article a dated essay linking it** (article C-5).

**Citation** (Epoch's requested form) plus CC BY 4.0's asks (article S-8): *Luke Emberson and David Roodman (2026), "The plunging price of thought". Published online at epoch.ai. Retrieved from 'https://epoch.ai/publications/the-plunging-price-of-thought' [online resource]. Accessed 23 Sept 2026.* Caption: "Adapted from … CC BY 4.0 (link). Changes: redrawn from the published figure; [our series] added by us. Epoch AI has not reviewed this comparison." Quote the figure's own title with its hedge. The data repo (`droodman/inference-cost`, HEAD `a89f968b…`) has **no licence file** → cite and link; our pinned copies stay internal; the email (⧖-16, drafted today) also asks "may we redraw the electricity series from your workbook?".

**Naming and prices on the page.** Card names in full per **D-20260917-05** (settled; four receipts in `panel/article.md` S-2 — every lane brief drops "class only"). Fenced regardless: box and pet names (the desktop's larger card, the desktop's 3090 Ti, the desktop's 3090, the desktop, benchbox, the laptop), the private network addresses, /home paths, the dog, the location, hours of day; UTC only. Prices: the 3090's LISTING (card-only, labelled) and the rig (archetype A); the laptop PAID whole machine; the 5080 PAID card alone new; **the 96 GB card: no dollar figure of any kind** (P-6; the economics recon's "roughly doubled against launch" line never travels — article M-1). The redaction gate and `screen_public.py` run at each reading's close.

**Release path** (article S-11): roster rows and the article each publish only on a **named** go (one named draft per pour) after the /drafts pour → reader panel → the stranger read → the release gates; roster rows come only from `series/reading-0` under parser v2, each with reading, parser version, instrument, cost state and contamination flag; R-7's path is ⧖-25.

**The kit** (⧖-17): `series.public.csv/.jsonl` (the allowlist), `KIT.lock.json` (shas only for anything private; commit-reveal shas for S1), task_c lines (public) with author-family and dinner id, **task_a linked to its published copy**, field exam ids/URLs/shas (**never the excerpts**), doorman ids/buckets/shas (**never the lines**; "available to researchers on request through the contact desk"), judge-set ids + claim shas, `prices.json`, `METRICS.md`, `protocol.json`, the charts' data, the run scripts incl. `parse_v2.py` and `coi.py`'s local transport; per-row `licence` + `licence_read_utc`; the kit's licence line ("CC BY 4.0 covers our code, prose, scores and compilation; model outputs are reproduced as data under each model's own terms"). No `.prev` copies, no raw prompts with user words, no reasoning text, no `x_raw`.

---

## 9 · Decisions (id · context · options · rec · cost), grouped by when needed

### Today

| id | context | options | rec | cost of the rec |
|---|---|---|---|---|
| **⧖-1 gemma on the laptop — ONE ruling for both trains** | the standing order (08-23) says no gemma4 in the laptop's local ollama; the 09-21 bench ran it on an operator's ask in a transient :withheld-2026-10-14 instance with no written lift; gemma4 `5571076f` is the 2026 point and the bridge on every card; **the Kev train asks the same lift as P-17**; every `gemma4:*` tag (26b, 31b, 12b) waits; gemma/gemma2/gemma3 fall outside the order's letter and run | (a) a **scoped standing lift**, recorded once and cited by both plans: any roster model may load on the laptop's card for a NAMED bench reading or labelling pass only, in a transient bench instance, unloaded at the arm's end, never through the system daemon, never a seat · (b) a per-reading go each time · (c) no: carry accuracy from the same bytes on another card, labelled (only above the 97 % agreement gate) | **(a)** | none — it writes down what 09-21 already did |
| **⧖-2 the reference 3090: ratify what runs + the yield rule** | v1 named `<withheld: GPU UUID of board E>`; reading 0 (since 16:09Z), the Jev comparator and today's K0/K1 are all on **`<withheld: GPU UUID of board A>`** in withheld-2026-10-14 at 300 W, persistence on; the queue runs ahead of leg Q (D-20260923-014 vs D-012); all three XC3 Ultras are the same card model so the LISTING rule applies unchanged | (a) **ratify `<withheld: GPU UUID of board A>` as the reference; `<withheld: GPU UUID of board E>` gets an anchor-only bridge read when block 0 seats it (the board-to-board control); the COI queue keeps benchbox until the XC3 is in hand, then yields by the STOP file** · (b) swap to `<withheld: GPU UUID of board E>` tomorrow and re-read everything · (c) yield now | **(a)** | no swap; a yield waits for the step in flight — minutes for a pull or a reasoning-off arm, ~23 min for a fast reasoning arm, an *estimated* 1–2 h for a dense one (`STOP` is read per step, `queue.sh:14`; check MF-3) — unless `systemctl --user stop coi3090-arm-<id>.service` cuts it short at the price of that arm's re-run; two cap pastes at the next swap |
| **⧖-3 the desktop's larger card's 70 B class** | the beside-arm needs no ruling; the 70 GB class needs a seats-down window = an outage of 24/7 products (D-20260905-50); the restore order is fixed (§6) and the pastes arrive runnable first | (a) **shape S, 45 min, 2026-09-24 16:00–16:45Z**, banner + dead-man with the bench-gone poll · (b) the same at 04:00Z · (c) shape L too · (d) skip | **(a)**; (c) later on its own ruling | the hub assistant and the long table's gemma roles refuse ≤ 45 min |
| **⧖-4 the doorman set's seal — with the facts** | its header says "NEVER GO ANYWHERE PUBLIC"; it holds self-harm, sexual and harassment lines and invented persons with addresses; **what left (the row files at 17:21–17:25Z; re-read at the moment this is asked):** the shelf — 27 row files, 1,293 rows, 14 tags, every one of the 28 queued `d` jobs complete; Claude — five models (Haiku 48, Sonnet 5 48, Opus 4.8 48, Opus 5.5 48, Fable 5.1 6) over **two consumer accounts** (the change at 16:44:10Z); OpenAI none yet (phase C in flight, D/E next); egress is **NOT yet held** — §7 item 0 runs first, and its Claude half is minutes from the next `d`; Fable's transport retains 30 days; a moderation flag on the OpenAI key would reach every use of that key | (a) accept: an *ordinary private* set (contamination-flag rules; never published), S1 the new sealed slice; C/D disposition local-only · (b) stop all frontier reads and keep calling it sealed · (c) the in-contract 36 only for any further egress, C/D never | **(a) + (c)** | none in money; one line in SERIES-SETS.md |
| **⧖-5 the anchor sweep top-up** | `gpt-4-0613` (+ gpt-4-turbo, gpt-4o-0513, o1, o3-mini, o4-mini) close **2026-10-23**; the anchor's unread sets cost ≈ $8.5–9.5 (judge $3.25, task_a ~$5 unmeasured, field $0.27, f60 and S1 unpriced); A–E project $7.66 of the $12 cap, so **v1's option (b) did not fit**; balance $17.14 − $3.91 spent by 17:22Z (re-read at handover) | (a) **top up $30 now, the anchor sweep's cap $25, ordered by closure date, 1 rep + one six-way repeat, Batch where eligible; the ~$10 saved on reps → Q3 on the anchor at 1 rep** · (b) no top-up: defer phases C and E (≈ $1.87), raise the cap to the balance less $1, measure task_a on 5 items first · (c) let it close | **(a)**; (b) is the fallback that still lands the fixed denominator on most sets | $30 |
| **⧖-6 the Claude route** | the CLI: a list-rate estimate ("client-side estimates"), no receipt, an operator's subscription window (0.85 at 16:24Z on the old account; the CLI was logged into a **new account at 16:44:10Z**, which read 4 % five-hour / 1 % seven-day at 16:43:24Z — so two consumer accounts have sent S0 items today and `postures.json` reads both accounts' model-improvement settings), **consumer terms** (the automated-access exception for Claude Code's non-interactive mode), `--bare` "will become the default for `-p`" (never reads OAuth) — a standing instrument can lose the route on a CLI release — and **the CLI served another model under a requested id: `claude-opus-4-8` or `claude-opus-5` on 6 of 114 `claude-fable-5-1` calls** (`reading.log`, the MODEL-STOP at 17:07Z; check S-11) — direct evidence for (b); an API key: receipts, Batch at 50 %, commercial terms, a new key origin | (a) the CLI for reading 0 · (b) a metered Anthropic key with a cap below its balance + `anthropic_api.py` | **(a) now; (b) sooner than "once the series proves itself" — before reading 1** | (b): ~half a lane-day + a key |
| **⧖-19 the laptop's package power — ONE paste for both trains** | RAPL is root-only (`-r-------- root`); R-10b asks for it; **the Kev train asks the same paste as P-2b** | (a) a root sampler unit · (b) a udev rule · (c) board-only forever | **(a)**, asked once, cited by both plans | one paste, given with the plan's approval |
| **⧖-20 the laptop card's order today (new; G-2)** | the Kev train's PLAN-v3 schedules its R0/R1 on the laptop card today; L-1 wants the same card from item 12 on; neither plan named the other; no ledger line rules Kev's P-2 | (a) **item 12 (10 min) first, then whichever train an operator names, the other after; never beside each other; the card lock enforces it** · (b) Kev all day, L-1 tomorrow · (c) L-1 all day | **(a)** | none |
| **⧖-27 R-1's word "rotated" (new; check MF-6)** | R-1 says the private slice is "rotated each quarter"; method M-10 shows that a *replaced* slice plus "ratio per `set_id` only" can never form a series, and the fixed denominator (`gpt-4-0613`) closes 10-23; v2 reads "rotated" as "a fresh sealed slice each quarter, the old ones kept and re-read" (§2.1) — that rewrites his word, so it is asked here, not applied by R-0 | (a) **additive: a new slice joins each quarter, none is replaced** · (b) replaced, as the word says — then the fixed ratio exists only on S0 and S1-2026Q4 and the page says so (FOLD-LOG §3's fallback, already carried) | **(a)** | one word |

### This week

| id | context | options | rec | cost |
|---|---|---|---|---|
| **⧖-7 the roster** | models.md §2's ★/family/alt rows; the ★ rule now external and cited; `pins.json` frozen in PREREG | (a) as proposed · (b) ★ rows only · (c) add rows an operator names | **(a)** | the ★ set 134.9 GiB of pulls; every row 388.8 GiB |
| **⧖-8 frontier models + how readings are funded** | reading 0's ids: OpenAI 32 + the instruct model, Claude 12 callable, the shelf 16; a quarterly reading ≈ $27 mid-scenario on a flagship pair, ≈ $11 on Opus 5.5, ≈ $10 on the anchor class; a standing monthly line idles a prepaid balance (expiry to verify) | (a) **per-reading top-ups sized to projection × 1.2 on an operator's word, Batch throughout, flagships at the utility posture + default, `high` for one pair** · (b) $25/month standing (v1) · (c) OpenAI only | **(a)** | ≈ $30–40 a quarter |
| **⧖-9 the thresholds** | §4's six bars with the paired tests, `task_a@8k`, `doorman36-json`, B-field's re-read gate | (a) as pre-registered · (b) drop B-frontier-90 until Bench 4 · (c) add a bar an operator names (B-human is available — G-23) | **(a)** | none |
| **⧖-10 the cost model's inputs** | §5: two archetypes; gross fuel + idle; 3 y / R = 0 / i = 0 primary with the user-cost row and the bias table; p_e = the latest EIA month, like-period comparisons, CPI-U in reading 0; U_demand from qm + U100/U25 + u\*; c = 1 and best; the rent-the-card row | (a) as proposed · (b) 5 y primary · (c) the user-cost row primary · (d) trailing-12-month p_e primary | **(a)** — (b), (c), (d) carried as sensitivity rows | none |
| **⧖-11 which 3090 cost what, by UUID** | no ledger by UUID; the shelf knows a renewed pair at $1,449.99 (May 2026); `<withheld: GPU UUID of board A>` and `<withheld: GPU UUID of board E>` carry no invoice → the LISTING is the only card-only line; **the "$1,899 pair" is struck (never arrived, refunded)** | (a) an operator names the purchase per UUID (<withheld: GPU UUID of board E> · <withheld: GPU UUID of board A> · <withheld: GPU UUID of board F>) for the private ledger · (b) keep the LISTING rule and say so | **(b) now; (a) fills the private ledger** | one message |
| **⧖-12 the 96 GB card: the P-6 question only** | the name is settled (D-20260917-05). P-6 reads, verbatim: "⛔ NONE. NO PRICE, NO DOLLAR RATIO, NO $-PER-ANYTHING." and "no dollar ratio may include the 6000" (`PRICES.md` §2, §5.3; `hardware.yml:112–121`). A break-even price C\*, an electricity-only $ per correct, and a rental rate for the class are each a dollar figure tied to this card | (a) **energy only; no dollar figure of any kind; `blank_reason: P-6`** · (b) an operator rules that C\* (a break-even *purchase* price, not a price paid or listed) is outside P-6's intent and may print · (c) (b) plus an electricity-only $ per correct | **(a) until an operator says (b)**; the lead's view: (b) is the one figure that lets the card argue for itself without a price, and only an operator can say whether P-6 meant to fence it | none |
| **⧖-13 Gemini / xAI keys (R-5)** | optional; paid tier only | (a) both · (b) Gemini only · (c) neither | **(c) for reading 0** | ~$5/quarter if added |
| **⧖-14 task_b's 42 hand labels** | unlabelled (1 of 42); the sixth scored set with headroom; a timestamp per item gives **seconds per human decision** free (G-23) | (a) an operator labels 42 items (~1 h), timestamped · (b) defer | **(a), when convenient** | one hour |
| **⧖-15 the Mac Studio's pickup date** | the ledger says "Tue 2026-02-02" (a Monday in the past); 2027-02-02 is a Tuesday | confirm; add the `on-order` record | confirm | one word |
| **⧖-21 an OpenRouter key (new; G-17)** | "renting the same weights" is priced per token and assumed equally accurate; no key exists to measure rented $ per correct; a new key origin | (a) **OpenRouter, $5 cap, provider pinned, `:free` excluded; six-way on five open models (+ doorman-36 only if ⧖-4 allows)** · (b) + a Mistral key for Medium 3.5 (A-2) · (c) neither | **(a)**; (b) when A-2 runs | ~$2–5 |
| **⧖-22 benchbox minutes for the cheapest cards (new; G-10)** | the 5080 is the only card with a clean PAID, new, card-alone price and it sits on the wall meter; the 12/16 GB rungs answer "a $630 card reads the dinner as well as GPT-4 did" | (a) **~1 h per card after its own leg; the 5080 as Bench 3's economics control row beside the three cards** · (b) later · (c) no | **(a)** | ~1 h of benchbox per card |
| **⧖-23 do data-only updates need a per-update go? (new; G-15, narrowed by R-13)** | R-13 already rules the shape (a working document; dated update sections; the changes log); the house law says publish only on a fresh explicit go; what is left is whether a data-only update (new rows + regenerated charts, no prose) rides on R-13 as a standing go | (a) **yes, data-only updates ride on R-13 without a per-update go; any prose change needs one** · (b) a go per update | **(a)** | none |
| **⧖-24 a cold-archive drive (new; G-16)** | the backup excludes every ollama store as "re-pullable"; tags move (the bare gemma4 tag did), 2023 tags can be withdrawn, HF repos get gated; the runtime pin had one copy (copies to the desktop and benchbox today) | (a) **a drive off the live boxes for the ★ weights (~450 GiB), the anchors, Epoch's pinned files, the OpenRouter/EIA snapshots, sha-checked quarterly** · (b) restic include (snapshots balloon) · (c) trust re-pull | **(a), before reading 1** | a drive |
| **⧖-25 R-7's path (new; G-9)** | `roster_data.py` reads only released kits and `--check` refuses unregistered ids; "day one" needs a publish; ~120 ids to register in `MODELS` | (a) a small **reading-0 data-release exhibit** (kit + one screen + charts), then the roster lane · (b) **the roster grows when the article releases** | **(b)**, unless an operator wants the curve public first; then (a) on a named go, never on another exhibit's release day | a lane-day for the registration |

### Before publishing

| id | context | options | rec | cost |
|---|---|---|---|---|
| **⧖-16 Epoch's data licence** | the post is CC BY 4.0; the data repo has no licence file; the electricity series is a private communication in their workbook | (a) cite + link, copies internal, **the email drafted today** with the redraw question · (b) republish the CSVs | **(a)** | an email |
| **⧖-17 the kit's contents** | §8's list with the allowlist | (a) as listed · (b) publish the doorman lines · (c) publish reasoning text | **(a)** | none |
| **⧖-18 the 82.4 correction on exhibit fifty-eight** | run.py scored an unparsed reply as option 0; the page prints 82.4 where strict is 81.5 | (a) a dated correction note, one pass by the lead, one paste · (b) leave it | **(a)** | minutes |
| **⧖-26 the cloud analogue of Kev (new; G-6)** | a fine-tuned small OpenAI model on the public task_c labels (never the doorman) as the fair "specialise in the cloud" point; priced first | (a) price it, then run on a go · (b) skip | **(a), priced with reading 0-Q** | to be priced |
| later, each on its own go | the mini node's CPU rung (24/7 box); the human baseline (an operator's time and the framing); the live meter at the long table (a product change); any public use of scribe or qm figures | — | on his word | — |

---

## 10 · Risks

| risk | why it is real | guard |
|---|---|---|
| the doorman set keeps leaving the estate | the hold had not run at 17:25Z: five Claude models hold rows and the runner's loop sends `d` after every `c` (`run_anthropic.py:727`); all 28 shelf `d` jobs completed; OpenAI phases D/E are next; a second consumer account joined at 16:44Z | §7 item 0 with its three additions, now — Claude first; `EXPOSURE.jsonl`; `--task d` refuses without the ruling file; `amend_queue.py` gated |
| the anchor closes before the sets are on it | `gpt-4-0613` retires 2026-10-23; the fixed denominator can never be re-read; the no-top-up path does not fit the cap | ⧖-5; spending ordered by closure date; S1-2026Q4 built this week |
| a wrong model under a right name | benchbox's "seat model" is `08ae7ec1` (MTP draft), not `5571076f`; the bare `gemma4:26b` tag moved; the CLI resolves 4.0/4.1 to Opus 5.5; DeepSeek serves V4.1 under the V4 tag; aliases retire 09-25 | `pins.json` + a pull helper that deletes a mismatched pull; the digest beside the tag in every preflight; served model per call; dated tags |
| rules written after the data | reading 0 collected since 15:43Z; every bar and parser class was written with rows in view | `PREREG-S0.md` with a sha and the "observed before registration" list; amendments `A-nn` |
| four protocols in one reading | system message, budget, sampling, posture and truncation differed by lane; the frontier's truncated reasoning was excluded while local unparsed was wrong | P1 (user-only, symmetric budget and posture, `budget_exhausted` counted wrong); P0 rows re-read where P1 differs |
| the winner's curse and a moving k | "best of k" inflates by 4–9 points and k changes with keys, budget and windows | cross-fit best; panels named; k and both sides printed; the saturation rule on cross-fit estimates |
| home-team text | task_c and the judge set carry gemma/mistral-written items; the seat is gemma | out-of-family split on every c/j row; the headline for those families on the split |
| the v1 parser and five "stricts" | letters inside words; unparsed → option 0; lane-local rules disagree on `[C] hypatia: Hypat` | parser v2 first; lane figures provisional; `choice_v1` kept; the released 82.4 corrected |
| the per-item overhead masquerades as the card | 538.4 vs 153.4 J per correct on the same 2023 model; 777.6 ms of `load_duration` while resident; `num_ctx` rising with model date | one `num_ctx` on the short sets; dry-run item 12; whole-window + compute-phase J; the 2× `load_ms` refusal |
| a shared card evicts, contends or is misread | the laptop's memshed parks :withheld-2026-10-14; the desktop's seat daemon evicts at a third model; a board-total delta attributes a seat's move to the bench; the seat store is read-only | bench ports enforced in code; own stores; per-process residency; the guard unit fails closed; collisions exclude items, not runs |
| two trains, one card, one Thursday | Kev's PLAN-v3 claims the laptop today and benchbox after leg E; the same lift and paste under two ids | the card lock and calendar; ⧖-1/⧖-19 asked once; ⧖-20 |
| the restore fails with the bench resident | docent-vllm needs 45,028 MiB; a 70B leaves ~34 GiB | the dead-man stops the bench first and polls free memory; `RuntimeMaxSec` 5 min early |
| disk | the laptop ~127 GB free, the ★ set 134.9 GiB; benchbox's /home was 97 % on 09-21; a full disk on the desktop is an outage | floors per box, checked before every pull; delete-after; the desktop holds only anchors + its own ★ rows; the cold drive |
| the cost model ranks framings | three owner questions in one column; fuel dropped idle during busy time; Umeasured borrowed from another card and counting benches; the sketch's inputs superseded | archetypes A/B; gross fuel + idle; U_demand; the bias table and the "most favourable to the loser" rule; the sketch struck |
| a dollar figure reaches the 96 GB card | C\*, an electricity-only $, a rental rate, the recon's "doubled" line | `ratio.py` refuses; `blank_reason: P-6`; ⧖-12 asks the question, asserts nothing |
| the page corrects Epoch for a claim they did not make | "million-fold" was the brief's; the hedges are theirs | outline item 2 in their words; arithmetic as arithmetic; the no-beef table |
| the kit leaks | verbatim replies echo doorman lines and rulebook excerpts; reasoning text in 1,200+ raw files; box names and paths written at the pen; the gate's PATTERN lacks the pet names | the allowlist; born-clean fields; `screen_public.py`; the gate at each reading's close |
| a standing instrument republishes in place | append-only files re-pin every kit sha; regenerated charts change published figures silently; "reading 0" had no close | the reading close; frozen per-reading files; dated addenda; ⧖-23 |
| perishable citations | the deprecations page changes 10-23; posts get revised; OpenAI's terms returned 403 to the fetcher | `receipts/pages/` today, with Wayback snapshots; "no receipt → not published" |
| task saturation and thin sets | task_a and f40 at 100 %; n = 108 gives ±7–9 points; ±0.09 on the ratio | the judge set and f60; S1 ≥ 108; the MDC registered; no change claimed inside the interval |
| the subscription window | Claude arms share an operator's quota with the lead (0.85 at 16:24Z on the old account; 4 % on the new at 16:43:24Z — a second account is a second posture receipt, not a second route) | one call at a time; scheduled off the lead's hours; ⧖-6 (b) |
| scope creep | every reading × model × set × card × posture × the quality family | the ★ set is the default reading; family/alt and quality on priced goes; single-lane |

---

## 11 · Quick wins and what's next (ranked: value × urgency ÷ cost; each with value · cost · when · an operator's word?)

*Ids: G-n are the gaps lens's findings; Q-n are v1 §11's quick wins (kept for lane continuity: Q-1 the pin file, Q-2 parser v2 + the re-score, Q-3 the author-family field, Q-4 the cross-walk figure, Q-5 the paired test, Q-6 the OpenRouter snapshot, Q-7 the EIA re-read, Q-8 the SERIES-SETS corrections, Q-9 the two `run.py` fixes, Q-10 = ⧖-18, Q-11 the inventory fold).*

**Now / today**

| # | item | value | cost | when | an operator's word? |
|---:|---|---|---|---|---|
| 1 | **Hold the doorman egress in all three lanes; write `EXPOSURE.jsonl`** (G-1; §7 item 0 with its three additions — **not yet run at 17:25Z**; the Claude runner's next `d` is minutes away, so Claude first, then the OpenAI guard before phase C ends, then the shelf gate) | closes a live privacy and moderation exposure; the fixed-denominator story stays honest | ~20 min | now | no (the hold); ⧖-4 for what follows |
| 2 | **Swap the `5571076f` anchor triplet into benchbox's queue — never append** (compute M-2; §7 item 1): an append lands at lines 136–138, after ten reasoning arms, past the 23:55Z halt; the swap takes the next not-yet-run triplet's slot (lines 37–39 at 17:21Z) and moves the dense reasoning arms (line 118, lines 123–135) to the next COI slot | the 3090's bridge row and B-seat's reference exist **today**; the draft-on/off pair beside it (confounded by `num_ctx` until read at one value) | one atomic write + ~6 min of the card at the swapped slot | now | no |
| 3 | **Dry-run item 12 on the laptop** (G-3, compute M-5): 4,096 vs 131,072 on the anchor | protects the curve's energy and latency axes before any laptop row counts | ~10 min of the card | today, first | ⧖-1 (it is gemma4) |
| 4 | **The card calendar + lock; one gemma-lift and one RAPL ask for both trains** (G-2) | no two benches on one card; no double ask | ~30 min | today | ⧖-1, ⧖-19, ⧖-20 |
| 5 | **Fix v1's defects in v2 (done here) and in their sources** (G-18): 194.3/37.5 strict on the Jev row and `SMOKE-REPORT.md` l.47; the K0 label; the laptop's posture; the fingerprint sentence; the stamps; **plus compute M-3's fixes 3–4** (check S-8): retire or re-point `calib_local.py` (it imports `cloud_run.HOST` = `:withheld-2026-10-14`, which `coi.py`'s port guard does not cover) and remove the smoke's `mistral:v0.1` from the laptop's system store | the numbers-need-a-rule law | 10 min | today | no |
| 6 | **Pin the pages the article will cite** (`receipts/pages/` with Wayback; article M-10) + **the egress census + the OpenAI balance before/after** | load-bearing and perishable; the deprecations page changes 10-23 | ~30 min | today | no |
| 7 | **Register the staircase method in `METRICS.md`** (G-7) before phase C completes; Wayback receipts for the Claude launch prices | a level-and-rate comparison with Epoch at zero GPU and zero API cost | ~1 h | today | no |
| 8 | **Copy the 0.32.13 tarball + sha to the desktop and benchbox** (G-16) | the pin survives one disk | minutes | today | no |
| 9 | **Fold D-023-015/-016 (the 5080 and the Holo) into `prices.json`** with the fourth price kind (G-10) | the first honest card-alone PAID row | minutes | today | no |
| 10 | **Draft the Epoch data-licence email** (⧖-16, with the electricity-series redraw ask) for an operator to send (G-14) | replies take days and it blocks the kit | 15 min | today | an operator sends it |
| 11 | **`claude-sonnet-4-5`'s six-way first; `gpt-3.5-turbo-instruct` via `/v1/completions`** (G-8) | points that close 09-28/09-29 and can never be read later | ≈ $1.35 list + ~$0.05; a small transport branch | before 09-27 | no (the window is the constraint) |

**This week (before any table is called a result)**

| # | item | value | cost | when | an operator's word? |
|---:|---|---|---|---|---|
| 12 | **`PREREG-S0.md` — the freeze** (method M-5) with `protocol.json`, `parse_v2.py` + selftest, `METRICS.md` v1, `pins.json`, the bars' tests, the panels, the ratio forms, the bands, the cell list and close rule, the "observed before registration" list | the difference between pre-registered and post-hoc | ~half a lane-day | first thing this week | no |
| 13 | **Parser v2 + the re-score of every reading-0 and Jev row → `series.jsonl` reading 0 + "pre-0"** (method M-4; G-6); the paired test and the out-of-family split (Q-3, Q-5); **K0's reasoning-on row is the selftest's live fixture** for `budget_exhausted` and the utility-posture rule (24/108 strict against 67.6 % lenient: 51 late letters, 29 unparsed, 30 at the 4,096 cap — `panel/CHECK.md` rec 7) | one "strict"; the ladder's specialist rung already paid for | 1–2 h CPU | after 12 | no |
| 14 | **`KIT.lock.json` + `pins.json` + the pull helper's digest check on every box** (Q-1, compute M-2) — ideally in benchbox's `pull.py` before item 1's pull, the first where a silent mismatch would cost the bridge (check rec 6); failing that, the receipt read in item 1 (4) | refuses digest drift; benchbox pulls by tag today and compares nothing | ~1 h | before any further pull | no |
| 15 | **`METRICS.md` v1: archetypes A/B, gross fuel + idle, the bias-direction table, U_demand, the three J/1k names, `coefficients.json`** (economics #1, #3, #4, #13; G-13), **plus the context-census boundary rule** (check S-2): "fits at 16k" means ≤ 16,384 prompt tokens by the offline census — 54 of task_a's 63 items, not 53 (one page is 16,374 tokens; 53 holds only at a 16,000 boundary; `panel/check_figures.py` F24) — because that rule decides task_a coverage and `task_a@8k`'s membership | the cost model stops ranking framings; one coefficient file for qm, what-it-costs and the roster | 1–2 h | with 12 | ⧖-10 |
| 16 | **`postures.json` + the endpoint posture on every row** (method M-8) — incl. reading **both** Claude accounts' model-improvement settings (the old one and the one the CLI was logged into at 16:44:10Z; check rec 3) | S1 cannot leave the estate without it | ~1 h | before S1 | no |
| 17 | **S1-2026Q4 built (≥ 108 six-way items) and read on the anchor + the two local linking anchors** (method M-10) | the fixed denominator on a sealed slice, before 10-22 | a lane-day + ~$1 | this week | ⧖-5 |
| 18 | **The desktop bench store + guard unit + dry run + B-1** (compute M-6, M-7, M-9) | the beside arm becomes a mechanism | ~2 h | today/tomorrow | no |
| 19 | **The cross-walk figure with every band labelled** (economics #10; article M-9) — the write-up's first figure, publishes at reading 0's close | never a fuel-only dot alone | ~1 h | this week | no |
| 20 | **The OpenRouter daily snapshot with per-provider endpoints** (Q-6, economics #20) + **the EIA July re-read 09-24** (Q-7) + **`supply.jsonl` and the reliability column** (G-21), recording the **served-by-other rate per CLI model** from `reading.log` (6 of 114 on Fable 5.1 today — check rec 8; measured, it is ⧖-6's strongest argument) | our own tariff series; the third leg of the utility frame | ~2 h | this week | no |
| 21 | **The cross-walk arm on GPQA Diamond** (G-11) on the desktop's larger card and the 3090 | levels on Epoch's own axis; one owned-vs-rented-GPU point in their data | 1–2 GPU-h | this week | ⧖-1 for the laptop row |
| 22 | **The 5080 / 3080 Ti cheapest-card blocks** (G-10) | the ladder's cheapest rung and the only honest dollar row | ~1 h of benchbox a card | after each leg | ⧖-22 |
| 23 | **Rented $ per correct through OpenRouter** (G-17) | Bench 3's cleanest comparison, measured | $2–5 | this week | ⧖-21 |
| 24 | **Reading 1 on the calendar (2026-12-23) + the gm lines** (G-15) | "standing" becomes a schedule | ~1 h | this week | ⧖-23 for the append rule |
| 25 | **The Q-9 fixes to the Jev `run.py`** as a PR to that bench; **⧖-18's correction** on exhibit fifty-eight | hygiene | minutes | this week | ⧖-18 |

**Adjacent, worth doing with this instrument**

- **A-1 Same weights, someone else's hardware** — now measurable through ⧖-21; accuracy should match, so the cost column isolates hardware-and-serving from the model.
- **A-2 The same-lab owned-vs-rented pairs** (`gpt-oss` vs the OpenAI line; `mistral-medium-3.5` vs Mistral's API; Gemma 4 vs Gemini; `qwen3.5:397b` cloud vs `:122b`/`:27b` local).
- **A-3 The readout column's calibration** (raw per-letter logprobs on local rows; Brier/reliability later at no GPU cost) — outside the ratio; the specialist/readout rung on the ladder (G-6).
- **A-4 The canary probe**, built once with its registered statistic and matched control.
- **A-5 The flat-rate lens** from scribe's `v_costs` (G-19) — de-duplication verified first; public only on an operator's word.
- **A-6 A wall column for the laptop** (a logging plug meter on the charger — a purchase, an operator's call) and a one-time UPS-loss calibration (owed since 09-12).
- **A-7 qm's call records as U_demand and the counterfactual API bill per app** (G-12) — internal on qm's view first.
- **A-8 The CPU rung** on the laptop after the RAPL paste; the mini node only on his word (G-20).
- **A-9 A human baseline** — seconds per decision from the task_b sitting; optionally B-human on 60 six-way items (G-23; his time and the framing).
- **A-10 A live meter at the long table** (G-24; a product change, his call).
- **A-11 Two notes for other owners:** the vLLM seat's 43 of 87 requests ended on `length`; `/api/ps` is polled ~2.3×/s on the desktop's :withheld-2026-10-14.

**Plan for**

- **P-1 Bench 4 "frontier enough"** — its seed exists (G-25): the estate's squash-merged PRs since 2026-08-01 that added tests (spec = the brief, oracle = the tests, all post-cutoff), scribe's frontier tokens per merged PR as the historical bill, Epoch's SWE-Bench Verified staircase (27.49 %/quarter) as the comparator; a recon lane counts candidate PRs this month (no GPU). Roster candidates as v1.
- **P-2 The Mac Studio** as the fourth platform (the reference runtime stays GGUF so it joins with the same weights).
- **P-3 The instrument as the assurance retainer and the appliance's proof** (G-26): `coi.py` takes sets, cards, prices and endpoints as data; the row schema is a contract; the appliance's proof rows are decisions per working day the box sustains and the break-even demand in G-12's units.
- **P-4 A living instrument page** once readings exceed three (article C-5).
- **P-5 Series hygiene** — now a rule (§8): every parser, scoring, price or tariff change bumps a version; `ratio.py` refuses to compare across versions until old rows are re-scored.

---

## Appendix A · The bench instance, per box (for lanes)

```
# laptop (the laptop) — :withheld-2026-10-14; the system daemon is left alone; the store is an operator-owned
# MemoryMax=4G is UNTESTED until dry-run item 14 (yi:34b + the anchor): raise to a measured value if it OOMs; never remove
systemd-run --user --unit=coi-ollama-laptop --property=MemoryMax=4G --setenv=TZ=UTC \
  --setenv=OLLAMA_HOST=127.0.0.1:withheld-2026-10-14 --setenv=OLLAMA_KEEP_ALIVE=-1 --setenv=OLLAMA_MAX_LOADED_MODELS=1 \
  --setenv=OLLAMA_<parallel-requests>=1 --setenv=OLLAMA_FLASH_ATTENTION=1 --setenv=OLLAMA_KV_CACHE_TYPE=f16 \
  --setenv=OLLAMA_NOPRUNE=1 --setenv=OLLAMA_MODELS=/workshop/bench-coi-2026-09-23/store \
  --setenv=CUDA_VISIBLE_DEVICES=<withheld: GPU UUID of board B> \
  --setenv=OLLAMA_VULKAN=0 --setenv=GGML_VK_VISIBLE_DEVICES=-1 --setenv=HIP_VISIBLE_DEVICES= --setenv=ROCR_VISIBLE_DEVICES= \
  <re-extracted 0.32.13 bin>/ollama serve
# every arm ends with {"keep_alive": 0} to the loaded model (the explicit unload); a fresh runner = unload + warm-load
# the desktop (the desktop's larger card) — :withheld-2026-10-14, store /workshop/bench-coi-2026-09-23/store (copies + explicit pulls; the seat store never
#   opened), pinned to <withheld: GPU UUID of board C>, OLLAMA_GPU_OVERHEAD=(free MiB at start − 26,624)×1,048,576, BindsTo=coi-guard-desktop
# benchbox (the 3090) — :withheld-2026-10-14 (what runs), /usr/local/bin/ollama 0.32.13 with its sha in the preflight, pinned to
#   <withheld: GPU UUID of board A>; wall via upsc pr1500@localhost
```
Per-process residency (the cgroup's PIDs on the named board; none on any other), whole-fit (growth ≥ 90 % of store bytes, no CPU share in `/api/ps`), the posture read from the card and refused on mismatch (rc 4), the instance environment read back and stored, the bench port enforced in `coi.py` (rc 2). Before every laptop arm: the memory gate (§7), `/api/ps` on :withheld-2026-10-14 read and the embedder tenant evicted, `scribe-embed.timer` stopped for the arm and restarted after; `memshed.timer` untouched (it never sees :withheld-2026-10-14). The exact ExecStart lines are the dry run's first output file, with the runtime, driver, CUDA and kernel versions for each box.

## Appendix B · The dry run (before the first real launch on each new configuration)

`--limit 3` on every (backend × set) cell, frontier arms included under a **$2** cap: (1) the pinned binary loads both ends of the roster and one generation each; (2) `think:false` accepted by pre-thinking models; an `-nvfp4` tag on the 3090; (3) per-process pin growth on the named board, none elsewhere; (4) the tag exists and its digest matches `pins.json` (a 404 is `failed:`, never a verdict); (5) ollama's truncation of an over-window prompt; (6) parser v2's selftest; (7) the literal screen on frontier payloads; (8) the spend cap fires; (9) a report per cell and one `series.jsonl` line per cell, each file opened; (10) on the desktop's larger card: the guard's readers write their files and **a synthetic trip** (`--selftest-trip I-4`) produces the stop and recovery receipts; (11) the sampler on a ≥ 2 s window and `power.draw.instant` at 100–200 ms checked for honesty per driver; **(12) `num_ctx` 4,096 vs 131,072 on the anchor, 12–20 items, fresh runner, `load_ms` + runner PID per item** (G-3); **(13) the rendered prompt per architecture** and `prompt_eval_count` confirming the baked layer arrives (method S-4); **(14) MemoryMax=4G on the laptop with `yi:34b` and the anchor** (raise to a measured value if it OOMs; never remove); **(15) the utility-posture probe** (20 items per reasoning model, the lowest setting that parses ≥ 95 %). Any stage that finishes far under its planned minutes is opened before the next is trusted.

## Appendix C · One row (the schema, `series.jsonl`)

`reading, reading_closed_utc, protocol_sha, set_id, set_sha, item_index, prompt_sha256, label, author_family, dinner_id, model_id_tag, manifest_digest, quant, draft_model, weights_bound_utc, released_utc, declared_cutoff, cutoff_kind (training | knowledge | null), contamination (structurally-uncontaminated | possible | flagged | trained-on-folds), backend, endpoint_training_posture, host_class, card_uuid, card_arch (ampere | blackwell-laptop | blackwell-ws | none), posture (cap W / boost / as-run), persistence, runtime_name, runtime_version, runtime_sha, driver_version, cuda_version, kernel, kv_cache_type, flash_attention, keep_alive_posture, pcie_link_under_load, template_sha, system_layer_sha, system_handling (native | merged | dropped | none), scaffold_sha, num_ctx, think_setting, utility_posture (bool), effort, temperature, sampling (greedy | vendor-default), seed, rep, parser_version, instrument_sha, generated (verbatim, internal), generated_sha256, format_class, choice_strict, choice_lenient, choice_v1, correct_strict, correct_lenient, refused (context-model | context-card | provider-refusal | null), budget_exhausted, failed (sentence | null), template_suspect, provider_stop_reason, served_model, system_fingerprint, prompt_tokens, cached_tokens, eval_tokens, reasoning_tokens, seconds_wall, ttft_s, prompt_eval_ms, eval_ms, load_ms, total_ms, joules_gross, joules_net, joules_compute_phase, energy_instrument (board | wall | box-delta | none), shared_card, cotenant_requests, collided, mode (generate | readout | specialist), split, window, licence, licence_read_utc, servable, archetype (A | B | null), usd (metered only; null otherwise, never 0), usd_derived_direct (Claude rows), cost_state, price_block_ref, blank_reason, stamp`.

## Appendix D · Files read for this plan

v1's list (`recon/*`, the smoke, the three reading-0 lanes, the rulings, the sets, DECISIONS, `hardware.yml`, the hub tools, the Jev rows, the memory laws) plus: `panel/{method,compute,economics,article,gaps}.md` and `panel/method_checks.py`; `rtx-3090-reading-0/rows/FIGURES.md`; `anthropic-reading-0/reading.log`, `rows/claude-{haiku-4-5,sonnet-5}.c.p1.report.json`, `spend.jsonl`; `cloud-reading-0/queue.json` and the `.d.` row files' mtimes; `openai-reading-0/run_phases.sh`, `receipts/spend.jsonl` (summed); benchbox's `queue.log` tail and `nvidia-smi` over ssh (16:43:58Z); `date -u` on the laptop at 16:40:50Z and 16:43:57Z.
