queue: Q33 verified and closed from this host with the finishing SHAs (8bb88da deliverable + record, dded721 landing append) — six identities byte-exact with their line counts, +24 added / 0 removed / 63 changed leaves (only structural change: the 24 moved source_path values), 20/20 profiles and 4/4 members non-None, census 36 citations / 24 pointers / 0 null, the gate discriminating as measured here (patched pair exit 0 / 160 passed 0 failed; pre-Q33 collector under the Q33 gate exit 1 / 151 passed 9 failed; Q32 gate baseline 150/0 accounting for the ten new checks exactly; deployed gate 119/0), the six log digests to the hex digit, the paired script re-run (8 pairs, 0 differing leaves; pre-Q32 control red 1/8 on pair 2 this run; before-collector control 0/3), all three anonymous landing readbacks 200 and cmp-identical, the pre-append check-in revision 77,976 B / 1105379f, g8-scrub +15 additions-only, live snapshot delta 0 across every leg including runs of the deployed gate. Three corrections logged (C7 the selftest diff is +108/-47; C8 the helm.snapshot grep census cannot see the renderer, which reads SNAPSHOT=Path(.../snapshot.json) at :52; C9 the deployed gate carries no Q32 carve-out at all — 609 lines, no SCRUB_KEYS, no two-run check, and the deployed collector is byte-identical to the pregate copy, so the §4 cp is a three-tick move: collector +38/-5 687->720, gate +322/-2 609->929, 119->160 checks) plus two corrections of my own Q33 open line (the "ledger build" consumer does not exist; the "member's own check-in file" citation clause was self-contradictory and the check-ins-directory decision is accepted) and one addition, mine: the null case the deliverable left unverified is measured non-destructively (empty profile and no-subdirectory profile emit latest_active_path: null with the directory citation; one-file profile emits the pointer; live tree untouched) with the precision note that the two pointer non-vacuity checks pass 0/0 vacuously on the pre-Q33 collector. Q34 opened — gate the pointer's null case (Helm lane; separate from Q33's record so the adoption pair does not move under Alexander's §4 decision). Verify logs: /root/troupe-verify/q33/.

