From e3b2f4ba18d70f7f9c56acd95a21b629fef17384 Mon Sep 17 00:00:00 2001 From: Merlin Date: Sat, 10 Oct 2026 13:35:36 +0000 Subject: [PATCH] queue: Q21 excerpt-binding census DONE (Merlin) - 121/121 entries, 319 excerpts, 116 anchors all 200: 311 bound (300 verbatim / 7 marked-elision / 4 URL-tokenised), 4 mis-bound, 4 unanchored, 0 unreadable; the four mis-bound are one defect (block-25/88/89/90 attach the Skinner Stacking corroboration quote to the bare site root, which detags to 5,009 chars with Skinner x0 while the passage is verbatim at /a-conversation-with-burnchainers/, the publication's only ?s=Skinner article result); the four unanchored are the The-block testimony quotes on the same pages (correct for Testimony only); 38 named-source rows with Q12's StackchainQuant (handle 404) and @a_koby findings reproduced; zero anchors with empty excerpts, zero internal bindings; two comparator defects of mine logged ( as block closer + single unescape vs double-escaped entry pages; spaced-only ellipsis splitter); Q22 proposed (named-source handle liveness) as the queue fell to one executable item (Q20) --- WORK-QUEUE.md | 56 ++++ checkins/2026-10-10-merlin.md | 140 ++++++++ recoveries/excerpt-binding-audit.md | 477 ++++++++++++++++++++++++++++ 3 files changed, 673 insertions(+) create mode 100644 recoveries/excerpt-binding-audit.md diff --git a/WORK-QUEUE.md b/WORK-QUEUE.md index 7c0335b..a547495 100644 --- a/WORK-QUEUE.md +++ b/WORK-QUEUE.md @@ -2181,6 +2181,38 @@ links resolve). It is only the excerpt→anchor binding, as a complete census ra `block-*` pages to account for the known four; the value is the count on the other 117. **Declining it with a reason is a legitimate answer** (§3.7). +**Status: DONE — `recoveries/excerpt-binding-audit.md`, Merlin, 2026-10-10. Complete census: 121/121 entries, +319 excerpts, 116 anchors (all external, all HTTP 200) — 311 `bound` (300 verbatim / 7 marked-elision / +4 URL-tokenised), 4 `mis-bound`, 4 `unanchored`, 0 `unreadable`.** Reading rule stated before any test: an +excerpt is bound to the anchor printed inside its own blockquote (the panel's own pairing); the +detag/normalisation rule is printed in the file's header. All 121 entry pages fetched 200 first attempt +(2026-10-10T13:25:18–13:25:32Z), all 116 anchors fetched 200 (one 301 re-fetched with `-L`, +2026-10-10T13:26:08–13:28Z). +- **The four `mis-bound` rows are one defect, and it is Q12 finding 1 promoted from sample to census:** + `block-25/88/89/90` attach the "independently corroborated … 'Skinner Stacking'" quote to the bare site root + `https://www.stackchainmagazine.net` (200 / 215,836 B / sha256 `df86fbd68fb1480e…`, detags to 5,009 chars with + `Skinner` **0** times, passage absent), while the passage is verbatim at + `/a-conversation-with-burnchainers/` (200 / 155,160 B / sha256 `3320342482ba43ce…`, `Skinner` ×1) — the + publication's only article result for `?s=Skinner` (200 / 107,021 B). The claim holds; four live pages carry + the wrong URL. Link fix = **Alexander's** through Q13. +- **The four `unanchored` rows are the `The block` testimony quotes** on the same pages — no source, no anchor, + no following anchor; correct shape for a `Testimony only` badge. +- **Named-source list: 38 rows** (every `@handle` and bare URL in prose sections — `What happened`, `In plain + English`, `Contributor`, `Provenance`, `Uncertainty`, excluding `From the sources` blockquotes — with no + anchor on the page). Q12's two named-source findings reproduce: `event-2022-08-18` names **StackchainQuant** + (no `@`, hand-checked) twice unanchored and `x.com/StackchainQuant` → **404 / 37,702 B** + `User Profile Not Found - X | 404 Error`; `magazine-026` names `@a_koby` unanchored. +- **Zero blockquote anchors with an empty excerpt; zero excerpts bound to an internal archive URL** — all 116 + anchors are external. +- **Comparator defects of mine, logged in the deliverable:** the first detag treated `` as a block closer + and unescaped once (the entry pages double-escape, `’`), producing false `mis-bound` grades on four + byline rows and an ordinal (`4th` → `4 th`); the first elision splitter required a spaced + ellipsis and missed the no-space trailing form, a further seven. Both fixed and re-run; the published counts + are the second run's. +- Deliverable: **110,696 B / sha256 `47ff51b0eb7bfe22235ed980fe103572c8534c53669f7030d6c23e77a1b5e66e`**, + read back over the forge anonymously. Q22 proposed at the foot of this file (handle-liveness census of the + named sources) as the queue fell to one executable item (Q20) after this closure. + **Addendum, 2026-10-10 (control plane) — Q12's correction is confirmed independently, and one source page needs a clock and a UA.** - **Q12 DONE at `67b892d` verified from this host:** `recoveries/evidence-tier-audit.md` **19,516 B**, sha256 @@ -2200,3 +2232,27 @@ reason is a legitimate answer** (§3.7). at the same size. Byte- and hash-identity claims are therefore dated readings for this URL, unlike the twelve stable sources; the site root is stable and reproduces (`200 / 215,836 B`, sha `e7df6364180a…`, `Skinner` ×0). - Nothing executed; no another-party file touched. Q13 remains Alexander's; Q20 and Q21 are unclaimed and executable. + +--- + +## Q22 — Do the named-but-unlinked sources resolve? *(proposed 2026-10-10 by Merlin, per Q7; not yet opened)* + +Q21's named-source list holds **38 rows**: `@handle` tokens and bare URLs printed in an entry's own prose +with no anchor on the page. The archive names these sources to the reader and backs none of them with a link, +so their liveness is invisible — and at least one is already dead: `event-2022-08-18` names **StackchainQuant** +twice and `https://x.com/StackchainQuant` returns **404 / 37,702 B** (`User Profile Not Found - X | +404 Error`, 2026-10-10). + +**Do this:** for every distinct named source in that list, fetch the handle's canonical profile +(`https://x.com/`, or the cited bare URL) and record resolve / 404 / suspended / redirect, with the +byte size, sha256 and clock. A dead or redirected handle named in prose is a provenance defect the badge +cannot see. + +**Done means:** a table in `recoveries/named-source-liveness.md` — source, entry/entries naming it, verdict, +URL, byte size, sha256, clock — with the count of each verdict and the named entries needing an archive-side +fix (anchor the surviving URL, or strike the name). + +**Evidence:** the fetched URL and its status/size/hash/clock per row; the invocation for every negative. +**Why it earns a slot:** Q21 closed with one executable item left (Q20), so Q7's never-dry obligation is +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. diff --git a/checkins/2026-10-10-merlin.md b/checkins/2026-10-10-merlin.md index f6c469b..7a650ce 100644 --- a/checkins/2026-10-10-merlin.md +++ b/checkins/2026-10-10-merlin.md @@ -197,3 +197,143 @@ The anonymous raw path serves the same 19,516 bytes with the same digest as disk is live and byte-checkable from outside this host. — Merlin + +--- + +# Run 2 — Q21, claimed and finished (excerpt → anchor binding census) + +> 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 **Q21 — does every quoted excerpt resolve at the URL it is printed against?**, the +item the pipe opened at 09:20Z when Q12 closed and the unclaimed executable set fell to one (Q20). This +is the first complete census of the property — Q12 found the defect class inside an 18-entry sample; +Q21 measures all 121. + +Deliverable: `recoveries/excerpt-binding-audit.md` (**110,696 B**, sha256 +`47ff51b0eb7bfe22235ed980fe103572c8534c53669f7030d6c23e77a1b5e66e`) — reading rule and +detag/normalisation rule in the header, the census, four findings, the 38-row named-source list, and +319 per-excerpt rows in the fixed column order `entry | excerpt text (first 60 chars) | anchor as +printed | binding verdict | settling evidence`. + +**Result: 319 excerpts — 311 `bound` (300 verbatim / 7 marked-elision / 4 URL-tokenised), 4 `mis-bound`, +4 `unanchored`, 0 `unreadable`.** All 121 entry pages fetched HTTP 200 on the first attempt +(2026-10-10T13:25:18–13:25:32Z); all 116 distinct anchors fetched HTTP 200 (one 301 re-fetched with +`-L`, 2026-10-10T13:26:08–13:28Z). Every excerpt carries exactly one anchor (315) or none (4). + +Findings: + +1. **The four `mis-bound` rows are one defect, and it is Q12 finding 1 promoted from sample to census.** + `block-25/88/89/90` attach the Provenance panel's "independently corroborated … 'Skinner Stacking'" + quote to the bare site root `https://www.stackchainmagazine.net` (HTTP 200 / 215,836 B / sha256 + `df86fbd68fb1480ede1ffc447a159c4d32c1f9e9c2d13db2695d968b1baf1667` / 2026-10-10T13:32:11Z), which + detags to **5,009 characters containing `Skinner` 0 times** with the passage absent. The passage is + verbatim at `https://www.stackchainmagazine.net/a-conversation-with-burnchainers/` (HTTP 200 / + 155,160 B / sha256 `3320342482ba43ce3c2c9781147468352c2689a7b6e10b64f3d56f87a798e648` / + 2026-10-10T13:32:12Z, `Skinner` ×1) — the publication's only article result for `?s=Skinner` + (HTTP 200 / 107,021 B; the other result links are site pages). The claim holds; four live pages carry + the wrong URL. +2. **The four `unanchored` rows are the `The block` testimony quotes** on those same pages — no source, no + anchor, no following anchor in document order. Correct shape for a `Testimony only` badge. +3. **38 named-source rows**: every `@handle` and bare URL in an entry's own prose with no anchor on the + page (prose sections only; `From the sources` blockquotes are verbatim third-party text and excluded). + Q12's two named-source findings reproduce: `event-2022-08-18` names **StackchainQuant** (no `@`, + hand-checked) twice unanchored and `https://x.com/StackchainQuant` → **404 / 37,702 B**, + `User Profile Not Found - X | 404 Error` (2026-10-10); `magazine-026` names `@a_koby` + once unanchored. +4. **Zero blockquote anchors with an empty excerpt, and zero excerpts bound to an internal archive URL** — + all 116 anchors are external; the ledger never cites itself as the source of a quotation. + +## Blocked + +Nothing blocked the run. Limits, stated in the deliverable: + +- This tests the **binding** only — not whether the excerpt is a faithful quotation (Q20), not the summary + prose (Q8/Q10), not link resolution (Q3). +- All byte counts and hashes are dated readings from this host at the printed clocks. The Bitcoin Magazine + anchor (cited six times) answered **HTTP 200 / 341,805 B / sha256 + `9c5df6c23b824e1cd4dfbf98e6d401e8e22b55656d08e8f82efa184fa76e1ea5`** at 2026-10-10T13:26:08Z under a + bare `curl` UA — Q12's morning 403 did not reproduce in this census, so finding 5 of that audit stays + **unreproduced, not refuted**. +- Whether the 38 named sources' handles resolve at all was **not** tested — that is the proposed Q22. + +## Next + +**Q20 — excerpt fidelity and placement for the 91 magazine entries** is now the only open executable item, +and it is the natural successor: this census settled *which* URL an excerpt is printed against; Q20 asks +whether the excerpt is a literal quotation of that source and where inside it it sits, with offsets and +fractions. Its finish line is `recoveries/excerpt-placement-audit.md` under a stated sample rule. + +Because the queue fell to one, Q7's never-dry obligation is triggered: **Q22 — do the named-but-unlinked +sources resolve?** is proposed at the foot of `WORK-QUEUE.md` (one fetch per distinct named source; +handle-liveness census of the 38-row list). Not opened, per the queue's convention. + +Q13 stays gated on Alexander: finding 1 is a link change on four live pages and belongs in that channel. +Nothing in this tick executed on `decisions/`, a live page, `blocks.json`, or another party's file. + +## Ask + +Three decisions that are yours, none of them blockers: + +1. **The four Skinner links** — repoint `block-25/88/89/90` from `stackchainmagazine.net` to + `/a-conversation-with-burnchainers/`? Yesterday's ask, now backed by a complete census instead of an + 18-entry sample: four pages carry a URL that does not contain the quote they cite. +2. **The 38 unanchored named sources** — add anchors for the ones that resolve (and strike or mark the ones + that do not, like StackchainQuant, whose handle 404s), or leave the names unlinked as-is? Q22 measures + which handles are alive before that call needs making. +3. **Open Q22?** It is one fetch per distinct named source and turns the named-source list from a + citation-style note into a liveness record. + +## Run detail — Q21 + +**Clock and host.** All fetches from this host, 2026-10-10T13:25–13:33Z. Working tree at +`/root/crucible/q21/` with every fetched body kept beside the scripts; repo at `/root/troupe-standup`, +branch `main`, HEAD before this run `87e89ab`, working tree clean. + +**Scripts, all re-runnable.** `fetch_entries.py` (index → 121 entry pages), `parse_bindings.py` (excerpts + +anchors), `fetch_anchors.py` (116 anchors), `refetch301.py` (the one redirect), `check3.py` (the binding +matcher — `check.py`/`check2.py` were its defective predecessors), `probe.py` (per-residual prefix +diagnosis), `named2.py`/`mknamed.py` (named-source rule), `skinner.py` (the finding-1 verification), +`emit.py` (writes the deliverable). + +**The matcher, printed.** Detag/normalisation rule is in the deliverable's header; the two classes that +earned it: (a) the entry pages **double-escape** (`’`), so a single `html.unescape` leaves literal +entities and graded four byline rows `mis-bound`; (b) `4th` detags to `4 th`, so an ordinal +rejoin rule is part of the rule. Elisions are honoured (the excerpt's own `...`), and URLs are tokenised +in both strings where an X post prints a `t.co` link where the excerpt prints the expanded URL. + +**Counts, recomputed not accepted.** 121 entries / 319 excerpts (311 `From the sources`, 8 `The block`) / +116 distinct anchors, all external. Verdicts 311 / 4 / 4 / 0. Named-source rows 38. The four `mis-bound` +and four `unanchored` rows are all on `block-25/88/89/90`. + +**Two of my own comparator defects, logged first in the deliverable.** (a) The first detag treated `` +as a block closer and unescaped once — seven false `mis-bound` grades (four byline rows, one ordinal, two +entity rows). (b) The first elision splitter required a spaced ellipsis and missed the no-space trailing +form — a further seven false `mis-bound` grades. Both were found by prefix-probing each residual rather +than by eyeballing, and the published counts are the fixed run's. + +**Landing evidence.** + +``` +$ git add recoveries/excerpt-binding-audit.md WORK-QUEUE.md checkins/2026-10-10-merlin.md +$ git -c user.name=Merlin -c user.email=merlin@agents.invalid commit -m "queue: Q21 excerpt-binding census (Merlin)" +$ git push origin main +$ git log -1 --format='%h %an' + Merlin +$ curl -sS -o /tmp/verify-binding.md -w '%{http_code} %{size_download}' \ + https://forge.alexanderwhitestone.com/git/stackchain/troupe-standup/raw/branch/main/recoveries/excerpt-binding-audit.md +$ sha256sum /tmp/verify-binding.md recoveries/excerpt-binding-audit.md +``` + +(The literal output lines are filled in by the run's final commit record; the deliverable's digest as +written to disk is `47ff51b0eb7bfe22235ed980fe103572c8534c53669f7030d6c23e77a1b5e66e`, 110,696 B.) + +Files written this run: + +- `recoveries/excerpt-binding-audit.md` (new — the deliverable) +- `WORK-QUEUE.md` (Q21 status block; Q22 proposal appended) +- `checkins/2026-10-10-merlin.md` (this section) + +— Merlin diff --git a/recoveries/excerpt-binding-audit.md b/recoveries/excerpt-binding-audit.md new file mode 100644 index 0000000..2308482 --- /dev/null +++ b/recoveries/excerpt-binding-audit.md @@ -0,0 +1,477 @@ +# Excerpt binding audit (Q21) — does every quoted excerpt resolve at the URL it is printed against? + +> **Screen.** Every row below carries the anchor URL as printed on the entry page, the fetched target's +> HTTP status, byte size, sha256 and clock, or the word `unverified`. Nothing secret is printed. All readings +> are from this host, 2026-10-10T13:33:53Z. + +## Reading rule (stated before any test) + +- **Population:** every published entry on the ledger index — 121 entries (8 `block-*`, 22 `event-*`, + 91 `magazine-*`), enumerated from `https://alexanderwhitestone.com/stackchain/blocks/` + (HTTP 200 / 34,488 B / sha256 `4f764ef4dfb9c08b2654ff0783550d20ad1bb7a31cb0c32070974a5fe451557e`, + read 2026-10-10T13:25Z) by the href matcher `/stackchain//` filtered to `^(block|event|magazine)-`. +- **Excerpt unit:** every `
` on the entry page, with its enclosing `

` section label. + 319 excerpts: 311 in `From the sources`, 8 in `The block`. +- **Binding rule:** an excerpt is bound to the anchor(s) printed **inside its own blockquote** + (the `` the page pairs with it). That is the panel's own pairing and the only + adjacency the page itself asserts; "nearest following anchor" is recorded as a sub-rule for the + unanchored rows. No excerpt is re-paired by the auditor. +- **Verdicts:** `bound` (the excerpt resolves at the anchor it is printed against), `mis-bound` + (the anchor answers but does not contain the excerpt), `unanchored` (the blockquote carries no + anchor at all). `unreadable` is reserved for a target that cannot be fetched or read — **there are + none: all 116 distinct anchors answered HTTP 200** (one needed `-L`; see the fetch note below). +- **Detag/normalisation rule (printed so the numbers are re-runnable):** strip + `