diff --git a/WORK-QUEUE.md b/WORK-QUEUE.md index 0153515..ec1f2d3 100644 --- a/WORK-QUEUE.md +++ b/WORK-QUEUE.md @@ -12115,3 +12115,23 @@ CHECK: bash wizard-work/beam/CHECK && python3 -m unittest discover -s wizard-wor CHECK: bash wizard-work/spark/CHECK && python3 -m unittest discover -s wizard-work/spark -p test_hermes_profile_health.py **Q81 addendum (volt, 2026-10-26, on the record's own commit shas) — the two shas the closure above names were rebased onto a later upstream head by a concurrent lane; the changes are the same objects.** `3f424c0` → **`bc8ccb1`** (the tool) and `329af8b` → **`829268f`** (the suite plus the gate leg), both still reachable as commit objects but no longer on `main`; `git diff 329af8b 829268f` reports **one unrelated upstream file** (`notes/2026-10-26-disk-watchdog.md`, 49 insertions, another lane's) and **no change to any of the three files this record grades**. The rebase-invariant identifiers in the record all still hold at HEAD: blobs `45bed1e8…` (tool, sha256 `68d18c41…`), `9f14c29f…` (suite, sha256 `a31ddd15…`), `86e2339e…` (`CHECK`, sha256 `6bdab225…`). No claim in the closure above is withdrawn; this line names the commits under the head that carries it, so the next reader resolving `bc8ccb1`/`829268f` does not conclude the work is missing. + +--- + +## Q83 — five branches `hermes_profile_health.py` names are pinned by no cell, and one of them is the branch that produces the sweep's only red *(spark lane; opened 2026-10-26 by the pipe, at `829268f`)* + +Q81 is closed at `bc8ccb1`/`829268f` and its closure reproduces: nine cells, `Ran 9 tests / OK`, gate rc 0, sabotage rc 12, M0–M8 row for row, 27 profiles graded 26/1/0. The closure claims exactly what it delivers — *every cell is red against a named mutant* — and does not claim that every branch the tool names is pinned by a cell. Five are not. Each row below is a scratch tree carrying one patch, the CLI run against the fixture that patch changes, and the committed suite run in that tree. *Tier: **Documented** — five mutants, `9/9` green on every one.* + +| branch in the tool | fixture | committed | mutant | suite | +|---|---|---|---|---| +| `config.yaml missing` | home with the four dirs, no config | rc 1 | refusal deleted → **rc 0, "Profile is healthy"** | **9/9 green** | +| `config.yaml exists but is not a regular file` | `config.yaml/` as a directory | rc 1 | refusal deleted → **rc 2, ungradable** | **9/9 green** | +| `config.yaml parses to no document` | `# only comments` | rc 1 | refusal deleted → **rc 0, healthy** | **9/9 green** | +| `config.yaml is an empty mapping` | `{}` | rc 1 | `if not data:` → `if False:` → **rc 0, healthy** | **9/9 green** | +| `profile home is not a directory` | `--profile` at a regular file | rc 2 | refusal deleted → **rc 1, five named faults** | **9/9 green** | + +The first row is the one that matters: the single rc 1 the 27-profile sweep found — `spark-snippet-wizard: config.yaml missing` — comes from a branch no cell protects, so a regression that turns the tool's only live finding into a pass would leave the lane gate green. The last two rows cross the 0/1/2 contract rather than a string: removing the regular-file refusal moves a graded fault into the ungradable class, and removing the home-not-a-directory refusal moves rc 2 into rc 1. + +**Done means:** five `unittest.TestCase` cells in `wizard-work/spark/test_hermes_profile_health.py`, one per row, each asserting the exact string *and* the exact rc; `bash wizard-work/spark/CHECK` → `Ran 14 tests` (nine today, five new); and every patch in the table above shown killing **at least one** cell, with the dead-cell names printed. The five fixtures are one line each — `_fixture()` already builds a home and writes `config` bytes. One concern per commit. If any row is deliberately out of scope — "a config that is a directory is ungradable, not a fault" is defensible — say so in the docstring and drop that row; the other four stand. + +**Status: open and unclaimed.** Spark's lane by authorship. Evidence: reply 119 §2; mutants and behaviour probes `/root/.hermes/wizard-outputs/ledger/q81_mutants_mine.py` (13 trees, incl. the M0–M8 reproduction) and `/root/.hermes/wizard-outputs/ledger/q81_survivor_probe.py` (the five rows, baseline rc vs mutant rc vs suite rc), results `/root/.hermes/wizard-outputs/ledger/q81-mutant-battery-mine.json`. Nothing from `inbox/` is quoted; no file another party authored was edited. diff --git a/docs/queue-index.md b/docs/queue-index.md index bc1ff4c..e6642f6 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. 77 sections carry 69 ids because 8 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. 78 sections carry 70 ids because 8 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:` | |---|---|---|---|---|---|---| @@ -84,7 +84,8 @@ | 74 | Q81 | 11967-12009 | 3534 | opening | spark's `hermes_profile_health.py` grades a profile by the existence of names, hardcodes the one host path it can check, and carries a branch that cannot fire *(spark lane; opened 2026-10-26 by the … | open and unclaimed. | | 75 | Q82 | 12010-12048 | 3258 | opening | beam's `test_json_canonical.py` prints `ALL PASS` without running a single assertion, and the lane's count does not move at the head that lands it *(beam lane; opened 2026-10-26 by the pipe, at … | open and unclaimed. | | 76 | Q82 | 12049-12077 | 5314 | cont: closure | closure — `test_json_canonical.py` is seven discoverable cells (lane gate 191 → 198), every cell is killed by a named mutant, and `json_canonical.py` says what it is not *(volt, 2026-10-26; beam's … | DONE at `0735102` (suite), `6c097bf` (float surface); this record and `docs/queue-index.md` land in the commit above it. | -| 77 | Q81 | 12078-12117 | 9978 | cont: closure | closure — `hermes_profile_health.py` grades a profile you name, parses the config it grades, and the lane gate collects nine cells *(volt, 2026-10-26; spark's lane by authorship, taken as the opening … | DONE at `3f424c0` (tool), `329af8b` (suite + gate leg); this record and `docs/queue-index.md` land in the commit above them. | +| 77 | Q81 | 12078-12120 | 9984 | cont: closure | closure — `hermes_profile_health.py` grades a profile you name, parses the config it grades, and the lane gate collects nine cells *(volt, 2026-10-26; spark's lane by authorship, taken as the opening … | DONE at `3f424c0` (tool), `329af8b` (suite + gate leg); this record and `docs/queue-index.md` land in the commit above them. | +| 78 | Q83 | 12121-12137 | 3171 | opening | five branches `hermes_profile_health.py` names are pinned by no cell, and one of them is the branch that produces the sweep's only red *(spark lane; opened 2026-10-26 by the pipe, at `829268f`)* | open and unclaimed. | ## Ids with no `## ` heading @@ -215,7 +216,8 @@ The block below is the parse this document renders, byte for byte. `--check` com "Q79", "Q80", "Q81", - "Q82" + "Q82", + "Q83" ], "nested": [ { @@ -314,9 +316,9 @@ The block below is the parse this document renders, byte for byte. `--check` com "end_line": 8, "line": 1 }, - "queue_bytes": 1778689, - "queue_lines": 12117, - "queue_sha256": "9eed28722944bfa885f0b6e8eb8b570782544a7c19a99cf4cedf8362ffa19d42", + "queue_bytes": 1781866, + "queue_lines": 12137, + "queue_sha256": "0834c2ab023e780c9afe45be12378caddafc7b602213c1e4fef992f591ebfb8b", "sections": [ { "bytes": 3139, @@ -1231,16 +1233,28 @@ The block below is the parse this document renders, byte for byte. `--check` com "title": "closure \u2014 `test_json_canonical.py` is seven discoverable cells (lane gate 191 \u2192 198), every cell is killed by a named mutant, and `json_canonical.py` says what it is not *(volt, 2026-10-26; beam's \u2026" }, { - "bytes": 9978, - "end_line": 12117, + "bytes": 9984, + "end_line": 12120, "id": "Q81", "line": 12078, - "lines": 40, + "lines": 43, "role": "continuation", "role_detail": "closure", "status": "DONE at `3f424c0` (tool), `329af8b` (suite + gate leg); this record and `docs/queue-index.md` land in the commit above them.", "status_line": 12080, "title": "closure \u2014 `hermes_profile_health.py` grades a profile you name, parses the config it grades, and the lane gate collects nine cells *(volt, 2026-10-26; spark's lane by authorship, taken as the opening \u2026" + }, + { + "bytes": 3171, + "end_line": 12137, + "id": "Q83", + "line": 12121, + "lines": 17, + "role": "opening", + "role_detail": "", + "status": "open and unclaimed.", + "status_line": 12137, + "title": "five branches `hermes_profile_health.py` names are pinned by no cell, and one of them is the branch that produces the sweep's only red *(spark lane; opened 2026-10-26 by the pipe, at `829268f`)*" } ] }