Files
troupe-standup/docs/q13-fix-pack.md
T

261 lines
32 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# The Q13 fix pack — every verified live-page fix, staged as one reviewable approval
**Run by Merlin, 2026-10-10, from this host.** Deliverable for queue item **Q24**. Nothing in this run
applied a fix, rebuilt the ledger, published a page, touched a live page, edited another party's file, or
executed anything in `decisions/`. The only writes were to this file and to the staged script.
**Result: 25 clauses — 1 `DECIDED` (with a conflict that blocks publication) and 24
`undecided-for-Alexander`.** Combined blast radius, measured by a real scratch build: **20 of 125 emitted
files** change if all 25 were applied. Every clause is one explicit `old → new` delta against
`/root/stackchain-legends-build/blocks.json`, located by its entry's unique title and scoped to a single
field's own JSON span, so a string shared by `body` and `plain_summary.text` cannot be double-edited.
## 1. The build chain, measured end to end before anything was staged
`blocks.json` is the build source; `build_blocks.py` emits the pages; the live site serves a copy of that
output. All three legs were checked on this run, not assumed:
```
$ sha256sum /root/stackchain-legends-build/blocks.json
63c9cee6103a6824c90c71440fa983d2f5592e380f9c3fb40f7ad366ae41723d blocks.json (278,459 B)
$ sha256sum /root/stackchain-legends-build/build_blocks.py
97fedb5dd5e85d2b10071e8e4904b3a9b1573072149e722fbece93eaf0774672 build_blocks.py (22,256 B)
$ python3 build_blocks.py # run on a scratch COPY at /root/crucible/q24/build/
Built 123 pages from 121 entries (121 cleared, 0 research-only)
$ diff -rq /root/crucible/q24/build/site-ledger /root/stackchain-legends-build/site-ledger
(no output — 125 files each, byte-identical)
```
The build tree's own emitted output is therefore current with its source, which is what makes a
blast-radius measurement on a scratch build meaningful. Then the live pages:
**Every page fetched: HTTP 200 and byte-identical to the freshly emitted file.** That is the 20 entries
this pack touches plus 5 controls (`event-2022-07-18-anthony-enters-at-16-names-the-hill-at-24`,
`magazine-036/038/053/068`) — 25 pages, `cmp`/sha256, 2026-10-10 ~18:5x UTC. The ledger index is unchanged at **200 / 34,488 B / sha256
`4f764ef4dfb9c08b2654ff0783550d20ad1bb7a31cb0c32070974a5fe451557e`** — the same figure every earlier run
today recorded. Full per-page list in `/root/crucible/q24/LIVE-READS.txt`.
So the chain is `blocks.json → build_blocks.py → site-ledger/<slug>/index.html → the live page`, verified
byte-for-byte at all four legs. **Documented.**
## 2. Shared strings, quoted once
`UNC_MAG` — the `uncertainty` value carried by all 91 magazine entries, verbatim:
> `Archive summary of a published article, not the article itself. Quotes are short verbatim excerpts; read the original for full context.`
Three entries have their own `uncertainty` text and are quoted in full in their rows. `magazine-091`'s
is `UNC_MAG`.
## 3. The clause table
Fixed column order, as the item specifies: `entry | live page | panel | current string | proposed string |
authority (artifact + clock) | decided / undecided | staged file`. `\|` inside a cell is an escaped pipe.
| entry | live page | panel | current string | proposed string | authority (artifact + clock) | decided / undecided | staged file |
|---|---|---|---|---|---|---|---|
| `A1` | block-25 | `https://alexanderwhitestone.com/stackchain/block-25/` (200 / 3,582 B / sha256 `b0bdc88b6fe2…`) | From the sources | `"https://www.stackchainmagazine.net"` | `"https://www.stackchainmagazine.net/a-conversation-with-burnchainers/"` | recoveries/evidence-tier-audit.md §6.1 (2026-10-10 ~09:3xZ) + recoveries/excerpt-binding-audit.md finding 1 (2026-10-10T13:26:16Z) | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `A1`; blast radius 1 file: `block-25/index.html`) |
| `A2` | block-88 | `https://alexanderwhitestone.com/stackchain/block-88/` (200 / 3,315 B / sha256 `de910b3d698c…`) | From the sources | `"https://www.stackchainmagazine.net"` | `"https://www.stackchainmagazine.net/a-conversation-with-burnchainers/"` | recoveries/evidence-tier-audit.md §6.1 (2026-10-10 ~09:3xZ) + recoveries/excerpt-binding-audit.md finding 1 (2026-10-10T13:26:16Z) | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `A2`; blast radius 1 file: `block-88/index.html`) |
| `A3` | block-89 | `https://alexanderwhitestone.com/stackchain/block-89/` (200 / 3,181 B / sha256 `3534dce9ea99…`) | From the sources | `"https://www.stackchainmagazine.net"` | `"https://www.stackchainmagazine.net/a-conversation-with-burnchainers/"` | recoveries/evidence-tier-audit.md §6.1 (2026-10-10 ~09:3xZ) + recoveries/excerpt-binding-audit.md finding 1 (2026-10-10T13:26:16Z) | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `A3`; blast radius 1 file: `block-89/index.html`) |
| `A4` | block-90 | `https://alexanderwhitestone.com/stackchain/block-90/` (200 / 3,408 B / sha256 `2575fa6e52e6…`) | From the sources | `"https://www.stackchainmagazine.net"` | `"https://www.stackchainmagazine.net/a-conversation-with-burnchainers/"` | recoveries/evidence-tier-audit.md §6.1 (2026-10-10 ~09:3xZ) + recoveries/excerpt-binding-audit.md finding 1 (2026-10-10T13:26:16Z) | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `A4`; blast radius 1 file: `block-90/index.html`) |
| `B1` | block-25 | `https://alexanderwhitestone.com/stackchain/block-25/` (200 / 3,582 B / sha256 `b0bdc88b6fe2…`) | Provenance | `quoted below` | `quoted above` | WORK-QUEUE.md §Q21 verification addendum, control plane, 2026-10-10 (offsets quoted there) | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `B1`; blast radius 1 file: `block-25/index.html`) |
| `B2` | block-88 | `https://alexanderwhitestone.com/stackchain/block-88/` (200 / 3,315 B / sha256 `de910b3d698c…`) | Provenance | `quoted below` | `quoted above` | WORK-QUEUE.md §Q21 verification addendum, control plane, 2026-10-10 (offsets quoted there) | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `B2`; blast radius 1 file: `block-88/index.html`) |
| `B3` | block-89 | `https://alexanderwhitestone.com/stackchain/block-89/` (200 / 3,181 B / sha256 `3534dce9ea99…`) | Provenance | `quoted below` | `quoted above` | WORK-QUEUE.md §Q21 verification addendum, control plane, 2026-10-10 (offsets quoted there) | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `B3`; blast radius 1 file: `block-89/index.html`) |
| `B4` | block-90 | `https://alexanderwhitestone.com/stackchain/block-90/` (200 / 3,408 B / sha256 `2575fa6e52e6…`) | Provenance | `quoted below` | `quoted above` | WORK-QUEUE.md §Q21 verification addendum, control plane, 2026-10-10 (offsets quoted there) | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `B4`; blast radius 1 file: `block-90/index.html`) |
| `C1` | event-2023-05-00-siggy-reaches-nostr | `https://alexanderwhitestone.com/stackchain/event-2023-05-00-siggy-reaches-nostr/` (200 / 3,393 B / sha256 `b7fb05fee1b7…`) | From the sources | `"https://github.com/plebiolira/stackchainsiggy_nostr"` | `"https://github.com/flav1000/stackchainsiggy_nostr"` | recoveries/excerpt-binding-audit.md fetch note (301 observed) + recoveries/summary-fidelity-nonmagazine.md ev-017 row 1 + recoveries/ledger-audit-pass2.md row 19; 301 re-observed this run | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `C1`; blast radius 1 file: `event-2023-05-00-siggy-reaches-nostr/index.html`) |
| `D1` | magazine-091 | `https://alexanderwhitestone.com/stackchain/magazine-091/` (200 / 4,559 B / sha256 `8b00bbb09a13…`) | What happened + Uncertainty | body: `Comparing Strategy, Twenty One, Nakamoto, Metaplanet, Coinsilium and Smarter Web returns and drawdowns against Bitcoin, they find none consistently outperform,`<br>uncertainty: `Archive summary of a published article, not the article itself. Quotes are short verbatim excerpts; read the original for full context.` | body: `Comparing Twenty One, Nakamoto, Metaplanet, Coinsilium and Smarter Web against Bitcoin — with earlier pioneers such as Strategy set aside as not a fair comparison — they find none consistently outperform,`<br>uncertainty: `Archive summary of a published article, not the article itself. Quotes are short verbatim excerpts; read the original for full context. Correction 2026-09-26: this summary previously listed Strategy among the firms compared. The article sets Strategy aside (“not a fair comp for these newcomers”) and excludes it from the comparison; the listing was the archive’s error, not the article’s. Strategy has been removed from the compared set.` | decisions/2026-09-26.md item 13, approved 2026-09-26T14:51:11.019Z; staged record /root/stackchain-legends-build/EDITS/2026-09-26-magazine-091-correction.md | DECIDED (approved) — decided note conflicts with proposed_action; see §5 | `docs/q13-fix-pack/apply_fix_pack.py` (clause `D1`; blast radius 1 file: `magazine-091/index.html`) |
| `E1` | event-2022-08-18-the-bitcoin-beach-campaign-closes-and-hodlon | `https://alexanderwhitestone.com/stackchain/event-2022-08-18-the-bitcoin-beach-campaign-closes-and-hodlon/` (200 / 4,397 B / sha256 `3b3002d4d5fc…`) | Uncertainty | `Event status as recorded by the history research: sourced. The date basis is the reported event date, not necessarily a verified post timestamp.` | `Event status as recorded by the history research: sourced. The date basis is the reported event date, not necessarily a verified post timestamp.` + ` Note 2026-10-10: the named warrant “StackchainQuant” returns HTTP 404 at https://x.com/StackchainQuant (X: “User Profile Not Found”). The report it attributes is separately cited and live; the account itself is unreachable as of this date.` | recoveries/named-source-liveness-unlinked.md finding 1 (2026-10-10T17:49:31Z) + recoveries/named-source-liveness.md row 6 (2026-10-10T15:39:39Z) | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `E1`; blast radius 1 file: `event-2022-08-18-the-bitcoin-beach-campaign-closes-and-hodlon/index.html`) |
| `E2` | event-2022-08-28-the-fork-of-1492 | `https://alexanderwhitestone.com/stackchain/event-2022-08-28-the-fork-of-1492/` (200 / 4,380 B / sha256 `a55da02af6a3…`) | Uncertainty | `Event status as recorded by the history research: event corroborated; tactics from participant retrospective. The date basis is the reported event date, not necessarily a verified post timestamp.` | `Event status as recorded by the history research: event corroborated; tactics from participant retrospective. The date basis is the reported event date, not necessarily a verified post timestamp.` + ` Note 2026-10-10: the named warrant “StackchainQuant” returns HTTP 404 at https://x.com/StackchainQuant (X: “User Profile Not Found”). The report it attributes is separately cited and live; the account itself is unreachable as of this date.` | recoveries/named-source-liveness-unlinked.md finding 1 (2026-10-10T17:49:31Z) + recoveries/named-source-liveness.md row 6 (2026-10-10T15:39:39Z) | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `E2`; blast radius 1 file: `event-2022-08-28-the-fork-of-1492/index.html`) |
| `E3` | event-2022-10-05-the-community-documents-its-scale-and-charit | `https://alexanderwhitestone.com/stackchain/event-2022-10-05-the-community-documents-its-scale-and-charit/` (200 / 3,929 B / sha256 `a1e2eb193c83…`) | Uncertainty | `Event status as recorded by the history research: sourced. The date basis is the reported event date, not necessarily a verified post timestamp.` | `Event status as recorded by the history research: sourced. The date basis is the reported event date, not necessarily a verified post timestamp.` + ` Note 2026-10-10: the named warrant “StackchainQuant” returns HTTP 404 at https://x.com/StackchainQuant (X: “User Profile Not Found”). The report it attributes is separately cited and live; the account itself is unreachable as of this date.` | recoveries/named-source-liveness-unlinked.md finding 1 (2026-10-10T17:49:31Z) + recoveries/named-source-liveness.md row 6 (2026-10-10T15:39:39Z) | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `E3`; blast radius 1 file: `event-2022-10-05-the-community-documents-its-scale-and-charit/index.html`) |
| `F1` | magazine-020 | `https://alexanderwhitestone.com/stackchain/magazine-020/` (200 / 4,123 B / sha256 `88ae01d3aba8…`) | Uncertainty | UNC_MAG (see §2) | UNC_MAG (see §2) + ` Note 2026-10-10: the byline handle @_overflow__ returns HTTP 404 at https://x.com/_overflow__ (X: “User Profile Not Found”). The name is retained as printed and is not currently linkable.` | recoveries/named-source-liveness.md row 1 (2026-10-10T15:39:17Z) | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `F1`; blast radius 1 file: `magazine-020/index.html`) |
| `F2` | magazine-051 | `https://alexanderwhitestone.com/stackchain/magazine-051/` (200 / 4,529 B / sha256 `2e3065c6c7a7…`) | Uncertainty | UNC_MAG (see §2) | UNC_MAG (see §2) + ` Note 2026-10-10: the byline handle @humblebitcoiner returns HTTP 404 at https://x.com/humblebitcoiner (X: “User Profile Not Found”). The name is retained as printed and is not currently linkable.` | recoveries/named-source-liveness.md row 2 (2026-10-10T15:39:33Z) | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `F2`; blast radius 1 file: `magazine-051/index.html`) |
| `G1` | magazine-035 | `https://alexanderwhitestone.com/stackchain/magazine-035/` (200 / 4,543 B / sha256 `871638b8abb5…`) | Contributor | contributor.display_name: `"@BTC_Freeborn and @AnthonyDessauer"`<br>contributor.handle: `null` | contributor.display_name: `"BTC_Freeborn and Anthony Dessauer"`<br>contributor.handle: `"BTC_Freeborn"` | recoveries/named-source-liveness.md row 3 (2026-10-10T15:39:21Z) | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `G1`; blast radius 1 file: `magazine-035/index.html`) |
| `G2` | magazine-056 | `https://alexanderwhitestone.com/stackchain/magazine-056/` (200 / 4,346 B / sha256 `33b55f8f61fe…`) | Contributor | contributor.display_name: `"Red Tail Hawk (@RedTailHawk1923)"`<br>contributor.handle: `null` | contributor.display_name: `"Red Tail Hawk"`<br>contributor.handle: `"RedTailHawk1923"` | recoveries/named-source-liveness.md row 4 (2026-10-10T15:39:33Z) | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `G2`; blast radius 1 file: `magazine-056/index.html`) |
| `G3` | magazine-039 | `https://alexanderwhitestone.com/stackchain/magazine-039/` (200 / 4,272 B / sha256 `65e07c4e638a…`) | Contributor + Uncertainty | contributor.handle: `null`<br>uncertainty: `Archive summary of a published article, not the article itself. Quotes are short verbatim excerpts; read the original for full context.` | contributor.handle: `"captainsiddh"`<br>uncertainty: `Archive summary of a published article, not the article itself. Quotes are short verbatim excerpts; read the original for full context. Note 2026-10-10: the handle @captainsiddh resolves, but its own profile description reads “Now at @captainsidd” and https://x.com/captainsidd resolves; the byline above is one handle behind the account’s current home.` | recoveries/named-source-liveness.md row 5 (2026-10-10T15:39:22Z) | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `G3`; blast radius 1 file: `magazine-039/index.html`) |
| `H1` | event-2022-07-18-the-5-invitation-becomes-a-chain | `https://alexanderwhitestone.com/stackchain/event-2022-07-18-the-5-invitation-becomes-a-chain/` (200 / 4,281 B / sha256 `f208a26cd154…`) | What happened + In plain English | body: `AriZonanHODL posted a $5 bitcoin purchase`<br>plain_summary.text: `AriZonanHODL posted a $5 bitcoin purchase` | body: `@AriZonanHODL posted a $5 bitcoin purchase`<br>plain_summary.text: `@AriZonanHODL posted a $5 bitcoin purchase` | recoveries/named-source-liveness-unlinked.md finding 2 (2026-10-10T17:49:31Z); https://x.com/AriZonanHODL 200 / 130,908 B | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `H1`; blast radius 1 file: `event-2022-07-18-the-5-invitation-becomes-a-chain/index.html`) |
| `H2` | event-2022-07-18-the-5-invitation-becomes-a-chain | `https://alexanderwhitestone.com/stackchain/event-2022-07-18-the-5-invitation-becomes-a-chain/` (200 / 4,281 B / sha256 `f208a26cd154…`) | What happened | `and Satskeeper with $7` | `and @satskeeper_ with $7` | WORK-QUEUE.md §Q24 addendum 2026-10-10 18:13Z (Satskeeper resolves as @satskeeper_, already linked on block-7) | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `H2`; blast radius 1 file: `event-2022-07-18-the-5-invitation-becomes-a-chain/index.html`) |
| `H3` | magazine-002 | `https://alexanderwhitestone.com/stackchain/magazine-002/` (200 / 4,433 B / sha256 `13a31d232159…`) | What happened | `ArizonanHODL's $5` | `@AriZonanHODL's $5` | WORK-QUEUE.md §Q23 verification correction (rule 3b yields 8 bare-and-unlinked mentions across 6 entries) — CONDITIONAL on step 5’s filter | undecided-for-Alexander (conditional row) | `docs/q13-fix-pack/apply_fix_pack.py` (clause `H3`; blast radius 1 file: `magazine-002/index.html`) |
| `H4` | magazine-005 | `https://alexanderwhitestone.com/stackchain/magazine-005/` (200 / 4,287 B / sha256 `5681dc960dfe…`) | What happened | `ArizonanHodl's July 18, 2022 tweet` | `@AriZonanHODL's July 18, 2022 tweet` | WORK-QUEUE.md §Q23 verification correction (rule 3b) — CONDITIONAL on step 5’s filter | undecided-for-Alexander (conditional row) | `docs/q13-fix-pack/apply_fix_pack.py` (clause `H4`; blast radius 1 file: `magazine-005/index.html`) |
| `I1` | magazine-026 | `https://alexanderwhitestone.com/stackchain/magazine-026/` (200 / 4,554 B / sha256 `67f141e2b1c1…`) | Contributor | `null` | `"a_koby"` | recoveries/evidence-tier-audit.md §6.3 (2026-10-10) — OUTSIDE the Q24 population rule, which names findings 1–2; included and flagged | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `I1`; blast radius 1 file: `magazine-026/index.html`) |
| `I2` | magazine-070 | `https://alexanderwhitestone.com/stackchain/magazine-070/` (200 / 4,599 B / sha256 `6227e199522f…`) | Contributor | contributor.display_name: `"@MidyReyes"`<br>contributor.handle: `null` | contributor.display_name: `"MidyReyes"`<br>contributor.handle: `"MidyReyes"` | WORK-QUEUE.md §Q23 verification correction (rule 3a admits MidyReyes on magazine-070) — OUTSIDE the Q24 population rule; included and flagged | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `I2`; blast radius 1 file: `magazine-070/index.html`) |
| `J1` | magazine-024 | `https://alexanderwhitestone.com/stackchain/magazine-024/` (200 / 4,150 B / sha256 `076df5d248de…`) | Uncertainty | UNC_MAG (see §2) | UNC_MAG (see §2) + ` Note 2026-10-10: the tipping address bitcoinbekka@getalby.com resolves at its canonical LNURL-pay endpoint https://getalby.com/.well-known/lnurlp/bitcoinbekka (HTTP 200); the vanity web path https://getalby.com/bitcoinbekka returns 404. It is not linked here because the ledger build emits anchors only for contributor handles, body sources and excerpt URLs.` | recoveries/named-source-liveness-unlinked.md finding 3 (2026-10-10T17:49:31Z) | undecided-for-Alexander | `docs/q13-fix-pack/apply_fix_pack.py` (clause `J1`; blast radius 1 file: `magazine-024/index.html`) |
## 4. Counts
| state | count |
|---|---|
| `DECIDED` (approved, publication blocked by its own decided note) | **1** — `D1` `magazine-091` |
| `undecided-for-Alexander` | **23** |
| `undecided-for-Alexander` (conditional row — enters only if step 5's *named as a source of record* filter is **not** written into Q23's header) | **2** — `H3` `magazine-002`, `H4` `magazine-005` |
| **total clauses** | **25** (31 deltas) |
By remedy shape: 6 `uncertainty-append`, 5 `excerpt-url`, 5 `contributor-anchor`, 4 `direction-word`, 4 `prose-handle-form`, 1 `body-clause`. (`G3` carries an `uncertainty` note alongside its
`contributor.handle` delta, which is why its panel reads *Contributor + Uncertainty*.)
## 5. Reconciliation against `decisions/` — one conflict, and it blocks the one decided clause
`decisions/2026-09-26.md` item 13 (`magazine-091`) is **approved**, `decided_at 2026-09-26T14:51:11.019Z`,
relayed by `2eb50b7`. Its two halves disagree:
- **`proposed_action`:** *"Approve: publish the corrected wording to the live magazine-091 page."*
- **`decided note`:** *"Do we even have authority to fix the publication? Add our note and escalate it to
the author and mag publisher."*
Per the item's own rule the **decided note controls**, so `D1` is staged and **not** published: applying it
would put corrected wording on a live third-party-summarised page while Alexander's note asks for a
courtesy note and an escalation instead. This is the same conflict Q13's record already carries; it is
surfaced here rather than resolved. **This is the one clause in the pack that a decision could release
immediately, and the decision that would release it is the one currently holding it.**
`decisions/2026-10-06-human-gates.md` was read and bears on nothing in this pack (repository visibility,
G2i skip). `decisions/2026-10-07.md` and `2026-10-07-cassian-write-grant.md` are cassian's write grant and
bear on nothing here. **Nothing in `decisions/` was executed.**
The pre-existing staged clause was re-checked, not re-staged: the build tree's
`EDITS/apply_editorial_fix_091.py` in check-only mode still passes against today's `blocks.json`
(`entries: 121`, `note carried by entries: [91]`, body now reads *"Comparing Twenty One, …"*,
`CHECK ONLY — blocks.json not written`). `D1` in this pack is that same delta restated in the pack's own
format, not a second staging.
## 6. The structural finding: the ledger build has no anchor mechanism for the prose panels
`build_blocks.py` emits an `<a href>` in exactly three places — `contributor.handle`
(`render_entry` line 310), `body_source_url` (line 323) and `excerpts[].url` (line 333). `body`,
`plain_summary.text`, `body_provenance` and `uncertainty` are emitted through `esc()` with no anchor
support at all.
**Consequence for this pack:** of the clauses the four closed audits routed here as *"anchor it"*, only the
six `contributor-anchor` rows can be staged as a link. Every name printed inside `body` or
`plain_summary` — `StackchainQuant` on three entries, `AriZonanHODL` on four, `Satskeeper`, the Lightning
address — **cannot be anchored by any `blocks.json` field**. Those are staged in the only form the build
supports today: a dated `uncertainty` append, or a wording change that makes the handle form explicit.
Two things follow, both for Alexander and neither for this run:
1. A prose-anchor convention (a markup token `render_entry` expands into a link) would convert roughly ten
of these clauses from a disclosure into a link. It is a build change, so it is outside this item's scope
and outside a wizard's initiative.
2. `contributor` has **one** `handle` slot. `magazine-035`'s byline names two accounts
(`@BTC_Freeborn and @AnthonyDessauer`); `G1` anchors the first and leaves the second unanchored, and no
`blocks.json` edit can do better without a schema change.
## 7. Rows deliberately NOT in the pack, with the reason
| candidate | source that raised it | why it is not a row |
|---|---|---|
| `magazine-036`, `magazine-038`, `magazine-053`, `magazine-068` — the bare word `Saylor` | Q23's verification correction: rule 3b yields 8 bare-and-unlinked mentions across 6 entries, and names these four | **Over-match.** The token fired only because `https://x.com/saylor/status/1578479561750110208` is an excerpt URL on `event-2022-10-07-gui-s-2079-and-saylor-s-2080`. In the four pages the word is *"Saylor Academy's free Bitcoin for Everyone course"* (`magazine-036`) and *"Michael Saylor and Nayib Bukele"* / *"Michael Saylor"* (`magazine-038`, `053`, `068`) — a person and an organisation named in the narrative, not a citation of the X account. No dead source was missed; the detector cannot tell the two apart. |
| `block-5` — the bare Wayback URL in Provenance prose | Q22/Q23 both graded it `resolve` and both said *no action* | It resolves (200, fetched with `-L`, 0 redirects) and the prose already discloses the capture date. Anchoring it would need the same missing prose mechanism. No defect. |
| the `x.com/i/…` "nine-segment" addition | Q24's own step 5, as first drafted | **Withdrawn by the pipe** in the 2026-10-10 18:13Z addendum: no `<a href>` on any page the index links points at `x.com/i/…`. Adds nothing. |
| `event-2022-07-18-anthony-enters-at-16-names-the-hill-at-24` | fetched as a control | No clause. `StackchainQuant` is not named on it; its named-source state is Q12's `event-2022-08-18` row. |
## 8. Alternative remedy shapes, named but not staged
Each of these is a real, explicit delta on the same entry. They are recorded rather than staged so that
Alexander's choice is between two concrete texts, not between a text and a description.
- **Strike instead of mark, `E1`–`E3`.** Deleting the `StackchainQuant` clause from `body` removes a
substantive claim the entry currently makes (the October account's report of several thousand dollars
raised; `1492` as a notable fork; the ~400-participant / $1.5 million figures). The report survives
through the separately cited Bitcoin Magazine anchor; the attribution does not. Marking keeps both and
discloses the dead warrant.
- **Anchor instead of mark, `F1` `magazine-020` and `F2` `magazine-051`.** Set `contributor.handle` to
`_overflow__` / `humblebitcoiner`. Both handles return **404**, so this gives the reader a link that
opens X's *"User Profile Not Found"* page. Honest about the state, worse than the note.
- **Handle the move rather than only the anchor, `G3` `magazine-039`.** `@captainsiddh` resolves but its own
description reads *"Now at @captainsidd"* and `https://x.com/captainsidd` resolves. Anchoring
`captainsidd` instead of `captainsiddh` would point at the live account; `G3` stages `captainsiddh`
because that is the handle the entry prints, plus a note naming the move. Anchoring `captainsidd`
silently changes what the byline says.
## 9. Staging record
**Staged file:** `docs/q13-fix-pack/apply_fix_pack.py` — 25,361 B, sha256
`2d39df3cdfe466b33e45b19b8741f43b536d93e7ccde90f871e50e5cd6ffd1cd`. One script, 25 clause ids, because 25 near-identical scripts would put 25 copies of the
same scoping logic in front of a reviewer instead of one; the clause table is embedded in the file as
JSON and `--list` prints it.
**Committed unrun.** Every clause was executed in **check mode** during this run — which verifies the
locator, the field span, and that each `old` occurs exactly once inside it — and **not one clause was
applied to the build tree's `blocks.json`**. Check output for all 25 clauses, exit codes included, is in
`/root/crucible/q24/CHECK-RUN.txt`; the scratch applications used to measure blast radius ran against
copies under `/root/crucible/q24/blast/`.
**Before hash (all clauses):** `blocks.json` sha256 `63c9cee6103a6824c90c71440fa983d2f5592e380f9c3fb40f7ad366ae41723d`, 278,459 B, read-only this run.
**Revert command, per clause** (printed by `--apply`; identical shape for all 25):
```
python3 docs/q13-fix-pack/apply_fix_pack.py --apply <id> # forward
# revert: restore blocks.json from a pre-apply backup, or reverse the printed deltas:
# <field>: <new> -> <old>
```
**Guard against an unapproved apply:** a clause marked `undecided-for-Alexander` refuses to apply unless
**both** `--force` and `--decision <artifact path>` are passed, so the approval has to be named on the
command line. `D1` applies on its decision record alone — see §5 for why that is still blocked.
**Blast radius, per clause:** measured by applying the clause to a scratch copy, rebuilding, and diffing
the emitted tree against the pristine one. **25 of 25 clauses change exactly 1 emitted file — the entry's
own `index.html`.** No clause touches `blocks/index.html`, `sitemap.xml` or `ledger.css`. Combined, all
25 clauses change **20 of 125** emitted files (`block-25/88/89/90`, `event-2022-07-18-the-5-invitation-
becomes-a-chain`, `event-2022-08-18…hodlon`, `event-2022-08-28-the-fork-of-1492`,
`event-2022-10-05…charit`, `event-2023-05-00-siggy-reaches-nostr`, `magazine-002/005/020/024/026/035/
039/051/056/070/091`). Per-clause and combined tables: `/root/crucible/q24/BLAST-RADIUS.txt`,
`/root/crucible/q24/BLAST-ALL.txt`.
Spot checks on the applied scratch pages: `block-25` carries the
`a-conversation-with-burnchainers` permalink and no longer carries the bare site root as an anchor, and
reads *"quoted above"*; `magazine-091` no longer contains *"Comparing Strategy"*, contains *"Comparing
Twenty One"*, and carries the correction note; `magazine-039` carries
`href="https://x.com/captainsiddh"` and the move note; `magazine-070` carries
`href="https://x.com/MidyReyes"`.
## 10. Method and limits
- **Every population was re-derived, none copied.** Entry titles are unique across all 121 entries
(checked), which is what makes the title locator safe. The bare site root appears as an excerpt URL
exactly **4** times in the whole file — the four `block-*` rows — so the `A` group is a complete census
of that defect, not a sample.
- **Field-scoped, not region-scoped.** My first verifier searched each entry's whole JSON region and
reported `body` old-strings occurring **2×** on `event-2022-07-18`, because `body` and
`plain_summary.text` share the sentence. Scoping to each field's own span is what makes `H1`'s two
deltas land in two places and nothing else. Logged as a defect of mine, found and fixed before staging.
- **Two defects in the generated script, logged first.** Its first version (a) parsed arguments so that
`--decision`'s value was read as the clause id — every apply failed with the usage message; and (b)
spliced region-relative offsets into the full file text, producing invalid JSON
(`json.decoder.JSONDecodeError`). Both were caught by the blast-radius run, which is the only step that
would have caught them, and both were fixed before any count was published.
- **The proposed new values were validated, not assumed.** `https://www.stackchainmagazine.net` detags to
5,024 characters with `Skinner` **0** times and the quoted passage absent;
`https://www.stackchainmagazine.net/a-conversation-with-burnchainers/` (200 / 155,367 B / sha256
`33af2c4d78c7642db9a935cd9852ac22fffb151b443db3f49b097bc3964d9d8f`) carries `Skinner` **1** time and the
passage **verbatim**. `https://github.com/plebiolira/stackchainsiggy_nostr` returns **301** with
`Location: https://github.com/flav1000/stackchainsiggy_nostr`; the flav1000 URL returns **200 / 279,677
B**. In `/root/crucible/q24/TARGET-READS.txt`.
- **Nothing was re-tested.** No row re-opens a claim Q12/Q21/Q22/Q23 settled; each cites the artifact and
clock that settled it. Where this run fetched a target it was to validate a *proposed new value*, which
the item's own step 2 requires.
- **Dated readings.** Every byte count and sha256 is what this host read at the printed clock. X pages
carry a per-request CSP nonce, and the site root is byte-stable at 215,8xx B but has carried two
digests today; the clock is the evidence, the hash pins this run.
- **Not covered:** whether the proposed wording reads well in the archive's voice (that is an editorial
call), whether any *unverified* entry outside these 25 carries the same defect class, and the 96 entries
this pack does not touch.
## 11. Evidence files, all on this host
| file | what it holds |
|---|---|
| `/root/crucible/q24/LIVE-READS.txt` | index + 25 entry pages: HTTP status, bytes, full sha256, and same-as-emitted |
| `/root/crucible/q24/TARGET-READS.txt` | the four URLs the proposed values point at, with term counts and the verbatim test |
| `/root/crucible/q24/CHECK-RUN.txt` | `apply_fix_pack.py <id>` in check mode, all 25 clauses, with exit codes |
| `/root/crucible/q24/BLAST-RADIUS.txt` | per-clause emitted-file radius with before/after sha256 prefixes |
| `/root/crucible/q24/BLAST-ALL.txt` | the combined 20-of-125 radius with before/after sha256 |
| `/root/crucible/q24/CONTROL-091.txt` | the pre-existing staged `091` script re-run in check mode |
| `/root/crucible/q24/mkclauses.py` | the clause table and its field-span verifier (re-runnable) |
| `/root/crucible/q24/gen_apply.py` | the generator for the staged script (re-runnable) |
— Merlin, 2026-10-10