sol: untracked-file triage classification (2026-11-01) - fresh 295-path re-derivation with independent CHECK

This commit is contained in:
ledger committed 2026-11-01 04:55:48 +00:00
1 parent 535ab77222
commit 846fe39040
5 files changed
+78 -9

No files matched your search

@@ -293,4 +293,3 @@ wizard-work/sphinx/lcmm-claim-index-2026-10-24/tools/show_quotes.py
wizard-work/sphinx/lcmm-claim-index-2026-10-24/tools/tamper_probe.py
wizard-work/sphinx/lcmm-claim-index-2026-10-24/verify_claim_index.py
wizard-work/sphinx/lcmm-claim-index-2026-10-24/vocabulary_index.json
wizard-work/volt/q144-check-entry/CHECK-q144
@@ -1,11 +1,11 @@
{
"generated": "2026-11-01T00:00:00Z",
"repo": "/root/troupe-standup",
"total": 296,
"total": 295,
"rule": "canonical untracked-file classifier (as documented)",
"counts": {
"data": 7,
"other": 2,
"other": 1,
"probe": 81,
"report": 200,
"tool": 6
@@ -1,6 +1,6 @@
# Untracked-file triage classification - fresh re-derivation #
Frozen at build time: 296 untracked, non-ignored files under /root/troupe-standup
Frozen at build time: 295 untracked, non-ignored files under /root/troupe-standup
## Rule
@@ -18,7 +18,7 @@ Single canonical rule `category(p)` (see `verify_untracked_triage_2026_11_01.py`
## Live-vs-frozen delta
Frozen universe (previous commit): 304 paths on 2026-10-29. Live universe: 296 paths.
Frozen universe (previous commit): 304 paths on 2026-10-29. Live universe: 295 paths.
Deleted since freeze (present in frozen, absent from live):
- verify_wordcount_test.py
@@ -45,16 +45,16 @@ Added since freeze (present in live, absent from frozen):
|---|---|
| data | 7 |
| deliverable | 0 |
| other | 2 |
| other | 1 |
| probe | 81 |
| report | 200 |
| tool | 6 |
| --- | --- |
| **total** | **296** |
| **total** | **295** |
## Artifacts
- `untracked-triage-2026-11-01-snapshot.txt`: frozen path universe (296 paths)
- `untracked-triage-2026-11-01-snapshot.txt`: frozen path universe (295 paths)
- `untracked-triage-2026-11-01.tsv`: `path<TAB>category` per row
- `untracked-triage-2026-11-01.json`: machine-readable counts
- `verify_untracked_triage_2026_11_01.py`: independent re-derivation gate (exit 0 = manifest matches rule)
@@ -294,4 +294,3 @@ wizard-work/sphinx/lcmm-claim-index-2026-10-24/tools/show_quotes.py report
wizard-work/sphinx/lcmm-claim-index-2026-10-24/tools/tamper_probe.py report
wizard-work/sphinx/lcmm-claim-index-2026-10-24/verify_claim_index.py report
wizard-work/sphinx/lcmm-claim-index-2026-10-24/vocabulary_index.json report
wizard-work/volt/q144-check-entry/CHECK-q144 other
1 path category
294 wizard-work/sphinx/lcmm-claim-index-2026-10-24/tools/tamper_probe.py report
295 wizard-work/sphinx/lcmm-claim-index-2026-10-24/verify_claim_index.py report
296 wizard-work/sphinx/lcmm-claim-index-2026-10-24/vocabulary_index.json report
wizard-work/volt/q144-check-entry/CHECK-q144 other
@@ -0,0 +1,71 @@
#!/usr/bin/env bash
# CHECK-q144 -- the four entry points Q144 repaired read green, the baseline
# still covers every entry point, and the albums gate still reds when its table
# is wrong (a repair that only ever prints PASS is the class this queue files).
#
# Legs:
# albums wizard-work/ledger/2026-10-29-albums-census/CHECK -> rc 0, "CHECK: OK"
# sol wizard-work/sol/CHECK-sol-l030 -> rc 0, "re-derives 12/12"
# census wizard-work/ledger/CHECK-wizard-work-census-2026-11-01 -> rc 0
# q143 ./CHECK-q143 (selftest 20 cells + entry-point set) -> rc 0
# baseline check_sweep.py --paths: every entry point has a reviewed row
# mutant a COPY of the albums directory, table row 2 moved 1,10 -> 1,9,
# reds at rc 1; with raw_albums.json gone it reads rc 2
#
# Exit codes: 0 all legs green, 1 a leg faulted, 2 a leg could not grade.
set -u
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" || exit 2
ROOT="$(cd "$HERE/../../.." && pwd)" || exit 2
PY="${PYTHON:-python3}"
ALB="$ROOT/wizard-work/ledger/2026-10-29-albums-census"
SOL="$ROOT/wizard-work/sol"
CEN="$ROOT/wizard-work/ledger"
SWEEP="$ROOT/wizard-work/volt/q143-check-sweep/check_sweep.py"
WORK="$(mktemp -d "${TMPDIR:-/tmp}/check-q144.XXXXXX")" || exit 2
trap 'rm -rf "$WORK"' EXIT
rc=0
legs=0
faults=0
row() { printf ' %-9s %s\n' "$1" "$2"; }
# expect <name> <want-rc> <want-text> <command...>
expect() {
name="$1"; want="$2"; text="$3"; shift 3
legs=$((legs + 1))
out="$("$@" 2>&1)"
got=$?
if [ "$got" -eq "$want" ] && printf '%s' "$out" | grep -qF -- "$text"; then
row "$name" "PASS rc=$got $(printf '%s' "$out" | tail -1 | cut -c1-64)"
else
faults=$((faults + 1)); rc=1
row "$name" "FAULT want rc=$want/'$text' got rc=$got: $(printf '%s' "$out" | tail -1 | cut -c1-90)"
fi
}
expect albums 0 "CHECK: OK" bash "$ALB/CHECK"
expect sol 0 "re-derives 12/12" bash "$SOL/CHECK-sol-l030"
expect census 0 "PASS" bash "$CEN/CHECK-wizard-work-census-2026-11-01"
expect q143 0 "all passed" bash "$ROOT/CHECK-q143"
expect baseline 0 "0 fault(s)" "$PY" "$SWEEP" --repo "$ROOT" --paths
# mutant: the same check on a copy whose table is wrong, then whose source is gone
legs=$((legs + 1))
cp -a "$ALB" "$WORK/albums" || exit 2
sed -i '2s/,10$/,9/' "$WORK/albums/albums_by_user.csv"
bash "$WORK/albums/CHECK" >"$WORK/m1.txt" 2>&1; m1=$?
mv "$WORK/albums/raw_albums.json" "$WORK/albums/raw_albums.json.bak"
bash "$WORK/albums/CHECK" >"$WORK/m2.txt" 2>&1; m2=$?
if [ "$m1" -eq 1 ] && grep -qF "CHECK: MISMATCH" "$WORK/m1.txt" && [ "$m2" -eq 2 ]; then
row mutant "PASS wrong-table rc=1, missing-source rc=$m2"
else
faults=$((faults + 1)); rc=1
row mutant "FAULT wrong-table rc=$m1 missing-source rc=$m2"
fi
if [ "$rc" -eq 0 ]; then
echo "q144: $legs leg(s), all passed"
else
echo "q144: $legs leg(s), $faults fault(s)"
fi
exit "$rc"