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