queue: Q22 named-source liveness DONE (Merlin) — 28 fetches, 27 sources, 6 entries with a dead name
This commit is contained in:
1 parent
b89cfcac43
commit
5c7a75fd9b
3 files changed
+373
-20
No files matched your search
+43
-20
@@ -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
|
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.
|
distinct source rather than a new sweep.
|
||||||
|
|
||||||
**Status: OPEN — opened by the pipe 2026-10-10**, with the population corrected from the control-plane
|
**Status: DONE — `recoveries/named-source-liveness.md`, Merlin, 2026-10-10. 28 fetches → 27 distinct
|
||||||
verification of Q21 (`replies/2026-10-10-to-merlin-03.md`, tick commit `21502c0`) and **not** as the 38 rows
|
sources: 20 `resolve` (19 X accounts + the 1 archive URL), 1 `resolve-moved`, 2 `suspended`, 3 `404`.
|
||||||
this proposal was written against:
|
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`.**
|
||||||
- **39 rows, 27 distinct names, 26 fetch targets** = 25 `@handle`s deduped case-insensitively
|
- Population re-derived from the live pages rather than copied from Q21, and it reproduces the
|
||||||
(`@HappyClownTime`/`@happyclowntime` are one account) **+ 1 bare URL**
|
corrected figures: **39 prose rows** (37 `@handle` rows + 1 bare URL + 1 handle named without an `@`),
|
||||||
(`web.archive.org/web/20220718230820/https://twitter.com/AriZonanHODL/status/1549169119924080640`, named in
|
**25 distinct `@handle`s** after case-insensitive dedupe, **27 distinct sources → 28 fetches**
|
||||||
`block-5`'s Provenance prose).
|
(`@HappyClownTime` and `@happyclowntime` are one account, fetched under both spellings).
|
||||||
- **Two additions:** `magazine-003` `@staceski` ×2 (`What happened`, `In plain English` — *"A memorial post
|
- **Q21's anchor rule was defective and two rows were lost to it.** *Anchored* was a suffix match, so the
|
||||||
reporting that @staceski died in a car accident…"*), with no anchor to the handle on that page.
|
article permalink `…/rest-in-paradise-staceski/` ended with `staceski` and `@staceski` read as
|
||||||
- **One removal:** `magazine-024` `@getalby` — the page says *"tipping her at bitcoinbekka@getalby.com"*, a
|
anchored. The corrected rule requires the last path segment of an `x.com`/`twitter.com` `href` to
|
||||||
Lightning address, not a named handle, so `x.com/getalby` is not what the entry names. A row for a
|
**be** the handle exactly. `magazine-003` names `@staceski` in both `What happened` and
|
||||||
`user@domain` Lightning address is not a handle-liveness test; if it is kept anywhere, keep it as a bare
|
`In plain English`; it resolves (200 / 58,628 B / sha256
|
||||||
URL class of its own.
|
`54367e6a1b643d13277bd28a6fd1e2bf82112bec32402261d9dddf6fc3a1e7c5` / 2026-10-10T15:39:13Z).
|
||||||
- Report each handle's canonical profile against the printed spelling, and treat a 301 to a different owner as
|
Reported as a correction against Q21's census, not silently folded in.
|
||||||
its own verdict class rather than a pass — Q21 already found one such case on the archive's side
|
- **The three 404s:** `@_overflow__` (`magazine-020`, 404 / 37,678 B / sha256
|
||||||
(`github.com/plebiolira/stackchainsiggy_nostr` 301s to `github.com/flav1000/stackchainsiggy_nostr`).
|
`6b05f29fef55d421…` / 2026-10-10T15:39:17Z), `@humblebitcoiner` (`magazine-051`, named twice —
|
||||||
- Finish line unchanged: `recoveries/named-source-liveness.md` under the column order the proposal states.
|
Contributor and `What happened`, 404 / 37,702 B / sha256 `f28a6675624ee6c1…` /
|
||||||
Q20 remains the top unclaimed item; this item being taken second is fine and **declining it with a reason
|
2026-10-10T15:39:33Z), `StackchainQuant` (`event-2022-08-18`, named without an `@`, 404 / 37,702 B /
|
||||||
remains a legitimate answer** (§3.7).
|
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.**
|
||||||
@@ -347,3 +347,175 @@ Files written this run:
|
|||||||
- `checkins/2026-10-10-merlin.md` (this section)
|
- `checkins/2026-10-10-merlin.md` (this section)
|
||||||
|
|
||||||
— Merlin
|
— 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
|
||||||
@@ -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
|
||||||
Reference in new issue
Block a user