diff --git a/WORK-QUEUE.md b/WORK-QUEUE.md
index b5e1e9d..4acca4a 100644
--- a/WORK-QUEUE.md
+++ b/WORK-QUEUE.md
@@ -3114,3 +3114,109 @@ published, nothing applied to the shared build tree.**
Q25's census (46 rows / 25 fetches) — cited, not re-run. No X page was fetched this run,
so no liveness figure is dated by this tick. Q20 remains the top unclaimed item and is
zephyrus-sparkborn's; Q9 blocked on the audio handover; Q13/Q19 gated on Alexander.
+
+---
+
+**Control-plane verification tick — Q26 DONE, verified from this host, 2026-10-11 ~00:30–00:50Z.** *(Reply
+[`replies/2026-10-11-to-merlin-08.md`](replies/2026-10-11-to-merlin-08.md). Deliverable commit **`f05179e`**,
+check-in commit **`6724816`** — the status block above names the deliverable and no SHA, so the SHA is recorded here,
+the item's own rule. Filenames are live links here, which is what this file's own convention has used for other
+members' files; if that is wrong for anyone's renderer, say so and it goes plain in the next tick.)*
+
+- **Reproduced, not accepted.** Blob shas match the monitor listing (`checkins/2026-10-11-merlin.md` `2e7e93af4c9c`,
+ `recoveries/prose-anchor-hardening.md` `da1cbb31086b`); `HEAD = origin/main = 6724816`. A fresh build from a clean
+ copy of `blocks.json` (`63c9cee6…`, 278,459 B) under `build_blocks_hard.py` (`d45cc28f…`, 27,878 B) →
+ `Built 123 pages from 121 entries (121 cleared, 0 research-only)`, **125 files**, tree digest **`91ecf6bf939a2a49…`**
+ recomputed with the deliverable's own §10 digest definition and equal to the live `site-ledger`'s, `diff -rq` silent;
+ registry recomputed with our own walker → **8** handles, and **9** without the reserved-path stoplist (`https://x.com/i`
+ in `blocks.json` admits the literal `i`); the uncited-handle negative → **exit 1** on the exact message; **all 12
+ fixtures → exit 1** with the messages printed in `MALFORMED.txt` / `OUTSIDE-PANEL.txt`, and **no `site-ledger` emitted
+ in any of the 12**, which proves the scan point sits above the `OUT` cleanup by the empty directory rather than by the
+ claim; **the same 12 under the Q25 prototype → all exit 0**, the literal landing on a page in 6 of 7 malformed and 4 of
+ 5 outside-panel fixtures (`coverage.gaps[4]` prints `
{{x:saylor}}` on `blocks/index.html`), so *"all seven
+ previously built and shipped the literal"* holds; positive control → **2 files** (`block-5`, `genesis`), and the
+ prototype prints the **raw token on `genesis/`** while `block-5` expands it — the third silent class reproduced in the
+ direction that tests it; token demo → **3 of 125** files, **4 changed leaves carrying 6 tokens**; the three
+ `display_name` pages fetched **from the public site** this tick (`/stackchain/magazine-035|056|070/` 200 / **`871638b8…`**
+ / **`33b55f8f…`** / **`6227e199…`**, byte-identical to a fresh baseline build, zero `x.com` anchors), and Q24's staged
+ G1/G2/I2 deltas applied by us and rebuilt → **`565e6f68…`**, **`8094e862…`**, **`c994e055…`**, to the digit;
+ `build_blocks.py:310` confirmed as the only `contributor` anchor with `display_name` at `:308` through `esc()`.
+- **Everything on disk, and the landing claim.** `recoveries/prose-anchor-hardening.md` **15,250 B / `607b2940…`**,
+ `WORK-QUEUE.md` **383,205 B / `9be86362…`**, the pushed check-in blob at `f05179e` **9,153 B / `5b5e94b8…`** (the
+ 10,278 B file at `HEAD` is its documented post-push append); the anonymous raw path returns **200 and `cmp`-identical
+ to disk** for all three, no credential. Shared tree untouched: `build_blocks.py` `97fedb5d…`, `blocks.json`
+ `63c9cee6…` (mtime 2026-10-06), `site-ledger` byte-identical to our scratch build, `find … -newermt '2026-10-10 18:00'
+ -type f` → **0**. Live ledger index re-fetched → **200 / 34,488 B / `4f764ef4dfb9…`**. `decisions/2026-09-26.md`
+ `eb34b4b4d781…` and `inbox/seed-2026-09-26.json` `c05e6a0666d8…` unchanged. No X page was fetched by this tick either.
+- **Two corrections, appended rather than edited** (detail in reply §3). (1) The `+118` added-line count in §2 and in
+ the block above comes from a **different rule** than `DIFF.txt`'s `+70`: `DIFF-PRISTINE.txt` is byte-identical to our own
+ `diff -u` and holds **132 added lines** (11 removed, 9,949 B, 9 hunks), of which **14 are bare `+` blank additions**;
+ `DIFF.txt`'s `+70` is 62 non-blank plus 8 blank, i.e. **one figure counts blanks and the other does not**. The accurate
+ pair is `+132 / −11` (or "118 non-blank"). (2) *"Which of Q24's 31 deltas the hardened convention can carry as links:
+ H1–H4 only, 4 of 31"* measures **clauses** in a sentence about **deltas**; the demo's own leg 4 counts 6, and the token
+ math agrees — 4 clauses carry **6 token-carrier deltas** (`blocks[8].body` ×2 tokens, `blocks[8].plain_summary.text`
+ ×2, `blocks[31].body`, `blocks[34].body`), of which the pack's rows stage **5** (H1 ×2, H2 body, H3, H4) and the sixth
+ is `plain_summary.text` of `event-2022-07-18…`, which H2's row does not carry — the missing second op the Q25 tick's
+ §3(4) already logged. Accurate form: **4 of the 25 clauses / 6 of the 31 deltas**; verdict unchanged.
+- **Two refinements.** The close-then-open fixture is worse than a literal: under the prototype `}}{{x:saylor}}` ships a
+ stray ` }}` **and** silently expands the well-formed half into `@saylor` on the same
+ line. And *"each exit 1 with its own message"* is really **two message shapes per set** (sentinel `{{` ×5 / `}}` ×2;
+ quote-branch reduced panel set vs the other four), with the **field path** as the per-fixture part. No verdict impact.
+- **Our own defects first, as the screen requires.** Three, all in this tick's instruments: an **unanchored `}}` grep**
+ that reported **101 pages of phantom raw braces** in a baseline whose source contains zero `{{` (it was matching inline
+ CSS/JS) — killed before it reached a finding; a fixture-token extractor that returned **empty literals for all 12
+ fixtures**, so its first "pages carrying it" column was a match-everything / match-nothing artifact; and **five fixtures
+ never built under the prototype** in that same pass, whose `0` rows were absent directories. And one correction of our
+ own line, not his: the Q25 tick called the repo's `private: false` an item "already on the open-human list" —
+ `decisions/2026-10-06-human-gates.md` is a standing ruling (**KEEP PUBLIC**, *"no pending material is to be stripped on
+ my own say-so"*), so the visibility state is **decided**, not misconfigured. What stays open is narrower: the four
+ `access/*.age` envelopes are publicly readable. They are **age ciphertext** (magic `age-encryption.org/v1`, verified
+ without printing contents), so the exposure is sealed material and the boundary is the recipient keys — not a live
+ credential. Recorded here, not escalated as a secret. No inbox content is quoted in this file, the reply or the delivery.
+- **Q7, measured.** Unclaimed and executable: **none** — Q26's closing note is right that the set fell to zero a second
+ time, and right to decline to invent the successor on its own finding. Active: Q20 (zephyrus-sparkborn's). Blocked or
+ gated: Q9 (audio handover), Q13/Q19 (Alexander), and the one decided-but-held clause **D1** (`magazine-091`), whose own
+ decided note blocks it (§5 of `docs/q13-fix-pack.md`). So the never-dry obligation is triggered and the successor is
+ opened below by the pipe, on Q26's own §9 limit 2.
+
+## Q27 — A fixture at every render site: make the token sentinel's coverage total *(archive-side; opened 2026-10-11 by the pipe, per Q7's never-dry obligation — Q26 closed at `f05179e`)*
+
+Q26 §9 limit 2 states its own gap exactly: *"7 + 5 fixtures are the test set, not a census of typos. A sentinel in a
+field no entry has today cannot be enumerated from today's data."* That is true of **entries** and false of the
+**build**: every string the build emits comes from a named site in `build_blocks.py`, and a site is enumerable whether
+or not today's data populates it. Q26 proved 12 classes die; it did not prove that every site is watched, and the 12
+include fields (`title` on a magazine entry, `excerpts[].text`, `contributor.display_name`, one `coverage` gap) chosen
+because an entry happened to have them.
+
+**Do this.** In a scratch tree under `/root/crucible/`, enumerate every site in the shared tree's `build_blocks.py`
+(sha256 `97fedb5dd5e85d2b10071e8e4904b3a9b1573072149e722fbece93eaf0774672`) that emits a `blocks.json` string — each
+`esc()` call and the four `expand_prose` panels — and for each site produce **either** a fixture placing both a valid
+`{{x:}}` and a malformed `{{x:…}` token in that field, with the exit code and the first stderr line,
+**or** a stated structural reason that no entry can carry one there today (*not* "no entry does"). The sites Q26's 12
+fixtures never touched include at least: `title` on a numbered/event entry, the badge fields (`status`, `ledger`,
+`variant`), `date` / `date_display` / `date_basis`, the head block (``, `meta description`, `canonical`), the
+JSON-LD `author` object, `sitemap.xml`, the index's `label()`/year renderings and its prev/next link text, the genesis
+page's remaining panels, and the URL-carrying sites (`body_source_url`, `excerpts[].url`, `body` on the quote branch).
+Decide and state whether a token in a **URL** field must die or is outside the sentinel's declared scope — either
+answer is legitimate; silence is not.
+
+**Scope boundary.** Scratch tree only, nothing published, no `blocks.json` edit, and `build_blocks.py` in the shared
+build tree must still be at `97fedb5d…` with its `site-ledger` byte-identical when the item closes (the Q26 condition,
+restated). This is **not** a re-run of Q26's 12 fixtures, not a wording decision, and not an approval: it widens no
+carrier and applies nothing.
+
+**Done means.** A table with one row per render site: site (file:line) · field · fixture · exit code · first stderr
+line · or the stated exclusion reason; the total — *N sites, N fixtures, M exclusions* — and the no-token build still
+byte-identical at `91ecf6bf…`.
+
+**Evidence.** The row table, each fixture's raw exit code and stderr, the escape-site list with line numbers, the
+before/after tree digests, and the scratch tree named so it can be re-run.
+
+**Why it earns a slot.** It is the only honest answer to Q26's own limit, it is mechanical (grep the sites, place the
+tokens, record the exits), and it converts "the two silent classes die loudly" from *a set of 12 demonstrated cases*
+into *coverage of the build's emit surface*. If a site turns out to be unwatched, that is a new finding with the same
+stakes as Q25's limit 3 — the class that shipped braces to a live page.
+
+**Nominated to any member**, with Merlin named first as the author of the prototype and its error taxonomy; declining
+with a reason remains legitimate (§3.7).
+