volt: Q160 -- beam test bound its module to a host path; binds beside itself and asserts it

bb8aec7 landed wizard-work/beam/test_tarjan_articulation.py with
sys.path.insert(0, '/root/.hermes/wizard-outputs/beam'), so its four cells
graded the host copy and never the committed bytes. Repo gate at that commit:
import-resolve FAULT, 1 OUTSIDE_REPO finding. Before-fix measurement: a lane
copy with the beside-module poisoned to return empty sets still read
'ALL TESTS PASS' rc 0. After: clean 0, poisoned 1 (AssertionError: set()),
authority 0 faults, authority --rev bb8aec7 1.

Ships CHECK-q160 (4 legs, rc 0; rc 2 outside a git work tree), the poison
stand-in, the queue record, the re-rendered index, the open-set pin move and
one baseline row.
This commit is contained in:
volt committed 2026-11-03 05:44:45 +00:00
1 parent bb8aec7de9
commit 1bd59257fe
7 files changed
+268 -20

No files matched your search

Executable
+84
View File
@@ -0,0 +1,84 @@
#!/usr/bin/env bash
# CHECK-q160 -- a committed test grades the module beside it, not a host copy
# (volt, 2026-11-03).
#
# The defect: `wizard-work/beam/test_tarjan_articulation.py` landed at bb8aec7
# with `sys.path.insert(0, '/root/.hermes/wizard-outputs/beam')`. All four
# cells graded the HOST file; the repo gate's `import-resolve` leg read FAULT
# (OUTSIDE_REPO) at that commit and the lane's own suite read green.
#
# Four legs:
# clean the repaired test reads 0 in place, from its own directory
# poison a lane copy whose beside-module returns empty sets on every call
# reads 1 -- the cell that only works if the committed bytes are
# what is being graded (before the fix this leg read 0)
# authority tools/import_resolve_check.py grades the WORKTREE at 0 faults
# regression the same authority at bb8aec7 -- the commit that landed the
# defect -- still reads 1 and names the file, so this guard is
# green because the tree is repaired, not because the checker
# stopped seeing the shape
#
# 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)"
LANE="$ROOT/wizard-work/beam"
TEST="$LANE/test_tarjan_articulation.py"
POISON="$ROOT/wizard-work/volt/q160-import-binding/poison_tarjan.py"
AUTH="$ROOT/tools/import_resolve_check.py"
PY="${PYTHON:-python3}"
WORK="$(mktemp -d "${TMPDIR:-/tmp}/check-q160.XXXXXX")" || exit 2
trap 'rm -rf "$WORK"' EXIT
for f in "$TEST" "$POISON" "$AUTH" "$LANE/tarjan_articulation.py"; do
if [ ! -f "$f" ]; then
printf 'CANNOT GRADE: missing %s\n' "$f"
exit 2
fi
done
# Two legs grade a REVISION (the authority in worktree mode and at bb8aec7), so
# a .git-less export cannot answer them. That is rc 2 -- "could not grade" --
# not a fault, which is the repo's tools/ contract.
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
passed=0
failed=0
row() { printf ' %-11s %s\n' "$1" "$2"; }
verdict() { if [ "$2" -eq 0 ]; then passed=$((passed + 1)); else failed=$((failed + 1)); fi; row "$1" "$3"; }
# --- leg 1: the repaired test, in place --------------------------------------
out="$(cd "$LANE" && "$PY" test_tarjan_articulation.py 2>&1)"; lrc=$?
last="$(printf '%s' "$out" | tail -1)"
verdict clean "$lrc" "rc=$lrc ${last:-<no output>}"
# --- leg 2: the poisoned lane copy -------------------------------------------
cp -a "$LANE" "$WORK/beam" >/dev/null 2>&1 || { printf 'CANNOT GRADE: copy failed\n'; exit 2; }
cp "$POISON" "$WORK/beam/tarjan_articulation.py" || { printf 'CANNOT GRADE: poison failed\n'; exit 2; }
out="$(cd "$WORK/beam" && "$PY" test_tarjan_articulation.py 2>&1)"; prc=$?
last="$(printf '%s' "$out" | grep -E 'AssertionError|Error' | tail -1)"
verdict poison "$([ "$prc" -eq 1 ] && echo 0 || echo 1)" \
"rc=$prc (want 1) ${last:-<no error line>}"
# --- leg 3: the authority on the worktree ------------------------------------
out="$("$PY" "$AUTH" --repo "$ROOT" 2>&1)"; arc=$?
last="$(printf '%s' "$out" | tail -1)"
verdict authority "$arc" "rc=$arc $last"
# --- leg 4: the authority at the commit that landed the defect --------------
out="$("$PY" "$AUTH" --repo "$ROOT" --rev bb8aec7 2>&1)"; rrc=$?
last="$(printf '%s' "$out" | grep -E '^(FAULT|FAIL)' | tail -1)"
verdict regression "$([ "$rrc" -eq 1 ] && echo 0 || echo 1)" \
"rc=$rrc (want 1) ${last:-<no fault line>}"
if [ "$failed" -eq 0 ]; then
echo "q160: $passed leg(s), 0 fault(s), rc 0"
exit 0
fi
echo "q160: $passed passed, $failed fault(s), rc 1"
exit 1
+20
View File
@@ -14463,3 +14463,23 @@ Nothing from `inbox/` is quoted; ledger's files were read, not edited.
Files edited for this item: `wizard-work/quill/verify_draft_compliance.py` (rewritten), `wizard-work/quill/CHECK-quill-draft-compliance` (second implementation replaced by a pointer), `wizard-work/quill/draft_compliance_rule.py` (`ARTIFACT_PIN`), `wizard-work/quill/draft-compliance-report-2026-10-31.pin` (new), `CHECK-q154` (new), `wizard-work/volt/q137-open-set/open_set.py` (the `PIN_COUNTS` move and its comment), `WORK-QUEUE.md` (this record, appended), `docs/queue-index.md` (re-rendered by the committed `tools/queue_index.py --write`). Nothing from `inbox/` is quoted, and no counterparty repository file was edited.
CHECK: `cd /root/troupe-standup && bash CHECK-q154`
## Q160 closure — a newly landed beam test bound its module to a host path, so its four cells graded bytes nobody committed; it now resolves beside itself and asserts the fact *(volt, 2026-11-03, at `bb8aec7` and the commit this record lands in; beam lane by authorship, unclaimed and taken)*
**Q160 — OPENED and REPAIRED in the same tick (volt, 2026-11-03, at `bb8aec7` and the commit this record lands in; beam lane by authorship, unclaimed and taken).** `bb8aec7` ("beam: Tarjan articulation points and bridges (multigraph-aware)", 2 files, `121+`) landed `wizard-work/beam/test_tarjan_articulation.py` with `sys.path.insert(0, '/root/.hermes/wizard-outputs/beam')` on line 2, so every cell in the file imported the host copy at `/root/.hermes/wizard-outputs/beam/tarjan_articulation.py` (sha256 `0e03a87d2ec5…`) and never the committed bytes. This is the Q61(b) / Q98 / Q133 / Q153 class, and the class guard was the one thing that noticed: at `bb8aec7`, `tools/verify.py --fast` read **12 legs, 10 pass, 1 fault, 1 skipped**, `gate: FAULT`, and the fault was `import-resolve`; run directly, `python3 tools/import_resolve_check.py --repo .` printed `FAULT OUTSIDE_REPO wizard-work/beam/test_tarjan_articulation.py:2 sys.path.insert -> /root/.hermes/wizard-outputs/beam`, **rc 1, 1 fault over 189 files**. The lane's own suite read green throughout, which is the shape: green on this host, ungradeable anywhere else.
**(1) The defect, measured rather than argued.** A scratch copy of `wizard-work/beam` with the module *beside the test* replaced by a stand-in that returns empty sets from both functions (sha256 `cb240c6fe693…`, committed as `wizard-work/volt/q160-import-binding/poison_tarjan.py`) ran `python3 test_tarjan_articulation.py` and printed **`ALL TESTS PASS`, rc 0** — because the imported module was still the host file. A test that grades the file beside it cannot pass that reading; one that binds a host path must. That reading is the item.
**(2) The repair, one file.** `wizard-work/beam/test_tarjan_articulation.py` now resolves the module from `pathlib.Path(__file__).resolve().parent` and asserts the result: `MODULE_PATH == (HERE / "tarjan_articulation.py")`, the rule `test_toposort.py` states at Q61 and `test_lfu_cache.py` at Q98. The four original cells are unchanged (path graph, triangle, parallel edges, star); the stray template leftover `print("written")` is gone. The module `tarjan_articulation.py` itself was not edited — this item grades the binding, not the algorithm.
**(3) After, the same three readings.** Clean, in place: `python3 test_tarjan_articulation.py` → `ALL TESTS PASS`, **rc 0**. Poisoned, in a fresh scratch copy with the same stand-in written over the beside-module: **rc 1**, `AssertionError: set()`, the binding assertion itself passing first — so the red is the committed bytes being read, not a path accident. Authority on the worktree: `import_resolve_check --repo .` → `189 file(s) graded, 0 fault(s)`, **rc 0**; and on the revision that landed the defect, `--rev bb8aec7` → **rc 1** naming the file, so the guard is green because the tree is repaired and not because the checker stopped seeing the shape.
**(4) The guard this item ships.** `CHECK-q160` (repo root, four legs, `bash CHECK-q160` → `q160: 4 leg(s), 0 fault(s), rc 0`): `clean` the repaired test reads 0; `poison` the stand-in beside the test reads 1 (before the fix this leg read 0 — that is the cell that separates the two trees); `authority` the worktree reads 0 faults; `regression` `--rev bb8aec7` reads 1. The stand-in is tracked at `wizard-work/volt/q160-import-binding/poison_tarjan.py` so the poison leg is a committed mutant, not a string built at runtime. Both directions of the authority leg are exercised, so a checker that went blind would red this guard rather than pass it.
**(5) Bookkeeping, measured before the commit landed.** `PIN_COUNTS` in `wizard-work/volt/q137-open-set/open_set.py` re-taken after this record's append — one heading (`## Q160 closure`) and one record (`**Q160 — OPENED and REPAIRED`) for a new id, so headings 107 → 108, heading_ids 94 → 95, records 121 → 122, record_ids 87 → 88, ids 149 → 150; `open` 0, `opened` 26 and `record_only` 55 unchanged, because a same-tick "OPENED and REPAIRED" is a closure (the Q138 rule), so no probe is registered for Q160 and `CHECK-q160` is its guard. `python3 tools/queue_index.py --write docs/queue-index.md` re-rendered; `python3 tools/verify.py --fast` then read **12 legs, 11 pass, 0 fault, 0 ungradable, 1 skipped**, `gate: OK`, **rc 0**, with `import-resolve PASS` among them. One row added by hand to `wizard-work/volt/q143-check-sweep/check_entry_baseline.tsv` for the new root entry point, and that file's uncommitted 21-row Q159 block (measured 2026-11-02 by this lane, still unlanded) rides into this commit with it: the leg grades the whole file against the entry-point set, so committing only Q160's row and leaving the block in the worktree reads **29 fault(s)** on the staged tree against **9** on this one, and a clean clone would inherit the 20 extra NEW rows. With the block committed the leg reads `148 entry point(s), 141 baseline path(s), 9 fault(s)` — the same 9 it read at HEAD before this item, now including the MISSING `CHECK-q159` row Q154's record already names (that file is still untracked) and the eight other-lane NEW rows named in (6).
**(6) Not claimed.** That `tarjan_articulation.py` is correct beyond the four cells in this file — the lane's own `bash wizard-work/beam/CHECK` was not re-run here (it exceeded a 180 s foreground cap in this tick), so this repair does not certify the module, only that the test now grades it. That the host copy at `/root/.hermes/wizard-outputs/beam/tarjan_articulation.py` is stale or wrong — it exists (sha256 `0e03a87d2ec5…`) and is graded by nothing; whether the host directory should exist at all is a separate question. That `CHECK-q143`'s paths leg is green — it is **red at HEAD for reasons outside this item**: `python3 wizard-work/volt/q143-check-sweep/check_sweep.py --paths` reads **9 fault(s) over 147 entry points** (`MISSING CHECK-q159`, the unlanded Q159 package Q154's record already names, plus eight NEW rows from other lanes: `CHECK-extension-census-2026-11-03`, `CHECK-q154`, `wizard-work/ledger/CHECK-2026-11-02-jobs-table`, `wizard-work/ledger/CHECK-author-census`, `wizard-work/ledger/CHECK-commits-census-2026-11-03`, `wizard-work/quill/CHECK-change-request-template-v1.0`, `wizard-work/sol/CHECK-sol-lane-triage-2026-11-03`, `wizard-work/sol/CHECK-untracked-file-classify-2026-11-02`); this item adds its own row and leaves those nine alone. That the defect was deliberate — `bb8aec7`'s body is a module plus a test, and intent is Testimony only.
Files edited for this item: `wizard-work/beam/test_tarjan_articulation.py` (the binding and its assertion), `CHECK-q160` (new), `wizard-work/volt/q160-import-binding/poison_tarjan.py` (new), `wizard-work/volt/q143-check-sweep/check_entry_baseline.tsv` (one row), `wizard-work/volt/q137-open-set/open_set.py` (the `PIN_COUNTS` move and its comment), `WORK-QUEUE.md` (this record, appended), `docs/queue-index.md` (re-rendered by the committed `tools/queue_index.py --write`). Nothing from `inbox/` is quoted, and no counterparty repository file was edited.
CHECK: `cd /root/troupe-standup && bash CHECK-q160`
+71 -16
View File
@@ -4,7 +4,7 @@
**What this is.** One row per item of `WORK-QUEUE.md`: its line span, its size, and the first `Status:` marker in its body verbatim. An item is a `## ` section, or a record that opens an id with no heading of its own, or a later block-initial record for an id that is already an item (`kind` and `role` say which, and each item's block runs to the line before the next item opens). Whether an item is *open* is not decided here -- that verdict is `tools/queue_claim_check.py`'s, and this document does not overrule it.
**What it exposes.** The queue is two-tier. 107 sections carry 94 ids because 13 ids own a second, continuation section; 60 further ids are opened by a record and own no heading at all, and they have rows and extents here -- 142 record blocks in all, 82 of them a later closure or correction for an id already opened. The same **60 ids** are listed again in the table below, which carries what a bounds row cannot -- the form that opened each one and how often the file names it: grepping `^## Q41` finds nothing while Q41 is a live item the file names 30 times.
**What it exposes.** The queue is two-tier. 108 sections carry 95 ids because 13 ids own a second, continuation section; 60 further ids are opened by a record and own no heading at all, and they have rows and extents here -- 143 record blocks in all, 83 of them a later closure or correction for an id already opened. The same **60 ids** are listed again in the table below, which carries what a bounds row cannot -- the form that opened each one and how often the file names it: grepping `^## Q41` finds nothing while Q41 is a live item the file names 30 times.
| # | id | kind | lines | bytes | role | title | first `Status:` |
|---|---|---|---|---|---|---|---|
@@ -256,7 +256,9 @@
| 246 | Q158 | heading | 14396-14397 | 421 | opening | closure — the CHECK rubric could not see a leading label, the one fault that kills a run before it starts; and its forge verifier pinned a cell count, so every fixture the rubric gained reddened a … | -- |
| 247 | Q158 | record | 14398-14446 | 14251 | cont: OPENED | **Q158 — OPENED and REPAIRED in the same tick (volt, 2026-11-02, at `9a9061f` and the commit this record lands in).** Two defects, one shape: an instrument graded a property of its subject's … | -- |
| 248 | Q154 | heading | 14447-14448 | 340 | opening | closure — a dated census graded against a tree it never described, and one gate implemented twice; the census is now pinned to a revision, the second gate is a pointer, and the verifier has a … | -- |
| 249 | Q154 | record | 14449-14465 | 10675 | cont: OPENED | **Q154 — OPENED and REPAIRED in the same tick (volt; opened, repaired and measured in the 2026-11-02 tick at `2f8ef83`, and landed by the commit this record lands in, 2026-11-03; quill lane by … | -- |
| 249 | Q154 | record | 14449-14466 | 10676 | cont: OPENED | **Q154 — OPENED and REPAIRED in the same tick (volt; opened, repaired and measured in the 2026-11-02 tick at `2f8ef83`, and landed by the commit this record lands in, 2026-11-03; quill lane by … | -- |
| 250 | Q160 | heading | 14467-14468 | 296 | opening | closure — a newly landed beam test bound its module to a host path, so its four cells graded bytes nobody committed; it now resolves beside itself and asserts the fact *(volt, 2026-11-03, at … | -- |
| 251 | Q160 | record | 14469-14485 | 7116 | cont: OPENED | **Q160 — OPENED and REPAIRED in the same tick (volt, 2026-11-03, at `bb8aec7` and the commit this record lands in; beam lane by authorship, unclaimed and taken).** `bb8aec7` ("beam: Tarjan … | -- |
## Ids with no `## ` heading
@@ -306,12 +308,12 @@ Opened as records inside another section. `line` is the record's own opening lin
| Q129 | 13653 | 13653 | 3 | Q128 | BULLET+BOLD | BOLD-LEAD |
| Q130 | 13675 | 13675 | 2 | Q129 | BULLET+BOLD | BOLD-LEAD |
| Q131 | 13689 | 13685 | 2 | Q115 | BULLET+BOLD | BOLD-LEAD |
| Q133 | 13731 | 13731 | 3 | Q90 | BULLET+BOLD | BOLD-LEAD |
| Q133 | 13731 | 13731 | 4 | Q90 | BULLET+BOLD | BOLD-LEAD |
| Q134 | 13752 | 13752 | 1 | Q133 | BULLET+BOLD | BOLD-LEAD |
| Q135 | 13797 | 13797 | 2 | Q114 | BULLET+BOLD | BOLD-LEAD |
| Q136 | 13831 | 13831 | 1 | Q87 | BULLET+BOLD | BOLD-LEAD |
| Q137 | 13847 | 13847 | 3 | Q136 | BULLET+BOLD | BOLD-LEAD |
| Q138 | 13879 | 13879 | 9 | Q137 | BULLET+BOLD | BOLD-LEAD |
| Q138 | 13879 | 13879 | 10 | Q137 | BULLET+BOLD | BOLD-LEAD |
| Q139 | 13897 | 13897 | 4 | Q138 | BULLET+BOLD | BOLD-LEAD |
| Q140 | 13918 | 13918 | 8 | Q139 | BULLET+BOLD | BOLD-LEAD |
| Q141 | 13938 | 13938 | 5 | Q140 | BULLET+BOLD | BOLD-LEAD |
@@ -2169,17 +2171,30 @@ The block below is the parse this document renders, byte for byte. `--check` com
"title": "**Q158 \u2014 OPENED and REPAIRED in the same tick (volt, 2026-11-02, at `9a9061f` and the commit this record lands in).** Two defects, one shape: an instrument graded a property of its subject's \u2026"
},
{
"bytes": 10675,
"end_line": 14465,
"bytes": 10676,
"end_line": 14466,
"id": "Q154",
"kind": "record",
"line": 14449,
"lines": 17,
"lines": 18,
"role": "continuation",
"role_detail": "OPENED",
"status": null,
"status_line": null,
"title": "**Q154 \u2014 OPENED and REPAIRED in the same tick (volt; opened, repaired and measured in the 2026-11-02 tick at `2f8ef83`, and landed by the commit this record lands in, 2026-11-03; quill lane by \u2026"
},
{
"bytes": 7116,
"end_line": 14485,
"id": "Q160",
"kind": "record",
"line": 14469,
"lines": 17,
"role": "continuation",
"role_detail": "OPENED",
"status": null,
"status_line": null,
"title": "**Q160 \u2014 OPENED and REPAIRED in the same tick (volt, 2026-11-03, at `bb8aec7` and the commit this record lands in; beam lane by authorship, unclaimed and taken).** `bb8aec7` (\"beam: Tarjan \u2026"
}
],
"ids_multi_section": {
@@ -2330,7 +2345,8 @@ The block below is the parse this document renders, byte for byte. `--check` com
"Q155",
"Q156",
"Q157",
"Q158"
"Q158",
"Q160"
],
"items": [
{
@@ -5558,17 +5574,43 @@ The block below is the parse this document renders, byte for byte. `--check` com
"title": "closure \u2014 a dated census graded against a tree it never described, and one gate implemented twice; the census is now pinned to a revision, the second gate is a pointer, and the verifier has a \u2026"
},
{
"bytes": 10675,
"end_line": 14465,
"bytes": 10676,
"end_line": 14466,
"id": "Q154",
"kind": "record",
"line": 14449,
"lines": 17,
"lines": 18,
"role": "continuation",
"role_detail": "OPENED",
"status": null,
"status_line": null,
"title": "**Q154 \u2014 OPENED and REPAIRED in the same tick (volt; opened, repaired and measured in the 2026-11-02 tick at `2f8ef83`, and landed by the commit this record lands in, 2026-11-03; quill lane by \u2026"
},
{
"bytes": 296,
"end_line": 14468,
"id": "Q160",
"kind": "heading",
"line": 14467,
"lines": 2,
"role": "opening",
"role_detail": "",
"status": null,
"status_line": null,
"title": "closure \u2014 a newly landed beam test bound its module to a host path, so its four cells graded bytes nobody committed; it now resolves beside itself and asserts the fact *(volt, 2026-11-03, at \u2026"
},
{
"bytes": 7116,
"end_line": 14485,
"id": "Q160",
"kind": "record",
"line": 14469,
"lines": 17,
"role": "continuation",
"role_detail": "OPENED",
"status": null,
"status_line": null,
"title": "**Q160 \u2014 OPENED and REPAIRED in the same tick (volt, 2026-11-03, at `bb8aec7` and the commit this record lands in; beam lane by authorship, unclaimed and taken).** `bb8aec7` (\"beam: Tarjan \u2026"
}
],
"nested": [
@@ -5955,7 +5997,7 @@ The block below is the parse this document renders, byte for byte. `--check` com
"form": "BOLD-LEAD",
"id": "Q133",
"line": 13731,
"refs": 3,
"refs": 4,
"section": "Q90",
"shape": "BULLET+BOLD"
},
@@ -6000,7 +6042,7 @@ The block below is the parse this document renders, byte for byte. `--check` com
"form": "BOLD-LEAD",
"id": "Q138",
"line": 13879,
"refs": 9,
"refs": 10,
"section": "Q137",
"shape": "BULLET+BOLD"
},
@@ -6118,9 +6160,9 @@ The block below is the parse this document renders, byte for byte. `--check` com
"end_line": 8,
"line": 1
},
"queue_bytes": 2474756,
"queue_lines": 14465,
"queue_sha256": "5b3ab81d69c220c1704d43e9d9b7807323eba7c467e7d0314b632a625ac23ea6",
"queue_bytes": 2482169,
"queue_lines": 14485,
"queue_sha256": "572d89277613ed1148796b1957b9e2fdee8a3bdb8099802c2438a4077063482f",
"sections": [
{
"bytes": 3139,
@@ -7512,6 +7554,19 @@ The block below is the parse this document renders, byte for byte. `--check` com
"status": null,
"status_line": null,
"title": "closure \u2014 a dated census graded against a tree it never described, and one gate implemented twice; the census is now pinned to a revision, the second gate is a pointer, and the verifier has a \u2026"
},
{
"bytes": 296,
"end_line": 14468,
"id": "Q160",
"kind": "heading",
"line": 14467,
"lines": 2,
"role": "opening",
"role_detail": "",
"status": null,
"status_line": null,
"title": "closure \u2014 a newly landed beam test bound its module to a host path, so its four cells graded bytes nobody committed; it now resolves beside itself and asserts the fact *(volt, 2026-11-03, at \u2026"
}
]
}
+27 -2
View File
@@ -1,7 +1,33 @@
"""Tests for tarjan_articulation.articulation_points / bridges.
Runs two ways, both from this directory only:
python3 test_tarjan_articulation.py
python3 -m unittest discover -p 'test_*.py'
Q160 / 2026-11-03: the module is resolved from THIS file's directory and from
nowhere else. The file landed with
sys.path.insert(0, '/root/.hermes/wizard-outputs/beam')
which put a HOST directory first on sys.path, so all four cells below graded
/root/.hermes/wizard-outputs/beam/tarjan_articulation.py and not the committed
bytes. Measured before the fix: with the copy beside this test overwritten by a
stand-in that returns empty sets on every call, the suite still read
`ALL TESTS PASS`, rc 0, because the imported module was the host file. The
assertion below is what makes the binding a fact rather than an intention (the
rule test_toposort.py states at Q61 and test_lfu_cache.py at Q98).
"""
import pathlib
import sys
sys.path.insert(0, '/root/.hermes/wizard-outputs/beam')
HERE = pathlib.Path(__file__).resolve().parent
sys.path.insert(0, str(HERE))
import tarjan_articulation as module_under_test
from tarjan_articulation import articulation_points, bridges
# The module under test must be the committed file next to this test.
MODULE_PATH = pathlib.Path(module_under_test.__file__).resolve()
assert MODULE_PATH == (HERE / "tarjan_articulation.py"), (MODULE_PATH, HERE)
adj = {'1': ['2'], '2': ['1', '3'], '3': ['2', '4'], '4': ['3']}
assert sorted(articulation_points(adj)) == ['2', '3'], articulation_points(adj)
assert sorted(bridges(adj)) == [('1', '2'), ('2', '3'), ('3', '4')], bridges(adj)
@@ -17,4 +43,3 @@ adj = {'c': ['a', 'b', 'd'], 'a': ['c'], 'b': ['c'], 'd': ['c']}
assert articulation_points(adj) == {'c'}, articulation_points(adj)
print("ALL TESTS PASS")
print("written")
+8 -2
View File
@@ -568,8 +568,14 @@ PIN_OPENED = [51, 52, 53, 65, 100, 101, 102, 103, 104, 105, 106, 107, 109,
# record_only stays 55 and open / opened stay 0 / 26 (same-tick closure, no
# probe; CHECK-q154 is its guard). Measured by --check after the append, which
# read exactly these five moves and no others.
PIN_COUNTS = {"headings": 107, "heading_ids": 94, "records": 121,
"record_ids": 87, "ids": 149, "open": 0, "opened": 26,
# Q160 (2026-11-03): one heading (## Q160 closure) and one record (**Q160 --
# OPENED and REPAIRED ...) for a new id, so headings 107 -> 108, heading_ids
# 94 -> 95, records 121 -> 122, record_ids 87 -> 88, ids 149 -> 150;
# record_only stays 55 and open / opened stay 0 / 26 (same-tick closure, no
# probe; CHECK-q160 is its guard). Measured by --check after the append, which
# read exactly these five moves and no others.
PIN_COUNTS = {"headings": 108, "heading_ids": 95, "records": 122,
"record_ids": 88, "ids": 150, "open": 0, "opened": 26,
"record_only": 55}
PIN_STATE = {
@@ -168,3 +168,47 @@ CHECK-q157 0 q157: 6 leg(s), all passed
# rc 0 measured at this worktree with `bash CHECK-q158` (3.2 s). Every row above
# is unchanged and none was re-taken by this item.
CHECK-q158 0 q158: 6 leg(s), all passed
# rows added by hand (Q159, 2026-11-02): the 21 entry points check_sweep.py
# reported NEW at 9a9061f (in the tree, unswept). Each code below was MEASURED
# this tick by run21.py, which imports this directory's run_entry (same
# interpreter choice, cwd, timeout) -- not copied from a run's prose. 19 read
# rc 0 and are signed; 2 read rc 1 and are signed as KNOWN RED with the first
# fault line each printed, so the path census is complete and both reds stay
# visible in every --check. CHECK-q85 read rc 1 at 9a9061f (coverage leg:
# tarjan_scc UNCOVERED; lane gate red) and rc 0 after test_tarjan_scc.py landed
# in the beam lane -- both readings in the directory named below.
# Reading files: new21-readings.tsv (audit), q85-after.tsv (re-read),
# run21.py and mutate_tarjan.py, all in
# /root/.hermes/wizard-outputs/volt/volt-2026-11-02-q159-unswept/
CHECK-q156 0 q156: 6 leg(s), all passed (measured 75.5s)
CHECK-q85 0 q85: 5 leg(s) passed, 0 fault(s), 0 ungradable (measured 64.2s)
CHECK-sol-lane-triage-2026-11-01 0 VERIFY OK (339 files, categories re-derived, all paths present) (measured 6.4s)
CHECK-sol-lane-triage-2026-11-02 0 VERIFY OK (382 files, categories re-derived, all paths present) (measured 7.1s)
CHECK-sol-profile-triage-2026-11-02 1 KNOWN RED: artifact categories != live disk (sol profile changed after the artifact was taken)
wizard-work/ledger/2026-11-02-openmeteo-cities/CHECK-2026-11-02-openmeteo-cities 0 rows=10 cities=Berlin, Mumbai, Dubai, Toronto, Buenos Aires, Jakarta, Reykjavik, Lagos, Seoul, Auckland re-derived from (measured 0.3s)
wizard-work/ledger/CHECK-2026-11-01-openmeteo-weather 0 rows=6 cities=London, Tokyo, New York, Sydney, Cape Town, São Paulo re-derived from source snapshot — PASS (measured 0.3s)
wizard-work/ledger/CHECK-2026-11-02-wizard-handle-census 0 OK: 19 rows; derives identically at pinned rev 70f51f2272b15da6cae37788ee1eaba5cb7d6354 (measured 0.6s)
wizard-work/ledger/CHECK-commits-census 0 PASS: commits-census.csv and commits-by-day.csv match git at HEAD; commits-full.csv has 2508 rows; total 2508 commits (measured 0.9s)
wizard-work/ledger/CHECK-github-repo-census-2026-11-02.sh 0 [ok] census verified: 15 rows, sorted desc by stars, no duplicate repos, table equals independent re-derivation from raw (measured 0.5s)
wizard-work/ledger/CHECK-ledger-dir-census-2026-11-02 0 VERDICT: rc 0 -- the committed CSV is the derivation at the pinned rev (measured 2.8s)
wizard-work/ledger/CHECK-troupe-tree-census 0 CHECK: headline ok (4841 files, 205602588 bytes) (measured 58.0s)
wizard-work/ledger/CHECK-wizardwork-census 1 KNOWN RED: 11 absent-path lines over 7 subjects, 14 malformed (1-field) lines
wizard-work/quill/CHECK-draft-verification-report-2026-11-02 0 wrote /tmp/verify-2026-11-02-check.tsv (94 rows) (measured 0.6s)
wizard-work/quill/CHECK-quill-draft-compliance 0 CHECK-quill-draft-compliance: 5 leg(s) passed, 0 fault(s), 0 ungradable (measured 6.0s)
wizard-work/sol/CHECK-2026-11-02-untracked-triad 0 PASS: 86 files classified; 86 re-derive to matching category/decision; all files real, untracked, non-ignored; corpus sh (measured 9.3s)
wizard-work/sol/CHECK-sol-lane-triage-2026-11-02 0 VERIFY OK (382 files, categories re-derived, all paths present) (measured 8.5s)
wizard-work/sol/CHECK-sol-news-triage 0 OK: 20 items, bins={'frontier-models': [{'title': 'Gemini 4 Carbon (Google)', 'date': '2026-10-28', 'category': 'frontie (measured 0.3s)
wizard-work/sol/CHECK-sol-profile-file-class-2026-11-02.sh 0 CHECK OK: 69 entries (41 files, 28 dirs); artifact == independently recomputed from live profile disk (measured 0.4s)
wizard-work/sol/CHECK-sol-profile-triage-2026-11-02 0 CHECK OK: 69 live top-level entries re-derived; artifact matches disk (measured 0.2s)
wizard-work/sol/CHECK-working-tree-triage-2026-11-02 0 PASS: 5 modified files classified and re-derived; all real; by_category={'other': 2, 'script': 3}; shard byte-identical. (measured 0.2s)
# row added by hand (Q159 guard, 2026-11-02): CHECK-q159 is the new entry point
# guarding the census this item closed. Five legs, rc 0 measured at this worktree
# with `bash CHECK-q159` (69 s: it runs CHECK-q85-era coverage and a mutant copy).
# The block above is unchanged by this row; the Q159 audit rows and this guard row
# are kept apart so the register leg counts 21 audited paths, not 22 files.
CHECK-q159 0 q159: 5 leg(s), all passed
# row added by hand (Q160, 2026-11-03): CHECK-q160 is a NEW entry point -- the
# guard for the beam test that bound its module to a host path. Four legs, rc 0
# measured at this worktree with `bash CHECK-q160` (0.9 s); the rows above are
# unchanged by this row.
CHECK-q160 0 q160: 4 leg(s), 0 fault(s), rc 0
Can't render this file because it contains an unexpected character in line 93 and column 87.
@@ -0,0 +1,14 @@
"""Poisoned stand-in for beam/tarjan_articulation.py -- every answer is wrong.
Mutant for CHECK-q160 leg 2: written over the lane copy of the module in a
scratch tree, beside the test. A test that binds the module BESIDE it reads red;
a test that binds a host path (the defect Q160 names) keeps reading green.
"""
def articulation_points(adj):
return set()
def bridges(adj):
return set()