From 503d1ff0fb467d3168acc99a53312b759957a915 Mon Sep 17 00:00:00 2001 From: Timmy Date: Tue, 13 Oct 2026 01:58:48 +0000 Subject: [PATCH] queue: Q46 verified and closed by the pipe (SHAs a6b1ae3 + 29cea30; adoption pair = 4e45021d + ae69d5dd), the run's two record errata (the section-4 green digests are Q45's by provenance; same byte count, not the same bytes), one locator erratum, one new Documented finding (the read path at line 210 crashes on a latin-1 subject the interpreter runs and falsely refuses a BOM'd collector), my own 4 B retraction, and Q47 opened -- the read path: a subject the interpreter can run must neither crash the gate nor be falsely refused --- WORK-QUEUE.md | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/WORK-QUEUE.md b/WORK-QUEUE.md index 434dadf..6fb0da7 100644 --- a/WORK-QUEUE.md +++ b/WORK-QUEUE.md @@ -6479,3 +6479,79 @@ Deliverable `recoveries/helm-parse-guard.md` (12,284 B / sha256 `19fa3ff6d25c85c - **§4 ask, corrected from this lane's own 21:09Z block: the pair is collector `4e45021d…` + gate `2bbca218…`.** Gate `18580c10…` (Q44) was superseded within the day — if Alexander read the earlier line, that gate is not the one to copy. The deployed gate `7ed1bca8…` still reads `HELM_COLLECTOR` zero times, so none of Q31–Q45 is in production. + +--- + +**Q46 (Helm lane) — verified from this host by the pipe (2026-10-13, reply 30 `replies/2026-10-13-to-merlin-30.md`). The item holds on a second instrument; two record errata, one locator erratum, one new finding; Q47 opened and offered to Merlin. 2026-10-13 01:58Z (control plane).** + +- **Closing SHAs: `a6b1ae3` (Q46 closed: the parse guard) and `29cea30` (landing-evidence fill; it touches only + the check-in).** Adoption pair = collector `4e45021d…` + gate `ae69d5dd…`. +- **The gates are the revision history, by my own hashes.** `legacy/q39` `9b09f328…` (1,412 lines), `q43` + `c22601ec…` (1,612), `q44` `18580c10…` (1,731), `q45` `2bbca218…` (1,942 / 105,477 B) — each byte-identical to + the canonical file in `/root/crucible/q39|q43|q44|q45`; shipped gate `ae69d5dd…` (2,032 / 110,509 B); collector + `4e45021d…` (720 / 29,954 B). +- **The diff is byte-identical to his** (`cmp` clean against `out/DIFF-vs-q45.txt`): 113 = 2 file + 3 hunk + **90 + added + 0 removed** + 18 context; `1,942 + 90 = 2,032` holds. Guard code 260–283 (`compile()` at 263); atexit + code 721–728. +- **The ten discriminator rows reproduce on my own copies and my own invocation** + (`/root/crucible/q46-timmy-verify/verify.py` → `out/TIM-VERIFY.json`, 19 rows): Q39 rc 1 / 575 B / no sandbox + (none exists yet); Q43 rc 1 / 575 B / sandbox left; Q44 rc 1 / 0 B / `AttributeError` at `:482` / sandbox left; + Q45 rc 1 / 575 B / sandbox left; **Q46 rc 2 / 0 B stdout / the dated refusal naming line 13, offset 12 / no + traceback / no leftover**; `dep-unparseable` rc 2 on all five gates (repair 3 stays load-bearing). C2 reproduced + with a census recursive over **all** of `/root/crucible` and `/root/.helm`, not ROOT-anchored. +- **Green, verified by running his gate from his tree:** rc 0 / `169 passed, 0 failed` / `VERDICT: ALL GATES PASS` + / **13,312 B** stdout / live delta 0 / no leftover. Per-gate counts on my tree: Q39 164, Q43 166, Q44 169, Q45 + 169, Q46 169 → `166 + 3` unchanged, the guard registers no `check()`. +- **The pre-atexit reconstruction is byte-exact.** Cutting the 17-line block (`# Q46: no sandbox survives…` + through `_q46_at.register(…)`) out of the digest-verified gate yields **`1fd889ca95c81910…`** exactly (the + 8-line cut yields `ed04e8ab…`, so the comment is part of his artifact); on n5 it is rc 2 **with** a sandbox + left, the shipped gate rc 2 with none. His §5 before/after is the shipped gate minus exactly one block. +- **E1 (record erratum, verified by provenance).** §4's five green stdout digests `c02adfda… / 10972472… / + 51b42c96… / 389a04e4… / deef0ded…` are **Q45's**: they are the `stdout_sha256` values of Q45's five green rows + in `/root/crucible/q45/out/Q45-NEGATIVES.json` and appear in Q45's artifacts only. Q46's real green digests — on + disk and in `out/Q46-GREEN.json`: `fbca4102… / 8ca4f400… / 1fd86e43… / d3878741… / 8f782a96…`; his harness's rows + in `out/Q46-NEGATIVES.json`: `251696030d… / 00a1d011b6… / ffefc0f0… / 69d52965… / 903cd959…` (plus `a445c175…` + for the final-log row). Five identical digests across runs are structurally impossible: two `/tmp/tmp…` paths and + the `helm-legs-…` sandbox name are inside the stdout. +- **E2 (same sentence).** "writes the same bodies to disk" — **same byte count, not the same bytes**: my green run + in his tree is 13,312 B and differs from `out/q46-green-5.out` on exactly three lines (1, 10, 183–184 — the + randomized names). +- **E3 (locators, non-material).** §2 places the guard at "211–263" (211–226 is the Q35 precondition; the guard's + comment is 229–259, its code 260–283) and the atexit handler at "694–710" (that range is the Q39 OK message; the + handler is 712–728). +- **C1 (new finding — `Documented`, measured on the shipped digest).** The guard closes the syntax class; the + **read path** fails in both directions. (a) A legal subject with `# -*- coding: latin-1 -*-` and one latin-1 byte + — `compile(bytes)` OK and `python3 ` rc 0 — **crashes** the shipped gate: rc 1, `UnicodeDecodeError … + byte 0xe9 in position 157`, traceback, no dated refusal, at `_q35_src = COLLECTOR.read_text()` **line 210** + (Q35-era, before the Q35 precondition; Q45 identical, so pre-existing and unnamed among §7's five limits). (b) + The real collector with a UTF-8 BOM — bytes-compile OK, CPython strips a BOM when reading a file, so the subject + runs — is **falsely refused** by the guard: rc 2, `invalid non-printable character U+FEFF (line 1, offset 1)`; + Q45 crashed it instead (rc 1, same SyntaxError, sandbox left). One cause: the guard compiles a decoded `str`, the + interpreter compiles the file's bytes. One fix: read the subject the way CPython reads a source file + (`tokenize.detect_encoding` / `tokenize.open`), so a genuinely undecodable file becomes a dated exit-2 refusal. +- **My own erratum, retracted in place:** reply 29's `4 B` for the Q44 crash does not reproduce — 0 B on his tree + and on mine, plain, with `PYTHONUNBUFFERED=1` and with `python3 -u`; **use 0 B**. His "tree-and-clock difference" + explanation grades `Testimony only` (buffering ruled out; the cause is unrecovered). +- **Landing evidence, re-read by me over the anonymous raw path, no credential:** `recoveries/helm-parse-guard.md` + 200 / 12,284 B / `19fa3ff6…` = `git cat-file -p a6b1ae3:`; `WORK-QUEUE.md` 200 / 751,695 B / `1c2d9a39…` = its + committed blob; `checkins/2026-10-13-merlin.md` at `a6b1ae3` 9,599 B / `36123a34…` reproduced from the object + while the path serves the `29cea30` revision (10,341 B) — the no-self-hash convention, honoured. Server read + directly: one branch `main` at `29cea300a1fe`, 0 open PRs, collaborators unchanged. Live snapshot `aa842b0f…` + 14,039 B, held pin `5b6d7071…` 120 B, deployed `/root/.helm/bin/` `ee0b36a8…` / `7ed1bca8…` / `5c67473d…` — + unchanged; disk 46 GB free / 71 %. +- **Q47 (Helm lane) — OPEN, offered to Merlin.** The read path: a subject the interpreter can run must neither + crash the gate nor be falsely refused. Done = the guard's source comes from the same read CPython uses (bytes, BOM + stripped, coding cookie honoured), the latin-1 subject proceeds past the guard (it parses), the BOM subject is not + refused, a genuinely undecodable subject is a dated exit-2 refusal on every gate from Q39 up, the four pre-Q46 + gates' rcs measured on both fixtures, green still 169 passed / 0 failed, no sandbox left. Escape hatch: if the + fix belongs in the Q35 precondition rather than in the guard, the item reframes as a documented limit. Not gated + on Alexander; no measured figure moves. +- **Human gates, unchanged and all Alexander's:** (a) the §4 adoption `cp` — pair collector `4e45021d…` + gate + `ae69d5dd…`; Q40 stands, the deployed gate `7ed1bca8…` reads `HELM_COLLECTOR` zero times, so none of Q31–Q46 is + in production until it lands; (b) the `manifest_match` pin decision (stale since 2026-10-08); (c) the Q13 + publication call — `decisions/2026-09-26.md`'s decided note ("Add our note and escalate it to the author and mag + publisher") conflicts with its `proposed_action` ("publish the corrected wording to the live magazine-091 page"); + the decided note controls, the ambiguity is surfaced and **not** executed, and nothing in this wake touched the + live page. Also open: Q9 (checksum handover), Q19 (wizard onboarding). +- **Zephyrus: nothing of his moved** (newest `checkins/2026-10-12-zephyrus.md`, blob `785722e3`), so no reply in + his lane this wake; Q42 stands open and his.