This commit is contained in:
timmy committed 2026-10-11 22:34:28 +00:00
1 parent 2d96c3ad43
commit 3e02b6802e
1 file changed
+66
+66
View File
@@ -4432,3 +4432,69 @@ superseding `1d58b823…`), C5, C6 and the paired-run recompute — so only what
full. Two of Merlin's own defects logged in the deliverable: the first four pointer checks read the
wrong nesting level (five buggy green-run logs discarded and regenerated), and the paired-level
before-control did not fire (non-vacuity proven at the gate level instead).
**Status: VERIFIED from the pipe, 2026-10-11 22:2x–22:4xZ — `8bb88da` (deliverable + record, 4 files, +356/−1) and
`dded721` (landing append, +25).** Re-run from this host against the artifacts at those SHAs: all six identities are
byte-exact (`4e45021d…` collector, `4a442f62…` selftest, `8a477376…` / `9ce6a4e9…` the pre-Q33 pair, `b050b356…` /
`4f736f54…` the two scratch snapshots), line counts 720/929/705/868 as stated, **+24 added / 0 removed / 63 changed
leaves** between the two scratch snapshots with the only structural changes being the 24 moved `source_path` values
(the rest are `observed_at`, `generated_at`, `duration_seconds`, `rtt_seconds`), the live counts **20/20** profiles and
**4/4** members non-None, the patched census **36 `source_path` citations / 24 pointers / 0 null**, all six gate-log
digests matching to the hex digit, the paired script re-run here (**8 pairs, 0 differing leaf paths** under the gate's
scrub with no carve-out; pre-Q32 control red 1/8 — pair 2 this run, the red pair moves with the age boundary, so the
class is live; before-collector control 0/3, the vacuity he stated honestly), all three anonymous landing readbacks
HTTP 200 and `cmp`-identical with his own sha256 prefixes (13,828 / 9,517 / 509,002 B), the pre-append check-in
revision 77,976 B / `1105379f…`, and `recoveries/helm-g8-scrub.md` **+15 lines, additions only** — nothing above the
C5 append was touched. **The gate discriminates, measured here, not accepted:** the patched pair runs exit 0 /
`160 passed, 0 failed`; the pre-Q33 collector under the Q33 gate runs exit 1 / `151 passed, 9 failed` — the eight named
`G8 Q33:` checks plus the declared-key source check; the Q32 gate with its own collector is 150/0, which accounts for
the ten new checks exactly (8 named + pointer-normalise 1→2 + pre-Q32 control 1→2; the citation check was rewritten
12 → 36 paths). Consumer walk re-measured: renderer's `card()` is called with the six top-level blocks only
(`helm-render.py:366-371`) so `:264` prints citations; `helm-validate.py q33-after.json` → OK, exit 0; the schema's
`$defs.evidence` has no `additionalProperties: false`; the Mercury harness reads none of the changed fields. Live
snapshot **delta 0 across every leg**, including runs of the deployed gate: `aa842b0f…`, 14,039 B, mtime_ns
`1791479579475780303`; deployed bin unchanged (`ee0b36a8…`, `7ed1bca8…`, `5c67473d…`). **Three corrections of the
Helm lane's record, logged not deleted:** (C7) the selftest diff is **+108/−47**, not +107/−47
(`git diff --no-index --numstat` and `difflib` agree; 868 + 108 − 47 = 929 = the file's line count); (C8) the
`grep -rln 'helm.snapshot'` census cannot see the renderer, which reads the snapshot through
`SNAPSHOT = Path("/root/.helm/data/snapshot.json")` (`helm-render.py:52`) and carries none of those literals — the
conclusion holds, the census expression under-reports; (C9) **the deployed gate does not "keep the Q32 carve-out"** —
`/root/.helm/bin/helm-selftest.py` (`7ed1bca8…`, 609 lines) has no `source_path=None`, no `SCRUB_KEYS`, no two-run
agreement check and no clock coverage (run here: `119 passed, 0 failed`), and the deployed collector is
**byte-identical** to his own `/root/crucible/q31/helm-collect-pregate.py` (`"source_path": latest_path or
str(entry)` at `:210`, `info["file"]` at `:493`). So the §4 `cp` is a **three-tick move** — collector `+38/−5`
(687 → 720 lines), gate `+322/−2` (609 → 929 lines, 119 → 160 checks) — and the adoption ask must say so, because it
approves a pair production has never run. **Corrections of my own, from the same pass:** the Q33 open line below named
"the ledger build" as a consumer of `evidence.source_path` — re-censused, no such consumer exists on this host (the
four bin scripts, `summarize.py`, the two harness files, one verify script and one fixture are all of them); and the
same line's "or the member's own check-in file" was self-contradictory, since that file *is* the pointer — the Helm
lane's check-ins-directory decision is the only reading that keeps one meaning per field, and it is accepted.
**One addition, mine:** the limit the deliverable left `unverified` (a null `latest_active_path`) is now measured,
non-destructively (collector imported, `PROFILES_DIR` rebound to a temp tree; live tree untouched, snapshot delta 0):
an empty profile and a profile with no subdirectories both emit `latest_active_path: null` with the directory
citation, a profile with one file emits the pointer. Residual, narrower than the limit: a *live* empty profile is still
unobserved — the branch is not. Precision note: on the pre-Q33 collector the two pointer non-vacuity checks pass
`0/0`, vacuously, since that collector emits neither key; their non-vacuity lives on the patched collector (20/20,
4/4). Verify logs and scripts: `/root/troupe-verify/q33/` (pipe's own area; the Crucible tree holds only Helm-lane
artifacts).
---
## Q34 — Gate the pointer's null case *(collector-side gate; opened 2026-10-11 by the pipe, per Q7's never-dry obligation — Q33 closed at `8bb88da`)*
Q33's own residue, measured by the pipe the same tick it verified Q33. The patched collector emits
`evidence.latest_active_path: null` for a profile with no files under `sessions/` / `cron/output/` / `logs/`, and
`evidence.newest_checkin_file` is by construction never null (a member exists only because a check-in file exists).
The deliverable states the null case as its one `unverified` limit, and the gate cannot see it: every planted tree in
the Q33 behavioural checks has files, and the live collect is 20/20 non-None — so the two pointer non-vacuity checks
pass `0/0` vacuously on the pre-Q33 collector and the null branch is exercised by nothing in the suite.
**Done means:** the gate plants, in its own scratch tree between two collects, a profile with a `sessions/` directory
and no files, and asserts (a) `latest_active_path` is `null` for that profile while (b) `evidence.source_path` stays
the profile directory and (c) the key is present rather than absent (a reader must be able to tell "no files" from
"field missing"); the member analogue is stated as unreachable by construction rather than asserted; the new checks
are **red on the pre-Q33 collector, green on the patched pair**, and reported as **N consecutive green invocations,
N ≥ 5**, each with its log digest. **Evidence:** the new check names with their pass/fail on both collectors, the
gate logs with digests, the before/after `evidence` blocks for the empty profile, and the live snapshot delta 0.
**Status: OPEN — named to the Helm lane.** Deliberately separate from Q33's record: Q33's deliverable is a finished
artifact and the adoption pair under §4 must not move under a second edit while Alexander is deciding on it.