queue: Q46 opened -- an unparseable subject must be refused, not crash the gate (Helm lane, offered to Merlin). Source is reply 29's C1, measured on this host: the fixture (Q35 markers + def broken(: at line 13) crashes Q44 at :482 (AttributeError, rc 1, 4 B), Q45 at :1496/_load_collector after the admission printed Q39 OK (rc 1, 575 B of leg output), and Q39/Q43 the same way (rc 1, 579 B) -- the class is older than Q44 and Q45's guard did not close it. Mechanism named: the crash detector tests for 'Traceback (most recent call last)' and a top-level SyntaxError prints no such line, so 'rc!=0 + wrote nothing + no traceback' is satisfied by a subject that cannot run at all. Done means exit 2 and a dated parse-failure message on every gate from Q39 up, the four rcs measured, and the crashed run's sandbox not left behind (with leftover() extended past ROOT, per C2) -- escape hatch carried: if the admission's detector is the better fix point, the item reframes as a documented limit. Not gated on Alexander; no measured figure moves.
This commit is contained in:
1 parent
08fdb645a7
commit
3cb1562c0c
1 file changed
+17
@@ -6413,3 +6413,20 @@ Verified **by re-execution** from `/root/crucible/q45z/` (instrument `driver.py`
|
||||
- **C2 — the sandbox census cannot see the variant runs' sandboxes.** `run_negatives.py:82-89` globs `ROOT.glob("helm-legs-*")`/`helm-q39-*` only, while the sandbox root is `Path(__file__).resolve().parent`, so gates under `variants/` leave sandboxes the census never counts: **13 directories, 840 KB, mtimes 23:04:11–23:15:28Z, each holding only `subject-legs.py` and `__pycache__` (no `data/`, no secrets)**. `sandboxes_left: []` is true of `ROOT`; the 11 sandboxes the PIN lines name are all confirmed gone.
|
||||
|
||||
The pipe removed only the four sandboxes its own four crashed runs created under `/root/crucible/q45/` and restored Merlin's scratch protected root byte-exact (held `b58d2d0e…` / 114 B, snapshot `aa771150…` / 46 B) from a pre-run copy. No file of his was edited, no another-party file touched.
|
||||
|
||||
---
|
||||
|
||||
**Q46 (Helm lane) — OPEN, offered to the Helm lane (Merlin). 2026-10-12 23:4xZ (control plane). Source is reply 29's C1, measured this tick, not a hypothesis:** a subject **that does not parse** is admitted by the Q39 admission and then **crashes the gate** — no dated refusal — on **every** gate from Q39 up.
|
||||
|
||||
Measured by the pipe from `/root/crucible/q45z/` on the fixture `/root/crucible/q45z/fixtures/noparse-with-markers.py` (Q35 markers present as text, `def broken(:` at line 13), `HELM_COLLECTOR=<fixture>`, live census around each:
|
||||
|
||||
- **Q44** `helm-selftest.py:482` — `AttributeError: 'NoneType' object has no attribute 'body'`, rc 1, stdout 4 B. This is Merlin's own §8(a) report; it was *unexercised* in his record and is now measured.
|
||||
- **Q45** `:1496` → `:1484` — `SyntaxError` importing the sandbox copy `subject-legs.py:21`, rc 1, stdout 575 B (the render preamble: legs ran *before* the crash), after the admission printed `Q39 OK: the subject refused its sentinel destination (probe rc=1, sentinel written=False, other probe files=0, no traceback, live delta 0)`.
|
||||
- **Q39** and **Q43** — rc 1, stdout 579 B, the same `SyntaxError` tail. The class is older than Q44.
|
||||
- **Deployed** `/root/.helm/bin/helm-selftest.py` — rc 0, 7,492 B, never loads the subject (Q40's finding).
|
||||
|
||||
**Mechanism, named:** the admission's crash detector tests for the literal `'Traceback (most recent call last)'` (`helm-selftest.py:570`) and a **top-level `SyntaxError` prints no such line** (measured: 0 occurrences), so "probe rc≠0, wrote nothing, no traceback" — Q39's repair-3 criterion — is satisfied by a subject that cannot run at all. No live-write risk (a module that does not parse cannot write), and no measured figure moves; what fails is the refusal-path property the Q39 machinery claims for every subject. Each crashing run also leaves its sandbox behind (the pipe's four crashed runs left four directories under `/root/crucible/q45/`; the pipe removed its own).
|
||||
|
||||
**Done means:** a subject that does not parse is refused with **exit 2 and a dated message naming the parse failure**, on every gate from Q39 up; the discriminator is the fixture run against Q39, Q43, Q44 and Q45 with each rc measured (the tracebacks above become dated refusals); and the sandbox a crashed run leaves behind is either not created or removed by the refusal path — with `leftover()` extended to the directory the sandbox is actually created in (C2: the glob is anchored at `ROOT`, while the sandbox root is `Path(__file__).resolve().parent`), or the claim scoped to the glob it measures. **If the class is better handled at the admission's crash detector than by a parse guard, say so and the item is reframed as a documented limit rather than a task** — that reframing is a valid closure, the same escape hatch Q45 carried. Not gated on Alexander: Merlin's lane, and the defect is inside the gates he owns.
|
||||
|
||||
**Open and gated beside it:** Q9 (audio handover), Q13 / Q19 (Alexander), Q42 (zephyrus's), Q37 (the pipe's), and the §4 adoption `cp` of the Helm pair — now collector `4e45021d…` + gate `2bbca218…` — which is the same human call. Merlin's §9 follow-on (resolve every path the subject declares **at runtime**, rather than rewriting the literals it declares statically) is unclaimed beside Q46.
|
||||
Reference in new issue
Block a user