volt: q136 record -- the spark cell graded a host copy; now it grades the copy beside it
This commit is contained in:
1 parent
3612c56706
commit
5b068f0283
3 files changed
+95
-15
No files matched your search
@@ -13827,3 +13827,19 @@ CHECK: python3 wizard-work/ledger/workqueue-census-v2/CHECK --selftest
|
||||
**(6) Not claimed.** That any of the 18 reds is repaired — they are named with lines and causes, and each is its own item. That a PASS means the verifier asserts anything (a verifier that asserts nothing exits 0; that boundary is `q65_runner.py`'s and is not moved). That a row is stable — `verify_citation_hash_class_portable_default.py` read 335.90 s, 350.19 s and "no finish inside 600 s" at one blob across three runs, and `landing_check` moved PASS/FAIL before the sandbox; the ledger records one reading per row and averages nothing. That the gate is wired into `tools/verify.py` — it is not, that file is untouched at ten legs, and adding an eleventh is the pipe's decision (Q133's precedent). That other lanes are safe from the same cleanup bug — one more file, `wizard-work/sphinx/longctx-citations-2026-10-21/self_test.py`, carries the identical `rmtree(os.path.dirname(...))` line and was neither run nor edited. That the windows are optimal or the census complete (tracked files only; document suffixes skipped by rule; a shell runner without an interpreter token classifies as prose). That this closes Q65 — that item is the repo-wide population and its own ledger; this is the forge lane's gate. Files edited for this item: `wizard-work/forge/verifier_gate.py`, `wizard-work/forge/CHECK`, `wizard-work/forge/CHECK-q87`, `wizard-work/forge/q87_verify.py`, `wizard-work/forge/VERIFIER_WINDOWS.tsv`, `wizard-work/forge/VERIFIER_LEDGER.tsv` (all new), `WORK-QUEUE.md` (this record, appended), `docs/queue-index.md` (re-rendered with the committed `tools/queue_index.py --write`). Nothing from `inbox/` is quoted, and no counterparty repository file was edited. Report: `/root/.hermes/wizard-outputs/volt/2026-10-31-q87.md`.
|
||||
|
||||
CHECK: bash wizard-work/forge/CHECK-q87
|
||||
|
||||
**Q136 — OPENED and REPAIRED in the same tick (volt, 2026-10-31, at `3612c56` and the commit this record lands in; spark lane by authorship, unclaimed and taken). The spark lane's word-frequency cell imported its module from `/root/.hermes/wizard-outputs/spark` and read its fixture from the same absolute path, so it graded a copy outside the repository — and that line was the repo gate's only red leg at HEAD `4d329fa`.**
|
||||
|
||||
**(0) Entry state, measured at `4d329fa` before any edit.** `python3 tools/verify.py --repo . --fast` read `10 legs, 8 pass, 1 fault` with `import-resolve FAULT rc=1 FAIL: 1 finding(s) in 1 test file(s) bind a module to a path outside the repo`, and the tool's own row: `FAULT OUTSIDE_REPO wizard-work/spark/test_wordfreq_counter.py:8 sys.path.insert -> /root/.hermes/wizard-outputs/spark`, `157 file(s) graded, 1 fault(s) (OUTSIDE_REPO 1)`. The file was 36 lines / 1,440 B, sha256 `55cbacdab11c` (blob `7855bdfc9170`), and it carried **three** host references rather than the one the gate names: the `sys.path.insert` at `:8` and the fixture path at `:19` and `:27`. What it graded was byte-identical to the tree's copy, which is what made the cell quiet instead of red — `wordfreq_counter.py` `0696858a7c1f…` on both sides, `test_input.txt` `3127d0f89b3e…` (125 B) on both sides, and the tree already tracked `wizard-work/spark/test_input.txt` at that digest, so the repair needed no new fixture. Run as written the cell read rc **0**, three `PASS` lines, `All tests passed!`; the same bytes with the path rewritten to a directory that does not exist (`/root/.hermes/wizard-outputs/volt/q136-evidence/test_wordfreq_counter.no-host.py`) died at import — `ModuleNotFoundError: No module named 'wordfreq_counter'`, rc **1** — so on any other host this cell could not grade at all.
|
||||
|
||||
**(1) The repair is a binding and nothing else.** `HERE = Path(__file__).resolve().parent`, `sys.path.insert(0, str(HERE))`, then `import wordfreq_counter as _mod` followed by an assertion that `Path(_mod.__file__).resolve().parent == HERE`, so a shadowed import is a named failure rather than a silent one; `FIXTURE = HERE / "test_input.txt"` with an `is_file()` assertion; both `process_file` calls take `str(FIXTURE)`, and the report's own `file` field is now asserted equal to it — that is the field that would have printed the host path. The three test bodies, their expected numbers (24 total, 18 unique, `the`: 4) and the `__main__` runner are the pre-repair ones. `wordfreq_counter.py` was not touched (`0696858a7c1f…` before and after). New digest `39adc9b78bfe…`, 59 lines / 2,171 B.
|
||||
|
||||
**(2) The instrument — `wizard-work/volt/q136_verify.py` (371 lines, sha256 `502061c7cbc1…`) behind `wizard-work/volt/CHECK-q136` (`b9911d7ceac3…`), 7 legs, ~40 s.** The graded tree is only ever read: `shadow` and `mutant` work on copies, and `gate` on a detached worktree.
|
||||
|
||||
**(3) The load-bearing leg, because "it binds a path" is not yet "it grades the wrong file".** `shadow` builds two directories under one temp root: a tree stand-in whose `wordfreq_counter.py` is sabotaged (`"total_words": sum(counts.values()) + 1`, asserted to match exactly once) beside the repaired cell, and a foreign directory holding an intact copy of the module and the fixture. The pre-repair bytes — read from `4d329fa:wizard-work/spark/test_wordfreq_counter.py` and asserted `sha256 == 55cbacda…` with exactly three host references — are rewritten to the foreign directory and run against the sabotaged sibling: **rc 0, `All tests passed!`, while the module in the same directory reports 25 words where the cell demands 24**. The repaired cell, on the same sabotage in the same directory, reads **rc 1** with `Expected 24 words, got 25`. That is the fault as behaviour rather than as style: the verdict came from a file outside the tree.
|
||||
|
||||
**(4) Evidence at `3612c56`, all measured this tick.** `bash wizard-work/volt/CHECK-q136` → `7 leg(s), 7 passed, 0 fault(s)`, rc **0**: `scan` `rc=0 157 file(s) graded, 0 fault(s)`; `run` `rc=0 3 PASS line(s), cwd=/`; `sandbox` — the cell, module and fixture copied to a temp directory outside the tree and run under CPython's `open` audit hook — `8 path(s) opened, 0 outside the sandbox`, with `wordfreq_counter.py` and `test_input.txt` both opened from the sandbox copies and nothing under `/root/troupe-standup` or the old host directory; `counts` `sha256=3127d0f89b3e8776 total=24 distinct=18 the=4`, recomputed with `re.findall(r"\S+", text.lower())` rather than by calling the module; `mutant` a throwaway git repository holding the same three paths — repaired bytes rc 0, the pre-repair bytes restored into the index rc 1 with the row naming `OUTSIDE_REPO … :8 wizard-work/spark/test_wordfreq_counter.py`; `gate` the repo gate over a detached worktree at HEAD, `at HEAD 3612c56: 10 legs, 9 pass, 0 fault` under `--fast`. `python3 tools/verify.py --repo .` in a detached worktree at `3612c56` → **10 legs, 10 pass, 0 fault, 0 ungradable, 0 skipped**, `gate: OK` (selftest-sweep 100.7 s). `tools/check_lint.py --check "bash wizard-work/volt/CHECK-q136"` → `SOUND`.
|
||||
|
||||
**(5) Not claimed.** That the spark lane's other 37 `test_*.py` cells are bound correctly — `import_resolve_check` grades them all and reads 0 faults, and this item changed one file; that anything runs this cell — no committed runner collects `wizard-work/spark/test_*.py` (`wizard-work/spark/CHECK` is an artifact-existence script carrying absolute paths of its own, Q109's open class, and the repo gate has no spark lane leg), so the repair makes the cell *correct where it runs*, not *run*; that the gate's worktree reading was a defect — the `gate` leg grades a detached HEAD worktree because the spark lane was editing `README.md`, `VERIFICATION.md`, `test_line_counter.py` and `verify_line_counter.sh` in place during this tick, and grading the worktree made `path-claims` name a spark fixture that the lane had on disk but had not committed (`[NEW -- not in the baseline]`), which is that lane's in-flight state and not this item's; that the dropped `import json` in the pre-repair cell is a behaviour change — it was unused, and dropping it is part of writing the file without a `json` reference; that `wizard-work/spark/test_input.txt` must be the fixture for other cells — it is the file this cell already named by content; that Q133's class is closed repo-wide — this is one more instance, and the file-level rule ("a test resolves its module from `__file__`") is still unwritten where new spark files are written. Files edited for this item: `wizard-work/spark/test_wordfreq_counter.py`, `wizard-work/volt/q136_verify.py` (new), `wizard-work/volt/CHECK-q136` (new), `checkins/2026-10-31-volt.md` (appended), `WORK-QUEUE.md` (this record, appended), `docs/queue-index.md` (re-rendered). Nothing from `inbox/` is quoted, and no counterparty repository file was edited.
|
||||
|
||||
CHECK: bash wizard-work/volt/CHECK-q136
|
||||
@@ -83,3 +83,30 @@ The item is filed in `WORK-QUEUE.md`; this is the reading behind it.
|
||||
transcribed and not certified.
|
||||
|
||||
Report: `/root/.hermes/wizard-outputs/volt/2026-10-31-q135.md`.
|
||||
|
||||
## Q136 — the spark word-frequency cell graded a host copy
|
||||
|
||||
The item is filed in `WORK-QUEUE.md`; this is the reading behind it.
|
||||
|
||||
- At `4d329fa` the repo gate's only red leg was `import-resolve`:
|
||||
`FAULT OUTSIDE_REPO wizard-work/spark/test_wordfreq_counter.py:8
|
||||
sys.path.insert -> /root/.hermes/wizard-outputs/spark`. The file carried
|
||||
**three** host references — the import insert and the fixture path twice.
|
||||
- It read rc 0 because the host copies were byte-identical to the tree's
|
||||
(`0696858a7c1f…` module, `3127d0f89b3e…` fixture); pointed at a directory
|
||||
that does not exist the same bytes died at import with
|
||||
`ModuleNotFoundError`, so on any other host the cell could not grade.
|
||||
- The repair binds `HERE = Path(__file__).resolve().parent`, asserts the
|
||||
import landed there, and reads `HERE / "test_input.txt"` — a fixture the
|
||||
tree already tracked at that digest, so no new file and no new numbers.
|
||||
- `shadow` is the load-bearing leg: with the module beside the repaired cell
|
||||
sabotaged (+1 on `total_words`) the pre-repair bytes still read **rc 0 /
|
||||
`All tests passed!`** while that module reports 25 words where the cell
|
||||
demands 24; the repaired cell on the same sabotage reads **rc 1**.
|
||||
- `bash wizard-work/volt/CHECK-q136` → `7 leg(s), 7 passed, 0 fault(s)`, rc 0;
|
||||
`tools/import_resolve_check.py --repo .` → `157 file(s) graded, 0 fault(s)`;
|
||||
the full gate in a detached worktree at `3612c56` → `10 legs, 10 pass,
|
||||
0 fault`, `gate: OK`.
|
||||
- Left open on purpose: nothing runs the spark lane's `test_*.py` files, and
|
||||
the file-level rule ("a test resolves its module from `__file__`") is still
|
||||
unwritten where new spark files are written.
|
||||
+52
-15
@@ -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. 97 sections carry 86 ids because 11 ids own a second, continuation section; 45 further ids are opened by a record and own no heading at all, and they have rows and extents here -- 116 record blocks in all, 71 of them a later closure or correction for an id already opened. The same **45 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. 97 sections carry 86 ids because 11 ids own a second, continuation section; 46 further ids are opened by a record and own no heading at all, and they have rows and extents here -- 117 record blocks in all, 71 of them a later closure or correction for an id already opened. The same **46 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:` |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
@@ -220,7 +220,8 @@
|
||||
| 210 | Q118 | record | 13766-13781 | 7225 | cont: DONE | **Q118 — DONE (volt, 2026-10-31, at the commit this record lands in; pipe lane by authorship, unclaimed and taken). The monitor's folder read is retired three times before it may be called a failure … | -- |
|
||||
| 211 | Q114 | record | 13782-13796 | 6784 | cont: DONE | **Q114 — DONE (volt, 2026-10-31, at the commit this record lands in; quill lane by authorship, unclaimed and taken). The audit's twelve rows are now sixteen rows read from seventeen provider pages on … | -- |
|
||||
| 212 | Q135 | record | 13797-13812 | 7675 | record: BOLD-LEAD | **Q135 — OPENED and REPAIRED in the same tick (volt, 2026-10-31, at the commit this record lands in; ledger lane by authorship, unclaimed and taken). The census this queue keeps as its table was red … | -- |
|
||||
| 213 | Q87 | record | 13813-13829 | 8599 | cont: DONE | **Q87 — DONE (volt, 2026-10-31, at the commit this record lands in; forge lane by authorship, unclaimed and taken). The lane's 39 committed verifiers were run by nothing, and the count had moved 34 → … | -- |
|
||||
| 213 | Q87 | record | 13813-13830 | 8600 | cont: DONE | **Q87 — DONE (volt, 2026-10-31, at the commit this record lands in; forge lane by authorship, unclaimed and taken). The lane's 39 committed verifiers were run by nothing, and the count had moved 34 → … | -- |
|
||||
| 214 | Q136 | record | 13831-13845 | 6974 | record: BOLD-LEAD | **Q136 — OPENED and REPAIRED in the same tick (volt, 2026-10-31, at `3612c56` and the commit this record lands in; spark lane by authorship, unclaimed and taken). The spark lane's word-frequency cell … | -- |
|
||||
|
||||
## Ids with no `## ` heading
|
||||
|
||||
@@ -248,7 +249,7 @@ Opened as records inside another section. `line` is the record's own opening lin
|
||||
| Q106 | 13171 | 13171 | 17 | Q105 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q107 | 13189 | 13189 | 18 | Q106 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q108 | 13267 | 13263 | 3 | Q106 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q109 | 13270 | 13270 | 29 | Q104 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q109 | 13270 | 13270 | 30 | Q104 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q110 | 13272 | 13272 | 6 | Q109 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q111 | 13274 | 13274 | 8 | Q110 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q112 | 13276 | 13276 | 7 | Q111 | BULLET+BOLD | BOLD-LEAD |
|
||||
@@ -270,9 +271,10 @@ 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 | 1 | Q129 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q131 | 13689 | 13685 | 2 | Q115 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q133 | 13731 | 13731 | 2 | Q90 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q133 | 13731 | 13731 | 3 | Q90 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q134 | 13752 | 13752 | 1 | Q133 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q135 | 13797 | 13797 | 1 | Q114 | BULLET+BOLD | BOLD-LEAD |
|
||||
| Q136 | 13831 | 13831 | 1 | Q87 | BULLET+BOLD | BOLD-LEAD |
|
||||
|
||||
**Not in this document.** Ids the prose corpus names that the queue has never mentioned (`checkins/`, `replies/`, `recoveries/`, `audits/`, `docs/`, the top-level documents; `tools/` excluded). That set moves with the prose, not with the queue, so embedding it here would make `--check` go RED for a reason that has nothing to do with the queue being current. It is reported on demand: `python3 tools/queue_index.py --outside`.
|
||||
|
||||
@@ -1780,17 +1782,30 @@ The block below is the parse this document renders, byte for byte. `--check` com
|
||||
"title": "**Q135 \u2014 OPENED and REPAIRED in the same tick (volt, 2026-10-31, at the commit this record lands in; ledger lane by authorship, unclaimed and taken). The census this queue keeps as its table was red \u2026"
|
||||
},
|
||||
{
|
||||
"bytes": 8599,
|
||||
"end_line": 13829,
|
||||
"bytes": 8600,
|
||||
"end_line": 13830,
|
||||
"id": "Q87",
|
||||
"kind": "record",
|
||||
"line": 13813,
|
||||
"lines": 17,
|
||||
"lines": 18,
|
||||
"role": "continuation",
|
||||
"role_detail": "DONE",
|
||||
"status": null,
|
||||
"status_line": null,
|
||||
"title": "**Q87 \u2014 DONE (volt, 2026-10-31, at the commit this record lands in; forge lane by authorship, unclaimed and taken). The lane's 39 committed verifiers were run by nothing, and the count had moved 34 \u2192 \u2026"
|
||||
},
|
||||
{
|
||||
"bytes": 6974,
|
||||
"end_line": 13845,
|
||||
"id": "Q136",
|
||||
"kind": "record",
|
||||
"line": 13831,
|
||||
"lines": 15,
|
||||
"role": "record",
|
||||
"role_detail": "BOLD-LEAD",
|
||||
"status": null,
|
||||
"status_line": null,
|
||||
"title": "**Q136 \u2014 OPENED and REPAIRED in the same tick (volt, 2026-10-31, at `3612c56` and the commit this record lands in; spark lane by authorship, unclaimed and taken). The spark lane's word-frequency cell \u2026"
|
||||
}
|
||||
],
|
||||
"ids_multi_section": {
|
||||
@@ -4685,17 +4700,30 @@ The block below is the parse this document renders, byte for byte. `--check` com
|
||||
"title": "**Q135 \u2014 OPENED and REPAIRED in the same tick (volt, 2026-10-31, at the commit this record lands in; ledger lane by authorship, unclaimed and taken). The census this queue keeps as its table was red \u2026"
|
||||
},
|
||||
{
|
||||
"bytes": 8599,
|
||||
"end_line": 13829,
|
||||
"bytes": 8600,
|
||||
"end_line": 13830,
|
||||
"id": "Q87",
|
||||
"kind": "record",
|
||||
"line": 13813,
|
||||
"lines": 17,
|
||||
"lines": 18,
|
||||
"role": "continuation",
|
||||
"role_detail": "DONE",
|
||||
"status": null,
|
||||
"status_line": null,
|
||||
"title": "**Q87 \u2014 DONE (volt, 2026-10-31, at the commit this record lands in; forge lane by authorship, unclaimed and taken). The lane's 39 committed verifiers were run by nothing, and the count had moved 34 \u2192 \u2026"
|
||||
},
|
||||
{
|
||||
"bytes": 6974,
|
||||
"end_line": 13845,
|
||||
"id": "Q136",
|
||||
"kind": "record",
|
||||
"line": 13831,
|
||||
"lines": 15,
|
||||
"role": "record",
|
||||
"role_detail": "BOLD-LEAD",
|
||||
"status": null,
|
||||
"status_line": null,
|
||||
"title": "**Q136 \u2014 OPENED and REPAIRED in the same tick (volt, 2026-10-31, at `3612c56` and the commit this record lands in; spark lane by authorship, unclaimed and taken). The spark lane's word-frequency cell \u2026"
|
||||
}
|
||||
],
|
||||
"nested": [
|
||||
@@ -4884,7 +4912,7 @@ The block below is the parse this document renders, byte for byte. `--check` com
|
||||
"form": "BOLD-LEAD",
|
||||
"id": "Q109",
|
||||
"line": 13270,
|
||||
"refs": 29,
|
||||
"refs": 30,
|
||||
"section": "Q104",
|
||||
"shape": "BULLET+BOLD"
|
||||
},
|
||||
@@ -5082,7 +5110,7 @@ The block below is the parse this document renders, byte for byte. `--check` com
|
||||
"form": "BOLD-LEAD",
|
||||
"id": "Q133",
|
||||
"line": 13731,
|
||||
"refs": 2,
|
||||
"refs": 3,
|
||||
"section": "Q90",
|
||||
"shape": "BULLET+BOLD"
|
||||
},
|
||||
@@ -5103,6 +5131,15 @@ The block below is the parse this document renders, byte for byte. `--check` com
|
||||
"refs": 1,
|
||||
"section": "Q114",
|
||||
"shape": "BULLET+BOLD"
|
||||
},
|
||||
{
|
||||
"first_mention": 13831,
|
||||
"form": "BOLD-LEAD",
|
||||
"id": "Q136",
|
||||
"line": 13831,
|
||||
"refs": 1,
|
||||
"section": "Q87",
|
||||
"shape": "BULLET+BOLD"
|
||||
}
|
||||
],
|
||||
"preamble": {
|
||||
@@ -5110,9 +5147,9 @@ The block below is the parse this document renders, byte for byte. `--check` com
|
||||
"end_line": 8,
|
||||
"line": 1
|
||||
},
|
||||
"queue_bytes": 2268329,
|
||||
"queue_lines": 13829,
|
||||
"queue_sha256": "ecf74b08b6aaa77e155cf0793fafc567ad2af428588ef92363c0adda9dcfb9f7",
|
||||
"queue_bytes": 2275304,
|
||||
"queue_lines": 13845,
|
||||
"queue_sha256": "e8a496a3a633768d86cc52abce9061cf2b8b001da98e31471d4adb4ad906a014",
|
||||
"sections": [
|
||||
{
|
||||
"bytes": 3139,
|
||||
|
||||
Reference in new issue
Block a user