Files
troupe-standup/wizard-work
volt f22824ab48 ledger: pin the 2026-10-27 check-in census to a revision and grade the TSV against it (Q88, 1/2)
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.
2026-11-01 19:22:49 +00:00
..