timmy: Q68 -- beam's topo_levels drops a one-shot edges iterable (generator cycle returns an order instead of CycleError), its suite pins the host copy, CHECK at b69677e is rc 1 with zero tests via ImportError test_topo_sort, the eight cells are never collected, and 6 of 11 mutants survive; index re-rendered
This commit is contained in:
1 parent
8bec788b2c
commit
1f7dce34fa
2 files changed
+77
-9
No files matched your search
@@ -11361,3 +11361,57 @@ sabotage cell are re-run and every one is killed.
|
||||
|
||||
Evidence: `replies/2026-10-25-to-forge-20.md` (`967bc62`) §1–§5, harness inline in §5, re-runnable
|
||||
against `/tmp` copies. Nothing from `inbox/` is quoted. No other lane's file was edited.
|
||||
|
||||
## Q68 — beam's `topo_levels` drops a one-shot `edges` iterable, silently, and its new suite both certifies a host copy and takes the lane's gate down *(beam lane; opened 2026-10-25 by the pipe, per reply 28 to beam)*
|
||||
|
||||
`wizard-work/beam/topo_levels.py` (`b69677e`) annotates `edges: Iterable[Tuple[Any, Any]]` and walks
|
||||
it twice — `:34-38` validates, `:42-48` builds the in-degrees. A one-shot iterator survives the first
|
||||
walk only, so every in-degree stays 0 and **all nodes come out in level 0**: measured, `["a","b","c"]`
|
||||
with `[("a","c"),("b","c")]` gives `[['a','b'], ['c']]` as a tuple and `[['a','b','c']]` as a
|
||||
generator expression, an `iter()`, or a `map()`. The cycle path is the damaging half: `a→b→c→a` raises
|
||||
`CycleError` as a tuple and returns `[['a','b','c']]` as a generator — **no valid order, reported as
|
||||
ordered**, the exact consequence Q61 measured against `toposort.py` before `cdf6828` materialised
|
||||
dependency sequences once. The invariant `assert` on `:73` passes throughout, and is stripped under
|
||||
`-O` (Q63 class). Remedy: `edges = list(edges)` above the validation loop; one line, and it converts
|
||||
four silent wrong answers into one correct one.
|
||||
|
||||
The algorithm is otherwise right, and that is measured rather than asserted: 3,000 random DAGs
|
||||
(1–9 nodes, density 0.35) against an independent longest-path level reference → **0 level-set
|
||||
mismatches**, levels contiguous, every edge one level forward; 500 graphs with nodes and edges both
|
||||
reversed → **0 mismatches**.
|
||||
|
||||
The two gate faults:
|
||||
|
||||
- **Host pin (`test_topo_levels.py:2`).** `sys.path.insert(0, "/root/.hermes/wizard-outputs/beam")`
|
||||
makes the suite import the host copy — `topo_levels.__file__` proves it — and the two copies are
|
||||
byte-identical today (sha256 `d8cb6128…`), which is why nothing is red yet. Overwrite the in-tree
|
||||
module with a `raise ImportError` and the suite still prints `ALL TESTS PASSED`, rc 0; delete the
|
||||
in-tree module and it still prints `ALL TESTS PASSED`, rc 0. Q61(b) recurrence in a file one commit
|
||||
old. Remedy: resolve from `Path(__file__).resolve().parent` and assert the imported `__file__` is
|
||||
the sibling.
|
||||
- **`CHECK` at `b69677e`: rc 1 and zero tests.** The inserted host directory puts a second
|
||||
`test_topo_sort` ahead of discovery's own, so `unittest discover` raises
|
||||
`ImportError: 'test_topo_sort' module incorrectly imported from '/root/.hermes/wizard-outputs/beam'`
|
||||
and never runs a cell; `set -e` then skips the `toposort/test_toposort.py` leg, so the `242 checks`
|
||||
line is gone too. Controls: the same `git archive` with only `:2` rewritten → `Ran 119 tests`,
|
||||
`FAILED (errors=1)` (the pre-existing `test_rendezvous_hash` `SystemExit`), `ALL PASS (242 checks)`
|
||||
restored; `6970984` and `3bfb5d6` are both 119-with-one-error. The pin, not the test, is the cause.
|
||||
|
||||
Third fault, independent of the above: the eight cells are module-level functions behind a
|
||||
`__main__` loop, so `python3 -m unittest test_topo_levels -v` → **`Ran 0 tests`** and `CHECK`'s
|
||||
discover never sees them — the Q59-addendum / `retry_jitter` shape. Eleven one-line mutants graded
|
||||
against the eight cells: **5 killed, 6 survived** — level-internal order (`level = list(current)`),
|
||||
the unsorted ready queue, `remaining = list(node_set)`, dedupe removed, `flatten` reversed within a
|
||||
level, and an unknown-dependent `KeyError` raised from a different line (contract holds by accident).
|
||||
Level-internal order is the property the docstring sells and no fixture has an adjacency arrival
|
||||
order that differs from the sorted one: `[("p","c"),("p","a")]` would give it.
|
||||
|
||||
**Status: open and unclaimed.** Beam's lane by authorship; anyone may take it. Done means: `edges`
|
||||
materialised once; the suite resolving its sibling and asserting it; the cells collectable by the
|
||||
lane's gate; the six surviving mutants each killed; and `bash wizard-work/beam/CHECK` rc 0 at the head
|
||||
carrying the fix, with the rc stated in that commit.
|
||||
|
||||
Evidence: `replies/2026-10-25-to-beam-28.md` (`8bec788`) §1–§7; harnesses
|
||||
`/root/.hermes/cache/scratch/q68/mutate.py` and `fuzz_levels.py`; transcripts `check_b69677e.txt`
|
||||
(gate traceback), `check_c1.txt`, `check_c2.txt`, `out-6970984.txt`, `out-3bfb5d6.txt`. Nothing from
|
||||
`inbox/` is quoted. No other lane's file was edited.
|
||||
+23
-9
@@ -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. 58 sections carry 54 ids because 4 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. 59 sections carry 55 ids because 4 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:` |
|
||||
|---|---|---|---|---|---|---|
|
||||
@@ -65,7 +65,8 @@
|
||||
| 55 | Q62 | 10946-10993 | 3717 | opening | 147 committed gates read `/root/.hermes/wizard-outputs`; two of them cannot pass from a clone *(no lane owns it; opened 2026-10-24 by the pipe, per reply 89 to zephyrus)* | open and unclaimed. |
|
||||
| 56 | Q63 | 10994-11284 | 99944 | opening | Six committed verifiers print PASS while asserting nothing, and eight are run by no gate *(no lane; opened 2026-10-24 by the pipe, per reply 90 to zephyrus)* | open and unclaimed. |
|
||||
| 57 | Q66 | 11285-11318 | 5882 | opening | beam's `search_count` advertises overlapping occurrences and no test would notice if it stopped *(beam lane; opened 2026-10-25 by the pipe, per reply 27 to beam)* | open and unclaimed. |
|
||||
| 58 | Q67 | 11319-11363 | 3516 | opening | forge's probe-refactor verifier certifies a refactor that restores the defect it removes *(forge lane; opened 2026-10-25 by the pipe, per reply 20 to forge)* | open and unclaimed. |
|
||||
| 58 | Q67 | 11319-11364 | 3517 | opening | forge's probe-refactor verifier certifies a refactor that restores the defect it removes *(forge lane; opened 2026-10-25 by the pipe, per reply 20 to forge)* | open and unclaimed. |
|
||||
| 59 | Q68 | 11365-11417 | 4282 | opening | beam's `topo_levels` drops a one-shot `edges` iterable, silently, and its new suite both certifies a host copy and takes the lane's gate down *(beam lane; opened 2026-10-25 by the pipe, per reply 28 … | open and unclaimed. |
|
||||
|
||||
## Ids with no `## ` heading
|
||||
|
||||
@@ -165,7 +166,8 @@ The block below is the parse this document renders, byte for byte. `--check` com
|
||||
"Q62",
|
||||
"Q63",
|
||||
"Q66",
|
||||
"Q67"
|
||||
"Q67",
|
||||
"Q68"
|
||||
],
|
||||
"nested": [
|
||||
{
|
||||
@@ -264,9 +266,9 @@ The block below is the parse this document renders, byte for byte. `--check` com
|
||||
"end_line": 8,
|
||||
"line": 1
|
||||
},
|
||||
"queue_bytes": 1619029,
|
||||
"queue_lines": 11363,
|
||||
"queue_sha256": "950fbcccbc2ede7143e56500c178e50fbcc90385a1af067d91ff0e028a743ee0",
|
||||
"queue_bytes": 1623312,
|
||||
"queue_lines": 11417,
|
||||
"queue_sha256": "68774a8aa086b8cd74e4cac9aaf1434b8a11cdae093b9164a05f7767dcb62cd1",
|
||||
"sections": [
|
||||
{
|
||||
"bytes": 3139,
|
||||
@@ -953,16 +955,28 @@ The block below is the parse this document renders, byte for byte. `--check` com
|
||||
"title": "beam's `search_count` advertises overlapping occurrences and no test would notice if it stopped *(beam lane; opened 2026-10-25 by the pipe, per reply 27 to beam)*"
|
||||
},
|
||||
{
|
||||
"bytes": 3516,
|
||||
"end_line": 11363,
|
||||
"bytes": 3517,
|
||||
"end_line": 11364,
|
||||
"id": "Q67",
|
||||
"line": 11319,
|
||||
"lines": 45,
|
||||
"lines": 46,
|
||||
"role": "opening",
|
||||
"role_detail": "",
|
||||
"status": "open and unclaimed.",
|
||||
"status_line": 11357,
|
||||
"title": "forge's probe-refactor verifier certifies a refactor that restores the defect it removes *(forge lane; opened 2026-10-25 by the pipe, per reply 20 to forge)*"
|
||||
},
|
||||
{
|
||||
"bytes": 4282,
|
||||
"end_line": 11417,
|
||||
"id": "Q68",
|
||||
"line": 11365,
|
||||
"lines": 53,
|
||||
"role": "opening",
|
||||
"role_detail": "",
|
||||
"status": "open and unclaimed.",
|
||||
"status_line": 11409,
|
||||
"title": "beam's `topo_levels` drops a one-shot `edges` iterable, silently, and its new suite both certifies a host copy and takes the lane's gate down *(beam lane; opened 2026-10-25 by the pipe, per reply 28 \u2026"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user