5.3 KiB
Q57 residual -- the entry and its control locate their own checkout
Lane: Codeforge (null). Rev: 912e8a8 (work), entry regenerated at 0792278.
Date: 2026-10-25. Item: Q57, opened 2026-10-24 by the pipe; done-means met
2026-10-24, three defects found in its own evidence on 2026-10-25.
Q57 asked that the standup entry be bound to the bytes it grades. That binding
landed on 2026-10-24 (831f809, c48f098) and check.py reads 30 of 30 green.
What follows is not that repair. It is what the repair still got wrong about
where it is running, measured before it was changed.
1. Three defects, measured at fe4ef9f before any edit
(a) The builder was pinned to this host, so a replay reproduced nothing.
wizard.py carried REPO = "/root/troupe-standup" and HERE = "/root/troupe-standup/wizard-work/null" as literals. A clone at fe4ef9f was
made, and inside it:
$ python3 wizard-work/null/wizard.py
CHECK: python3 /root/troupe-standup/wizard-work/null/check.py
$ stat -c '%n %Y %s' /root/troupe-standup/wizard-work/null/wizard.log.md \
wizard-work/null/wizard.log.md
.../troupe-standup/wizard-work/null/wizard.log.md 1792907995 2347
.../q57red.iUNJl8/c/wizard-work/null/wizard.log.md 1792907993 2347
# after the clone-side run:
.../troupe-standup/wizard-work/null/wizard.log.md 1792908011 2347 <- written
.../q57red.iUNJl8/c/wizard-work/null/wizard.log.md 1792907993 2347 <- untouched
The clone's replay wrote the host's tracked file and left the clone alone.
git status in the clone read clean, which is the worst shape of this defect:
the replay looked reproducible because nothing in the clone had moved. The
entry also printed absolute host paths, so render() was a function of where
the checkout lived and could not round-trip anywhere else.
(b) A citation to a file that exists on no ref. q57_mutation.py:32 sent
the reader to ../q57-binding/transcript-before.txt for the CRLF transcript.
git log --all --oneline -- wizard-work/q57-binding/ returns 0 commits and the
directory is absent from the worktree.
(c) The negative control was invoked by nothing. git grep -n q57_mutation
returned check.py's compile cell and three lines of prose. The control's
green verdict was whatever its author last saw by hand -- Q63/Q65's class,
inside the file that exists to prove the gate can fail.
2. What changed
| file | change |
|---|---|
wizard-work/null/wizard.py |
HERE from __file__, REPO from git rev-parse --show-toplevel; the entry prints repository-relative paths (bash wizard-work/null/CHECK); main() writes only when the rendered bytes differ; --stamp / --restamp are the only ways to move the date |
wizard-work/null/q57_mutation.py |
REPO self-located (NULL_REPO overrides it and the path used is printed); rc 2 for could-not-grade; case 6 replay; the published-gate case renumbered to 7; the dead citation removed |
wizard-work/null/CHECK |
new lane gate: resolves $0, runs check.py then the control, 0 green / 1 fault / 2 could not grade |
wizard-work/null/check.py |
CHECK added to NEED and WORK_FILES (its bytes are bound to the named commit too), plus one cell asserting CHECK still invokes both programs |
Case 6 is the cell that would have caught (a). It runs the fixture's builder
inside the frozen clone and asserts four things at once: the clone's entry is
byte-identical, the clone's file is not even opened for writing (mtime
unchanged), git status is empty, and the host's entry is untouched. Under
the old builder the last assertion fails by construction -- that is the
measurement in §1(a).
3. Measured after
$ bash wizard-work/null/CHECK
...
30 passed, 0 failed
ALL CHECKS GREEN
...
case 6 the replay reproduces the entry byte-for-byte -> 2821 bytes
case 6 the replay opens no file for writing (mtime unchanged)
case 6 the worktree is clean after the replay -> clean
case 6 the HOST's entry is untouched: the builder grades its own checkout
21 passed, 0 failed
MUTATION CONTROL GREEN
LANE GATE GREEN
rc=0
Full transcript, verbatim with its rev: /root/.hermes/wizard-outputs/null/q57-residual/transcript-green.txt.
The entry now names 912e8a8, the commit that carries all four work files
byte-identically, and check.py prints the gate on disk is the gate published on the remote main at 16552 bytes.
4. What is not claimed
- Case 6 was not re-run against the old builder. It cannot be: the old
builder writes
/root/troupe-standupfrom wherever it is invoked, so running it to falsify the cell would rewrite this lane's committed entry. The RED is the §1(a) probe, taken against the old code before the edit; case 6 asserts its negation. A cell whose falsifier destroys the artifact is measured by probe, not by replay. - Q57's queue line is still OPEN. The done-means is met and measured, but
the closure belongs in
WORK-QUEUE.md, whose appends re-render the shared index and whosepath-claimsleg is currently red on another lane's citation. This lane will not add citing sites to a red leg; the closure line is the control plane's to append. CHECKis not atools/verify.pyleg. Adding one is the operator's call (reply 93 §4), not a lane's, and this file does not ask for it.