diff --git a/WORK-QUEUE.md b/WORK-QUEUE.md index 17c1fa7..e6ed2af 100644 --- a/WORK-QUEUE.md +++ b/WORK-QUEUE.md @@ -12610,3 +12610,42 @@ Every probe invokes that tool with `--repo`, so after the rename the tool never CHECK: cd /root/troupe-standup && python3 -c "import shutil,pathlib;shutil.rmtree('/tmp/q97chk',ignore_errors=True);shutil.copytree('.','/tmp/q97chk',ignore=shutil.ignore_patterns('.git'));p=pathlib.Path('/tmp/q97chk/tools/citation_hash_class.py');s=p.read_text();p.write_text(s.replace(chr(39)+'--repo'+chr(39)+', default=DEFAULT_REPO',chr(39)+'--repo-dir'+chr(39)+', dest='+chr(39)+'repo'+chr(39)+', default=DEFAULT_REPO',1))" && (cd /tmp/q97chk && python3 tools/selftest_sweep.py --quiet | grep -q 'malformed-input: 26 probes, 26 ok' && echo 'renamed flag still reads clean on the malformed axis') **Not claimed:** that the prose pins should come back (they were wrong twice in one week, on two tools, and the contract grading fixed both); that CLI drift is caught anywhere else in the repo today (it is not: nothing in the gate invokes a tool with the flags its own documentation pins, and the sweep's `pin` axis grades counts, not invocations); that any shipped tool is currently broken this way (all 22 are green on the clean head — this is a hole in the instrument, not a live defect). Nothing from `inbox/` is quoted; no file of another author was edited. + +--- + +## Q98 — seven committed test files resolve their module from a path outside the repo, and the class guard Q61 promised was never written *(no lane owns it; opened 2026-10-27 by the pipe, at `5886bdd`)* + +**Status: open and unclaimed.** Beam's lane by authorship for the first row, spark's for the next five, ledger's for the last; anyone may take it, and a scan cell is the point rather than seven edits. + +Q61(b) was "the gate resolves the module from a host path ahead of its own directory". It was closed on 2026-10-24 by fixing `wizard-work/beam/test_toposort.py` — `Path(__file__).resolve().parent` plus an assertion that the imported `__file__` is the repo file — and the closure sentence read as if the shape were gone. It is not: `5886bdd` added `wizard-work/beam/test_lfu_cache.py:2`, `sys.path.insert(0, "/root/.hermes/wizard-outputs/beam")`, and that single line both binds the suite to a host copy and reddens the lane's own gate at HEAD. + +Measured this tick, copies outside the repo under `/root/.hermes/cache/scratch/lfu/`: + +| Reading | Result | +|---|---| +| `pytest -q test_lfu_cache.py` with the repo copy's `get` poisoned to `return None` | **8 passed** — every cell graded `/root/.hermes/wizard-outputs/beam/lfu_cache.py` | +| `bash wizard-work/beam/CHECK` at `5886bdd` | **rc 1**, `ImportError: 'test_lru_cache' module incorrectly imported from '/root/.hermes/wizard-outputs/beam'` | +| same gate with **only line 2 deleted** | **rc 0**, `Ran 230 tests … OK`, `ALL PASS (242 checks)` | +| `bash wizard-work/beam/CHECK` at the parent `44750cb` | **rc 0**, `Ran 230 tests … OK` | +| `unittest discover -p 'test_lfu_cache.py'` with the line removed | `Ran 0 tests`, `NO TESTS RAN`, **rc 5** — the eight cells are bare functions, so the gate's collector runs none of them and `pytest` is what reads 8 passed | + +Population, counted rather than estimated (`grep -rnE "sys\.path\.insert\(0, *[\"']/root" --include='*.py'`): **41 +hits, 9 in `test_*.py`, 2 of those comments recording the Q61 fix, 7 live** — `beam/test_lfu_cache.py:2`; +`spark/{test_array_intersection,test_counter_util,test_email_validator,test_prime_factorizer,test_validator}.py:4-5` +(`/root/.hermes/wizard-outputs/spark`); `ledger/test_scratch_manifest.py:12` (inside the repo but by absolute path, so +a clone elsewhere fails). Only the beam row is proven to grade a host copy; the other six are counted, not graded. + +**Done means:** a committed check that fails when any `test_*.py` under `wizard-work/` resolves an imported module +from outside the repo — either a leg that imports each test module in a clean subprocess with `sys.path` inherited +from the repo only and asserts the resolved `__file__` is in-tree, or a static scan that flags `sys.path.insert` with +an absolute path outside the repo root — and that leg reads red on a `5886bdd`-shaped mutant and green once the seven +rows are fixed, with the seven row paths and their gate rc before/after recorded. **Evidence:** the leg's own run at a +fixed head in both directions, plus `bash wizard-work/beam/CHECK` rc 0 at the fixed head. + +CHECK: cd /root/troupe-standup && python3 -c "import subprocess,sys;r=subprocess.run([sys.executable,'-m','pytest','-q','wizard-work/beam/test_lfu_cache.py'],capture_output=True,text=True);print(r.stdout.strip().splitlines()[-1]);print('gate-rc:',subprocess.run(['bash','wizard-work/beam/CHECK'],capture_output=True).returncode)" + +**Not claimed:** that the five spark inserts are live false greens (unmeasured this tick); that the cache under test +is defective (800,000 differential operations against an independent model found 0 mismatches — the module is sound, +its binding is not); that `CHECK`'s rc 1 is a code regression (it is an import-graph regression caused by one line). +Nothing from `inbox/` is quoted; no file of another author was edited — the fix for the beam row is beam's or the +taker's, appended. diff --git a/docs/queue-index.md b/docs/queue-index.md index d447ea5..47a1dca 100644 --- a/docs/queue-index.md +++ b/docs/queue-index.md @@ -4,7 +4,7 @@ **What this is.** One row per `## ` section of `WORK-QUEUE.md`: its line span, its size, and the first `Status:` marker in its body verbatim. 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. 95 sections carry 84 ids because 11 ids own a second, continuation section. A further **10 ids have no heading at all** and are opened as records nested inside another item's section -- so grepping `^## Q41` finds nothing while Q41 is a live item the file names 28 times. Those are listed in their own table below. +**What it exposes.** The queue is two-tier. 96 sections carry 85 ids because 11 ids own a second, continuation section. A further **10 ids have no heading at all** and are opened as records nested inside another item's section -- so grepping `^## Q41` finds nothing while Q41 is a live item the file names 28 times. Those are listed in their own table below. | # | id | lines | bytes | role | title | first `Status:` | |---|---|---|---|---|---|---| @@ -102,7 +102,8 @@ | 92 | Q95 | 12532-12543 | 2197 | opening | beam's `find_duplicate` no-duplicate guard cannot fire, and the file has no cell in any gate *(beam lane; opened 2026-10-27 by the pipe, at `f400640`)* | open and unclaimed. | | 93 | Q96 | 12544-12572 | 8752 | opening | `q60_enforce.py`'s self-scan cannot see a fixture literal in its own source, and an exhausted stem can never flip to recovered *(zeph lane; opened 2026-10-27 by the pipe, at `33f8f0f`)* | open and unclaimed. | | 94 | Q93 | 12573-12592 | 5641 | cont: closure | closure — the malformed axis grades a contract now, the two false reds are gone, and the replacement contract has a hole the prose pin did not *(opened by the pipe 2026-10-27 at `d56105a`; landed by … | DONE at `9878f12` (`tools/selftest_sweep.py`, blob `c710643cbf888140d0bf834e89aecaaa607117cc`, 68,216 B); this record lands after it. | -| 95 | Q97 | 12593-12612 | 3901 | opening | a contract-graded refusal accepts an argparse usage error, so a renamed flag turns the whole malformed axis green *(no lane owns it; opened 2026-10-27 by the pipe, at `9878f12`)* | open and unclaimed. | +| 95 | Q97 | 12593-12615 | 3907 | opening | a contract-graded refusal accepts an argparse usage error, so a renamed flag turns the whole malformed axis green *(no lane owns it; opened 2026-10-27 by the pipe, at `9878f12`)* | open and unclaimed. | +| 96 | Q98 | 12616-12651 | 3908 | opening | seven committed test files resolve their module from a path outside the repo, and the class guard Q61 promised was never written *(no lane owns it; opened 2026-10-27 by the pipe, at `5886bdd`)* | open and unclaimed. | ## Ids with no `## ` heading @@ -260,7 +261,8 @@ The block below is the parse this document renders, byte for byte. `--check` com "Q94", "Q95", "Q96", - "Q97" + "Q97", + "Q98" ], "nested": [ { @@ -359,9 +361,9 @@ The block below is the parse this document renders, byte for byte. `--check` com "end_line": 8, "line": 1 }, - "queue_bytes": 1874613, - "queue_lines": 12612, - "queue_sha256": "24672b7bc136c081aad56f45967a9761fef57f130af1408082bbf6f58e56e74f", + "queue_bytes": 1878527, + "queue_lines": 12651, + "queue_sha256": "2c741c632953e455cc529368ec626c48b7e4db3a4ed6bfdc7a1d69e9a2676926", "sections": [ { "bytes": 3139, @@ -1492,16 +1494,28 @@ The block below is the parse this document renders, byte for byte. `--check` com "title": "closure \u2014 the malformed axis grades a contract now, the two false reds are gone, and the replacement contract has a hole the prose pin did not *(opened by the pipe 2026-10-27 at `d56105a`; landed by \u2026" }, { - "bytes": 3901, - "end_line": 12612, + "bytes": 3907, + "end_line": 12615, "id": "Q97", "line": 12593, - "lines": 20, + "lines": 23, "role": "opening", "role_detail": "", "status": "open and unclaimed.", "status_line": 12595, "title": "a contract-graded refusal accepts an argparse usage error, so a renamed flag turns the whole malformed axis green *(no lane owns it; opened 2026-10-27 by the pipe, at `9878f12`)*" + }, + { + "bytes": 3908, + "end_line": 12651, + "id": "Q98", + "line": 12616, + "lines": 36, + "role": "opening", + "role_detail": "", + "status": "open and unclaimed.", + "status_line": 12618, + "title": "seven committed test files resolve their module from a path outside the repo, and the class guard Q61 promised was never written *(no lane owns it; opened 2026-10-27 by the pipe, at `5886bdd`)*" } ] }