Files
troupe-standup/recoveries
Merlin ca4889584e Helm run 2: the page aged and it lied about it
recoveries/helm-render-aging.md — the served Helm page (9,865 B / sha256
427b7b54c69b18d270288910fc810732463129f48ec4bdd7dbc75cdb22997ce4, read
2026-10-11T08:53:51Z) carried five false FRESH badges and a "5 green" pill on a
snapshot 2d 15h 40m old, against its own rule "green = measured OK and fresh".
The honest reading was 0 green / 6 not green. The same page served
manifest_match: true while a fresh collect returns False (live
5e5cd6d26a700423... vs held f27326e8b13d1dec...). No Helm cron job exists.

helm-render.py now re-derives every badge from each source's own observed_at
against the collector's threshold table (imported, not copied), recomputes the
verdict, and stamps the page with its snapshot age, a STALE READING/CURRENT
banner naming the stalest source and its ratio, and a per-card evidence line
carrying the limit each reading aged past. --as-of pins the render clock.

Roster identity was filename_body.split("-")[0], which registers
zephyrus-sparkborn as two members; it is now the longest roster prefix, with
unrecognised bodies reported in troupe_standup.unrecognised_bodies rather than
silently attributed. Fresh collect: 4 members, unrecognised_bodies: [].

The site digest was unreproducible from outside: run() uses text=True, so
live_body_sha256 is over the CRLF->LF-normalised body. 217,162 wire bytes /
9a5ee1328d4a3fedd... vs 217,149 normalised / 5e5cd6d26a700423..., delta 13 = the
13 CRLF pairs, lone CR 0, raw.replace(CRLF,LF) == normalised. The snapshot now
records live_body_sha256_wire and names the rule; both reproduce via
curl | sha256sum and curl | tr -d '\r' | sha256sum.

helm-selftest: 102 passed, 0 failed, six gates. Three defects of mine are logged
first in the deliverable: (1) the first renderer ran at module scope, so
importing it overwrote the production page — reverted byte-exact from a pre-run
copy and re-verified; (2) build_page() referenced an undefined SNAPSHOT and
78/78 passed because nothing called it; (3) card() was passed the evidence
sub-dict instead of the source block, so no card printed its limit. A gate that
does not execute the path it protects is not a gate — G5 renders real HTML at a
pinned clock and asserts on the emitted bytes.

Nothing deployed: /var/www/alexander-whitestone/helm/index.html unchanged at
9,865 B / 427b7b54c69b18d2... throughout; staged pages live in
/root/crucible/helm/. Deploy is one command and Alexander's under section 4.
/root/.helm/data/snapshot.json not clobbered (aa842b0fd88037f8... before and
after). No secret printed; decisions/ and inbox/ untouched; no other party's
file edited; no X page fetched.
2026-10-11 09:08:58 +00:00
..
Q12 DONE: are the evidence tiers earned? (recoveries/evidence-tier-audit.md) - 18/18 justified, 0 too strong / 0 too weak / 0 indeterminate, no badge in the sample misstates its evidence; sample rule stated before any fetch (every non-documented entry = all 6: 5 testimony_only + 1 corroborated + 0 unrecovered, plus every 9th documented entry in index order = 12, total 18 of 121); census reproduced from the live index (200 / 34,488 B / sha256 4f764ef4dfb9, grep 'badge documented' 115 / testimony 5 / corroborated 1 / unrecovered 0 = 121 <li id=); all 18 entry pages and 17 cited sources fetched live this run, 33 of 37 quoted excerpts >=25 chars verbatim in a source the entry cites, and 8 of 12 sampled magazine entries carry a displayed date equal to the cited article's own article:published_time to the day; five named findings, none a badge overstatement - (1) block-25/88/89/90 quote the 'Skinner Stacking' passage and link the bare site root which contains 'Skinner' 0 times while the passage is verbatim at /a-conversation-with-burnchainers/ (200 / 155,217 B / sha 50a2e57e3ba6), the publication's only ?s=Skinner result; (2) event-2022-08-18 names StackchainQuant's October account twice, links it nowhere, and x.com/StackchainQuant returns 404 'User Profile Not Found', its badge still earned by the post text verbatim x3 and tx ae63c499 confirmed at height 749999 / 2022-08-18T17:45:12Z / 851,979 sats; (3) magazine-026 names @a_koby with no anchor; (4) the legend's Unrecovered tier is defined and applied 0/121 times while material fitting it sits in lower-tier Uncertainty panels; (5) Documented on the 91 magazine entries is a liveness claim not a held-artifact claim (Receipt panel says 'No receipt is held', and bitcoinmagazine.com answered 403 to a Chrome UA and 200 / 341,802 B to a bare curl UA in the same minute); limits: 18 of 121 is a sample, the 6 non-documented are a complete census of their tiers and the 12 documented license no rate for the other 103, all byte counts and hashes are dated readings from this host ~09:0x UTC, nothing live edited; check-in 2026-10-10-merlin.md; Q12 status block appended; Q20 next, Q9 blocked on the audio handover, Q13/Q19 gated on Alexander, depth not thin so no new item opened
2026-10-10 09:08:47 +00:00
Q11 DONE: closure of the eight pass-2 date mismatches (recoveries/ledger-date-closure.md) - 8/8 resolved, all archive correct, 0 source correct / 0 indeterminate / 0 unresolved; every row settled by a dated primary or contemporaneous source fetched live this run (all 8 entry pages and 13 cited sources HTTP 200, each sha256'd): SIP-0001's abstract "On July 18, 2022 at 7:07 PM" for row 1, so pass 2's own "none bears 2022 18" is wrong (it read the CREATED header, never the abstract); king-of-stackchain article "July 18, 2022"; SIP-0004 CREATED 2022-7-20 plus git history (earliest 2ac1fbab 2022-07-21T02:11:47Z, 5 commits to 2022-08-09, which is what the entry's basis label warns); cited AnthonyDessauer post "6:00 PM Aug 18, 2022"; the-fork-of-1492 article "August 28th, 2022 late in the morning"; both cited X posts "Oct 7, 2022" (7:59 PM / 8:17 PM); "In mid-December 2022"; and "May 20th 2024" as the two-years article's own composition date against its 2025-07-22 upload; the flag was a rule artifact - all 8 compare an event date against a source publication date, which are supposed to differ for retrospectives and standards documents, so the flag rule should be retired or narrowed; the archive's own basis: labels are accurate on all 8 rows; one void avenue recorded so it is not repeated (Stackchain block numbers 1492/2079/2080 are the social chain's own numbering, not Bitcoin heights - mempool.space block-height/1492 returns a 2009-01-24 block, ts 1232763992); one sub-finding left unverified (row 1's three sources agree on the date and disagree on the hour: 7:07 PM / 4:07 PST / 11:07 PM); check-in 2026-10-09-merlin.md; queue depth not thin so no new item opened (Q12 next, Q20 behind it)
2026-10-09 09:11:05 +00:00