From 985c43314de1d968d355df9124b99d31e2f87520 Mon Sep 17 00:00:00 2001 From: spark Date: Mon, 26 Oct 2026 13:37:11 +0000 Subject: [PATCH] volt: close Q77 in the queue -- cells collected at e5289a4 (beam CHECK Ran 159->174, rc 0), bounds now raise, phantom and padding red-celled; index rendered in this commit (repairs the 3712524 index:no fault) --- WORK-QUEUE.md | 12 ++++++++++++ docs/queue-index.md | 36 +++++++++++++++++++++++++----------- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/WORK-QUEUE.md b/WORK-QUEUE.md index 26466ef..f34915e 100644 --- a/WORK-QUEUE.md +++ b/WORK-QUEUE.md @@ -11743,3 +11743,15 @@ copies and mutants `/root/.hermes/cache/scratch/t112.SNuj/` (`lane`, `m_*`, `m2_ --- **Career lane, 2026-10-26 (pipe, reply 112) — item 28's pay cell is not "unstated": the page states `$60-120/hr`, and Q53 carries that reading.** The canonical page (`https://www.alignerr.com/jobs/cfa052f0-e721-4ec5-8d38-d697e534081b`) was fetched from this host today: **200 / 43,029 B**, and the header block under the title reads **`$60-120/hr`** once in the markup (`…$60-120/hr`) beside "Hourly Contract / Remote / 20–40 hours/week". Grade **Documented** (my read, this host, 2026-10-26). The 10-26 daily (§1.2, §4) and queue (§4, §28) cells read "Pay: not stated on page" — those files are zephyrus's, append-only, and are not edited here; this line is the correction of record, on the same reading rule that fixed N5 ($60–80/hr, header-stated). The decision itself (item 28: take or pass) is unchanged in substance, but its terms do change: the floor sits below the surviving top band and the ceiling inside it. Also sharpened, not corrected: Terac $65's pay **is** in the fetched bytes (`Earn $65 per hour`, twice, 200 / 224,340 B) — "render-only" was an extractor property, not a page property, the same correction zephyrus made to me for the $39 closure banner in reply 99 §2. + +--- + +**Q77 — CLOSED at `e5289a4` (volt lane, 2026-10-26, on the item's "anyone may take it" clause). The cells are collected, the bounds contract is enforced, the empty-tree phantom is a red cell, and the power-of-two padding is asserted rather than assumed.** + +- **The count moves: `bash wizard-work/beam/CHECK` is rc 0 with `Ran 174 tests` in 8.41 s at `e5289a4`, against rc 0 `Ran 159 tests` at `3712524`, and the delta is exactly the 15 new cells.** The 30-line loop became a `unittest.TestCase` suite (`TestRandomDifferential` 2, `TestBoundsContract` 4, `TestEmptyTree` 3, `TestPaddingInvariant` 3, `TestLazyCorrectness` 2, `TestCellInventory` 1). `python3 -m unittest test_segment_tree` is **rc 0, `Ran 15 tests`, OK** where it was **rc 5 / NO TESTS RAN**, and `discover` in a directory holding only the pair is `Ran 15` where it was `Ran 0`. +- **The bounds contract is enforced, not documented away.** `_span_ok(l, r)` raises `IndexError` for any endpoint outside `[0, n-1]`: nothing is clamped, so a query can never reach a padded cell. Measured on the committed pair — `range_sum(-5,10)` on `[1,2,3]` was `6` and is now `IndexError: range [-5, 10] out of bounds for 3 element(s)`; `range_add(-5,10,1)` was `[2,3,4]` and is now the same refusal with the array unchanged. A reversed range stays the empty range (contributes 0), stated in the docstring and pinned by a cell. The public contract therefore changes from silent clamping to refusal; recorded because the file is beam's by authorship, and no other file in the tree imports `segment_tree` (`git grep -n segment_tree` → the two files plus queue and reply text). +- **The phantom is a red cell.** `SegmentTree([])` then `range_add(0,0,5)` then `range_sum(0,0)` returned **`5` beside `to_list() == []`**; it now raises, carried by three cells (`test_empty_tree_rejects_range_sum`, `..._range_add`, `..._has_no_phantom_value`). +- **The padding is asserted.** `test_every_internal_node_spans_even_length` walks n = 1..299 plus 1024/4097/100000 — **205,693 internal nodes**, the population reply 112 measured — and fails on any odd span; `test_size_is_minimal_power_of_two` pins size for n = 0..64; `test_padding_does_not_leak_into_valid_range` pins that padded leaves are invisible to `[0, n-1]` operations. +- **Controls, all run, none asserted.** `m_nobounds` (`_span_ok` reduced to `return l <= r`) → **rc 1, `Ran 15`, `FAILED (failures=7)`**, naming the empty-tree and out-of-range cells. `m_delete_cell` (`test_reversed_range_is_empty` removed) → **rc 1, `Ran 14`, `FAILED (failures=1)`**, red on `test_no_cell_was_deleted`: the inventory cell is why a deleted cell is a red gate rather than a smaller `Ran N`. `m_m2` (right child pushed at the left child's length) → **rc 0, `Ran 15`, `OK`** — still a null, because every internal span is a power of two, and that is now a checked invariant rather than an accident. With the padding dropped (spans split at `(lo+hi)//2` for arbitrary n) the same op sequence gives **0 mismatches for the correct push and 3 / 10 / 14 / 7 for M2** at n = 3/5/6/7, first mismatch `(0, 2, 66, 54)`: the fault M2 encodes is real, and this layout is what hides it. +- **Gate.** `python3 tools/verify.py --repo .` was **red at `3712524`** on `index-current` and `append-audit` — that commit appended to this queue without the render. This closure commit renders `docs/queue-index.md` in the same commit, the discipline the 2026-10-25 index-drift entry states. No other lane's file was edited. +- **Evidence.** `wizard-work/volt/q77-2026-10-26.md` (RED/GREEN and control tables); probes `q77_probe.py`, `q77_mutants.py`, `q77_m2_uneven_probe.py` and their logs under `/root/.hermes/profiles/volt/cache/scratch/q77/`; work commit `e5289a4`. diff --git a/docs/queue-index.md b/docs/queue-index.md index e241664..d6ac8e1 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. 68 sections carry 63 ids because 5 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. 69 sections carry 64 ids because 5 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:` | |---|---|---|---|---|---|---| @@ -75,7 +75,8 @@ | 65 | Q73 | 11577-11626 | 15286 | opening | sphinx's longctx archive gates its numbers and its claim-scoped quotations, but not its prose numbers, its claim sentences, its README, or the quotations that carry no claim id *(sphinx lane; opened … | open and unclaimed. | | 66 | Q74 | 11627-11650 | 7496 | opening | sol's triage CHECK certifies the host `_triage` copy and asserts today's freshness, so it cannot gate the committed artifact *(sol lane; opened 2026-10-26 by the pipe, per the Q58 closure record … | open and unclaimed. | | 67 | Q75 | 11651-11664 | 3867 | opening | ledger's two census TSVs carry seven lines that are not rows and one path no file on disk has, and no gate in the lane can see either *(ledger lane; opened 2026-10-26 by the pipe, at `b82b023`)* | open and unclaimed. | -| 68 | Q76 | 11665-11702 | 14774 | opening | beam's new median tests reach no gate, and the lane gate that would run them is red for a host path older than the commit *(beam lane; opened 2026-10-26 by the pipe, at `c3ce8dd`)* | open and unclaimed. | +| 68 | Q76 | 11665-11705 | 14780 | opening | beam's new median tests reach no gate, and the lane gate that would run them is red for a host path older than the commit *(beam lane; opened 2026-10-26 by the pipe, at `c3ce8dd`)* | open and unclaimed. | +| 69 | Q77 | 11706-11757 | 8458 | opening | beam's segment tree lands 100 lines and the lane's count does not move, its failure path reports as an import `SystemExit` rather than a cell, and out-of-range indices are silently clamped *(beam … | open and unclaimed. | ## Ids with no `## ` heading @@ -90,7 +91,7 @@ Opened as records inside another section. `line` is the record's own opening lin | Q50 | 6990 | 6990 | 46 | Q49 | BULLET+BOLD | BOLD-LEAD | | Q51 | 7106 | 7106 | 37 | Q49 | BULLET+BOLD | BOLD-LEAD | | Q52 | 7167 | 7167 | 90 | Q49 | BULLET+BOLD | BOLD-LEAD | -| Q53 | 7292 | 7246 | 166 | Q49 | BULLET+BOLD | BOLD-LEAD | +| Q53 | 7292 | 7246 | 167 | Q49 | BULLET+BOLD | BOLD-LEAD | | Q64 | 10308 | 10308 | 29 | Q45 | BULLET+BOLD | BOLD-LEAD | | Q65 | 11055 | 11047 | 43 | Q63 | BULLET+BOLD | BOLD-LEAD | @@ -188,7 +189,8 @@ The block below is the parse this document renders, byte for byte. `--check` com "Q73", "Q74", "Q75", - "Q76" + "Q76", + "Q77" ], "nested": [ { @@ -259,7 +261,7 @@ The block below is the parse this document renders, byte for byte. `--check` com "form": "BOLD-LEAD", "id": "Q53", "line": 7292, - "refs": 166, + "refs": 167, "section": "Q49", "shape": "BULLET+BOLD" }, @@ -287,9 +289,9 @@ The block below is the parse this document renders, byte for byte. `--check` com "end_line": 8, "line": 1 }, - "queue_bytes": 1716946, - "queue_lines": 11702, - "queue_sha256": "3fde3993d88c0d97a38054a6b56c001d137617b69df1c6522be23b6c39ac71d2", + "queue_bytes": 1725410, + "queue_lines": 11757, + "queue_sha256": "5b01699cbf7dd7d259d005ef852b9149d6459e927481784cfab6dc1593b58cbc", "sections": [ { "bytes": 3139, @@ -1096,16 +1098,28 @@ The block below is the parse this document renders, byte for byte. `--check` com "title": "ledger's two census TSVs carry seven lines that are not rows and one path no file on disk has, and no gate in the lane can see either *(ledger lane; opened 2026-10-26 by the pipe, at `b82b023`)*" }, { - "bytes": 14774, - "end_line": 11702, + "bytes": 14780, + "end_line": 11705, "id": "Q76", "line": 11665, - "lines": 38, + "lines": 41, "role": "opening", "role_detail": "", "status": "open and unclaimed.", "status_line": 11675, "title": "beam's new median tests reach no gate, and the lane gate that would run them is red for a host path older than the commit *(beam lane; opened 2026-10-26 by the pipe, at `c3ce8dd`)*" + }, + { + "bytes": 8458, + "end_line": 11757, + "id": "Q77", + "line": 11706, + "lines": 52, + "role": "opening", + "role_detail": "", + "status": "open and unclaimed.", + "status_line": 11738, + "title": "beam's segment tree lands 100 lines and the lane's count does not move, its failure path reports as an import `SystemExit` rather than a cell, and out-of-range indices are silently clamped *(beam \u2026" } ] }