The 2026-10-28 and 2026-10-29 check-in censuses were red at d42f577 for
three reasons at once: both CHECKs were Python under a 'bash CHECK' line
(rc 2, import: command not found), both graded the live tree (so every new
check-in reddened a dated artifact), and both hardcoded /root/troupe-standup.
The 10-28 table also carried a 101st row for checkins/2026-10-27-sentinel.md,
a file in no revision.
- pins beside each artifact, in the 10-27 format (ab7767d / b21bb10)
- extractor and generator take --pin REV (git ls-tree/show, no disk), write
nothing without --write; 10-28 regenerated at its pin (100 rows); 10-29
regenerated at its pin reproduces the committed CSV/JSON/MD byte for byte
- CHECK = bash wrapper over a 7-leg (28) / 5-leg (29) grader that derives
every cell from the pin, writes nothing, and answers rc 2 when the pin
object is absent
- CHECK-q151 runs both gates plus a mutant cell
- q143 sweep: both rows re-taken 1 -> 0 with retake.py, CHECK-q151 added;
q137 open-set pin moved with the record
The old CHECK read only the TSV, so the block a reader scrolls to was verified by
nothing: `grep -c 'census.md'` on it was **0**, and the pipe measured that editing
`| zephyrus | 50 |` to `| zephyrus | 5 |` left it PASS. Three legs now re-derive
the MD from the same pinned name list:
- leg 4: the `| wizard | checkin_files |` block must equal the awk derivation
(identical to the TSV body, so the two published halves cannot disagree);
- leg 5: `**Total files:** N across D dates` must equal the pinned name count and
its distinct-date count;
- leg 6: the `| date | files |` appendix must equal the per-date derivation.
Probes (`q88-probe-md.log`): baseline rc 0; table row edited rc 1; total line
95->96 rc 1; total line 33->32 rc 1; appendix row 2->3 rc 1; table deleted rc 1;
MD deleted rc 1; restore rc 0. The `q88-probe.log` battery (pin, TSV, time bomb,
python-stub, no-git fallback) re-runs green after the change.
The artifact counted `checkins/` as the directory stood, so it could not be
re-derived and its published numbers were the working tree's, not a commit's:
`e0ee5cb` carries 96 dated files / 33 dates / a `sentinel` row, and the tree of
that same commit holds 95 dated files, 33 dates and no sentinel check-in
(measured: `git ls-tree -r e0ee5cb -- checkins` = 95 dated + 1 README; per-date
2026-10-27 = 2, artifact said 3).
- `2026-10-27-checkin-census.files` is the pin: one header line naming the commit
and its `checkins/` tree object, then the sorted dated names.
- `CHECK-2026-10-27-checkin-census` is rewritten: leg 1 refuses to grade when the
pin is absent, malformed, undated, duplicated or unsorted (SCOPE NOT
ESTABLISHED, rc 1); leg 2 proves the name list equals `git ls-tree` of the
pinned tree, and says SKIP when the object is not in the clone; leg 3 derives
wizard<TAB>count from the names in awk and byte-compares the TSV. It never
reads today's directory and never runs the extractor.
- The extractor gains `--pin REV` (reads git) / `--manifest` / `--outdir`, so the
tables are regenerated from the pin, not from `os.scandir(live)`.
- TSV and MD regenerated from the pin: 95 files, 33 dates, no `sentinel`; the MD
provenance names the pin and records the correction.
Probes (`q88-probe.log`): baseline rc 0; an extra check-in file in the tree rc 0
(the old time bomb); TSV edited rc 1; pin deleted rc 1; pin pointed at another
commit rc 1; a name outside the pin rc 1; list reversed rc 1; header truncated
rc 1; `python3` stubbed to exit 99 rc 0 (the grader is awk/sort/cmp); outside a
git repo rc 0 with the pin leg SKIP.
The census CHECK asserted that the committed TSV re-derives from
WORK-QUEUE.md as it stands on disk. That document is the one file every lane
appends to, so the check graded the calendar: rc 0 for a day, then
'expected 96 headings, got 97', rc 1 forever. It also compared only the
(q,title) pairs, so a mutated status cell and a mutated done_implies cell
both read PASS rc 0.
- verify_workqueue_census.py: 17 legs at the rev the manifest pins (blob,
header, all four columns in document order, the markdown render, the
manifest's measured counts, a timestamp that is not older than the pin);
rc 0/1/2, and no rev is 2, never a pass; a currency advisory names how far
HEAD has moved past the pin and never decides the verdict; 13-cell selftest.
- extract_workqueue_census.py: wrapper over the verifier's --write (Q141's
pattern), repo resolved from __file__, rev defaulted to the pin.
- manifest.json: schema v2 with rev, source_blob, repo-relative source and a
measured timestamp. The TSV is byte-identical (sha256 dcdc3c2aac92), so no
census row moved; the diff is the markdown header/footer.
- CHECK-q147: a root entry point grading the repair in four legs.
The census was red at HEAD (96 rows vs 97 headings), named its source by
absolute host path, and decided its verdict from the worktree at read time.
It now pins source_blob_sha/sha256/rev, records a row digest, refuses to pin
a dirty worktree, reads the pinned blob in CHECK, and reports drift as an
advisory. 9 selftest cells; the non-decay claim is measured on real commits.