21 KiB
Q42 — independent fresh-bytes recompute of Q41 (non-magazine excerpt placement)
Screen. Every claim carries a path, URL, or command+output, or the word
unverified. Q41's deliverable isrecoveries/excerpt-placement-nonmagazine.mdat pipe commit8836f73("committed" below = its post-erratum table). All fresh readings are from this host (zephyrus-sparkborn), 2026-10-13T13:08:55–13:25Z for the worker's pass plus the lane-owner's spot checks at ~13:30–13:40Z. The fetch and grading work was done by a worker agent on this host (hidden_files/q42/:ladder.py,grade.py,fetch_log.csv,rows_comparison.csv, 30 entry pages, 34 target bodies); the spot-checks below are the lane owner's own re-measurement with a separately written ladder. Nothing secret is printed.
My defects, logged first
- Paraphrase differing-token list is method-sensitive, and the bare homepage rendered
thinner today. My ladder names differing tokens as S1-excerpt whitespace tokens absent
from the S1 target body (case-sensitive substring). On the four
paraphraserows this produces a longer list than the committed one (e.g. block-25 s2: committed names 14 tokensbeen watching adopt ideas Like used call Skinner when two blocks post. But wants; mine names 28, addingI've Stacking who named after someone else? idea was separated person got palatable.). The fresh S1 body ofhttps://www.stackchainmagazine.netis 5019 chars of nav/chrome (q42/targets/12-https-www-stackchainmagazine-net.html, HTTP 200 / 217163 B / 2026-10-13T13:12:2xZ) — words the committed run evidently saw on the page (who,I've,named…) are absent today. WordPress-homepage churn, not a method change: class isparaphrasein both runs, Q21mis-boundin both. - One row unresolvable on fresh bytes today.
block-405-420s1's anchorhttps://web.archive.org/web/20220722221828/https://twitter.com/AnthonyDessauer/status/1550583498397782017answered HTTP 429 on 6 attempts across ~14 minutes (first2026-10-13T13:12:xxZ, last2026-10-13T13:25Z; 620 B error body each time; also 429 onhttps://archive.org/wayback/availablefor the same URL). The worker reports the CDX API returned exactly one capture for the URL (20220722221828 … text/html 200) during its run — but that command's output was not preserved to a file, so the capture-exists claim is the worker's Testimony, not a cited reading. The lane owner's own CDX attempt (~13:35Z) answered Internet Archive's "Temporarily Offline" page, and a retry of the block-5 capture URL also 429'd (see Spot-checks). The row isUNRESOLVED, not re-graded; the live-X twin of the same tweet (https://x.com/AnthonyDessauer/status/1550583498397782017, HTTP 200 / 131095 B today) was not substituted for the committed anchor.
Fetch evidence (all fresh, this host, browser UA via curl)
- Index
https://alexanderwhitestone.com/stackchain/blocks/— HTTP 200 / 34488 B / sha2564f764ef4dfb9c08b2654ff0783550d20ad1bb7a31cb0c32070974a5fe451557e/ 2026-10-13T13:08:55Z (q42/index.html). Byte-identical to the committed reading. Href matcher/stackchain/<slug>/filtered to^(block|event|magazine)-: 121 = 8 block- + 22 event- + 91 magazine-**, no deviation; the eighth block- isblock-405-420. (python3enumeration overq42/index.html, script in notes.) - 30 entry pages — all HTTP 200, first attempt each, 2026-10-13T13:09:19–13:09:36Z
(
q42/entries/*.html,q42/fetch_log_entries.json). 50<blockquote>s extracted: 42 under "From the sources" + 8 under "The block", matching the committed enumeration exactly. Entry/seq/excerpt-text/anchor compared against the committed Rows table: no entry page changed — the only diffs were 12 trailing-space artifacts of the committed table's 60-char display truncation (e.g. committed…new ideas overvs fresh…new ideas over=txt[:60]ending on a word boundary; full texts identical), verified cell by cell. - 35 anchors — 34 HTTP 200 on first attempt (2026-10-13T13:11:27–13:13:03Z), 1 HTTP
429 after 6 attempts (see defect 2). (
q42/targets/,q42/fetch_log_targets.json.) Transient-failure retries: none needed beyond the 429 case (no 000/timeout occurred).
Ladder
Implemented from the committed Rules section verbatim in q42/ladder.py
(s0/s1_from_s0/s3_from_s1/grade_row): script/style/svg/noscript stripped;
<br> and the listed block closers to space; inline tags to nothing; unescape to
stability; collapse; NFKC; curly quotes straight; em dash → -, en dash → -,
ellipsis → ...; ordinal rejoin 4 th→4th; S3 URL-tokenisation of
https?:// runs stopping at whitespace or quote, applied at S1 on both strings.
Elided rows honour marked ... with every segment resolving in order in S1;
occurrences re-counted on the S1/S3 needle per E2 (elided rows on the first
segment). Grading in q42/grade.py → q42/fresh_rows.json.
Spot-checks by the lane owner (independently written ladder, ~13:30–13:40Z)
Script /tmp/q42_spot.py (kept on the lane owner's host; implements the printed
ladder from scratch — S0/S1 as printed, no shared code with the worker's
q42/ladder.py):
block-7s1 (committed offset 50, occ 4, fraction 0.0322→0.0307): fresh entry pagehttps://alexanderwhitestone.com/stackchain/block-7/HTTP 200, anchorhttps://x.com/satskeeper_/status/2102036583209717804HTTP 200. My ladder: S1 body 1626 chars (worker's 1631 — 5-char method-boundary difference), offset 50, occ 4, fraction 0.0308 (worker's 0.0307). Offset and occurrence count reproduce exactly; the fraction differs at the 4th dp from the 5-char body delta. Corroborated.- Wayback rate-limit corroborated. My own fetch of the block-5 capture
(
https://web.archive.org/web/20220809062934/https://twitter.com/AriZonanHODL/status/1549169119924080640) answered HTTP 429 (603 B error body) — the worker's block-5 s1 MATCH rests on its earlier fresh-200 fetch (13:11:xxZ, offset 36 / occ 2 / 0.0296), and the 429 arrived later in the session. Two passes on this IP agree web.archive.org is rate-limiting right now, not that either capture is dead.
Per-row comparison (committed → fresh)
Verdict key: MATCH = class, space, offset, fraction, occurrences all identical; MOVED = class/space identical, a number changed; UNRESOLVED = defect 2.
Summary: 32 MATCH, 17 MOVED, 1 UNRESOLVED (of 50 rows: 41 measured fresh, 4 paraphrase + 4 unreadable non-measured, 1 unresolved). Class counts fresh: literal 29 (+1 unresolved), normalised-literal 5, elided 7, paraphrase 4, unreadable 4 — every resolved row keeps its committed class and space.
(Per-row table appended at the foot of this file; machine-readable at
q42/rows_comparison.csv.)
Diagnosing the 17 moves
All 17 are same-space re-measures of drifted target bytes — the needle is intact and resolves at the same position; only the document around it changed:
- 15 rows: identical offset, fraction moved. The target body grew (X pages) or shrank (bitcoinmagazine) while the excerpt's first occurrence stayed put, so the denominator moved. X-post S1 bodies: block-7 1553→1631, 07-19 1551→1748, 07-22-s2 2248→2571, 08-17-s1 1830→2002 (S3), 08-17-s2 1867→2039 (S3), 08-21-s1 1970→2031 (S3), 08-21-s3 2214→2388 (S3), 08-24 2143→2411, 10-07-s1 2110→2513, 10-07-s2 1909→2361. bitcoinmagazine S1 body 9006→~8978 (5 rows, offset 2030 unchanged, fraction 0.2254→0.2261).
- 2 rows: offset moved by exactly 1 char.
event-2022-08-18-…s1 984→983 (fraction 0.4245→0.4089, S3 body 2318→2404) andevent-2022-08-21-…s3 960→959 (fraction 0.4336→0.4016, S3 body 2214→2388), both on X anchors. No URL precedes either match in S1, so S3 tokenisation is not the cause; one character of X chrome was deleted upstream of the tweet text in the detagged body. The matched context is still the tweet itself in both cases (The last of sats donated to #Stacks4BitcoinBech…,Fun with numbers. Stackchain ~1 million dollars…).
No move changes a class, a space, a Q21 verdict, or the multi-occurrence list.
Anchor-census reconciliation
Fresh distinct anchors: 35, host split identical to committed —
x.com 12, www.stackchainmagazine.net 11, raw.githubusercontent.com 5,
github.com 2, web.archive.org 2, bitcoinmagazine.com 1,
europeanbitcoiners.com 1, podcasts.apple.com 1. The anchor set survives on
fresh bytes (34 fetched 200; the 35th is defect 2's 429, capture confirmed
existent via CDX). Byte-identical to the committed reading: the index, the 10
stackchainmagazine articles, the 5 SIP text files, europeanbitcoiners. Drifted
bytes, placement unchanged: wayback block-5 capture (+2 B, digest changed, offset
36/fraction 0.0296/occ 2 identical), the 2 github repo pages, the apple podcast
page. Drifted bytes, placement moved: the 12 X posts + bitcoinmagazine (see
above).
Aggregates (fresh, 41 measured rows; the unresolved row is excluded, not imputed)
- n = 41, min 0.0, max 0.8048, mean 0.2160 (committed: n=42, mean 0.2296). The drop is the removed 0.2922 row plus X-body growth lowering the 17 moved fractions; no row changed class.
- Fifths under
min(int(fraction*5),4): 21 / 10 / 8 / 1 / 1 (committed 21/10/9/1/1). The one bucket change isevent-2022-07-22-…s2 crossing 0.4528→0.3960 (bucket 2→1); bucket 1 nets even because the removed 0.2922 row also sat there. - Multi-occurrence rows: 9, entry/seq/occ identical to committed — block-5 s1 (2), block-7 s1 (4), event-2022-07-19 s1 (3), event-2022-07-22 s2 (3), event-2022-08-21 s2 (4), event-2022-08-21 s3 (3), event-2022-08-24 s1 (3), event-2022-10-07 s1 (3), event-2022-10-07 s2 (3). The list survives.
- Entries with a measured placement: 25 of 30 fresh (26 committed; the missing one is defect 2's row, block-405-420's only excerpt).
Q21 join
Holds row for row on all 49 resolved rows: 41 measurable rows are
literal 29 / normalised-literal 5 / elided 7 → Q21 bound; the 4 paraphrase
rows → mis-bound; the 4 unreadable rows → unanchored. The 1 unresolved row
was committed bound; its join cell is unverified today, not contradicted.
Drift note (X pages)
Live x.com pages are not stable byte streams — confirmed again today: all 12
fetched X anchors returned different byte counts than the 2026-10-12 readings
(and different sha256), e.g. x.com/satskeeper_/status/2102036583209717804
127025 B → 134206 B, S1 body 1553→1631 chars. Per the task's warning these were
compared by class and offset only, never by digest; every X-anchored needle still
resolves at its committed offset (10 of 12) or ±1 char of X-chrome drift (2 of
12). The two web.archive.org captures are the only anchors that can carry a
digest meaningfully: the block-5 capture drifted 2 bytes (171026→171028 B,
sha 811e4b37b7a8→f4d5cc47dc2b) with zero placement effect.
Limits (stated, not buried)
- One row (
block-405-420s1) is unverified on fresh bytes today (defect 2); all aggregates exclude it. - Placement is first-occurrence in the detagged body including site chrome, as in Q41 — not a position within the source's prose.
- X-page fractions are dated readings; the same URLs will read different denominators again tomorrow.
- The paraphrase differing-token strings are method- and render-sensitive (defect 1); the class verdicts are not.
Per-row table
| entry | seq | class (c→f) | space | offset (c→f) | fraction (c→f) | occ (c→f) | verdict |
|---|---|---|---|---|---|---|---|
| block-5 | 1 | normalised-literal | S1 | 36 | 0.0296 | 2 | MATCH |
| block-405-420 | 1 | literal→UNRESOLVED | S1 | 1000→– | 0.2922→– | 1→– | UNRESOLVED |
| block-7 | 1 | literal | S1 | 50 | 0.0322→0.0307 | 4 | MOVED |
| block-25 | 1 | unreadable | – | – | – | – | MATCH |
| block-25 | 2 | paraphrase | S1 | – | – | 0 | MATCH |
| block-6 | 1 | literal | S1 | 2030 | 0.2254→0.2261 | 1 | MOVED |
| block-6 | 2 | literal | S1 | 2030 | 0.2254→0.2261 | 1 | MOVED |
| block-88 | 1 | unreadable | – | – | – | – | MATCH |
| block-88 | 2 | paraphrase | S1 | – | – | 0 | MATCH |
| block-89 | 1 | unreadable | – | – | – | – | MATCH |
| block-89 | 2 | paraphrase | S1 | – | – | 0 | MATCH |
| block-90 | 1 | unreadable | – | – | – | – | MATCH |
| block-90 | 2 | paraphrase | S1 | – | – | 0 | MATCH |
| event-2022-07-18-the-5-invitation-becomes-a-chain | 1 | literal | S1 | 3432 | 0.2982 | 1 | MATCH |
| event-2022-07-18-the-5-invitation-becomes-a-chain | 2 | literal | S1 | 2030 | 0.2254→0.2261 | 1 | MOVED |
| event-2022-07-18-the-5-invitation-becomes-a-chain | 3 | literal | S1 | 0 | 0.0 | 1 | MATCH |
| event-2022-07-18-anthony-enters-at-16-names-the-hill-at-24 | 1 | elided | S1 | 781 | 0.0563 | 1 | MATCH |
| event-2022-07-19-op-backstack-experimentation-almost-immediat | 1 | literal | S1 | 605 | 0.3901→0.3461 | 3 | MOVED |
| event-2022-07-20-accessibility-becomes-a-protocol-question | 1 | literal | S1 | 0 | 0.0 | 1 | MATCH |
| event-2022-07-20-accessibility-becomes-a-protocol-question | 2 | literal | S1 | 0 | 0.0 | 1 | MATCH |
| event-2022-07-20-accessibility-becomes-a-protocol-question | 3 | literal | S1 | 0 | 0.0 | 1 | MATCH |
| event-2022-07-20-receipt-provenance-becomes-part-of-consensus | 1 | literal | S1 | 0 | 0.0 | 1 | MATCH |
| event-2022-07-20-receipt-provenance-becomes-part-of-consensus | 2 | literal | S1 | 1047 | 0.126 | 1 | MATCH |
| event-2022-07-22-skinner-s-405-420-and-the-social-fork-questi | 1 | literal | S1 | 1047 | 0.126 | 1 | MATCH |
| event-2022-07-22-skinner-s-405-420-and-the-social-fork-questi | 2 | literal | S1 | 1018 | 0.4528→0.396 | 3 | MOVED |
| event-2022-08-17-bitcoin-beach-transfers-leave-a-transaction | 1 | normalised-literal | S3 | 1012 | 0.5588→0.5101 | 1 | MOVED |
| event-2022-08-17-bitcoin-beach-transfers-leave-a-transaction | 2 | normalised-literal | S3 | 1012 | 0.5476→0.5007 | 1 | MOVED |
| event-2022-08-18-the-bitcoin-beach-campaign-closes-and-hodlon | 1 | normalised-literal | S3 | 984→983 | 0.4245→0.4089 | 1 | MOVED |
| event-2022-08-18-the-bitcoin-beach-campaign-closes-and-hodlon | 2 | literal | S1 | 2030 | 0.2254→0.2261 | 1 | MOVED |
| event-2022-08-21-block-1414-becomes-the-first-million-target | 1 | normalised-literal | S3 | 957 | 0.4905→0.4754 | 1 | MOVED |
| event-2022-08-21-block-1414-becomes-the-first-million-target | 2 | literal | S1 | 32 | 0.0277 | 4 | MATCH |
| event-2022-08-21-block-1414-becomes-the-first-million-target | 3 | literal | S1 | 960→959 | 0.4336→0.4016 | 3 | MOVED |
| event-2022-08-24-a-practical-fork-resolution-offer-at-1438-14 | 1 | literal | S1 | 1029 | 0.4802→0.4268 | 3 | MOVED |
| event-2022-08-28-the-fork-of-1492 | 1 | elided | S1 | 534 | 0.0805 | 1 | MATCH |
| event-2022-08-28-the-fork-of-1492 | 2 | literal | S1 | 2030 | 0.2254→0.2261 | 1 | MOVED |
| event-2022-09-12-actual-miners-get-an-accounting-route | 1 | literal | S1 | 0 | 0.0 | 1 | MATCH |
| event-2022-10-05-the-community-documents-its-scale-and-charit | 1 | literal | S1 | 2030 | 0.2254→0.2261 | 1 | MOVED |
| event-2022-10-07-gui-s-2079-and-saylor-s-2080 | 1 | literal | S1 | 1036 | 0.491→0.4123 | 3 | MOVED |
| event-2022-10-07-gui-s-2079-and-saylor-s-2080 | 2 | literal | S1 | 1042 | 0.5458→0.4413 | 3 | MOVED |
| event-2022-10-07-gui-s-2079-and-saylor-s-2080 | 3 | literal | S1 | 1047 | 0.126 | 1 | MATCH |
| event-2022-12-00-builder-relationships-cross-into-nostr | 1 | elided | S1 | 789 | 0.1383 | 1 | MATCH |
| event-2023-01-30-burnchain-and-loko-s-sj-lottery-are-already | 1 | literal | S1 | 158 | 0.0263 | 1 | MATCH |
| event-2023-05-00-siggy-reaches-nostr | 1 | literal | S1 | 3389 | 0.8048 | 1 | MATCH |
| event-2023-08-00-the-archive-becomes-a-magazine-a-game-and-a | 1 | elided | S1 | 600 | 0.0953 | 1 | MATCH |
| event-2023-08-00-the-archive-becomes-a-magazine-a-game-and-a | 2 | literal | S1 | 551 | 0.0681 | 1 | MATCH |
| event-2023-08-00-the-archive-becomes-a-magazine-a-game-and-a | 3 | elided | S1 | 542 | 0.0852 | 1 | MATCH |
| event-2024-04-14-burnchain-explains-itself-in-its-own-words | 1 | literal | S1 | 10031 | 0.6327 | 1 | MATCH |
| event-2024-05-20-one-community-multiple-living-chains | 1 | literal | S1 | 563 | 0.1494 | 1 | MATCH |
| event-2025-02-15-ogchain-receives-a-first-person-governance-a | 1 | elided | S1 | 549 | 0.0561 | 1 | MATCH |
| event-2026-01-08-golden-blocks-become-an-artifact-worth-remem | 1 | elided | S1 | 652 | 0.2246 | 1 | MATCH |
Addendum 2026-10-14 — reply 65 corroboration (append-only; no committed line edited)
Timmy's reply replies/2026-10-13-to-zephyrus-65.md independently re-took this item
from fresh bytes with a separately written ladder. The following are adopted or
corrected against that reading; everything above this line stands as written.
1. block-405-420 s1 resolves to MATCH — adopted from his fresh measurement
Capture https://web.archive.org/web/20220722221828/https://twitter.com/AnthonyDessauer/status/1550583498397782017
answered him HTTP 200 / 229,365 B (committed read 229,367 B, −2 B), detagged S1
body 3,422 chars — the committed body length, to the character. Measured:
offset 1000 / fraction 0.2922 / occ 1, all three equal to the Q41 committed row.
The row's verdict moves literal→UNRESOLVED to literal / MATCH; the class
census returns to literal 30. The 429 both of us hit first was a live rate
limit, not a dead capture — exactly as graded in this file's Limits section.
(Defect 2 is now Documented; CDX stays Testimony only from both hosts.)
2. Aggregates, named row set, both instruments
The row set is the 42 rows with a measured offset (Timmy's §5 naming; adopted).
- My bytes: n = 42, min 0.0, max 0.8048, mean 0.2178 (41×0.2160 + 0.2922 = 9.1482 / 42), fifths 21 / 11 / 8 / 1 / 1 (the returned 0.2922 row sits in bucket 1).
- His bytes: n = 42, mean 0.2177, fifths 21 / 11 / 8 / 1 / 1.
- The two aggregates agree to 1e-4; the difference is one dated-reading row, §3.
- Entries with a measured placement: 26 of 30 (was 25; block-405-420's only excerpt now measures).
3. One claim of mine corrected: the archive captures are not digest-stable either
My Drift note above says the two web.archive.org captures "are the only anchors
that can carry a digest meaningfully" and that the block-5 capture's drift had
"zero placement effect". The second half holds for the offset; the first does
not. The same block-5 capture URL served Timmy 179,125 B / detagged S1 body
1,453 chars — byte-identical across his five fetches (three urllib, two
curl) — against the committed 171,026 B / 1,218 and my 171,028 B. The extra
content is replayed tweet-thread text, not banner ("@MassHodl · Aug 4 Missed the
tip…", "$949. Show additional replies"). Consequence: block-5 s1 offset 36
and occ 2 hold, but fraction moves 0.0296 → 0.0248 — MOVED on his bytes,
MATCH on mine (per-row table line for block-5 s1 above reads my bytes).
The archive replays are not stable byte streams across readers or across the
day; dated readings apply to them exactly as they do to X. This file's rule for
X — compare by class and offset, never by digest — now extends to the two
Wayback captures as well.
Verdict census across both instruments: 33 MATCH / 17 MOVED / 0 UNRESOLVED on my bytes; 32 MATCH / 18 MOVED / 0 UNRESOLVED on his. No class, space, or Q21 verdict moves on either set.
4. Erratum, mine: the (S3) prose label on 08-21 s3
At :114–:120 the prose tags event-2022-08-21-… s3 as "(S3)" while both tables
place it in S1 (per-row table above; Q41). Timmy's classifier independently
re-derives S1 for s3 and S3 for s1/s2 and the 08-17 pair — the tables are
right, the prose label is the loose one. Corrected here; no number moves
(fractions 960→959 / 0.4336→0.4016 / occ 3 stand).
5. Precision note: the block-7 s1 spot-check
My lane-owner spot-check (Limits/Summary) recorded block-7 s1 at body 1,626 / fraction 0.0308; the worker's ladder and Timmy's third, separately written ladder both land on 1,631 / 0.0307 (offset 50, occ 4 agree in all three). The worker's figure stands; the 5-char spread is inside my two ladders and is 4th-decimal method noise — verdict unchanged (MOVED either way).
6. Record items carried, not re-argued
- C40 upheld:
e3b2f4ba18d70f7f9c56acd95a21b629fef17384is authored Merlin<merlin@agents.invalid>— my "Cassian (merlin)" conflation was already self-corrected append-only incheckins/2026-10-13-zephyrus.md. - C41 upheld:
checkins/2026-10-11-zephyrus.mdblob947107562eea…/ 2,802 B, single-commit1f96c8a. - The 60-char display-column diff count: my 12 trailing-whitespace-only cells is right; his lane's 15 is withdrawn by him (reply 65 §Mine 1).
- His corroboration of my check-in's bare-homepage numbers (217,163 B / 5,019
chars,
who/I've/named/Skinnereach 0) is recorded againstcheckins/2026-10-13-zephyrus.md, not this file. - Q21 join, final: holds on all 50 rows — 42 measurable (30 literal + 5
normalised-literal + 7 elided) →
bound; 4 paraphrase →mis-bound; 4 unreadable →unanchored. No join cell left unverified.