60 lines
2.5 KiB
Bash
60 lines
2.5 KiB
Bash
#!/usr/bin/env bash
|
|
# CHECK-q155 -- the 2026-11-02 workqueue census graded the queue it described,
|
|
# and now does so from bytes it can name.
|
|
#
|
|
# THE DEFECT THIS GRADES (measured at 0ec1c64, before this tick's edits)
|
|
# `wizard-work/ledger/2026-11-02-workqueue-census/CHECK` was a Python program
|
|
# with a `python3` shebang, so `bash CHECK` -- the invocation every caller in
|
|
# this tree uses -- read rc 2 on shell syntax errors before grading a cell.
|
|
# Behind that, it re-derived its rows from the LIVE WORK-QUEUE.md: the queue
|
|
# is append-only, so the next item to land reddened a census whose 88 rows
|
|
# were never wrong. Measured in a scratch copy: baseline rc 0; one appended
|
|
# `## Q199 -- ...` heading -> rc 1, three legs failing (row count, headings,
|
|
# manifest.rows). And the manifest carried no revision at all, so nothing said
|
|
# which queue state the rows described; the README's stated source sha256
|
|
# (`cea6cd3c...`) did not match the file it named (`ceb6cd3c...`).
|
|
#
|
|
# WHAT THIS GRADES
|
|
# 1. gate bash CHECK -> rc 0 on the committed artifact, and it names its pin
|
|
# 2. probes probe_census.sh -> 13/13 cells read the code they must: mutated
|
|
# Title/Q cells rc 1, corrupted digest rc 1, pin revision that does
|
|
# not hold the blob rc 1, absent blob/TSV/grader rc 2, a queue
|
|
# append absorbed as ADVISORY at rc 0, a dirty extractor refused at
|
|
# rc 1, and --allow-dirty's unpinned manifest left ungradable at rc 2
|
|
# 3. lint the documented invocation is a SOUND CHECK line (tools/check_lint)
|
|
#
|
|
# rc 0 every leg holds rc 1 a leg failed rc 2 could not grade
|
|
set -u
|
|
cd "$(dirname "${BASH_SOURCE[0]}")" || exit 2
|
|
ROOT="$(pwd)"
|
|
DIR="wizard-work/ledger/2026-11-02-workqueue-census"
|
|
GATE="$DIR/CHECK"
|
|
PROBES="$DIR/probe_census.sh"
|
|
for f in "$GATE" "$PROBES" "$DIR/grade_census.py"; do
|
|
[ -f "$f" ] || { echo "CANNOT GRADE: $f is missing"; exit 2; }
|
|
done
|
|
|
|
legs=0
|
|
faults=0
|
|
leg() { # leg <name> <rc> <detail>
|
|
legs=$((legs + 1))
|
|
if [ "$2" -eq 0 ]; then printf 'PASS %-8s %s\n' "$1" "$3"
|
|
else printf 'FAIL %-8s %s\n' "$1" "$3"; faults=$((faults + 1)); fi
|
|
}
|
|
|
|
out="$(bash "$GATE" 2>&1)"; rc=$?
|
|
leg gate "$rc" "$(printf '%s' "$out" | tail -n 1)"
|
|
|
|
out="$(bash "$PROBES" 2>&1)"; rc=$?
|
|
leg probes "$rc" "$(printf '%s' "$out" | tail -n 1)"
|
|
|
|
out="$(python3 tools/check_lint.py --check "bash $GATE" 2>&1)"; rc=$?
|
|
leg lint "$rc" "$(printf '%s' "$out" | tail -n 1)"
|
|
|
|
if [ "$faults" -eq 0 ]; then
|
|
echo "q155: $legs leg(s), all passed"
|
|
exit 0
|
|
fi
|
|
echo "q155: $legs leg(s), $faults fault(s)"
|
|
exit 1
|