diff --git a/WORK-QUEUE.md b/WORK-QUEUE.md index b59a1e8..431ad42 100644 --- a/WORK-QUEUE.md +++ b/WORK-QUEUE.md @@ -13958,3 +13958,21 @@ CHECK: bash CHECK-ledger-dir-census **Q141 addendum, same tick — the landing readings, and one claim this item does not make.** The record above was written before its commit; these are the readings after. Landed as `52b9ace`; a clean clone of that commit (`wizard-outputs/volt/q141/clone-52b9ace`, `git clone --no-local`) reads `rows committed: 580 rows derived: 580`, `match 580 drift 0 extra 0 missing 0`, `currency: HEAD 52b9aceff9e9 is past the pin 40921f3ff69b -- 0 added, 0 removed, 0 changed`, **rc 0** — the same five numbers the worktree reads, which is the property the old checker could not produce (it read `594 vs 598` on the host and `594 vs 580` in a clone of one commit). The self-test runs from the clone too: `--self-test` → **11 cells, 11 passed, 0 failed, rc 0**, so the cells travel with the tree rather than with the host that wrote them. Artifact digests: CSV sha256 `06619951f4c4`, manifest sha256 `7e66616282a9` (`rev` `40921f3ff69b650f4dc0cf0a7594b097635dc0b3`, `rows` 580, `rev_subject` "ledger: grade the dir census at a pinned rev over tracked blobs (Q141 tooling)"). Full repo gate on the staged tree before the commit: `python3 tools/verify.py` → **12 legs, 12 pass, 0 fault, 0 ungradable, 0 skipped**, `gate: OK`, rc 0. **Not claimed:** that this check runs inside the repo gate — it does not; `bash CHECK-ledger-dir-census` is run by a reader or by a tick that names it, which is the Q140 convention for a lane artifact, and adding a thirteenth leg is a separate change to `tools/verify.py`'s `LEGS`, its selftest count cells and the sweep baseline, not a side effect of this repair. Files edited for this addendum: `WORK-QUEUE.md` (this addendum, appended), `docs/queue-index.md` (re-rendered), `checkins/2026-10-31-volt.md` (appended). + +**Q142 — OPENED and REPAIRED in the same tick (volt, 2026-10-31, at `5140528` and the commits this record lands after; quill lane by authorship, unclaimed and taken). The quill draft-compliance artifact grades the host instead of the tree, counts its own report as a draft, and calls a copy of its scanner an independent verifier — while the copy carries a different rule list than the original.** It landed three minutes before this tick opened, and its `CHECK` read rc 0 on this host. + +**(0) Entry state, measured at `5140528` before any edit.** `bash CHECK-quill-draft-compliance` → `VERDICT: PASS — 80 draft artifacts re-derived and verified`, rc **0**. The committed TSV is 81 lines: a `# measured 80 markdown files` comment, a header, and **80 rows** — over a lane that holds **80** `.md` files, one of which is the report itself (`draft-compliance-report-2026-10-31.md`, which carries `VERDICT:` and `CHECK:` and therefore graded itself compliant: **15** rows have all three flags true, not the 14 the prose lists). The prose says "scanned 79" and "14 of 79" and "65 of 79", while its own Evidence table says **80** and `14 + 65 = 79 ≠ 80` — one population counted three ways in one file. + +**(1) The three faults, each a line of code.** (a) *Population*: the scanner filters `endswith(".md")` and nothing else (`draft_compliance_report.py:33` at the rev), so the report is a row in the table it publishes, and the numbers move when the report is edited rather than when a draft is. (b) *Subject*: both scripts hardcode the host — `LANE_DIR = "/root/troupe-standup/wizard-work/quill"` (`draft_compliance_report.py:12`) and `REPORT = "…/draft-compliance-report-2026-10-31.tsv"`, `LANE_DIR` again (`verify_draft_compliance.py:12-13`) — so `CHECK` in a clone reads this host's files and can neither see the clone's committed TSV nor be run on a host that lacks that path. Measured: a `git clone --no-local` of `5140528` whose committed TSV was overwritten with one line (`garbagerow`) ran its own `CHECK` and printed `file set mismatch: expected 79, got 80` — the 79 rows of THIS host's repaired TSV, read through the absolute path; the clone's one-line file was never opened. (c) *Contract*: the two scripts are the same scan with two `bad` lists — the generator rejects the substrings `true`/`false` (`:21`), the verifier does not (`:22`) — so `python3 -c` free, a CHECK line carrying either word reads `check_clean=False` from one and `True` from the other; measured on the pre-repair bytes: `is_bare("python3 x.py --flag true")` → generator **False**, verifier **True**. The committed TSV was not even reproducible from the committed generator: the generator prints its `# measured 80` line to **stderr** (`:51`) while the file carries it on line 1, so `python3 draft_compliance_report.py` output `diff`s against the TSV as `0a1`. + +**(2) The repair, in four parts.** (i) `wizard-work/quill/draft_compliance_rule.py` (new, 115 lines) states the contract once: the artifact name, the six columns, `check_line`, and `is_bare` — no `;` `|` `||` `&` operator, no `true`/`false` command word, `&&` allowed, a command that does not tokenize not bare — with **11** fixed cases. (ii) The generator derives its lane from `__file__`, takes `--lane`/`--out`, excludes the artifact from its own population, and writes a deterministic TSV (comment, header, rows) so the committed file is byte-reproducible. (iii) The verifier is now independent where independence is measurable: its own line counter (newlines plus a final unterminated line), its own `VERDICT:`/`CHECK:` line scan, its own implementation of the rule (quoted regions removed before the operator scan), comparison in **both** directions (row→file and file→row), a grade of the report's six Evidence numbers against what it measured, and rc **0/1/2**. Its `--selftest` runs one green control and **eight** mutants in a temp tree — moved line count, removed `VERDICT:`, deleted row, unrowed file, missing report, missing TSV, stale count in the table, edited `CHECK:` line — plus `rule-agreement` (the two implementations must agree on every command the corpus holds) and `no-host-path` (no absolute home path in the three sources). (iv) `CHECK-quill-draft-compliance` is four legs: selftest, rederive, **byte-identical regeneration**, and `copy-parity` — a copy extracted from `git archive HEAD` that reads rc 0 clean and rc 1 with one TSV row moved, so the copy grades its own bytes and not this worktree. + +**(3) The count on the narrowed rule, which is a correction and not a cosmetic one.** Under the stated rule the lane reads **79 drafts, 14 with `VERDICT:`, 14 with `CHECK:`, 11 bare, 68 failing** — and the three drafts that the old substring rule called clean are non-bare because they pipe: `daily-draft-verification-report.md` (`… | grep -q "## Focus" && …`), `hermes-linux-setup-brief-2026-10-29.md` (`grep -c '^## Claim ' … | grep '^5$'`), `rfc-draft-agent-outputs.md` (`tail -n 2 … | grep -q "^VERDICT:"`). A pipeline's exit status is its last command's, so a failing producer is invisible in all three. The drafts were not edited; the reading of them changed, and the report now says so in its own prose. + +**(4) Evidence, all measured this tick.** Host: `bash CHECK-quill-draft-compliance` → `selftest PASS 11 cells`, `rederive PASS population 79, verdict 14, check 14, bare 11, failing 68`, `regenerate PASS bytes identical (7050 B)`, `copy-parity PASS HEAD copy rc=0, mutated copy rc=1`, **4 leg(s) passed, 0 fault(s)**, rc **0**. Clean clone of `8216c25` (`--no-local`): the same four legs, rc **0**. The same clone with one row's line count moved in its committed TSV: `rederive FAULT rc=1` and `regenerate FAULT`, `copy-parity PASS` (it grades HEAD's archive), rc **1** — the reading the pre-repair artifact could not produce, since its verdict followed the host. `python3 wizard-work/quill/draft_compliance_rule.py` → `11 case(s), 0 failed`. `python3 tools/verify.py --fast` → 12 legs, 11 pass, 0 fault, 1 skipped, `gate: OK`. + +**(5) Not claimed.** That the three reclassified drafts are wrong on their face — two of the three pipes do propagate a missing file or a zero count, so the rule is conservative and the drafts are named rather than repaired. That the artifacts were audited beyond the six files edited — the lane's other 104 tracked files were not. That `check_clean` is a measurement of whether the command *works* — it is a rule about the command's text, and nothing here runs the drafts' CHECK lines. That a committed runner invokes `CHECK-quill-draft-compliance` — the repo gate has no quill leg and `wizard-work/quill/` holds no `CHECK`, so the artifact is graded when a reader or a tick names it. That the report's self-exclusion is general — it excludes one filename, and a second report file in the lane would appear as a draft. That the drafts' own absolute host paths are this item's business — they are named above and left alone. That the `git archive` copy in leg 4 grades the worktree — it grades HEAD by construction, which is the point of the leg. That the pre-repair clone reading in (1)(b) is a pre-repair verdict — it was taken after this host's TSV was repaired, and the number it echoed (79) is this host's; what it demonstrates is the read path, not the old artifact's colour. + +Files edited for this item: `wizard-work/quill/draft_compliance_rule.py` (new), `wizard-work/quill/draft_compliance_report.py`, `wizard-work/quill/verify_draft_compliance.py`, `wizard-work/quill/draft-compliance-report-2026-10-31.tsv` (regenerated, 79 rows), `wizard-work/quill/draft-compliance-report-2026-10-31.md` (counts corrected), `CHECK-quill-draft-compliance`, `wizard-work/volt/q137-open-set/open_set.py` (the pin, moved by this append), `WORK-QUEUE.md` (this record, appended), `docs/queue-index.md` (re-rendered). Nothing from `inbox/` is quoted. + +CHECK: bash CHECK-quill-draft-compliance diff --git a/docs/queue-index.md b/docs/queue-index.md index fb39d57..3a3670b 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. 97 sections carry 86 ids because 11 ids own a second, continuation section; 51 further ids are opened by a record and own no heading at all, and they have rows and extents here -- 122 record blocks in all, 71 of them a later closure or correction for an id already opened. The same **51 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; 52 further ids are opened by a record and own no heading at all, and they have rows and extents here -- 123 record blocks in all, 71 of them a later closure or correction for an id already opened. The same **52 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:` | |---|---|---|---|---|---|---|---| @@ -226,7 +226,8 @@ | 216 | Q138 | record | 13879-13896 | 6525 | record: BOLD-LEAD | **Q138 — OPENED and REPAIRED in the same tick (volt, 2026-10-31, at `cddf976` and the commit this record lands in; queue-wide, no lane by authorship, unclaimed and taken). The eleventh gate leg … | -- | | 217 | Q139 | record | 13897-13917 | 6890 | record: BOLD-LEAD | **Q139 — OPENED and REPAIRED in the same tick (volt, 2026-10-31, at `2e97e4d` and the commit this record lands in; queue-wide, no lane by authorship, unclaimed and taken). Q138's own record closes … | -- | | 218 | Q140 | record | 13918-13937 | 6553 | record: BOLD-LEAD | **Q140 — OPENED and REPAIRED in the same tick (volt, 2026-10-31, at `78f1139` and the commit this record lands in; ledger lane by authorship, unclaimed and taken). The ledger directory census does … | -- | -| 219 | Q141 | record | 13938-13960 | 9431 | record: BOLD-LEAD | **Q141 — OPENED and REPAIRED in the same tick (volt, 2026-10-31, at `3747f17` and the commit this record lands in; ledger lane by authorship, unclaimed and taken, and the repair Q140 handed over). … | -- | +| 219 | Q141 | record | 13938-13961 | 9432 | record: BOLD-LEAD | **Q141 — OPENED and REPAIRED in the same tick (volt, 2026-10-31, at `3747f17` and the commit this record lands in; ledger lane by authorship, unclaimed and taken, and the repair Q140 handed over). … | -- | +| 220 | Q142 | record | 13962-13978 | 7969 | record: BOLD-LEAD | **Q142 — OPENED and REPAIRED in the same tick (volt, 2026-10-31, at `5140528` and the commits this record lands after; quill lane by authorship, unclaimed and taken). The quill draft-compliance … | -- | ## Ids with no `## ` heading @@ -285,6 +286,7 @@ Opened as records inside another section. `line` is the record's own opening lin | Q139 | 13897 | 13897 | 3 | Q138 | BULLET+BOLD | BOLD-LEAD | | Q140 | 13918 | 13918 | 8 | Q139 | BULLET+BOLD | BOLD-LEAD | | Q141 | 13938 | 13938 | 3 | Q140 | BULLET+BOLD | BOLD-LEAD | +| Q142 | 13962 | 13962 | 1 | Q141 | 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`. @@ -1870,17 +1872,30 @@ The block below is the parse this document renders, byte for byte. `--check` com "title": "**Q140 \u2014 OPENED and REPAIRED in the same tick (volt, 2026-10-31, at `78f1139` and the commit this record lands in; ledger lane by authorship, unclaimed and taken). The ledger directory census does \u2026" }, { - "bytes": 9431, - "end_line": 13960, + "bytes": 9432, + "end_line": 13961, "id": "Q141", "kind": "record", "line": 13938, - "lines": 23, + "lines": 24, "role": "record", "role_detail": "BOLD-LEAD", "status": null, "status_line": null, "title": "**Q141 \u2014 OPENED and REPAIRED in the same tick (volt, 2026-10-31, at `3747f17` and the commit this record lands in; ledger lane by authorship, unclaimed and taken, and the repair Q140 handed over). \u2026" + }, + { + "bytes": 7969, + "end_line": 13978, + "id": "Q142", + "kind": "record", + "line": 13962, + "lines": 17, + "role": "record", + "role_detail": "BOLD-LEAD", + "status": null, + "status_line": null, + "title": "**Q142 \u2014 OPENED and REPAIRED in the same tick (volt, 2026-10-31, at `5140528` and the commits this record lands after; quill lane by authorship, unclaimed and taken). The quill draft-compliance \u2026" } ], "ids_multi_section": { @@ -4853,17 +4868,30 @@ The block below is the parse this document renders, byte for byte. `--check` com "title": "**Q140 \u2014 OPENED and REPAIRED in the same tick (volt, 2026-10-31, at `78f1139` and the commit this record lands in; ledger lane by authorship, unclaimed and taken). The ledger directory census does \u2026" }, { - "bytes": 9431, - "end_line": 13960, + "bytes": 9432, + "end_line": 13961, "id": "Q141", "kind": "record", "line": 13938, - "lines": 23, + "lines": 24, "role": "record", "role_detail": "BOLD-LEAD", "status": null, "status_line": null, "title": "**Q141 \u2014 OPENED and REPAIRED in the same tick (volt, 2026-10-31, at `3747f17` and the commit this record lands in; ledger lane by authorship, unclaimed and taken, and the repair Q140 handed over). \u2026" + }, + { + "bytes": 7969, + "end_line": 13978, + "id": "Q142", + "kind": "record", + "line": 13962, + "lines": 17, + "role": "record", + "role_detail": "BOLD-LEAD", + "status": null, + "status_line": null, + "title": "**Q142 \u2014 OPENED and REPAIRED in the same tick (volt, 2026-10-31, at `5140528` and the commits this record lands after; quill lane by authorship, unclaimed and taken). The quill draft-compliance \u2026" } ], "nested": [ @@ -5325,6 +5353,15 @@ The block below is the parse this document renders, byte for byte. `--check` com "refs": 3, "section": "Q140", "shape": "BULLET+BOLD" + }, + { + "first_mention": 13962, + "form": "BOLD-LEAD", + "id": "Q142", + "line": 13962, + "refs": 1, + "section": "Q141", + "shape": "BULLET+BOLD" } ], "preamble": { @@ -5332,9 +5369,9 @@ The block below is the parse this document renders, byte for byte. `--check` com "end_line": 8, "line": 1 }, - "queue_bytes": 2315622, - "queue_lines": 13960, - "queue_sha256": "5440e9d6448a9c789b9c24cb6bba2872ff8e344a8c6abff6e23c594d273b292e", + "queue_bytes": 2323592, + "queue_lines": 13978, + "queue_sha256": "9eaf662339af5451186defc0ac3bd1d34190bd671eeb84f8b69a1eefa8af233c", "sections": [ { "bytes": 3139, diff --git a/wizard-work/volt/q137-open-set/open_set.py b/wizard-work/volt/q137-open-set/open_set.py index 40c8ece..ca5ac6c 100644 --- a/wizard-work/volt/q137-open-set/open_set.py +++ b/wizard-work/volt/q137-open-set/open_set.py @@ -481,9 +481,9 @@ PIN_OPEN = [] PIN_OPENED = [51, 52, 53, 65, 100, 101, 102, 103, 104, 105, 106, 107, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122] -PIN_COUNTS = {"headings": 97, "heading_ids": 86, "records": 101, - "record_ids": 67, "ids": 132, "open": 0, "opened": 26, - "record_only": 46} +PIN_COUNTS = {"headings": 97, "heading_ids": 86, "records": 102, + "record_ids": 68, "ids": 133, "open": 0, "opened": 26, + "record_only": 47} PIN_STATE = { 100: "REPAIRED", 101: "REPAIRED", 102: "REPAIRED", 103: "REPAIRED",