Files
ledger 9a9061f71c volt: Q157 — the untracked-file census grades its pinned universe, not the live tree
CHECK-2026-11-02-untracked-classify read rc 1 within minutes of every tick:
its verdict was 'manifest == the live untracked set', in a repo whose
untracked set moves with every tick. Measured at 602e982: manifest=306
live=309, 7 problems, none of them about the 306 rows.

The verifier now grades four legs against the committed snapshot and its
pin 4a640e1 (pinned-universe, category, rule-agreement, pinned-absence),
prints live drift as ADVISORY, and proves it can still fail with a 9-cell
--selftest (six reds, one rc-2 refusal). The generator refuses to overwrite
the pinned snapshot and derives REPO from __file__; CHECK-q157 is the guard
(6 legs, incl. drift-tolerant vs tampered-manifest). Both touched entry
points are signed into the sweep baseline.

CHECK: cd /root/troupe-standup && bash CHECK-q157
2026-11-02 16:57:47 +00:00

90 lines
3.2 KiB
Bash

#!/usr/bin/env bash
# CHECK-q157 -- the 2026-11-02 untracked-file triage artifact grades its own
# pinned universe, and can still go red.
#
# Regression guard for the Q157 repair. Six legs; exit 0 iff all pass, 1 if any
# leg faults, 2 if the leg could not run at all.
#
# Measured at the commit that lands Q157. The point of legs 3 and 4 is the pair:
# the SAME checker must read 0 when the live untracked set moves (the defect
# this item repaired) and 1 when the pinned artifact itself is wrong (so the
# repair did not simply turn the verdict off).
set -u
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" || exit 2
cd "$REPO_ROOT" || exit 2
ENTRY="CHECK-2026-11-02-untracked-classify"
VERIFY="wizard-work/sol/verify_untracked_classify_2026_11_02.py"
MAN="wizard-work/sol/untracked-classify-2026-11-02.tsv"
SCRATCH="$(mktemp -d "${TMPDIR:-/tmp}/check-q157.XXXXXX")" || exit 2
PROBE="zz-q157-drift-probe.txt"
LEGS=0
FAULTS=0
cleanup() { rm -f "$PROBE"; rm -rf "$SCRATCH"; }
trap cleanup EXIT
leg() { # leg <name> <expected-rc> <actual-rc> [note]
LEGS=$((LEGS + 1))
if [ "$2" = "$3" ]; then
printf ' %-16s PASS rc=%s %s\n' "$1" "$3" "${4:-}"
else
printf ' %-16s FAIL expected rc=%s got rc=%s %s\n' "$1" "$2" "$3" "${4:-}"
FAULTS=$((FAULTS + 1))
fi
}
for f in "$ENTRY" "$VERIFY" "$MAN"; do
[ -e "$f" ] || { echo "CANNOT GRADE: missing $f"; exit 2; }
done
# 1. the selftest: 9 cells, 0 failed -- the proof the verdict is falsifiable.
out="$(python3 "$VERIFY" --selftest 2>&1)"; rc=$?
echo "$out" | tail -1
leg selftest 0 "$rc" "$(echo "$out" | grep -c '^FAIL' ) failed cell(s)"
# 2. the live grade at the pinned universe.
out="$(bash "$ENTRY" 2>&1)"; rc=$?
echo "$out" | grep -E '^(CHECK OK|VERDICT)' | head -1
leg live-grade 0 "$rc"
# 3. drift tolerance: a new untracked file must NOT redden the census, and the
# drift must be reported rather than silently swallowed.
echo "q157 drift probe" > "$PROBE"
out="$(bash "$ENTRY" 2>&1)"; rc=$?
echo "$PROBE" | grep -q . && echo "$out" | grep -q 'ADVISORY' && adv=1 || adv=0
rm -f "$PROBE"
leg drift-tolerant 0 "$rc" "advisory_printed=$adv"
[ "$adv" = 1 ] || { echo " drift-tolerant FAIL no ADVISORY line"; FAULTS=$((FAULTS + 1)); }
# 4. falsifiable from outside: a corrupted category in a manifest copy is rc 1.
cp "$MAN" "$SCRATCH/bad.tsv"
python3 - "$SCRATCH/bad.tsv" <<'PY'
import sys
p = sys.argv[1]
lines = open(p).read().splitlines()
head, rows = lines[0], lines[1:]
path, cat = rows[5].split("\t")
rows[5] = "%s\t%s" % (path, "data" if cat != "data" else "other")
open(p, "w").write("\n".join([head] + rows) + "\n")
PY
python3 "$VERIFY" --manifest "$SCRATCH/bad.tsv" --quiet-drift >"$SCRATCH/bad.out" 2>&1; rc=$?
head -1 "$SCRATCH/bad.out"
leg tampered-manifest 1 "$rc"
# 5. a missing artifact is a refusal (rc 2), not a silent pass.
python3 "$VERIFY" --manifest "$SCRATCH/absent.tsv" --quiet-drift >"$SCRATCH/absent.out" 2>&1; rc=$?
leg missing-artifact 2 "$rc" "$(head -1 "$SCRATCH/absent.out")"
# 6. the verifier names no absolute host path (it derived REPO from __file__).
n="$(grep -c '/root/' "$VERIFY")"
leg no-host-path 0 "$n" "hits=$n"
if [ "$FAULTS" -eq 0 ]; then
echo "q157: $LEGS leg(s), all passed"
exit 0
fi
echo "q157: $LEGS leg(s), $FAULTS fault(s)"
exit 1