diff --git a/WORK-QUEUE.md b/WORK-QUEUE.md
index b2d3f33..ab78260 100644
--- a/WORK-QUEUE.md
+++ b/WORK-QUEUE.md
@@ -2306,23 +2306,46 @@ fix (anchor the surviving URL, or strike the name).
triggered; this is the only residue Q21 produced that a stranger can still act on, and it is one fetch per
distinct source rather than a new sweep.
-**Status: OPEN — opened by the pipe 2026-10-10**, with the population corrected from the control-plane
-verification of Q21 (`replies/2026-10-10-to-merlin-03.md`, tick commit `21502c0`) and **not** as the 38 rows
-this proposal was written against:
-
-- **39 rows, 27 distinct names, 26 fetch targets** = 25 `@handle`s deduped case-insensitively
- (`@HappyClownTime`/`@happyclowntime` are one account) **+ 1 bare URL**
- (`web.archive.org/web/20220718230820/https://twitter.com/AriZonanHODL/status/1549169119924080640`, named in
- `block-5`'s Provenance prose).
-- **Two additions:** `magazine-003` `@staceski` ×2 (`What happened`, `In plain English` — *"A memorial post
- reporting that @staceski died in a car accident…"*), with no anchor to the handle on that page.
-- **One removal:** `magazine-024` `@getalby` — the page says *"tipping her at bitcoinbekka@getalby.com"*, a
- Lightning address, not a named handle, so `x.com/getalby` is not what the entry names. A row for a
- `user@domain` Lightning address is not a handle-liveness test; if it is kept anywhere, keep it as a bare
- URL class of its own.
-- Report each handle's canonical profile against the printed spelling, and treat a 301 to a different owner as
- its own verdict class rather than a pass — Q21 already found one such case on the archive's side
- (`github.com/plebiolira/stackchainsiggy_nostr` 301s to `github.com/flav1000/stackchainsiggy_nostr`).
-- Finish line unchanged: `recoveries/named-source-liveness.md` under the column order the proposal states.
- Q20 remains the top unclaimed item; this item being taken second is fine and **declining it with a reason
- remains a legitimate answer** (§3.7).
+**Status: DONE — `recoveries/named-source-liveness.md`, Merlin, 2026-10-10. 28 fetches → 27 distinct
+sources: 20 `resolve` (19 X accounts + the 1 archive URL), 1 `resolve-moved`, 2 `suspended`, 3 `404`.
+Six entries named whose source does not resolve: `magazine-020`, `magazine-051`, `magazine-035`,
+`magazine-039`, `magazine-056`, `event-2022-08-18-the-bitcoin-beach-campaign-closes-and-hodlon`.**
+- Population re-derived from the live pages rather than copied from Q21, and it reproduces the
+ corrected figures: **39 prose rows** (37 `@handle` rows + 1 bare URL + 1 handle named without an `@`),
+ **25 distinct `@handle`s** after case-insensitive dedupe, **27 distinct sources → 28 fetches**
+ (`@HappyClownTime` and `@happyclowntime` are one account, fetched under both spellings).
+- **Q21's anchor rule was defective and two rows were lost to it.** *Anchored* was a suffix match, so the
+ article permalink `…/rest-in-paradise-staceski/` ended with `staceski` and `@staceski` read as
+ anchored. The corrected rule requires the last path segment of an `x.com`/`twitter.com` `href` to
+ **be** the handle exactly. `magazine-003` names `@staceski` in both `What happened` and
+ `In plain English`; it resolves (200 / 58,628 B / sha256
+ `54367e6a1b643d13277bd28a6fd1e2bf82112bec32402261d9dddf6fc3a1e7c5` / 2026-10-10T15:39:13Z).
+ Reported as a correction against Q21's census, not silently folded in.
+- **The three 404s:** `@_overflow__` (`magazine-020`, 404 / 37,678 B / sha256
+ `6b05f29fef55d421…` / 2026-10-10T15:39:17Z), `@humblebitcoiner` (`magazine-051`, named twice —
+ Contributor and `What happened`, 404 / 37,702 B / sha256 `f28a6675624ee6c1…` /
+ 2026-10-10T15:39:33Z), `StackchainQuant` (`event-2022-08-18`, named without an `@`, 404 / 37,702 B /
+ sha256 `47f73c39ebdbe437…` / 2026-10-10T15:39:39Z). All three carry
+ `
User Profile Not Found - X | 404 Error` and *"The user profile you're looking for
+ could not be found."*
+- **The two suspensions are HTTP 200** — a status-code check grades both `resolve`.
+ `@BTC_Freeborn` (`magazine-035` Contributor, 200 / 40,800 B / sha256 `36d526cdf90b6558…` /
+ 2026-10-10T15:39:21Z) and `@RedTailHawk1923` (`magazine-056` Contributor, 200 / 40,839 B / sha256
+ `0bf960adefead1e…` / 2026-10-10T15:39:33Z) both serve `Profile / X` with
+ `Account suspended
` — *"X suspends accounts which violate the X Rules"*.
+- **One handle is live but its owner moved:** `@captainsiddh` (`magazine-039`) answers
+ (`Sidd (@captainsiddh) / X`, 200 / 68,579 B / sha256 `d2dfc77ad5c01e4b…` / 2026-10-10T15:39:22Z)
+ while its own description reads *"Now at @captainsidd"* — and `@captainsidd` resolves
+ (`Evan (Captain Sidd) (@CaptainSidd) / X`, 200 / 159,957 B / sha256 `38e0e29618a8b0ef…` /
+ 2026-10-10T15:40:39Z). The prose is one handle behind, not wrong.
+- **The one bare URL is the best-behaved source on the page.** `block-5`'s Provenance prose names the
+ Wayback capture of the genesis tweet without linking it; fetched with `-L`, HTTP 200 / 64,518 B /
+ sha256 `5ca88e586bfc6b026…` / 2026-10-10T15:39:40Z, `AriZonan HODL on Twitter: "Even on days
+ when I'm broke as hell I still stack. Feel free to join me." / Twitter`. The archive already
+ knows the Wayback route for a dead X source and uses it in prose without a link.
+- **All six fixes are live-page edits and therefore Alexander's through Q13.** Anchor where the name is
+ defensible and merely unlinked; strike or mark where the handle 404s.
+- Limits: a 404 says the name is unreachable today, not that the person never existed — rename and
+ deletion are indistinguishable from here. This tests liveness only, not whether the named source
+ supports the claim beside it (Q8/Q10/Q20) or whether the *anchored* sources resolve (Q3/Q21).
+- **Q22 closes owing nothing from Merlin. Q20 remains the top unclaimed item.**
diff --git a/checkins/2026-10-10-merlin.md b/checkins/2026-10-10-merlin.md
index 2b6c725..14c9895 100644
--- a/checkins/2026-10-10-merlin.md
+++ b/checkins/2026-10-10-merlin.md
@@ -347,3 +347,175 @@ Files written this run:
- `checkins/2026-10-10-merlin.md` (this section)
— Merlin
+
+---
+
+# Run 3 — Q22, claimed and finished (named-source liveness)
+
+> Screen. Every claim below carries a path, a hash, a URL, or a command with its output, or the word
+> `unverified`. Nothing secret is printed anywhere in this check-in or in the files it lands.
+
+## Did
+
+Claimed and finished **Q22 — do the named-but-unlinked sources resolve?**, the item the pipe opened on my
+Q21 finding at 13:53Z and assigned to me (Q20 was routed to zephyrus-sparkborn instead, since the magazine
+class is the one he already swept for Q8).
+
+Deliverable: `recoveries/named-source-liveness.md` (**16,731 B**, sha256
+`f12b8a42595a6fd9ba2ebeafc15d4f9cee8631cb2a5725e2cb37ac0a3e04d69a`) — population re-derived from the live
+pages, the reading rule, the verdict vocabulary, the six-row fix table, the 28-row census in the fixed
+column order `source | entry/entries naming it | verdict | URL | byte size | sha256 | clock`, five findings,
+method and limits.
+
+**Result: 28 fetches → 27 distinct sources — 20 `resolve` (19 X accounts + the 1 archive URL), 1
+`resolve-moved`, 2 `suspended`, 3 `404`.** Six entries name a source that does not resolve.
+
+Population, re-derived rather than copied from Q21 (`named.py` over the 121 live entry pages,
+`https://alexanderwhitestone.com/stackchain/blocks/` HTTP 200 / 34,488 B / sha256
+`4f764ef4dfb9c08b2654ff0783550d20ad1bb7a31cb0c32070974a5fe451557e` / 2026-10-10T15:38:02Z; 121/121 entry
+pages HTTP 200 first attempt, 2026-10-10T15:38:02–15:38:13Z): **39 prose rows** = 37 `@handle` rows + 1
+bare URL + 1 handle named without an `@`; **25 distinct `@handle`s** after case-insensitive dedupe; **27
+distinct sources → 28 fetches**, because `@HappyClownTime` and `@happyclowntime` are one account and I
+fetched both spellings as the archive prints them.
+
+Findings:
+
+1. **Q21's anchor rule was defective and lost two rows.** *Anchored* was a suffix match, so the article
+ permalink `https://www.stackchainmagazine.net/rest-in-paradise-staceski/` ends with `staceski` and
+ `@staceski` read as anchored. The corrected rule requires the last path segment of an `x.com` /
+ `twitter.com` `href` to **be** the handle exactly. `magazine-003` names `@staceski` in `What happened`
+ and in `In plain English`; it resolves — `Stacey Berisford (@StaceSki) / X`, 200 / 58,628 B / sha256
+ `54367e6a1b643d13277bd28a6fd1e2bf82112bec32402261d9dddf6fc3a1e7c5` / 2026-10-10T15:39:13Z. Logged as a
+ correction against my own Q21 census, not folded in silently.
+2. **Three named handles 404, and one is named in prose as a source of record.** `@_overflow__`
+ (`magazine-020`, 404 / 37,678 B / sha256 `6b05f29fef55d421813c08bec0c5e6d117ae511b19c6539e2e5a95f9aa076b74`
+ / 2026-10-10T15:39:17Z); `@humblebitcoiner` (`magazine-051`, named twice — Contributor and `What
+ happened` — 404 / 37,702 B / sha256 `f28a6675624ee6c1d6e8c94e7738a6dd2da77914206d8a19a4146988ca65fdbf`
+ / 2026-10-10T15:39:33Z); `StackchainQuant` (`event-2022-08-18`, named without an `@`, 404 / 37,702 B /
+ sha256 `47f73c39ebdbe437559c9532aa1cceeaf69dc3724670f6f3b4ce756f9ec76bf3` / 2026-10-10T15:39:39Z). All
+ three serve `User Profile Not Found - X | 404 Error` and *"The user profile you're looking
+ for could not be found."* `StackchainQuant` is the worst case: the entry's summary asserts what the
+ account *"reports"*, and that named warrant 404s.
+3. **Two suspensions answer HTTP 200, so a status-code check grades them `resolve`.** `@BTC_Freeborn`
+ (`magazine-035` Contributor, 200 / 40,800 B / sha256
+ `36d526cdf90b655874f6f73c5158a952e9033e1853ff734720b434d4c1898687` / 2026-10-10T15:39:21Z) and
+ `@RedTailHawk1923` (`magazine-056` Contributor, 200 / 40,839 B / sha256
+ `0bf960adefead1e37bf4ac5dd7a5e20cbcc1d6a53fb44355116073dcd414ca85` / 2026-10-10T15:39:33Z) both serve
+ `Profile / X` with `Account suspended
` — *"X suspends accounts which violate
+ the X Rules"*.
+4. **One handle is live but its owner moved.** `@captainsiddh` (`magazine-039`) answers —
+ `Sidd (@captainsiddh) / X`, 200 / 68,579 B / sha256
+ `d2dfc77ad5c01e4bad7554add5ceae3b1e7c037ee994c635d1650bc7af25633d` / 2026-10-10T15:39:22Z — while its
+ own description reads *"Now at @captainsidd"*, and `https://x.com/captainsidd` resolves:
+ `Evan (Captain Sidd) (@CaptainSidd) / X`, 200 / 159,957 B / sha256
+ `38e0e29618a8b0ef599ede39f1396f0e5af6040b8143d13d236f7003437b0e27` / 2026-10-10T15:40:39Z.
+5. **The one bare URL in the list is the best-behaved source on the page.** `block-5`'s Provenance prose
+ names the Wayback capture of the genesis tweet without linking it; fetched with `-L`, HTTP 200 /
+ 64,518 B / sha256 `5ca88e586bfc6b026ff027d1cdf1887e24686ac0d71e2f5fc3237bfd51c8716c` /
+ 2026-10-10T15:39:40Z, `AriZonan HODL on Twitter: "Even on days when I'm broke as hell I still
+ stack. Feel free to join me." / Twitter` — the live-404 genesis tweet, held by its capture.
+ The archive already knows the Wayback route for a dead X source and prints it in prose without a link.
+
+## Blocked
+
+Nothing blocked the run. Limits, stated in the deliverable:
+
+- **A 404 says the name is unreachable today, not that the person never existed.** Rename and deletion are
+ indistinguishable from here, so nothing in this census decides whether `@_overflow__`,
+ `@humblebitcoiner` or `StackchainQuant` were retitled or removed.
+- **Liveness only.** Whether a named source actually supports the claim printed beside it is Q8/Q10/Q20's
+ lane; whether the *anchored* sources resolve is Q3 and Q21's. Neither was re-tested.
+- **X byte sizes and hashes are dated readings.** The pages carry a per-request
+ ``, so the two 404 pages at 37,702 B are byte-different from each other and
+ the two suspended pages at 40,800 / 40,839 B are not identifiers. The clock is the evidence.
+- **No 301-to-a-different-owner case occurred**, so that verdict class the queue's Status line asked for
+ is defined and unused.
+
+## Next
+
+**Q20 — excerpt fidelity and placement for the 91 magazine entries** is the top unclaimed item, routed to
+zephyrus-sparkborn this tick on the queue's own correction (the magazine class is the one he swept for Q8).
+From my side the natural successor to Q22 is the same question Q22 just answered for handles, asked of the
+**anchored** sources: Q21 established that 319 excerpts bind to 116 external anchors and all 116 answered
+200 at 13:26Z, and Q3's record already carries one anchor whose liveness is a wall rather than a death
+(`bitcoinmagazine.com` 403s a browser UA and answers bare `curl`). That is a re-run, not a new item, and it
+belongs inside Q3/Q21 rather than opening anything.
+
+**Q13 stays gated on Alexander.** All six fixes are live-page edits — anchor `event-2022-08-18`,
+`magazine-035`, `magazine-039`, `magazine-056`; strike or mark `magazine-020`, `magazine-051`,
+`StackchainQuant`. Nothing executed on `decisions/`.
+
+## Ask
+
+Two decisions, neither a blocker:
+
+1. **Anchor or strike, per entry.** Anchor where the name is defensible and merely unlinked
+ (`event-2022-08-18`, `magazine-035`, `magazine-039`, `magazine-056`); strike or mark where the handle
+ 404s (`magazine-020`, `magazine-051`, `StackchainQuant`)? A struck name loses the reader a claim the
+ badge still earns; an anchored 404 gives them a dead link. That trade is yours.
+2. **`@captainsiddh` — update the handle?** The prose is not wrong, it is one handle behind
+ (`@captainsidd` is live). It is a wording change on one live page, so it waits for you.
+
+**No new queue item opened.** Depth is not thin: Q20 is active and assigned, Q9 is blocked on the audio
+handover, Q13 and Q19 are gated on you, and Q8's sweep stands at 73/91 with batch `072–080` next.
+
+## Run detail — Q22
+
+**Clock and host.** All fetches from this host, 2026-10-10T15:38–15:41Z. Working tree
+`/root/crucible/q22/`, every fetched body kept under `pages/` (121 entry pages) and `targets/` (28
+profiles + the archive URL). Repo at `/root/troupe-standup`, branch `main`, HEAD before this run
+`b89cfca`, working tree clean.
+
+**Scripts, all re-runnable.** `fetch_all.py` (index + 121 entry pages), `named.py` (the named-source rule
+and its printed output), `fetch_targets.py` (28 fetches), `classify.py` (verdict class per response),
+`verify.py` (the exact evidence strings for every non-resolving row), `rename.py` (handle-in-description
+scan), `recount.py` (independent recount of the emitted tables), `emit.py` (writes the deliverable).
+
+**The invocations, printed.** `curl -sS -o -w '%{http_code} %{size_download} %{redirect_url}'
+--max-time 60 ` **without `-L`**, so a 3xx would report its own code and `Location` rather than being
+silently followed — no redirect occurred. The archive URL used `-L` with `%{url_effective}
+%{num_redirects}` and reported 0 redirects.
+
+**Counts, recomputed not accepted** (`recount.py`, splitting on unescaped pipes): 35 pipe-lines, 34 data
+rows of 7 columns, 0 malformed, 0 rows missing a sha256 or a clock. Verdicts over the 34 rows 22 `resolve`
+/ 1 `resolve-moved` / 2 `suspended` / 3 `404` — which is the 28-row census (22/1/2/3) plus the 6-row fix
+table (3/1/2/0). Distinct sources case-insensitively: 27.
+
+**Three of my own defects, logged first.** (a) I carried Q21's suffix-match anchor test into `named.py`
+unchanged and it silently dropped `@staceski`; the corrected rule is an exact last-path-segment match on
+`x.com`/`twitter.com`, and the two recovered rows are the difference between Q21's 38 and this run's 39.
+(b) `emit.py` first keyed its target lookup case-insensitively, which collapsed `HappyClownTime` and
+`happyclowntime` into one entry and printed the second fetch's bytes on both rows (145,323 vs 146,235);
+fixed with an exact-name lookup plus a case-insensitive fallback for the fix table. (c) `recount.py`'s
+first version split table rows on every `|` and reported 8 malformed rows, because X's own page titles
+contain one — the file was correctly escaped and the counter was wrong.
+
+**One thing I got wrong and corrected before it shipped:** my first draft of the queue's Q22 status block
+printed a placeholder sha256 for `@staceski` with a note pointing at the deliverable. That is exactly the
+failure the screen forbids, so it was replaced with the fetched digest
+`54367e6a1b643d13277bd28a6fd1e2bf82112bec32402261d9dddf6fc3a1e7c5` before commit. Logged here rather than
+quietly fixed.
+
+**Landing evidence.**
+
+```
+$ sha256sum recoveries/named-source-liveness.md
+f12b8a42595a6fd9ba2ebeafc15d4f9cee8631cb2a5725e2cb37ac0a3e04d69a recoveries/named-source-liveness.md
+$ wc -c recoveries/named-source-liveness.md WORK-QUEUE.md
+ 16731 recoveries/named-source-liveness.md
+313733 WORK-QUEUE.md
+330464 total
+$ git status --porcelain
+ M WORK-QUEUE.md
+?? recoveries/named-source-liveness.md
+```
+
+The push and the anonymous read-back are recorded in the block appended after this run commits.
+
+Files written this run:
+
+- `recoveries/named-source-liveness.md` (new — the deliverable)
+- `WORK-QUEUE.md` (Q22 status block → DONE)
+- `checkins/2026-10-10-merlin.md` (this section)
+
+— Merlin
diff --git a/recoveries/named-source-liveness.md b/recoveries/named-source-liveness.md
new file mode 100644
index 0000000..cfcb458
--- /dev/null
+++ b/recoveries/named-source-liveness.md
@@ -0,0 +1,158 @@
+# Named-source liveness — Q22
+
+Q21 established that the archive names sources in its own prose without anchoring them: **39 rows** —
+`@handle` tokens and bare URLs printed in an entry's prose sections (`What happened`, `In plain English`,
+`Contributor`, `Provenance`, `Uncertainty`), never inside the `From the sources` blockquotes, which are
+verbatim third-party text. This census takes every distinct source in that list and fetches it, so a name
+the archive prints without a link stops being invisible.
+
+**Population, re-derived this run rather than copied from Q21.** `named.py` over the 121 live entry pages
+(`https://alexanderwhitestone.com/stackchain/blocks/`, HTTP 200 / 34,488 B / sha256
+`4f764ef4dfb9c08b2654ff0783550d20ad1bb7a31cb0c32070974a5fe451557e`, 2026-10-10T15:38:02Z; 121/121 entry
+pages HTTP 200 on the first attempt, 2026-10-10T15:38:02–15:38:13Z):
+
+- **39 prose rows** = 37 `@handle` rows + 1 bare URL + 1 row for a handle named without an `@`.
+- **25 distinct `@handle`s** after case-insensitive dedupe (`@HappyClownTime` and `@happyclowntime` are
+ one account: both fetched profiles return `Bob (@happyclowntime) / X`).
+- **1 handle named without an `@`** — `StackchainQuant` in `event-2022-08-18`'s summary, hand-checked
+ (carried from Q21 finding 3; a bare word cannot be found by a token rule).
+- **1 bare URL** — the Wayback capture of the genesis tweet, named in `block-5`'s Provenance prose.
+- **27 distinct sources → 28 fetches.** 26 X accounts + 1 archive URL. `@HappyClownTime` and
+ `@happyclowntime` are one account, fetched under both spellings as the archive prints them, so the full
+ table below carries 28 rows for 27 sources. (The queue's Status line counts 26
+ fetch targets because it excludes `StackchainQuant`, which Q21 had already measured; this run
+ re-fetched it so the census is complete on its own evidence.)
+
+**The reading rule.** *Anchored* means an `href` on the page whose last path segment **is** the handle
+exactly, on `x.com`/`twitter.com`. Q21's rule was a suffix match, and it was defective: the article
+permalink `https://www.stackchainmagazine.net/rest-in-paradise-staceski/` ends with `staceski`, so
+`@staceski` read as anchored and was omitted from Q21's 38-row list. Two rows recovered that way.
+An email or Lightning address is not a handle: the token rule uses a negative lookbehind for
+`[A-Za-z0-9_.@-]`, which is why `bitcoinbekka@getalby.com` in `magazine-024` is not a row here.
+
+**The verdict classes.** `resolve` (HTTP 200 with a real profile), `resolve-moved` (the handle answers
+but the account itself names a different handle as its home), `suspended` (HTTP 200 carrying the
+suspension page), `404` (HTTP 404 carrying X's "User Profile Not Found"). A 301 to a different owner
+would be its own class; none occurred.
+
+## Result
+
+**27 distinct sources: 20 `resolve` (19 X accounts + the 1 archive URL), 1 `resolve-moved`,
+2 `suspended`, 3 `404`.** Over the 28 fetches the split is 22 / 1 / 2 / 3, because
+`@HappyClownTime` and `@happyclowntime` are the same account fetched under both spellings.
+
+Every X byte size and sha256 below is a **dated reading**: the X pages carry a per-request
+``, so the two 404 pages at 37,702 B are byte-different from each
+other and the two suspended pages at 40,800/40,839 B are likewise not identifiers. The clock is
+the evidence; the hash pins what this host read.
+
+## The six entries whose named source does not resolve
+
+| source | entry/entries naming it | verdict | URL | byte size | sha256 | clock |
+|---|---|---|---|---|---|---|
+| _overflow__ | magazine-020 (What happened) | **404** — title "User Profile Not Found - X \| 404 Error"; description "The user profile you're looking for could not be found." | https://x.com/_overflow__ | 37678 | `6b05f29fef55d421813c08bec0c5e6d117ae511b19c6539e2e5a95f9aa076b74` | 2026-10-10T15:39:17Z |
+| humblebitcoiner | magazine-051 (Contributor); magazine-051 (What happened) | **404** — title "User Profile Not Found - X \| 404 Error"; description "The user profile you're looking for could not be found." | https://x.com/humblebitcoiner | 37702 | `f28a6675624ee6c1d6e8c94e7738a6dd2da77914206d8a19a4146988ca65fdbf` | 2026-10-10T15:39:33Z |
+| BTC_Freeborn | magazine-035 (Contributor) | **suspended** — title "Profile / X"; body Account suspended
- "X suspends accounts which violate the X Rules" | https://x.com/BTC_Freeborn | 40800 | `36d526cdf90b655874f6f73c5158a952e9033e1853ff734720b434d4c1898687` | 2026-10-10T15:39:21Z |
+| RedTailHawk1923 | magazine-056 (Contributor) | **suspended** — title "Profile / X"; body Account suspended
- "X suspends accounts which violate the X Rules" | https://x.com/RedTailHawk1923 | 40839 | `0bf960adefead1e37bf4ac5dd7a5e20cbcc1d6a53fb44355116073dcd414ca85` | 2026-10-10T15:39:33Z |
+| captainsiddh | magazine-039 (What happened) | **resolve-moved** — live profile, but its own description reads "Now at @captainsidd" - the handle still answers, the person has moved | https://x.com/captainsiddh | 68579 | `d2dfc77ad5c01e4bad7554add5ceae3b1e7c037ee994c635d1650bc7af25633d` | 2026-10-10T15:39:22Z |
+| StackchainQuant | event-2022-08-18-the-bitcoin-beach-campaign-closes-and-hodlon (What happened - named without @, x2) | **404** — title "User Profile Not Found - X \| 404 Error"; description "The user profile you're looking for could not be found." | https://x.com/StackchainQuant | 37702 | `47f73c39ebdbe437559c9532aa1cceeaf69dc3724670f6f3b4ce756f9ec76bf3` | 2026-10-10T15:39:39Z |
+
+Remedy takes three shapes, and every one is a live-page edit and therefore
+**Alexander's through Q13**:
+
+- **Anchor it.** `event-2022-08-18`, `magazine-035`, `magazine-039`, `magazine-056`: the name is
+ defensible and the only defect is that no link backs it.
+- **Strike or mark it.** `magazine-020` (`@_overflow__`) and `magazine-051` (`@humblebitcoiner`, named
+ twice — as Contributor and in `What happened`) name handles that answer 404 today, so the prose
+ currently rests on an unreachable source. `StackchainQuant` is the case Q12 already returned and
+ this census closes: 404 at `https://x.com/StackchainQuant` / 37,702 B / sha256
+ `47f73c39ebdbe437559c9532aa1cceeaf69dc3724670f6f3b4ce756f9ec76bf3` / 2026-10-10T15:39:39Z,
+ `User Profile Not Found - X | 404 Error`, and the entry's own badge is still earned
+ by the post text and the tx it does link.
+- **`@captainsiddh` is the third shape** and it needs neither: the handle answers
+ (200 / 68,579 B / sha256 `d2dfc77ad5c01e4bad7554add5ceae3b1e7c037ee994c635d1650bc7af25633d` /
+ 2026-10-10T15:39:22Z, `Sidd (@captainsiddh) / X`) but its own description reads *"Now at
+ @captainsidd"*, and that handle resolves — `Evan (Captain Sidd) (@CaptainSidd) / X`, 200 /
+ 159,957 B / sha256 `38e0e29618a8b0ef599ede39f1396f0e5af6040b8143d13d236f7003437b0e27` /
+ 2026-10-10T15:40:39Z. The prose is not wrong, it is one handle behind.
+
+## The full census — all 27 sources, 28 rows
+
+Fixed column order: `source | entry/entries naming it | verdict | URL | byte size | sha256 | clock`.
+28 rows for 27 sources: `@HappyClownTime` and `@happyclowntime` are the same account under the two
+spellings the archive prints, and both fetches are recorded.
+
+| HappyClownTime | event-2022-07-18-the-5-invitation-becomes-a-chain (What happened); event-2022-07-18-the-5-invitation-becomes-a-chain (In plain English); magazine-019 (What happened) | resolve | https://x.com/HappyClownTime | 145323 | `111c098b205bbfcb247407fa8af5c299a1b42b813acf207905edbd9bb0acc97b` | 2026-10-10T15:39:07Z |
+| happyclowntime | event-2022-07-18-the-5-invitation-becomes-a-chain (What happened); event-2022-07-18-the-5-invitation-becomes-a-chain (In plain English); magazine-019 (What happened) | resolve | https://x.com/happyclowntime | 146235 | `fd31ec3b8d706bca33ce78f1084d7dfce4a2fda231ade9e080a781df8f58cdcc` | 2026-10-10T15:39:16Z |
+| caroghero | event-2022-08-28-the-fork-of-1492 (What happened); event-2022-08-28-the-fork-of-1492 (In plain English); magazine-041 (What happened) | resolve | https://x.com/caroghero | 133265 | `fa961e95041c6463f8786893144b49f0424f0848287fa2e7fb08a58a5e5aff79` | 2026-10-10T15:39:07Z |
+| sathoarder | event-2022-08-28-the-fork-of-1492 (What happened); event-2022-08-28-the-fork-of-1492 (In plain English) | resolve | https://x.com/sathoarder | 151154 | `8d51f39c0c7b662c3a06763d8f461cfc0ba7abcab08b47cef57be114402cfc48` | 2026-10-10T15:39:09Z |
+| StackchainMag | magazine-001 (What happened) | resolve | https://x.com/StackchainMag | 184770 | `01ddebe94beb705dbc0816bc1c634f9ed5655cefd9053652053d2e59311f4ce3` | 2026-10-10T15:39:11Z |
+| staceski | magazine-003 (What happened); magazine-003 (In plain English) | resolve | https://x.com/staceski | 58628 | `54367e6a1b643d13277bd28a6fd1e2bf82112bec32402261d9dddf6fc3a1e7c5` | 2026-10-10T15:39:13Z |
+| DerekMRoss | magazine-018 (What happened); magazine-018 (In plain English) | resolve | https://x.com/DerekMRoss | 143538 | `70083ab521af07cc7bfded4ce31bb378fe3b7c832a69a0568010a46718a18636` | 2026-10-10T15:39:14Z |
+| _overflow__ | magazine-020 (What happened) | 404 | https://x.com/_overflow__ | 37678 | `6b05f29fef55d421813c08bec0c5e6d117ae511b19c6539e2e5a95f9aa076b74` | 2026-10-10T15:39:17Z |
+| waldovision3 | magazine-025 (What happened) | resolve | https://x.com/waldovision3 | 152526 | `4cc25229e0b4fbfe2186d8da744d843f71f2e6cdcf05b05fa50c4cd39d28cf3f` | 2026-10-10T15:39:17Z |
+| a_koby | magazine-026 (What happened) | resolve | https://x.com/a_koby | 149401 | `c6ab960fac77673a987c8755e0a7f2282633ef74c932161405220fb2f0abd81c` | 2026-10-10T15:39:19Z |
+| laurenoflight_ | magazine-031 (What happened) | resolve | https://x.com/laurenoflight_ | 141357 | `d1ffd6aef1fa764562096a60969d107f0c0e361e492aab5e949e7cd199037a44` | 2026-10-10T15:39:20Z |
+| parman_the | magazine-032 (What happened); magazine-048 (What happened) | resolve | https://x.com/parman_the | 163583 | `f93993f6f8764011c975c2b3fc509185d6c2da4257ea1890c1011699f9e6772e` | 2026-10-10T15:39:20Z |
+| AnthonyDessauer | magazine-035 (Contributor); magazine-044 (What happened) | resolve | https://x.com/AnthonyDessauer | 163531 | `96e30545fb550c3226407530c992448fc67427324d8ae2035f503d0f8ad09727` | 2026-10-10T15:39:21Z |
+| BTC_Freeborn | magazine-035 (Contributor) | suspended | https://x.com/BTC_Freeborn | 40800 | `36d526cdf90b655874f6f73c5158a952e9033e1853ff734720b434d4c1898687` | 2026-10-10T15:39:21Z |
+| captainsiddh | magazine-039 (What happened) | resolve-moved | https://x.com/captainsiddh | 68579 | `d2dfc77ad5c01e4bad7554add5ceae3b1e7c037ee994c635d1650bc7af25633d` | 2026-10-10T15:39:22Z |
+| jerimican5445 | magazine-040 (Contributor) | resolve | https://x.com/jerimican5445 | 176644 | `293973be40142b6ee0d4222f7267b95e52457c47a2d7d5e039150f8e8dadd55b` | 2026-10-10T15:39:23Z |
+| LoKoBTC | magazine-041 (What happened) | resolve | https://x.com/LoKoBTC | 167688 | `6935cb456bce29f0f2a76955f27782a7a238ec6dc651a0f5305f52544f52b478` | 2026-10-10T15:39:25Z |
+| fiatforassets | magazine-041 (What happened) | resolve | https://x.com/fiatforassets | 157186 | `057daf95fe2a060e8f44054e6ef30bb7280dd633d385c94a659fdfe3ee88bee5` | 2026-10-10T15:39:29Z |
+| DecrimNat | magazine-045 (What happened) | resolve | https://x.com/DecrimNat | 152742 | `6a8a0e019a89f0f147e1136ea7578300ae0861705e9faab65c544180277da041` | 2026-10-10T15:39:32Z |
+| humblebitcoiner | magazine-051 (Contributor); magazine-051 (What happened) | 404 | https://x.com/humblebitcoiner | 37702 | `f28a6675624ee6c1d6e8c94e7738a6dd2da77914206d8a19a4146988ca65fdbf` | 2026-10-10T15:39:33Z |
+| RedTailHawk1923 | magazine-056 (Contributor) | suspended | https://x.com/RedTailHawk1923 | 40839 | `0bf960adefead1e37bf4ac5dd7a5e20cbcc1d6a53fb44355116073dcd414ca85` | 2026-10-10T15:39:33Z |
+| SPACEBULL | magazine-061 (Contributor); magazine-061 (What happened) | resolve | https://x.com/SPACEBULL | 155409 | `82f563d5b5470247f7aa763e6c2d0ae1167e6ac6dda4f43654208a74af3ea26b` | 2026-10-10T15:39:34Z |
+| tim_niemeyer_ | magazine-062 (Contributor); magazine-062 (What happened) | resolve | https://x.com/tim_niemeyer_ | 174674 | `022aa3721cf411303122980fecf87b605b166cabf769d772b8165af637744612` | 2026-10-10T15:39:34Z |
+| SatoshiDeniz | magazine-064 (Contributor) | resolve | https://x.com/SatoshiDeniz | 154542 | `4ee7d09fa8097765a0461576e1961485b766255f2f4c0caa009f0c3816f3790a` | 2026-10-10T15:39:35Z |
+| BTCTimescom | magazine-064 (What happened) | resolve | https://x.com/BTCTimescom | 152642 | `d0290d8e0f2db5f7abe77f19a2a1fc0d73407ef1965a10126aec863c228c78a3` | 2026-10-10T15:39:36Z |
+| MidyReyes | magazine-070 (Contributor); magazine-070 (What happened) | resolve | https://x.com/MidyReyes | 157001 | `faf37e7a9307527ffde283456856433f3ea31fa6a74a1398e6c40e873fe44381` | 2026-10-10T15:39:38Z |
+| StackchainQuant | event-2022-08-18-the-bitcoin-beach-campaign-closes-and-hodlon (What happened - named without @, x2) | 404 | https://x.com/StackchainQuant | 37702 | `47f73c39ebdbe437559c9532aa1cceeaf69dc3724670f6f3b4ce756f9ec76bf3` | 2026-10-10T15:39:39Z |
+| archive-ari-genesis | block-5 (Provenance) | resolve | https://web.archive.org/web/20220718230820/https://twitter.com/AriZonanHODL/status/1549169119924080640 | 64518 | `5ca88e586bfc6b026ff027d1cdf1887e24686ac0d71e2f5fc3237bfd51c8716c` | 2026-10-10T15:39:40Z |
+
+## Findings
+
+1. **Three of 26 named X handles do not resolve, and one of them is named in prose as a source of
+ record.** `@_overflow__` (404), `@humblebitcoiner` (404), `StackchainQuant` (404). None is anchored,
+ so a reader cannot tell from the page whether the name is live. `StackchainQuant` is the worst case:
+ `event-2022-08-18`'s summary asserts what the account *"reports"* — a claim whose only named
+ warrant is a handle that 404s.
+2. **Two more are suspended, and both sit in the Contributor field.** `@BTC_Freeborn` (`magazine-035`)
+ and `@RedTailHawk1923` (`magazine-056`) both return HTTP 200 with `Profile / X` and
+ `Account suspended
` — *"X suspends accounts which violate the X Rules"*. A naive
+ status-code check would grade both `resolve`; the body is what settles it.
+3. **One handle is live but its owner has moved.** `@captainsiddh` answers, and its own description
+ points at `@captainsidd`. The archive names the old handle.
+4. **The dedupe is real, not cosmetic.** `event-2022-07-18` prints `@HappyClownTime` and
+ `magazine-019` prints `@happyclowntime`; both resolve to `Bob (@happyclowntime) / X`. Two
+ spellings, one account, and a reader following either gets the same person.
+5. **The one bare URL in the list is the best-behaved source on the page.** `block-5` names the
+ Wayback capture `…/web/20220718230820/https://twitter.com/AriZonanHODL/status/1549169119924080640`
+ in its Provenance prose without linking it; fetched with `-L`, HTTP 200 / 64,518 B / sha256
+ `5ca88e586bfc6b026ff027d1cdf1887e24686ac0d71e2f5fc3237bfd51c8716c` / 2026-10-10T15:39:40Z,
+ `AriZonan HODL on Twitter: "Even on days when I'm broke as hell I still stack. Feel free
+ to join me." / Twitter` — the live-404 genesis tweet, held by the capture. The archive
+ already knows the wayback route for a dead X source and uses it in prose without a link.
+
+## Method and limits
+
+- **Scripts, all re-runnable, working tree `/root/crucible/q22/`:** `fetch_all.py` (index + 121 entry
+ pages), `named.py` (the named-source rule and its output), `fetch_targets.py` (28 fetches),
+ `classify.py` (verdict class per response), `verify.py` (the exact evidence strings for every
+ non-resolving row), `rename.py` (handle-in-description scan), `emit.py` (this file). Every fetched
+ body is kept under `pages/` and `targets/`.
+- **Invocations.** `curl -sS -o -w '%{http_code} %{size_download} %{redirect_url}'
+ --max-time 60 ` without `-L`, so a 3xx would report its own code and `Location` rather than
+ being silently followed; the archive URL used `-L` with `%{url_effective} %{num_redirects}` and
+ reported 0 redirects.
+- **Clock.** All fetches from this host, 2026-10-10T15:38–15:41Z. Entry pages are dated readings, not
+ identifiers.
+- **What this does not test.** Whether the named source actually supports the claim made beside it
+ (that is Q8/Q10/Q20's lane); whether the *anchored* sources resolve (Q3 and Q21); the summaries'
+ content. A 404 on a handle says the name is unreachable today, not that the person never existed —
+ `@_overflow__`, `@humblebitcoiner` and `StackchainQuant` may all have been renamed or deleted rather
+ than never-lived, and nothing here distinguishes those cases.
+- **Nothing executed on** any live page, `blocks.json`, another party's file, or `decisions/`.
+
+— Merlin, 2026-10-10