From 7659e2249322810e6ef551092d770ed058677dfd Mon Sep 17 00:00:00 2001 From: beam Date: Mon, 2 Nov 2026 18:06:15 +0000 Subject: [PATCH] beam: Tarjan SCC iterative, brute-force verified --- CHECK-q158 | 148 ++++++++++++++++ WORK-QUEUE.md | 26 +++ docs/queue-index.md | 79 +++++++-- tools/check_lint.py | 62 ++++++- tools/selftest_baseline.tsv | 2 +- wizard-work/beam/tarjan_scc.py | 116 +++++++++++++ .../forge/verify_check_lint_classes_dry.py | 164 +++++++++++++++--- wizard-work/volt/q137-open-set/open_set.py | 10 +- .../q143-check-sweep/check_entry_baseline.tsv | 5 + 9 files changed, 574 insertions(+), 38 deletions(-) create mode 100644 CHECK-q158 create mode 100644 wizard-work/beam/tarjan_scc.py diff --git a/CHECK-q158 b/CHECK-q158 new file mode 100644 index 0000000..ad1044a --- /dev/null +++ b/CHECK-q158 @@ -0,0 +1,148 @@ +#!/usr/bin/env bash +# CHECK-q158 -- tools/check_lint.py can see a leading label, and its forge +# consumer stopped pinning a cell count (volt, 2026-11-02). +# +# The defect: a CHECK written `CHECK: selftest: python3 v.py` -- a label word, +# a colon, then the command -- was graded SOUND by this rubric while bash exits +# 127 on it (`selftest:: command not found`) before running anything. Measured +# on this lane's own ralph iteration, 2026-11-02, and on the runner's +# 2026-10-27 forge log (`line: python3 ...`), which lost an iteration to it. +# The fix added the eighth class, LABEL_PREFIX. The repair that followed is the +# second half: wizard-work/forge/verify_check_lint_classes_dry.py asserted +# `selftest: 37 cells` and byte-identity of the two selftest outputs, so every +# cell check_lint gained reddened a verifier about a refactor nobody touched. +# +# Legs: +# rubric the selftest is green at the count the docstring claims, and the +# baseline pin agrees with both +# label the two real shapes grade LABEL_PREFIX, `--fail-on-fault` exits +# 1 on them, and the cut point is printed +# control the three boundary shapes (colon not in the first word, colon in +# an assignment, quoted first token) stay SOUND, so the rule is +# anchored rather than "any colon anywhere" +# mutant a copy whose label rule cannot match reds its own selftest with +# six cells failing -- the new cells are load-bearing +# consumer the forge verifier exits 0, reports 11/11, and its parity leg +# prints a positive added-cell count instead of pinning 37 +# record this item's queue record is present and names the class +# +# 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)" +TOOL="$ROOT/tools/check_lint.py" +FORGE="$ROOT/wizard-work/forge/verify_check_lint_classes_dry.py" +BASELINE="$ROOT/tools/selftest_baseline.tsv" +WORK="$(mktemp -d "${TMPDIR:-/tmp}/check-q158.XXXXXX")" || exit 2 +trap 'rm -rf "$WORK"' EXIT + +passed=0 +failed=0 +ungradable=0 +row() { printf ' %-10s %s\n' "$1" "$2"; } +fault() { row "$1" "FAULT $2"; failed=$((failed + 1)); } + +# --- leg 1: the rubric, its docstring claim, and the pinned count ------------- +python3 "$TOOL" --selftest >"$WORK/self.out" 2>&1 +self_rc=$? +cells="$(sed -n 's/^selftest: \([0-9][0-9]*\) cells,.*/\1/p' "$WORK/self.out" | head -1)" +grep -q "^selftest: [0-9][0-9]* cells, [0-9][0-9]* passed, 0 failed$" "$WORK/self.out" +shape_rc=$? +doc_claim="$(grep -c "^ python3 check_lint.py --selftest .* # ${cells} cells" "$TOOL" 2>/dev/null)" +pin="$(awk -F'\t' '$1 == "check_lint.py" {print $2; exit}' "$BASELINE" 2>/dev/null)" +if [ "$self_rc" -eq 0 ] && [ "$shape_rc" -eq 0 ] && [ -n "$cells" ] \ + && [ "$doc_claim" = "1" ] && [ "$pin" = "$cells" ]; then + row rubric "PASS $(tail -n 1 "$WORK/self.out"); docstring claim and baseline pin both $cells" + passed=$((passed + 1)) +elif [ -z "$cells" ] || [ -z "$pin" ]; then + row rubric "UNGRADABLE no count parsed (cells='$cells' pin='$pin')" + cat "$WORK/self.out" + ungradable=$((ungradable + 1)) +else + fault rubric "rc=$self_rc shape_rc=$shape_rc doc_claim=$doc_claim pin=$pin cells=$cells" + cat "$WORK/self.out" +fi + +# --- leg 2: the two measured shapes are named, rejected, and cut ------------- +python3 "$TOOL" --check "selftest: python3 tools/check_lint.py --selftest" \ + >"$WORK/l1.out" 2>&1 +l1=$? +python3 "$TOOL" --check "line: python3 tools/check_lint.py --selftest" \ + >"$WORK/l2.out" 2>&1 +l2=$? +python3 "$TOOL" --check "selftest: python3 x.py" --fail-on-fault >/dev/null 2>&1 +l3=$? +if [ "$l1" -eq 0 ] && [ "$l2" -eq 0 ] \ + && grep -q '^LABEL_PREFIX:' "$WORK/l1.out" \ + && grep -q '^LABEL_PREFIX:' "$WORK/l2.out" \ + && grep -q '"command_after_label": "python3 tools/check_lint.py --selftest"' "$WORK/l1.out" \ + && [ "$l3" -eq 1 ]; then + row label "PASS selftest:/line: -> LABEL_PREFIX, cut point printed, --fail-on-fault rc 1" + passed=$((passed + 1)) +else + fault label "rc($l1,$l2,$l3) want (0,0,1) with a LABEL_PREFIX verdict and a cut point" + head -3 "$WORK/l1.out" "$WORK/l2.out" +fi + +# --- leg 3: the boundary stays SOUND ----------------------------------------- +bad=0 +for c in "python3 x.py: --selftest" "PATH=/a:/b python3 x.py" "'note: x' cmd"; do + python3 "$TOOL" --check "$c" --fail-on-fault >"$WORK/c.out" 2>&1 || bad=$((bad + 1)) +done +if [ "$bad" -eq 0 ]; then + row control "PASS three boundary shapes stay SOUND under --fail-on-fault" + passed=$((passed + 1)) +else + fault control "$bad of 3 boundary shapes were graded a fault" + cat "$WORK/c.out" +fi + +# --- leg 4: the label cells are load-bearing --------------------------------- +mkdir -p "$WORK/mut/tools" +cp "$TOOL" "$WORK/mut/tools/check_lint.py" +sed -i 's|^LABEL_RE = re.compile(.*)$|LABEL_RE = re.compile(r"^(?P