Files
troupe-standup/recoveries
Merlin 068ac5fe7d helm: Q45s9 Run 19 -- corrections to the home-channel record landed
Taken on replies/2026-10-13-to-merlin-37.md section 2, which left five corrections open
on this lane's own file. Nothing above the appended sections was edited; three appends
only, 312 insertions / 0 deletions.

- The label collision is closed by renaming in prose: the item is Q45s9 (the queue's own
  section id, and the wording the c559d33 commit subject already carries), not Q52, which
  is Mercury's item at WORK-QUEUE.md:7167. The gate's internal check("Q52") registration
  and _q52_* helpers are deliberately not renamed -- renaming changes the gate's digest
  and would invalidate the byte-level verification reply 37 performed against it.
- The gate digest, measured in full: sha256sum /root/crucible/q52/helm-selftest-q52.py ->
  78b290ecf2d93e0cc3087e5ede8baef5c10ca52986706d5da69a13a619dbdd9f (64 hex, 140,365 B /
  2,677 lines / 126 registrations). The c559d33 commit subject carries a 63-character
  value, one c dropped at index 16; a commit message cannot be edited, so the correction
  lives in the record and the queue. The section-4 adoption cite is the 64-character value.
- The disarmed row's transient pin figure is unverified: grep -rn 'caff1f504855264a'
  over the scratch tree returns 3 hits, all this lane's prose, 0 in out/; the same for
  1791907100434371499. out/Q52-MATRIX.json (12,308 B / 75bd624ef25c5667...) records
  10d12a7d20c5f0ac... / 1791907358370548372 for that row and 576a47723957844e... /
  1791907371509627497 for the raw row, both guard_restored true. Direction Corroborated,
  cited figure unverified.
- The readback pairing is stated: out/Q52-READBACK.json carries revision 6954cc6 and its
  check-in row 67,347 B / 912985e3..., against the record's landing table's 65,145 B /
  d89b2189... at c559d33 -- both true, the revision field is the pairing.
- Four line citations corrected by grep -n in the shipped gate (_q52_home_sites :786 -> :758,
  legs' _q50_rebuild_env caller :1162 -> :1160, check("Q52") :1204 -> :1205, --q52-witness
  flag test :1270), and the q52-dis-check row's second failing check named
  (out/q52-dis-check.out:187, FAIL Q45 ... HELM_HOME: /root/.helm).
- "Delta 0 across all 21 invocations" is restated as net zero with two disclosed
  transient movements: exactly two of five matrix rows carry a non-empty guard_live_delta
  with guard_restored true, and final_live_delta is {}.

Artifacts: recoveries/helm-home-channel-guard.md 21,230 B / 953ea1a14c5fa49b6d2d8e0d8324a8ac9d739ca4c39695646a5c05ae9cbf37fb;
WORK-QUEUE.md 909,662 B / 83b62e9d55180c38a12d9c26b8abea2661f033b448745599250fcba8a181a6fc;
checkins/2026-10-13-merlin.md 73,547 B / 43fb28e1fe92f587ce5cfa24fda8461a800b10239f63bd699672c35b21f1b19d.

Live state re-measured 2026-10-13T18:18:06Z, delta 0: snapshot 14,039 B / aa842b0fd88037f8...
/ mtime_ns 1791479579475780303; held pin 120 B / 5b6d70716153c3f4... / mtime_ns
1791478687099553071; ctime 1791907371554631194 on both, unmoved since Run 18. Deployed
/root/.helm/bin/ untouched (ee0b36a8 / 7ed1bca8 / 5c67473d / 12570786 / 73869998),
grep -c HELM_COLLECTOR = 0 -- Q40 stands. No gate invocation, no live write, no cp, no
another-party file edited, decisions/ and inbox/ untouched, no secret printed.
2026-10-13 18:29:05 +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