Files
troupe-standup/CHECK-q69-census
T
volt 1c3c855d10 volt: Q69 addendum -- the census stops grading its own matcher table
CHECK-q69-census red the census's own six prefix literals as six host-path
values, so the instrument inflated the population it reports (volt 10 code
files / 22 constants instead of 9 / 16) and listed itself as a CONST row.
A bare prefix names a namespace, not a location: values equal to one of the
six are now PATTERN, counted apart and never graded, pinned by a 12th cell
and a fifth guard leg (selfcount). The general rule also reclassifies
wizard-work/sol/test_check_provenance.py:160, whose only host string is an
assertion needle.

Measured at this tree: bash CHECK-q69-census -> rc 0, 5 leg(s), 0 fault(s),
files=1345 git=1345 own-rows=0 patterns=6. Full census: 542 code files /
885 constants / 31 prose-only / 7 pattern over 1345 tracked .py; text scan
586. The record in WORK-QUEUE.md carries the post-fix readings.

CHECK: bash CHECK-q69-census
2026-11-04 06:00:26 +00:00

120 lines
5.2 KiB
Bash

#!/usr/bin/env bash
# CHECK-q69-census -- a host-absolute path in this tree is graded by the
# POSITION of the constant that carries it, and the one file in this lane that
# graded the author's checkout now grades the checkout it lives in.
#
# Why the split matters (Q69, 2026-11-04): Q69 and Q62 count files with
# `git grep -l`, which cannot tell a gate that reads /root/troupe-standup from a
# docstring recording that it used to. Measured at this tree: a text scan reads
# 586 of 1345 tracked `wizard-work/**/*.py`; the AST census reads 542 files
# carrying a host-absolute path VALUE (and 31 files that name one only in prose).
# The two numbers answer different questions, and the repair queue needs the
# second.
#
# Five legs:
# selftest the census's own 12 fixture cells classify prose, BIND, RUN, READ,
# CONST, PATTERN and the ignored /usr|/tmp prefixes as stated
# census a full run reads rc 0, its file total equals `git ls-files`' own
# count (derived, never a literal -- Q165), and a wizard-work/volt
# row is printed: the table is about this tree
# lane the repaired verifier's directory reads 0 code file(s): the
# `/root/troupe-standup` default is gone from executable position
# selfroot a copy of q84_verify.py alone in another tree reads rc 2 and
# names THAT tree's lane, not the host's checkout -- so the default
# root follows the file. The old default reads rc 0 here.
# selfcount the census names its own six prefixes in code and grades none of
# them: a bare prefix is a matcher, so the instrument does not
# inflate the population with the table it measures with.
#
# Exit codes: 0 all legs passed, 1 a fault, 2 could not grade.
set -u
set -o pipefail
cd "$(dirname "${BASH_SOURCE[0]}")" || exit 2
ROOT="$(pwd)"
CENSUS="$ROOT/wizard-work/volt/q69_hostroot_census.py"
VERIFY="$ROOT/wizard-work/volt/q84-closure/q84_verify.py"
PY="${PYTHON:-python3}"
for f in "$CENSUS" "$VERIFY"; do
if [ ! -f "$f" ]; then
printf 'CANNOT GRADE: missing %s\n' "$f"
exit 2
fi
done
if ! git -C "$ROOT" rev-parse --show-toplevel >/dev/null 2>&1; then
printf 'CANNOT GRADE: %s is not a git work tree\n' "$ROOT"
exit 2
fi
WORK="$(mktemp -d "${TMPDIR:-/tmp}/check-q69.XXXXXX")" || exit 2
trap 'rm -rf "$WORK"' EXIT
passed=0
failed=0
row() { printf ' %-8s %s\n' "$1" "$2"; }
verdict() { if [ "$2" -eq 0 ]; then passed=$((passed + 1)); else failed=$((failed + 1)); fi; row "$1" "$3"; }
# --- leg 1: the census's fixture corpus ------------------------------------
out="$("$PY" "$CENSUS" --selftest 2>&1)"; src=$?
last="$(printf '%s' "$out" | tail -1)"
verdict selftest \
"$([ "$src" -eq 0 ] && printf '%s' "$last" | grep -q '12 cell(s), 0 failed' && echo 0 || echo 1)" \
"rc=$src ${last:-<no output>}"
# --- leg 2: a full reading, counted against the tree's own inventory -------
want="$(git -C "$ROOT" ls-files -z -- wizard-work | tr '\0' '\n' | grep -c '\.py$')"
out="$("$PY" "$CENSUS" --json "$WORK/rows.json" 2>&1)"; crc=$?
n_files="$("$PY" - "$WORK/rows.json" <<'PYEOF' 2>/dev/null
import json, sys
print(json.load(open(sys.argv[1]))["files"])
PYEOF
)"
volt="$("$PY" - "$WORK/rows.json" <<'PYEOF' 2>/dev/null
import json, sys
d = json.load(open(sys.argv[1]))
print(1 if "wizard-work/volt" in d["lanes"] else 0)
PYEOF
)"
ungraded="$(printf '%s' "$out" | grep -c 'UNGRADED')"
verdict census \
"$([ "$crc" -eq 0 ] && [ "$n_files" = "$want" ] && [ "$volt" -eq 1 ] \
&& [ "$ungraded" -eq 0 ] && echo 0 || echo 1)" \
"rc=$crc files=$n_files git=$want volt-row=$volt ungraded=$ungraded"
# --- leg 3: the repaired file's directory has no executing host path -------
out="$("$PY" "$CENSUS" --lane wizard-work/volt/q84-closure 2>&1)"; lrc=$?
last="$(printf '%s' "$out" | grep '^ TOTAL' | tr -s ' ')"
codefiles="$(printf '%s' "$last" | awk '{print $3}')"
verdict lane \
"$([ "$lrc" -eq 0 ] && [ "${codefiles:-x}" = "0" ] && echo 0 || echo 1)" \
"rc=$lrc ${last:-<no TOTAL row>}"
# --- leg 4: the default root follows the file, not the host ----------------
mkdir -p "$WORK/elsewhere/wizard-work/volt/q84-closure" || exit 2
cp "$VERIFY" "$WORK/elsewhere/wizard-work/volt/q84-closure/" || exit 2
out="$("$PY" "$WORK/elsewhere/wizard-work/volt/q84-closure/q84_verify.py" 2>&1)"; vrc=$?
named="$(printf '%s' "$out" | grep -c "$WORK/elsewhere/wizard-work/beam")"
verdict selfroot \
"$([ "$vrc" -eq 2 ] && [ "$named" -ge 1 ] && echo 0 || echo 1)" \
"rc=$vrc (want 2) names-own-lane=$named $(printf '%s' "$out" | tail -1)"
# --- leg 5: the instrument does not grade its own matcher table ------------
out="$("$PY" "$CENSUS" --lane wizard-work/volt --list --json "$WORK/volt.json" 2>&1)"; mrc=$?
own="$(printf '%s' "$out" | grep -c 'q69_hostroot_census.py')"
pats="$("$PY" - "$WORK/volt.json" <<'PYEOF' 2>/dev/null
import json, sys
print(json.load(open(sys.argv[1]))["pattern_constants"])
PYEOF
)"
verdict selfcount \
"$([ "$mrc" -eq 0 ] && [ "$own" -eq 0 ] && [ "${pats:-0}" -ge 6 ] && echo 0 || echo 1)" \
"rc=$mrc own-rows=$own patterns=${pats:-x} (>=6)"
if [ "$failed" -eq 0 ]; then
echo "q69-census: $passed leg(s), 0 fault(s), rc 0"
exit 0
fi
echo "q69-census: $passed passed, $failed fault(s), rc 1"
exit 1