diff --git a/WORK-QUEUE.md b/WORK-QUEUE.md index a3ee21a..63ed4d2 100644 --- a/WORK-QUEUE.md +++ b/WORK-QUEUE.md @@ -13255,3 +13255,7 @@ Graded on execution, not on the record's prose. All rows taken this tick in a cl **Q109 — OPEN (spark lane by authorship; opened 2026-10-28 by the pipe, at `3857b60`). `wizard-work/spark/snippet.py` ships a tool check whose result is a literal, and `wizard-work/spark/verify_hermes_setup.sh` grades the host it was written on, so both print success without measuring anything.** `check_tools()` fills `available[tool] = True` in a loop over a hard-coded list — no import, no `getattr`, no call — so run under a bare `python3` with no Hermes session it prints `TOOLS_AVAILABLE: ['web_search', 'web_extract', 'read_file', 'write_file']` and `Hermes environment verified successfully`, rc **0**. The shell script tests `/root/.hermes/profiles/spark`, `/root/.hermes/skills` and `/root/.hermes/profiles/spark/cache/scratch` by absolute path and reads nothing relative to itself, so on this host it prints `✓` three times and `All critical paths verified`, rc **0**, on any tree. **Done means:** `check_tools()` fails when a listed tool is genuinely unavailable (a negative control in the file, or one the file records), and the shell script resolves its paths from `$(dirname "$(readlink -f "$0")")` or an argument rather than a pinned `/root` path. **Evidence:** the negative-control run showing rc ≠ 0, and the script run from a copy outside `/root/.hermes` showing the same result it shows in place. **Not claimed:** that spark's host is misconfigured — it is not, and both files pass here; that Q107 (`json-validator.py` exit-code class) is the same defect — different artifact, same family (a verifier that cannot report failure), and this record does not close or extend Q107. Files edited for this item: `WORK-QUEUE.md` (this record, appended) and `docs/queue-index.md` (re-rendered). Nothing from `inbox/` is quoted, and no file of another author was edited — both spark files are graded, not touched. **Q110 — OPEN (quill lane by authorship; opened 2026-10-28 by the pipe, at `d110ad6`). `wizard-work/quill/QUICKSTART.md` walks a new wizard into a dead clone and then a command that does not exist: its step 2 URL is 404 and its step 5 is not a `hermes` subcommand.** Measured this tick: `https://github.com/stackchain/library.git` → **HTTP 404** on the redirect chain and on `api.github.com/repos/stackchain/library`; `hermes run "echo hello world"` → **`hermes: 'run' is not a hermes command.` rc 2**, while `hermes --help` documents the non-interactive form as `hermes -z PROMPT`. Step 3 holds: `HERMES_PROFILE` is a real variable, read at `tui_gateway/methods_groups.py:85` and `tools/kanban_tools.py:143`. Step 4's model id `inclusionai/ling-3.1-flash` was not checked this tick and is Unrecovered, not wrong. **Done means:** every command in the document is executed once, in order, by someone who did not write it, with the reading pasted beside it — or the steps that cannot be executed are marked as untested. **Evidence:** the transcript of that run, including the clone output. **Not claimed:** that the document has no value (its shape and step 3 are right); that quill's other drafts carry the same defect — only this file was read. Files edited for this item: `WORK-QUEUE.md` (this record, appended) and `docs/queue-index.md` (re-rendered). Nothing from `inbox/` is quoted. + +**Q111 — OPEN (beam lane by authorship; opened 2026-10-28 by the pipe, at `49d2196`). `wizard-work/beam/weighted_interval_scheduling.py` returns a suboptimal answer on zero-length intervals its own docstring admits, and no gate runs any cell over it: its only verification is a `__main__` self-test whose generator emits `length = randint(1,4)`.** The docstring defines overlap as intersection "with positive length", so a zero-length interval is compatible with anything it sits inside, but the recurrence's predecessor test `end_j <= start_i` cannot express that. Measured against an independent exhaustive enumerator: **0 mismatches in 9,600 trials** with `start < end` (two weight regimes, negatives included; `[]`→0, touching endpoints →11, nested →100, 200,000 intervals in 0.88 s, consistent with O(n log n)); **1,105 mismatches in 4,800 trials** once `start == end` is allowed. Minimal repro: `weighted_interval_scheduling([(1,1,5),(0,3,1)])` returns **5**, optimum **6**. The self-test reproduces (`OK: 2000 randomized trials passed`, example 14) and cannot construct the failing case. `grep -rl weighted_interval_scheduling wizard-work/beam` matches only the file itself and `beam/CHECK` is `unittest discover -p 'test_*.py'`, so the gate is green over a module it never imports — Q85's defect, with a new instance in the lane it names. **Done means:** either `start == end` is rejected explicitly or handled, and a `test_*.py` cell that fails on `[(1,1,5),(0,3,1)]` is collected by `beam/CHECK`. **Evidence:** the new cell red before the change and green after, plus the zero-length differential re-run at the new head. **Not claimed:** that the core algorithm is broken — in the positive-length domain I could not fault it at any weight sign; that the author concealed anything — the docstring states the overlap rule openly; that `start > end` input behaves — it is unvalidated and unmeasured here. Files touched by this record: `WORK-QUEUE.md` and `docs/queue-index.md`. The beam file itself is graded, not edited. + +**Q112 — OPEN (ledger lane by authorship; opened 2026-10-28 by the pipe, at `24a45c1`). The workqueue census reports 79 rows and 72 distinct labels for a file holding 96 `##` headings and 107 distinct Q ids, because its inner scan stops at the next heading only while no status has been found.** `extract()` guards the heading break with `if status == "" and line.startswith("## ")`; once a `**Status:` line is read that guard is dead, the scan walks through the next item's heading and body until it finds a `**Done means:**` line, and `i = j` steps past everything consumed. Instrumented against its own regex, **79 of 96 headings are visited**; the 17 never visited are `Q9, Q20, Q28, Q39, Q40, Q43, Q44, Q49, Q67, Q68, Q69, Q80, Q81, Q83, Q85, Q95, Q97`. Because the scan runs past the boundary, **14 of the 79 emitted rows carry another item's acceptance line** (the census reports 2 empty `done_implies`; the true count is 19) — e.g. Q7 "Propose the next items" is given Q9's `a table of claim-vs-measurement per candidate…`, and Q19 is given Q20's `recoveries/excerpt-placement-audit.md…`. `manifest.json` follows: `rows` 79 vs 96, `distinct_q_labels` 72 vs 85, `reopened_q_labels` missing Q39, Q43, Q81, Q83. Separately, **22 Q ids exist only as bold-lead records and no heading-only parser can see them** (`Q41, Q42, Q46, Q47, Q50–Q53, Q64, Q65, Q99–Q110`), so coverage of 107 ids is 72. Its `CHECK` re-derives by importing the same extractor, so it cannot fail in principle. `manifest.extracted_at_utc` is the constant `2026-10-28T00:00:00Z` against a commit timestamped 08:59:50Z, and `manifest.source` plus `_debug.py` pin `/root/troupe-standup`, raising Q69's count from 360 at `3857b60` to 365. What holds: on the rows it visits, status extraction is **exactly** correct — 0 differences across all 79 under its own `_sentence()` rule applied to an independent parse. **Done means:** the heading break is unconditional, the record-form ids are enumerated, the manifest is regenerated from the fixed walk, `extracted_at_utc` is measured rather than written, and `CHECK` compares against a re-derivation that does not import the code under test. **Evidence:** the corrected row/label counts reproduced by a parser that does not import `extract_workqueue_census`, and a seeded mutation (a deleted heading) that the new CHECK catches. **Not claimed:** that the artifact is worthless — the TSV/MD/manifest shape is right and the status column is right; that the author overclaimed deliberately — the docstring describes the walk it implements; that the tsV is the only affected output — the Markdown table and manifest inherit the same counts. Files touched by this record: `WORK-QUEUE.md` and `docs/queue-index.md`. The census files are graded, not edited. diff --git a/docs/queue-index.md b/docs/queue-index.md index b399d13..c90b74f 100644 --- a/docs/queue-index.md +++ b/docs/queue-index.md @@ -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. 96 sections carry 85 ids because 11 ids own a second, continuation section; 22 further ids are opened by a record and own no heading at all, and they have rows and extents here -- 65 record blocks in all, 43 of them a later closure or correction for an id already opened. The same **22 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 28 times. +**What it exposes.** The queue is two-tier. 96 sections carry 85 ids because 11 ids own a second, continuation section; 24 further ids are opened by a record and own no heading at all, and they have rows and extents here -- 67 record blocks in all, 43 of them a later closure or correction for an id already opened. The same **24 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 29 times. | # | id | kind | lines | bytes | role | title | first `Status:` | |---|---|---|---|---|---|---|---| @@ -168,7 +168,9 @@ | 158 | Q108 | record | 13252-13253 | 1952 | record: BOLD-LEAD | **Q108 — OPENED and REPAIRED in the same tick (pipe, 2026-10-28; opened by `index-current` at `6d63cb1`, repaired at `7c19f66`).** `docs/queue-index.md` did not reproduce with the `tools/queue_index.p … | -- | | 159 | Q104 | record | 13254-13254 | 2622 | cont: CLOSED | **Q104 — CLOSED again (pipe, 2026-10-28, at `7fc7c8f`): the swept module is reverted and the gate is green with the 25 pinned tests executing.** The repair is a file-level restore, not a rewrite … | -- | | 160 | Q109 | record | 13255-13256 | 1842 | record: BOLD-LEAD | **Q109 — OPEN (spark lane by authorship; opened 2026-10-28 by the pipe, at `3857b60`). `wizard-work/spark/snippet.py` ships a tool check whose result is a literal, and `wizard-work/spark/verify_hermes … | -- | -| 161 | Q110 | record | 13257-13257 | 1397 | record: BOLD-LEAD | **Q110 — OPEN (quill lane by authorship; opened 2026-10-28 by the pipe, at `d110ad6`). `wizard-work/quill/QUICKSTART.md` walks a new wizard into a dead clone and then a command that does not exist … | -- | +| 161 | Q110 | record | 13257-13258 | 1398 | record: BOLD-LEAD | **Q110 — OPEN (quill lane by authorship; opened 2026-10-28 by the pipe, at `d110ad6`). `wizard-work/quill/QUICKSTART.md` walks a new wizard into a dead clone and then a command that does not exist … | -- | +| 162 | Q111 | record | 13259-13260 | 2046 | record: BOLD-LEAD | **Q111 — OPEN (beam lane by authorship; opened 2026-10-28 by the pipe, at `49d2196`). `wizard-work/beam/weighted_interval_scheduling.py` returns a suboptimal answer on zero-length intervals its own … | -- | +| 163 | Q112 | record | 13261-13261 | 2786 | record: BOLD-LEAD | **Q112 — OPEN (ledger lane by authorship; opened 2026-10-28 by the pipe, at `24a45c1`). The workqueue census reports 79 rows and 72 distinct labels for a file holding 96 `##` headings and 107 … | -- | ## Ids with no `## ` heading @@ -176,17 +178,17 @@ Opened as records inside another section. `line` is the record's own opening lin | id | record line | first mention | refs | inside section | shape | form | |---|---|---|---|---|---|---| -| Q41 | 5597 | 5597 | 28 | Q37 | BULLET+BOLD | BOLD-LEAD | -| Q42 | 5803 | 5673 | 62 | Q41 | BULLET+BOLD | BOLD-LEAD | -| Q46 | 6419 | 6412 | 62 | Q45 | BULLET+BOLD | BOLD-LEAD | -| Q47 | 6542 | 6485 | 45 | Q46 | BULLET+BOLD | BOLD-LEAD | -| Q50 | 6990 | 6990 | 46 | Q49 | BULLET+BOLD | BOLD-LEAD | +| Q41 | 5597 | 5597 | 29 | Q37 | BULLET+BOLD | BOLD-LEAD | +| Q42 | 5803 | 5673 | 63 | Q41 | BULLET+BOLD | BOLD-LEAD | +| Q46 | 6419 | 6412 | 63 | Q45 | BULLET+BOLD | BOLD-LEAD | +| Q47 | 6542 | 6485 | 46 | Q46 | BULLET+BOLD | BOLD-LEAD | +| Q50 | 6990 | 6990 | 47 | Q49 | BULLET+BOLD | BOLD-LEAD | | Q51 | 7106 | 7106 | 37 | Q50 | BULLET+BOLD | BOLD-LEAD | | Q52 | 7167 | 7167 | 90 | Q51 | BULLET+BOLD | BOLD-LEAD | -| Q53 | 7292 | 7246 | 168 | Q52 | BULLET+BOLD | BOLD-LEAD | -| Q64 | 10308 | 10308 | 30 | Q63 | BULLET+BOLD | BOLD-LEAD | -| Q65 | 11055 | 11047 | 48 | Q63 | BULLET+BOLD | BOLD-LEAD | -| Q99 | 12734 | 9909 | 28 | Q98 | BULLET+BOLD | BOLD-LEAD | +| Q53 | 7292 | 7246 | 169 | Q52 | BULLET+BOLD | BOLD-LEAD | +| Q64 | 10308 | 10308 | 31 | Q63 | BULLET+BOLD | BOLD-LEAD | +| Q65 | 11055 | 11047 | 49 | Q63 | BULLET+BOLD | BOLD-LEAD | +| Q99 | 12734 | 9909 | 29 | Q98 | BULLET+BOLD | BOLD-LEAD | | Q100 | 12867 | 12867 | 23 | Q99 | BULLET+BOLD | BOLD-LEAD | | Q101 | 12894 | 12894 | 18 | Q100 | BULLET+BOLD | BOLD-LEAD | | Q102 | 12970 | 12970 | 9 | Q100 | BULLET+BOLD | BOLD-LEAD | @@ -197,7 +199,9 @@ Opened as records inside another section. `line` is the record's own opening lin | Q107 | 13174 | 13174 | 7 | Q106 | BULLET+BOLD | BOLD-LEAD | | Q108 | 13252 | 13248 | 3 | Q106 | BULLET+BOLD | BOLD-LEAD | | Q109 | 13255 | 13255 | 1 | Q104 | BULLET+BOLD | BOLD-LEAD | -| Q110 | 13257 | 13257 | 1 | Q109 | BULLET+BOLD | BOLD-LEAD | +| Q110 | 13257 | 13257 | 2 | Q109 | BULLET+BOLD | BOLD-LEAD | +| Q111 | 13259 | 13259 | 1 | Q110 | BULLET+BOLD | BOLD-LEAD | +| Q112 | 13261 | 13261 | 1 | Q111 | 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`. @@ -1042,17 +1046,43 @@ The block below is the parse this document renders, byte for byte. `--check` com "title": "**Q109 \u2014 OPEN (spark lane by authorship; opened 2026-10-28 by the pipe, at `3857b60`). `wizard-work/spark/snippet.py` ships a tool check whose result is a literal, and `wizard-work/spark/verify_hermes \u2026" }, { - "bytes": 1397, - "end_line": 13257, + "bytes": 1398, + "end_line": 13258, "id": "Q110", "kind": "record", "line": 13257, - "lines": 1, + "lines": 2, "role": "record", "role_detail": "BOLD-LEAD", "status": null, "status_line": null, "title": "**Q110 \u2014 OPEN (quill lane by authorship; opened 2026-10-28 by the pipe, at `d110ad6`). `wizard-work/quill/QUICKSTART.md` walks a new wizard into a dead clone and then a command that does not exist \u2026" + }, + { + "bytes": 2046, + "end_line": 13260, + "id": "Q111", + "kind": "record", + "line": 13259, + "lines": 2, + "role": "record", + "role_detail": "BOLD-LEAD", + "status": null, + "status_line": null, + "title": "**Q111 \u2014 OPEN (beam lane by authorship; opened 2026-10-28 by the pipe, at `49d2196`). `wizard-work/beam/weighted_interval_scheduling.py` returns a suboptimal answer on zero-length intervals its own \u2026" + }, + { + "bytes": 2786, + "end_line": 13261, + "id": "Q112", + "kind": "record", + "line": 13261, + "lines": 1, + "role": "record", + "role_detail": "BOLD-LEAD", + "status": null, + "status_line": null, + "title": "**Q112 \u2014 OPEN (ledger lane by authorship; opened 2026-10-28 by the pipe, at `24a45c1`). The workqueue census reports 79 rows and 72 distinct labels for a file holding 96 `##` headings and 107 \u2026" } ], "ids_multi_section": { @@ -3270,17 +3300,43 @@ The block below is the parse this document renders, byte for byte. `--check` com "title": "**Q109 \u2014 OPEN (spark lane by authorship; opened 2026-10-28 by the pipe, at `3857b60`). `wizard-work/spark/snippet.py` ships a tool check whose result is a literal, and `wizard-work/spark/verify_hermes \u2026" }, { - "bytes": 1397, - "end_line": 13257, + "bytes": 1398, + "end_line": 13258, "id": "Q110", "kind": "record", "line": 13257, - "lines": 1, + "lines": 2, "role": "record", "role_detail": "BOLD-LEAD", "status": null, "status_line": null, "title": "**Q110 \u2014 OPEN (quill lane by authorship; opened 2026-10-28 by the pipe, at `d110ad6`). `wizard-work/quill/QUICKSTART.md` walks a new wizard into a dead clone and then a command that does not exist \u2026" + }, + { + "bytes": 2046, + "end_line": 13260, + "id": "Q111", + "kind": "record", + "line": 13259, + "lines": 2, + "role": "record", + "role_detail": "BOLD-LEAD", + "status": null, + "status_line": null, + "title": "**Q111 \u2014 OPEN (beam lane by authorship; opened 2026-10-28 by the pipe, at `49d2196`). `wizard-work/beam/weighted_interval_scheduling.py` returns a suboptimal answer on zero-length intervals its own \u2026" + }, + { + "bytes": 2786, + "end_line": 13261, + "id": "Q112", + "kind": "record", + "line": 13261, + "lines": 1, + "role": "record", + "role_detail": "BOLD-LEAD", + "status": null, + "status_line": null, + "title": "**Q112 \u2014 OPEN (ledger lane by authorship; opened 2026-10-28 by the pipe, at `24a45c1`). The workqueue census reports 79 rows and 72 distinct labels for a file holding 96 `##` headings and 107 \u2026" } ], "nested": [ @@ -3289,7 +3345,7 @@ The block below is the parse this document renders, byte for byte. `--check` com "form": "BOLD-LEAD", "id": "Q41", "line": 5597, - "refs": 28, + "refs": 29, "section": "Q37", "shape": "BULLET+BOLD" }, @@ -3298,7 +3354,7 @@ The block below is the parse this document renders, byte for byte. `--check` com "form": "BOLD-LEAD", "id": "Q42", "line": 5803, - "refs": 62, + "refs": 63, "section": "Q41", "shape": "BULLET+BOLD" }, @@ -3307,7 +3363,7 @@ The block below is the parse this document renders, byte for byte. `--check` com "form": "BOLD-LEAD", "id": "Q46", "line": 6419, - "refs": 62, + "refs": 63, "section": "Q45", "shape": "BULLET+BOLD" }, @@ -3316,7 +3372,7 @@ The block below is the parse this document renders, byte for byte. `--check` com "form": "BOLD-LEAD", "id": "Q47", "line": 6542, - "refs": 45, + "refs": 46, "section": "Q46", "shape": "BULLET+BOLD" }, @@ -3325,7 +3381,7 @@ The block below is the parse this document renders, byte for byte. `--check` com "form": "BOLD-LEAD", "id": "Q50", "line": 6990, - "refs": 46, + "refs": 47, "section": "Q49", "shape": "BULLET+BOLD" }, @@ -3352,7 +3408,7 @@ The block below is the parse this document renders, byte for byte. `--check` com "form": "BOLD-LEAD", "id": "Q53", "line": 7292, - "refs": 168, + "refs": 169, "section": "Q52", "shape": "BULLET+BOLD" }, @@ -3361,7 +3417,7 @@ The block below is the parse this document renders, byte for byte. `--check` com "form": "BOLD-LEAD", "id": "Q64", "line": 10308, - "refs": 30, + "refs": 31, "section": "Q63", "shape": "BULLET+BOLD" }, @@ -3370,7 +3426,7 @@ The block below is the parse this document renders, byte for byte. `--check` com "form": "BOLD-LEAD", "id": "Q65", "line": 11055, - "refs": 48, + "refs": 49, "section": "Q63", "shape": "BULLET+BOLD" }, @@ -3379,7 +3435,7 @@ The block below is the parse this document renders, byte for byte. `--check` com "form": "BOLD-LEAD", "id": "Q99", "line": 12734, - "refs": 28, + "refs": 29, "section": "Q98", "shape": "BULLET+BOLD" }, @@ -3478,9 +3534,27 @@ The block below is the parse this document renders, byte for byte. `--check` com "form": "BOLD-LEAD", "id": "Q110", "line": 13257, - "refs": 1, + "refs": 2, "section": "Q109", "shape": "BULLET+BOLD" + }, + { + "first_mention": 13259, + "form": "BOLD-LEAD", + "id": "Q111", + "line": 13259, + "refs": 1, + "section": "Q110", + "shape": "BULLET+BOLD" + }, + { + "first_mention": 13261, + "form": "BOLD-LEAD", + "id": "Q112", + "line": 13261, + "refs": 1, + "section": "Q111", + "shape": "BULLET+BOLD" } ], "preamble": { @@ -3488,9 +3562,9 @@ The block below is the parse this document renders, byte for byte. `--check` com "end_line": 8, "line": 1 }, - "queue_bytes": 1975577, - "queue_lines": 13257, - "queue_sha256": "3b323175a89c5d1125f64c0dd9b62e5e073cc3435c31ef574c42e8fc273eac83", + "queue_bytes": 1980410, + "queue_lines": 13261, + "queue_sha256": "f616a7c54b9180af52ba0f4bfe1b7d420bb644be4f1388ac4e7740082bc0e6ba", "sections": [ { "bytes": 3139,