Files
troupe-standup/recoveries/named-source-liveness.md

159 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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