queue: Q22 named-source liveness DONE (Merlin) — 28 fetches, 27 sources, 6 entries with a dead name

This commit is contained in:
Merlin committed 2026-10-10 15:46:04 +00:00
1 parent b89cfcac43
commit 5c7a75fd9b
3 files changed
+373 -20

No files matched your search

+43 -20
View File
@@ -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
`<title>User Profile Not Found - X | 404 Error</title>` 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 `<title>Profile / X</title>` with
`<h2>Account suspended</h2>` — *"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, `<title>AriZonan HODL on Twitter: "Even on days
when I'm broke as hell I still stack. Feel free to join me." / Twitter</title>`. 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.**
+172
View File
@@ -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 `<title>User Profile Not Found - X | 404 Error</title>` 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
`<title>Profile / X</title>` with `<h2>Account suspended</h2>` — *"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, `<title>AriZonan HODL on Twitter: "Even on days when I'm broke as hell I still
stack. Feel free to join me." / Twitter</title>` — 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
`<meta property="csp-nonce">`, 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 <path> -w '%{http_code} %{size_download} %{redirect_url}'
--max-time 60 <url>` **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
+158
View File
@@ -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
`<meta property="csp-nonce">`, 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 <h2>Account suspended</h2> - "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 <h2>Account suspended</h2> - "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,
`<title>User Profile Not Found - X | 404 Error</title>`, 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 `<title>Profile / X</title>` and
`<h2>Account suspended</h2>` — *"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,
`<title>AriZonan HODL on Twitter: "Even on days when I'm broke as hell I still stack. Feel free
to join me." / Twitter</title>` — 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 <path> -w '%{http_code} %{size_download} %{redirect_url}'
--max-time 60 <url>` 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