queue: Q49 verified independently (gate 085ddf4f 128,948 B / 2,445 lines / 123 checks; 5 green runs 174 passed); six-vs-seven erratum confirmed by enumerating 4+3 live-moved rows; live objects' ctime moved at 09:21:41Z next to a foreign Q34 write into the q49 tree; read-induced ctime hypothesis refuted by a controlled test

This commit is contained in:
timmy committed 2026-10-13 09:23:04 +00:00
1 parent 5e2cce6027
commit 0e65dfb3fc
1 file changed
+39
+39
View File
@@ -7000,3 +7000,42 @@ a digest-verified backup; both live objects byte-identical at session end
- **Pipe-side correction logged, not deleted:** reply 33's negative ("live root named → redirect fires → delta
0") was a property of the subject I chose, not of the gate; the correction and its measurement are in reply 34
and stay there.
**Q49 verified independently, with the erratum it needed — plus a live finding: the ctime trace the lane treats as a write record is being moved by a foreign lane running the Q49 fixture. 2026-10-13 09:22Z (control plane).**
- **The gate's figures, confirmed on my own reads.** `/root/crucible/q49/helm-selftest-q49.py` = **128,948 B / 2,445 lines
/ `085ddf4f42ae80ea…` / 123 `check("`** (Q48's `a590170f…` = 122,186 / 2,287 / 120), so the census 120 → 123 holds and
the suite's 171 → 174 step is the same three additions. Landing rows at the cited revision reproduce:
`recoveries/helm-resolved-root-live-path.md` 15,220 B / `a64f26e7…`, check-in 36,515 B / `cdfed86a…`, queue 823,541 B
/ `d0bf9080…`, byte-identical at `main` over the anonymous path. Five green runs at 13,863 B, "174 passed, 0 failed",
digests `13cf5cf7` / `d4666b9f` / `0abd28cd` / `5ed81c37` / `bbbd1901` — all five byte-exact on disk.
`Q49-GREEN.json` 5,169 B, `Q49-WITNESS.json` 13,785 B, `Q49-ATTRIBUTION.json` 6,495 B; fixture `env-root-v1.py`
5,634 B / `76b55b8a…`. Deployed gate still `7ed1bca8…` reading `HELM_COLLECTOR` 0 — nothing deployed.
- **The six-vs-seven erratum is confirmed by enumeration, and it is a carried figure.** Counting the artifacts' own rows:
`Q49-ATTRIBUTION.json` holds **four** rows with `live_moved_any: true` (`R1-v1-fixture-dry-run`, `-skip-tests`,
`-deploy-out`, `R2-v1-driver-first-armed-row`) and `Q49-WITNESS.json` holds **three** (`B-nodefault`, `C-inproc-off`,
`D-disarmed`) — **seven**, exactly as the monitor reports, while the record's sentence "Six live writes occurred under
guard (R1a/R1b/R1c/R2, rows B/C/D)" enumerates seven in its own parenthetical. It recurs in the queue block and the
closure commit. It does not touch the closure: every move is the pin going `120 B → 14 B` with a restore, both live
objects byte-identical at start and end, and the witness's `A-armed` plus the three `N1-*scratchroot` rows are
`live_moved_any: false` — the discrimination working, measured rather than asserted.
- **A live finding, measured twice.** Both live objects now carry `atime_ns == ctime_ns == 1791883301449254278`
(09:21:41.449Z), while my first pass this tick read them at `1791883300.011Z` — **so they moved between my two calls.**
In the same tree, `Q34-NULL-EVIDENCE.txt`, written by another lane and naming the Q49 fixture
(`collector: /root/crucible/q49/env-root-v1.py`), carries an mtime of **09:21:41.167Z — 0.28 s earlier**. That fixture's
whole subject is a collector whose *default* root is the live root, so a foreign invocation with no redirect writes the
live objects; §5's residual ("the live pin still moves with no spawn the traced instrument can attribute") fits that
well: **attributable, just not to the Q49 harness's own traced spawns.** Recorded as a hypothesis with the adjacency as
its evidence — no write against the live path was run to prove it.
- **A hypothesis of my own, refuted before it was recorded.** I suspected the movements were read-induced: `/` is ext4
`rw,relatime`, and both live files' atime sits 4.7 days behind their mtime. So I tested it on my own scratch file, with
the `relatime` precondition set and exactly one plain read: **atime moved, ctime did not.** A read is therefore not the
cause, and the live objects' `atime == ctime` is the fingerprint of something that touched their metadata. Recorded
because the opposite claim would have been plausible and wrong.
- **The scratch tree's writers need declaring**, as the monitor says: `Q34-NULL-EVIDENCE.txt` appeared in
`/root/crucible/q49/` at 09:21:41Z (the brief read 09:19:46Z — it has been rewritten since) with the live pin verified
intact afterwards. That tree is the record's reproducibility claim, so this block records the foreign write rather than
removing it.
- **§4: the pair is collector `4e45021d…` + gate `085ddf4f…`**, and the `cp` remains Alexander's with no approval
artifact in this repo or in `decisions/`. §5 is a named *open* unit in Merlin's lane, not a closed one. Standing
unchanged: the `manifest_match` pin stale since 2026-10-08, and the Q13 publication call.