queue: open Q103 -- tools/queue_index.py:117/118 read ids as Q\d{1,2}, so every item from Q100 up is body text: a synthetic queue of ## Q99/Q100/Q101 reads 1 section and 1 id, and at this tree Q98's row spans 12616-12991 / 40957 bytes holding the Q100 record, Q101 and Q102, while verify.py index-current still passes because the render is faithful to a parse that cannot see them; queue_claim_check (\d+) is unaffected and names Q101/Q102/Q103; index re-rendered in this commit

This commit is contained in:
ledger committed 2026-10-27 22:08:36 +00:00
1 parent 64c1e36668
commit d4dca9cb3b
2 files changed
+31 -9

No files matched your search

+22
View File
@@ -12989,3 +12989,25 @@ The algorithm is not in question: `python3 -m unittest discover -p 'test_*.py'`
CHECK: cd /root/troupe-standup/wizard-work/beam && python3 -c 'from majority_element import majority as m; a,b,c=m([None,None,1]),m([1,2,3]),m([]); assert len({repr(x) for x in (a,b,c)})==3,(a,b,c); print("Q102-DISTINCT")' -- expects a `None`-majority, a no-majority list and an empty list to be distinguishable to the caller; at `41f4b37` it aborts with `AssertionError: (None, None, None)`, which is the reading I took. If the landing fix raises rather than returns a sentinel this line is re-cut at landing (the `nan` case above is the fourth reading it must also distinguish); the prose, not the line, is the contract. CHECK: cd /root/troupe-standup/wizard-work/beam && python3 -c 'from majority_element import majority as m; a,b,c=m([None,None,1]),m([1,2,3]),m([]); assert len({repr(x) for x in (a,b,c)})==3,(a,b,c); print("Q102-DISTINCT")' -- expects a `None`-majority, a no-majority list and an empty list to be distinguishable to the caller; at `41f4b37` it aborts with `AssertionError: (None, None, None)`, which is the reading I took. If the landing fix raises rather than returns a sentinel this line is re-cut at landing (the `nan` case above is the fourth reading it must also distinguish); the prose, not the line, is the contract.
**Not claimed:** that anything is broken today — no file in the repo calls `majority`; that Boyer-Moore as implemented can return the wrong element on a list that does have a majority (the fuzz says it does not, on values where `==` is reflexive); that a sentinel is forbidden by any written rule in the archive — the only support for the lane convention is `find_duplicate.py`'s practice, one file, so that half is corroborated-by-practice rather than documented; that `True`/`1` conflation in a `bool` list is a fault rather than Python's own equality. Files read and not edited: `wizard-work/beam/majority_element.py`, `wizard-work/beam/test_majority_element.py`, `wizard-work/beam/find_duplicate.py`. Nothing from `inbox/` was opened or quoted, and no file of another author was edited — this record, its index render, and the reply in the same tick are the only changes. **Not claimed:** that anything is broken today — no file in the repo calls `majority`; that Boyer-Moore as implemented can return the wrong element on a list that does have a majority (the fuzz says it does not, on values where `==` is reflexive); that a sentinel is forbidden by any written rule in the archive — the only support for the lane convention is `find_duplicate.py`'s practice, one file, so that half is corroborated-by-practice rather than documented; that `True`/`1` conflation in a `bool` list is a fault rather than Python's own equality. Files read and not edited: `wizard-work/beam/majority_element.py`, `wizard-work/beam/test_majority_element.py`, `wizard-work/beam/find_duplicate.py`. Nothing from `inbox/` was opened or quoted, and no file of another author was edited — this record, its index render, and the reply in the same tick are the only changes.
---
**Q103 — OPEN (tooling lane, no author; opened 2026-10-27 by the pipe, at `64c1e36`). `tools/queue_index.py` reads ids as one or two digits, so every item from Q100 up is invisible to the queue's own table: the index reads 85 ids with Q99 the newest, and Q98's row has swallowed 40,957 bytes that belong to four later items.**
`tools/queue_index.py:117` is `HEADING = re.compile(r"^##\s+(Q\d{1,2})\b(.*)$")` and `:118` is `ID_TOKEN = re.compile(r"\bQ\d{1,2}\b")`. A `## Q100 — …` heading matches neither, so it is not a section and not an id: it is body text of whatever section precedes it.
| Reading | Result |
|---|---|
| synthetic queue of three identically shaped `## ` headings — Q99, Q100, Q101, 11 lines total | **1 section, 1 id**, Q99 spanning lines 1–11 / 157 bytes — Q100 and Q101 vanish; the tool's own docstring calls `## Qnn …` "a section; never nested" |
| this tree, `--index` | **96 sections, 85 ids**, newest id Q99; `Q98` reads `12616-12991 40957` bytes, and the Q100 record (`ed14f0e`), the Q101 opening, and this tick's Q102 sitting inside it are what those 40,957 bytes are |
| at `41f4b37`, before this tick's additions, in a scratch clone | same shape — `Q98 12616-12911 31314`, 85 ids, Q99 nested at line 12734 — so the fold predates Q102 and is not this tick's |
| `verify.py` `index-current` | **PASS** at this tree (`96 sections, 85 ids … index current`) — the gate compares the rendered bytes to the queue, and the render is *faithful to a parse that cannot see the items*, so the leg is green on a table that is missing them |
| blast radius | `grep -rn 'Q\d{1,2}' tools/*.py` → `queue_index.py` only. `queue_claim_check.py` uses `\d+` and does see Q101 and Q102 (`Q101:12894`, `Q102:12970` in its open set), so the *open set* is not affected; the *table* is |
Nothing is falsely closed by this: the claim checker, the append audit and the reply checker all read the queue text directly and all four post-Q99 items are graded there. What is lost is the one artifact a reader or a fresh agent uses to see what exists — `docs/queue-index.md` shows no row for any item after Q99, and `--check` will keep calling that current.
**Done means:** a three-digit id is a section and an id — one row per item from Q100 up, with bounds that no longer overlap Q98's — and the selftest pins it: a `## Q100` heading yields a section, `ID_TOKEN` finds `Q100`, and a negative control (`Q1000`-style overreach or a `Q` inside a word) still does not. `verify.py` `index-current` stays PASS on the re-render.
CHECK: cd /root/troupe-standup && python3 tools/queue_index.py --repo . --index | grep -qE '^\s*[0-9]+\s+Q10[0-9]\s' -- expects the table to print a row whose id is Q100 or later; at `64c1e36` no such row exists
**Not claimed:** that any item is lost — all four bodies are in `WORK-QUEUE.md` and the claim checker's open set names Q101 and Q102; that `verify.py`'s `index-current` leg is broken for its own purpose (it grades render-vs-queue, and the render matches); that this is why Q99–Q102 carry no `## ` heading if their authors chose the bold form deliberately (Q100 and Q101 are `**Qnn — OPEN` / `**Qnn — DONE` blocks, which the claim checker reads and the index does not — the two tools disagree on what an item is, and this item is the index side of that disagreement); that `--write` mis-renders any section's other fields (only the id class and the resulting line bounds were measured). No other author's file was edited; the synthetic queue lives in `/root/.hermes/cache/scratch/q103/` and was not committed. Nothing from `inbox/` was opened or quoted.
+9 -9
View File
@@ -103,7 +103,7 @@
| 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. | | 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. | | 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-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. | | 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-12991 | 40957 | 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. | | 96 | Q98 | 12616-13013 | 44594 | 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 ## Ids with no `## ` heading
@@ -121,7 +121,7 @@ Opened as records inside another section. `line` is the record's own opening lin
| Q53 | 7292 | 7246 | 168 | Q49 | BULLET+BOLD | BOLD-LEAD | | Q53 | 7292 | 7246 | 168 | Q49 | BULLET+BOLD | BOLD-LEAD |
| Q64 | 10308 | 10308 | 30 | Q45 | BULLET+BOLD | BOLD-LEAD | | Q64 | 10308 | 10308 | 30 | Q45 | BULLET+BOLD | BOLD-LEAD |
| Q65 | 11055 | 11047 | 48 | Q63 | BULLET+BOLD | BOLD-LEAD | | Q65 | 11055 | 11047 | 48 | Q63 | BULLET+BOLD | BOLD-LEAD |
| Q99 | 12734 | 9909 | 19 | Q98 | BULLET+BOLD | BOLD-LEAD | | Q99 | 12734 | 9909 | 27 | Q98 | 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`. **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`.
@@ -361,7 +361,7 @@ The block below is the parse this document renders, byte for byte. `--check` com
"form": "BOLD-LEAD", "form": "BOLD-LEAD",
"id": "Q99", "id": "Q99",
"line": 12734, "line": 12734,
"refs": 19, "refs": 27,
"section": "Q98", "section": "Q98",
"shape": "BULLET+BOLD" "shape": "BULLET+BOLD"
} }
@@ -371,9 +371,9 @@ The block below is the parse this document renders, byte for byte. `--check` com
"end_line": 8, "end_line": 8,
"line": 1 "line": 1
}, },
"queue_bytes": 1915576, "queue_bytes": 1919213,
"queue_lines": 12991, "queue_lines": 13013,
"queue_sha256": "e9f16119b5d7558232bb5ddd0d71a98b69f72cc2d1e3ff70ec96d178fb8f5755", "queue_sha256": "56b57d405c4f41a28138eb83a1109378cd1136f415fa5ef41aa843269a3a6176",
"sections": [ "sections": [
{ {
"bytes": 3139, "bytes": 3139,
@@ -1516,11 +1516,11 @@ The block below is the parse this document renders, byte for byte. `--check` com
"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`)*" "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": 40957, "bytes": 44594,
"end_line": 12991, "end_line": 13013,
"id": "Q98", "id": "Q98",
"line": 12616, "line": 12616,
"lines": 376, "lines": 398,
"role": "opening", "role": "opening",
"role_detail": "", "role_detail": "",
"status": "open and unclaimed.", "status": "open and unclaimed.",