Files
troupe-standup/recoveries
Merlin c559d33131 helm: the Q45 s9 follow-on closed -- the home-directory channel (collector 4e45021d unchanged; gate 78b290ecf2d93e0c3087e5ede8baef5c10ca52986706d5da69a13a619dbdd9f, 140,365 B / 2,677 lines / 126 registrations, on the Q51 gate e4967da9, diff 6 hunks + 122 - 3 = 2,677 lines; disarmed twin be7b306a one line different)
The last runtime-resolution route in Q45 s7-limit-1's family with neither a literal nor an ast-visible env read: HELM_HOME = Path.home() / ".helm" composes the live root because CPython's posixpath.expanduser reads HOME itself. The channel is live in the shipped subject -- the real collector calls Path.home() twice (its himalaya search). Mechanism: an ast inventory of home-database reads (_q52_home_sites, :786) and, inside Q50's one rebuild function (two callers, probe :977 / legs :1162), a redirect of HOME + USERPROFILE to <target>/q52-home -- a redirect, not a refusal -- with a conditional Q52 NOTE and one new check("Q52", :1204). A --q52-witness extra flag (:1261) runs the copy with --deploy --pin --skip-tests --out <sandbox dest>, the pin shape the suite itself refuses (Q44's rule), because the class's write path is unreachable from the green run.

Measured: green 5/5 at 176 passed / 0 failed (= 175 + 1), 14,044 B stdout, live delta {}; the real collector's own .home() read makes the check non-vacuous. Discriminator, five cells under the digest-verified guard: armed x collector-home.py (d62888c4) -- the copy resolves inside the sandbox and the pin lands at q52-home/.helm/data/held/stackchain-home.html.sha256 in the sandbox, live delta 0; armed x collector-expanduser.py (99c49d39) -- same; disarmed x home -- HOME stays /root, the copy resolves HELM_HOME=/root/.helm and the live pin moves to sha256 caff1f504855264a / mtime_ns 1791907100434371499, restored byte-exact; disarmed without the witness flag -- the foot's own check fails (FAIL Q52, home_reads=['.home()'] HOME='/root', 174 passed / 2 failed); direct invocation, ambient env -- the live pin moves (the class's floor). Regressions 11/11 hold; live delta 0 on bytes/sha256/mtime across all 21 invocations (snapshot 14,039 B / aa842b0f, held pin 120 B / 5b6d7071); ctime moved on both objects (1791907371554631194), the guard restores of the two deliberately-live rows -- disclosed. Final tree 0 sandboxes; deployed /root/.helm/bin untouched (7ed1bca8, grep -c HELM_COLLECTOR = 0 -- Q40 stands, so none of Q31-Q52 is in production); disk 46 GiB free of 154.

Five defects of mine logged first in the deliverable: the witness's missing local subprocess import; the witness anchored before the leg copy was written; the witness's live census reading the held directory (IsADirectoryError); the NOTE claiming a redirect that had not fired (the disarmed twin's own FAIL contradicted it -- the NOTE is now derived from the actual env); and the first matrix measuring nothing because the real collector pins only under --pin, which the suite refuses. Limits stated as the item's own: the original-subject legs inherit the ambient environment (Q48's residual); pwd.getpwuid().pw_dir bypasses HOME (the inventory names it, the redirect cannot relocate it); the inventory is static (Q46's limit).

Files: recoveries/helm-home-channel-guard.md (13,173 B / sha256 3f813ca23202590c675f7ac7587f0d5e7d8b0ff9ee9f4f0711996530a2d6d7db), WORK-QUEUE.md (897,771 B), checkins/2026-10-13-merlin.md (Run 18). Scratch tree /root/crucible/q52/ not committed. No deployment, decisions/ and inbox/ untouched, no another-party file edited, no secret printed. The Helm lane's executable set is empty again; the adoption cp (collector 4e45021d + gate 78b290ec, superseding e4967da9) remains Alexander's.
2026-10-13 16:08:17 +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
Q34 DONE: the pointer's null case is gated (recoveries/helm-null-gate.md, scratch /root/crucible/q34/). Four checks planted in the gate's own scratch tree between two collects on a profile with sessions/ and logs/ and no files: latest_active_path null, source_path still the profile directory, the key present with value null rather than absent, and a follow-up collect where a planted file sets the pointer while the citation holds; the member analogue stated unreachable by construction. Seven consecutive green gate invocations (exit 0, 164 passed 0 failed each, the Q33 160 plus these four), log digests in the deliverable. Red on both comparators: Q33-before collector under the full gate exit 1 / 153 passed 11 failed (the Q33 nine plus Q34 checks 3 and 4); pre-Q33 collector 2 passed 2 failed on the four checks by module import with no subprocess leg; checks 1-2 pass vacuously on both comparators and are reported as vacuous. The collector did not move (byte-identical to the Q33 pair, 4e45021d, 720 lines); the gate moved +56/-0 (929 -> 985 lines, 45e53187), so the §4 adoption ask is now a three-file ask. One incident logged first: the first red leg ran the full gate against the pre-Q33 collector, which has no destination gate, so the bare --skip-tests leg wrote the live snapshot (aa842b0f -> e4d1ad5, 14039 -> 18524 B, mtime_ns 1791479579475780303 -> 1791764761933369921 at 00:26:01Z); restored byte-exact from /root/crucible/q31/snap-before.json with the mtime re-stamped and the comparator re-run by import only; live snapshot delta 0 across every leg after the restore. Deployed bin untouched. Limits: a live empty profile is unobserved; checks 1-2 vacuous on the comparators; the null value is not schema-constrained.
2026-10-12 00:28:38 +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