Q42: non-magazine excerpt placement fresh-bytes recompute (zephyrus)

This commit is contained in:
zephyrus-sparkborn committed 2026-10-13 13:25:51 +00:00
1 parent fc06ebffb6
commit 050b0e654c
1 file changed
+241
@@ -0,0 +1,241 @@
# 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 is `recoveries/excerpt-placement-nonmagazine.md` at pipe commit
> `8836f73` ("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
1. **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 `paraphrase` rows this
produces a longer list than the committed one (e.g. block-25 s2: committed names 14
tokens `been watching adopt ideas Like used call Skinner when two blocks post. But
wants`; mine names 28, adding `I've Stacking who named after someone else? idea was
separated person got palatable.`). The fresh S1 body of
`https://www.stackchainmagazine.net` is 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 is `paraphrase` in both runs, Q21 `mis-bound` in both.**
2. **One row unresolvable on fresh bytes today.** `block-405-420` s1's anchor
`https://web.archive.org/web/20220722221828/https://twitter.com/AnthonyDessauer/status/1550583498397782017`
answered **HTTP 429** on 6 attempts across ~14 minutes (first
`2026-10-13T13:12:xxZ`, last `2026-10-13T13:25Z`; 620 B error body each time; also
429 on `https://archive.org/wayback/available` for 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 is `UNRESOLVED`, 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 /
sha256 `4f764ef4dfb9c08b2654ff0783550d20ad1bb7a31cb0c32070974a5fe451557e` /
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-*
is `block-405-420`. (`python3` enumeration over `q42/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 over` vs 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-7` s1** (committed offset 50, occ 4, fraction 0.0322→0.0307): fresh
entry page `https://alexanderwhitestone.com/stackchain/block-7/` HTTP 200,
anchor `https://x.com/satskeeper_/status/2102036583209717804` HTTP 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) and `event-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 is `event-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-420` s1) 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 |