fresh cell, and no gate asked whether the pill was true
Two findings, measured on six reachable cells of the pill x qualifier pair
(q63/make_cells.py -> R34-CELLS.json), five of them real renders of the real
renderers on the real snapshot and one constructed and labelled as such:
1. G10's predicate (helm-selftest-q62.py:2782) demands both "not re-checked
since" and "as of ", but helm-render-plain.py:329 appends the disclaimer only
when site_fresh != "FRESH" -- so the honest fresh generation is refused and
the end state of G10's own prescribed remedy (re-collect -> re-render ->
deploy) is red exactly like today's unfixed page. A red that cannot tell a
fixed page from a broken one is not a remediation signal. The pair is the
evidence: base gate with the fresh cell as its subject 187/1 with G10's row
FAIL (control-q62-freshcell.py, c05dd15f), new gate on the same body same
repoint 190/1 with G10's row PASS (twinD, ef9980cc). The fix splits the
predicate into its two halves and reads freshness from the age the page's
own qualifier states, against the collector's own 3600 s threshold.
2. No gate asked whether the pill was TRUE, and G11 does not close it: the
fresh cells carry an unqualified green "match" beside a fresh-looking clock
from BOTH the production renderer and the G11-patched one, while a fresh
fetch of the snapshot's own URL returns HTTP 200 / 217,163 B /
c34ae2c245117ca7 against a held pin of f27326e8b13d1dec -- so
pin_matches_live_now is false. G13 is the guard: offline, the pill's colour
must agree with the held pin against the live-body hash the page publishes;
live, a fresh fetch must confirm an unqualified green pill (red today, and
that red is the finding); plus a read-only row. Row 2 subsumes G12 on one
cell and adds three G12 cannot see -- stated in the record, not left for a
reader to find.
Gate: base 4b18329c (171,979 B / 3,256 lines / 138 registrations) -> shipped
helm-selftest-q63.py 180,772 B / 3,432 lines / 141 registrations /
94f9b3625e5791a724afe479315f5a49d3244c5e183cad8001ec6185e1c3f240
(+8,793 B / +176 lines / +3 registrations); four twins and one control each one
to three asserted lines different. Subject 4e45021d80395d3f / 29,954 B
throughout. Matrix, prediction stated before the run and met exactly: shipped
189/2 twice, twinA 188/3, twinB 190/1, twinD 190/1, control 187/1, and twinC
rc 0 / 191/0 / ALL GATES PASS -- the honest remediated state, the only
configuration this gate has ever been able to pass, which gives the remediation
an acceptance criterion it did not have before.
Live delta 0 across all seven legs: page 9,865 B / 427b7b54c69b18d2, snapshot
14,039 B / aa842b0fd88037f8, held pin 120 B / 5b6d70716153c3f4; deployed bin
untouched and grep -c HELM_COLLECTOR = 0 so Q40 stands; sandboxes 0/0; disk
41 G free of 154. Nothing deployed, no another-party file edited, decisions/
and inbox/ untouched, no secret printed. Adoption is now four files in one
order: renderer 306d4bee -> collector 4e45021d + gate 94f9b362 -> re-collect ->
re-render -> deploy, with the re-collect load-bearing because G13's live row
stays red until a collect recomputes manifest_match against the live body.
Four defects of mine logged first in the record's section 8: the first probe
fetched the portfolio instead of the pin's subject; the first normaliser missed
this host's TMPDIR-based mkdtemp; the first G13 block referenced four names it
had not imported; and twinC's third repoint silently did not apply until an
assertion caught it. No queue item opened. Merlin <merlin@agents.invalid>.
grep 'held copy' over the shipped gate 125754b270bf (161122 B / 3053 L / 135
regs) returns three hits (:2841 G10's negative literal, :2882 a comment, :2893
G11's constant) and NONE is read off the deployed path, so G11's pill rule was
guarded on scratch renders only. New gate helm-selftest-q62.py 171979 B / 3256 L
/ 138 regs / sha256 4b18329c7437bec4c5c05be86ddd8376a7396eda9c97739410b1ab5952e4d270
on that base, twin 0fc58aabfb8d9345 differing on exactly one asserted line
(3073, _g12_deployed repointed at the production renderer's own stale output).
My first predicate was falsified by measurement before it shipped: the obvious
rule ("held copy" present implies "as of" present) is REDUNDANT with G10, since
G12-fail implies "as of" absent and G10-fail is "not re-checked since absent OR
as of absent", so every body it refused G10 already refused. Corrected rule is a
complement, not a duplicate: G10 owns the MISSING clock (today's page, G10 red,
G12 correctly green); G12 owns the INCOHERENT pair (green pill AND a staleness
disclaimer, which G10 passes because both its strings are present).
The discriminator runs on an artifact production would deploy, not a string I
built: helm-render-plain.py is byte-identical to /root/.helm/bin/helm-render.py
(21766 B / 5c67473d89283c3d) and at --as-of 2026-10-14T16:00:00.000Z emits
11806 B / 3f48643d8e7bac77 carrying the green pill, "as of" x1 and
"not re-checked since" x1 -- G10 passes it, G12 refuses it.
Prediction stated before the run and met exactly: shipped rc 1, 187 passed /
1 failed (sole failure G10's deployed-page row), twice at 16212 B each; twin
rc 1, 186 passed / 2 failed at 16583 B, adding G12 row 1. live_moved {} and
sandboxes [] on all three legs. Byte-stability measured: G12 rows identical
across both shipped runs, stdout identical after sandbox normalisation with
residual 0, normalised sha256 7a080e1616fb20e3.
Two defects of mine logged first: the first predicate's redundancy (measured
before shipping), and the runner's stdout normaliser matching (helm-legs-|
/tmp/tmp) while this host's TMPDIR is /root/.hermes/profiles/merlin/cache/
scratch, so it reported residual 2 with no characterisation -- the two lines
printed, the pattern corrected, the run re-run; no G12 row depended on it.
Live state delta 0 on bytes+sha256+mtime_ns across every leg: page 9865 B /
427b7b54c69b18d2, snapshot 14039 B / aa842b0fd88037f8, held pin 120 B /
5b6d70716153c3f4. Deployed /root/.helm/bin/ untouched (five digests re-read
plus __pycache__), grep -c HELM_COLLECTOR = 0 so Q40 stands and none of
Q31-Q62 is in production. Sandboxes 0. Repo main at 07fdaf9c8c, worktree
clean, remote identical; 102 merlin-authored commits before this push. Disk
41 G avail of 154.
Nothing deployed, no another-party file edited, decisions/ and inbox/
untouched, no secret printed. No item closed, none opened -- the Helm
executable set was empty at the start of the run by both this lane's and the
pipe's measurement, so the unit taken was the one defect the lane had measured
and labelled but never fixed. Append-only family, 0 deletions. Merlin
<merlin@agents.invalid>.
(<this commit's clock>, <this commit>) filled with the measured read clock
2026-10-14T20:53:48+00:00 and revision 7bcd373. Append-only family -- no
figure, digest or verdict moves. Merlin <merlin@agents.invalid>.
(renderer 306d4bee / collector 4e45021d / gate 125754b270bf) match their
stated figures as a bundle, stage byte-identically, the gate is 184/1 on the
staged collector (the one failure being G10's deployed-page row), the
re-render payload carries both missing markers, and live state is delta 0
around all of it. Record recoveries/helm-adoption-sequence-readiness.md,
queue block, check-in Run 31. Nothing deployed, no another-party file edited,
decisions/ and inbox/ untouched, no secret printed. Merlin <merlin@agents.invalid>.
Both loci that cited out/R29-MEASURE.json are fixed -- the record's own :25 (the primary) and the candidate renderer's comment -- while the artifact sits at /root/crucible/q59/R29-MEASURE.json (5382 B / d6f142c0e7a7acca). One comment line, anchor unique, compile() before the write, the reply-55-verified pre-image preserved byte-exact at q59/helm-render-g11-pre30.py; post-fix renderer 22731 B / 306d4befee7c9874 / 512 lines, -4 B. Comment-only proved by the emitted bytes: fixed stale render 11819 B / 951a8a7645fe7ef4 byte-identical to Run 29's check-stale.html, fixed fresh 11624 B / 1eec213e9e363d36 identical to check-fresh.html and to the plain renderer at the same clock, plain stale control 11806 B / 3f48643d8e7bac77 -- so the pill's +13 B one-span difference is unchanged and the G11 gate's rows 1-3 stand by byte identity (the 161 KB gate was not re-run; the inference is labelled). Live delta 0 on bytes/sha256/mtime_ns for all four live objects across all four invocations; sandboxes 0; HELM_COLLECTOR still 0, so Q40 stands and nothing is in production. Adoption object superseded: renderer 306d4bee (22731 B) before the cp of collector 4e45021d + gate 125754b270bf. Reply 54's three corrections re-measured and upheld (496/512 by wc -l; twin line 2889; match_qualifier :327-330). Nothing deployed, no another-party file edited, decisions/ and inbox/ untouched, no secret printed.
No counterparty movement: wake was my own commit cb0fffd (branch-head fc7f90878e -> cb0fffd435 = the 16:33Z entry), every monitored blob identical, and the writes' origin confirms it -- git log --since='2 hours ago' --format='%an' | sort | uniq -c gives 2 Merlin (e1fbb14 16:13:15Z, c7da579 16:17:35Z, the Run 29 landing pair already answered in reply 55 and already DONE here at 7eff26f) and 7 Timmy; decisions/ and inbox/ last touched 2026-10-08 (4fbc491). Nothing owed, so no reply file written. The 16:46 erratum re-run, not believed: diff cb0fffd..cc287f4 touches WORK-QUEUE.md only; 8883,8884p gives 14 tokens, 8883,8885p gives 18, and the same range less 8530 gives 17 = opener :7292 plus the sixteen repeats, so cc287f4's reading holds and the unit is the repeat loci. Standing refinement adopted as the class fix for my three counting defects this week: record the instrument, and date any reading that must be quoted -- this entry quotes no occurrence count, so nothing in it can drift when this append lands. Append-only, prefix and trailing newline asserted, no another-party line edited, no inbox content quoted, no secret printed, nothing deployed. Blob 904b657e80 -> f1b49aaab8 (+2,539 B).
commit path -- all three rows HTTP 200, served = disk = git at e1fbb14
(record 14,839 B / d4e2e0d15e928959, queue 1,094,415 B / b9b85f86d6e3ea8d,
this file 79,851 B / fc806a4dbad215d9 at e1fbb14 before this append).
Landing deltas from git: 71/0 + 154/0 + 252/0 = 477 insertions, 0 deletions.
Authored with the lane's identity; 93 merlin-authored commits before the push.
No another-party file edited, no secret printed.
The held pin f27326e8b13d1dec (pinned 2026-10-08T16:58:07.100Z) no longer
matches the live body (200 / 217,163 B / c34ae2c245117ca7), yet the
renderer's pill reads the frozen manifest_match field and prints a green
'match' beside 'not re-checked since' in a page whose own verdict pill
reads '0 green / 6 not green'. One renderer edit conditions the pill on
the reading's freshness (stale -> amber 'match (unverified)'; the fresh
branch is byte-identical), and gate G11 adds four checks on Q45S10+G10:
161,122 B / 3,053 lines / 135 registrations. Prediction stated before the
run and met: shipped 184/1 (G10's deployed-page row), twin 183/2.
Live delta 0 on bytes/sha256/mtime_ns/ctime_ns across all four objects;
sandboxes 0/0; HELM_COLLECTOR still 0, so nothing is in production.
Nothing deployed, no another-party file edited, no secret printed.
Readback by /root/crucible/q58/readback_r28.py, artifact out/R28-READBACK.json,
read_at 2026-10-14T13:28:12Z, revision 7af50b5, head_at_read 7af50b5, author
Merlin <merlin@agents.invalid>. All three rows HTTP 200, served = disk =
git cat-file -p 7af50b5:<path>:
recoveries/helm-deployed-page-generation.md 9,953 B bdd5fa1c03586c28...
WORK-QUEUE.md 1,067,607 B a78cc8dff36908a5...
checkins/2026-10-14-merlin.md 65,984 B 0af2ecd2aaaee0f0...
The landing delta is measured from git, not from the append script:
git diff --numstat 7af50b5^ 7af50b5 = 72/0 on the queue, 124/0 on the check-in,
149/0 on the record = 345 insertions, 0 deletions. The queue's byte delta is
1,062,291 -> 1,067,607 B = +5,316 against a block of 5,322 B; the 6-byte
difference is the block's leading newline-dash-dash-dash separator aligning with
the separator the parent already carried, which is also why git counts 72 added
lines rather than the block's own 74. Reconstruction verified byte-exact:
parent[:1060132] + block + parent[1060138:] == rev is True, so the pipe's
"Erratum, mine: the 13:09Z tick" block is intact and keeps its own separator. No
another-party content was clobbered.
ONE DEFECT OF MINE, logged in the check-in's landing block rather than smoothed:
the append script's printed before figure for the queue was 1,060,143 B against a
shared prefix of 1,060,132 B -- 11 bytes stale, because sha(QUEUE) and the later
QUEUE.read_bytes() are two separate reads and the pipe was writing the file
between them (its erratum is stamped 2026-10-14T13:26:06Z, after my 13:25:50Z
append and before my 13:27:05Z commit). The file content is correct and every
assertion that mattered was on bytes read once and written once; only the printed
diagnostic is stale. The git figures are the authoritative ones, and the check-in
was unaffected -- parent is a prefix of rev: True, residual 0 B, 124 lines =
numstat 124/0 -- because the pipe does not write my check-in. This is the
concurrent-writer form of Run 24's logged defect, not its unit form: the units
were bytes throughout.
Live state at the landing, unchanged: deployed page 9,865 B /
427b7b54c69b18d270288910fc810732463129f48ec4bdd7dbc75cdb22997ce4 / mtime_ns
1791709034017837233; snapshot 14,039 B / aa842b0fd880... / mtime_ns
1791479579475780303; held pin 120 B / 5b6d70716153c3f4... / mtime_ns
1791478687099553071. Deployed /root/.helm/bin/ untouched (ee0b36a82f23... /
5c67473d8928... / 7ed1bca8f9da... / 12570786ba70... / 738699986778...),
grep -c HELM_COLLECTOR = 0, so Q40 stands and G10 is not in production. Sandboxes
0/0 both ways. Disk 45 G avail of 154.
Append-only, trailing newline asserted on the written file: check-in 65,984 ->
69,697 B (+3,713, sha256 d1d616878ecbd269...). No another-party file edited,
decisions/ and inbox/ untouched, no secret printed.
The Helm's pinned site now reads HTTP 200 / 217,163 B / sha256 c34ae2c245117ca7...
while the held pin is f27326e8b13d1dec... pinned 2026-10-08T16:58:07.100Z, so
pin_matches_live_now is false. The deployed page /var/www/alexander-whitestone/helm/index.html
is 9,865 B / sha256 427b7b54c69b18d270288910fc810732463129f48ec4bdd7dbc75cdb22997ce4 / mtime
2026-10-11T08:57:14.017Z and renders a green "match" with no "as of" and no "not re-checked
since". The renderer carrying that fix is mtime 2026-10-11T11:12:43.756Z, 8,129.7 s later, and
the real snapshot through it (--out scratch --as-of 2026-10-14T00:00:00.000Z, rc 0) renders
11,798 B / sha256 f32191223931e74b... carrying "as of 2026-10-08T17:12:59.458Z . 5d 6h 47m ago
. not re-checked since". The fix exists, works, and was never deployed.
Why the self-test was green: helm-selftest.py:420-421 runs the qualifier check on a synthetic
fixture at a pinned clock (hr.SNAPSHOT = fp), and :422-425's "build_page() writes nothing"
only proves build_page did not overwrite production. Neither reads the deployed artifact --
the Q34/Q40 law in a new place: a gate that tests the producer cannot vouch for the artifact
in the document root.
The fix is gate G10, four checks, on Q45S10's c56230e5a075... (147,151 / 2,798 / 127):
helm-selftest-q58.py 153,469 B / sha256 3b98b62fa5c7ea626091f6d0f63566de79818ae414bcffe323dd1ddd53956158
/ 2,916 lines / 131 check(" registrations. Shipped (reads the live page): rc 1, 180 passed /
1 failed, stdout 15,055 B / e8304379529c4c83..., the one FAIL being "the deployed page carries
the manifest qualifier". Twin (the same gate with _g10_deployed repointed at a scratch
current-generation render, ast-asserted): rc 0, 181 passed / 0 failed, ALL GATES PASS, stdout
14,824 B / fe8c8c72825962d9.... Prediction stated before the run and met exactly -- a red row
that cannot go green would prove nothing.
Live state delta 0 across all four invocations on bytes + sha256 + mtime_ns: page 9,865 B /
427b7b54c69b18d2... / 1791709034017837233; snapshot 14,039 B / aa842b0fd880... /
1791479579475780303; held pin 120 B / 5b6d7071... / 1791478687099553071. Sandboxes 0/0 both
ways (shallow glob and recursive rglob). No --deploy anywhere in the G10 block. Deployed bin
unchanged, five digests re-read, grep -c HELM_COLLECTOR = 0 so Q40 stands and G10 is not in
production.
Two shipped runs are both 180/1 at 15,055 B while byte_stable_stdout reads false; the
difference is mkdtemp suffixes in the sandbox path the gate prints. The four G10 rows are
byte-identical across both runs, and normalising the four path patterns gives stdout sha256
1958d8212fa60e44... on both with residual differing lines 0.
Six defects of mine are logged first in the record: two claims in one cell (the first G10
check 3 asserted both the predicate's soundness and the finding, which would have made the
twin 180/1 and hidden the discriminator); a report filter written from memory
(startswith("PASS") never matches the two-space rendering -- the lane's own logged class
reproduced on a fresh artifact); a live-path assertion that fired on G5's read-only check and
then on G10's own comment; byte_stable_stdout: false reported as found with the cause
measured; ast.unparse's single quotes; and pathlib.Path in a gate that imports
from pathlib import Path.
No queue item was opened: the Helm executable set was empty at the start of the run (Q49's
"Status: open and unclaimed" at :6847 is stale -- this file's own hygiene ledger at :8026
records Q49 CLOSED), so the unit taken was the one defect the lane had measured and labelled
but never fixed. Owed to Alexander, both decisions rather than tasks: re-render and re-deploy
the Helm page, and the section-4 adoption cp of collector 4e45021d... + gate 3b98b62fa5c7ea62....
Append-only, prefix asserted on bytes before each write, trailing newline asserted on the
written files: queue 1,060,143 -> 1,065,465 B (+5,322, sha256 9f0a02b429eb7ed5...), check-in
58,536 -> 65,984 B (+7,448, sha256 0af2ecd2aaaee0f0...), record 9,953 B / sha256
bdd5fa1c03586c28.... No another-party file edited, decisions/ and inbox/ untouched, no secret
printed.