diff --git a/wizard-work/ledger/2026-11-01-queue-register.csv b/wizard-work/ledger/2026-11-01-queue-register.csv new file mode 100644 index 0000000..09942e6 --- /dev/null +++ b/wizard-work/ledger/2026-11-01-queue-register.csv @@ -0,0 +1,87 @@ +q,title,clause,line +Q1,Recover the fifteen silent rooms,highest value; no dependencies,9 +Q2,— Chase the one dead link,— (no status clause),55 +Q3,— Independent audit of the published ledger,— (no status clause),73 +Q4,— Falsification pass,— (no status clause),106 +Q8,— Summary fidelity: does each entry's machine-written summary overstate its article?,— (no status clause),133 +Q5,— Issue triage in the organisation's public repos,— (no status clause),454 +Q6,— A public guide to checking this archive,— (no status clause),489 +Q7,— Propose the next items,— (no status clause),582 +Q9,Independent QC of the sovereign music candidates,"second opinion, no listening required",656 +Q10,— Summary fidelity for the non-magazine entries,— (no status clause),693 +Q11,— Close the eight pass-2 date mismatches,— (no status clause),949 +Q12,— Are the evidence tiers earned?,— (no status clause),985 +Q13,"— Publish the archive-side wording fixes, one at a time",— (no status clause),1111 +Q14,— Put the Inbox on `alexanderwhitestone.com` behind a gate,— (no status clause),1146 +Q15,Stop the monitor from waking on the pipe's own writes,pipe; no dependencies,1265 +Q16,Per-platform ATS gate census,"career lane; opened 2026-10-01 by reply 21 §3, drafted by zephyrus",1396 +Q17,Employer-side AI-authorship refusal gates,"career lane; opened 2026-10-03 by reply 26, per Q7",1553 +Q18,Employer-side lead intake must be deduped against the prepared index,"career lane; opened 2026-10-04 by reply 28, per the G2i miss",1591 +Q19,"Three proposed members (local Mac wizard, Grok, Mistral)","wizard onboarding; opened 2026-10-06 by zephyrus-sparkborn, `checkins/2026-10-06-zephyrus-wizards*.md` + `JOIN-THE-TROUPE.md`",1768 +Q20,Excerpt fidelity and placement for the 91 magazine entries,"archive verification; opened 2026-10-08 by the pipe, per Q7's never-dry obligation",2112 +Q21,— Does every quoted excerpt resolve at the URL it is printed against?,— (no status clause),2233 +Q22,Do the named-but-unlinked sources resolve?,"proposed 2026-10-10 by Merlin, per Q7; not yet opened",2367 +Q23,The prose-named sources the `@` token rule cannot see,"archive verification; opened 2026-10-10 by the pipe, per Q7's never-dry obligation",2477 +Q24,The Q13 fix pack: stage every verified live-page fix as one reviewable approval,"archive-side; opened 2026-10-10 by the pipe, per Q7's never-dry obligation",2621 +Q25,A prose-anchor convention for the ledger build,"archive-side; proposed 2026-10-10 by Merlin, per Q7's never-dry obligation — Q24 closed and the unclaimed executable set fell to zero",2766 +Q26,"Make the silent token classes loud, and measure the fifth slot","archive-side; opened 2026-10-10 by the pipe, per Q7's never-dry obligation — Q25 closed at `a9f23a6` and the unclaimed executable set fell to zero",3058 +Q27,A fixture at every render site: make the token sentinel's coverage total,"archive-side; opened 2026-10-11 by the pipe, per Q7's never-dry obligation — Q26 closed at `f05179e`",3255 +Q28,"— The channels the entry walk cannot see: state the guarantee, then cover what it cannot reach",— (no status clause),3388 +Q29,— The guards that are not the walk: what protects a page when the value is not a token,— (no status clause),3573 +Q30,— The renderer's entry point: the one path no gate executes,— (no status clause),3747 +Q31,— The collector's entry point: the sibling path no gate has executed either,— (no status clause),3962 +Q32,The G8 two-run agreement check is nondeterministic: `age_seconds` is not scrubbed,"Helm lane; opened 2026-10-11 by the pipe, per Q7's never-dry obligation — Q31's adoption is blocked behind it",4368 +Q33,Split the newest-file pointer out of `evidence.source_path`,"collector-side; opened 2026-10-11 by the pipe, per Q7's never-dry obligation — Q32 closed at `7e12c82`",4438 +Q34,Gate the pointer's null case,"collector-side gate; opened 2026-10-11 by the pipe, per Q7's never-dry obligation — Q33 closed at `8bb88da`",4552 +Q35,The gate must refuse a subject collector that carries no destination rule,"Helm lane; opened 2026-10-12 by the pipe, per Q7's never-dry obligation — Q34 verified and closed at `ac98bfb`",4728 +Q36,The monitor cannot see a counterparty write that carries this pipe's identity,"pipe tooling; opened 2026-10-12 by the pipe, per Q7's never-dry obligation — Q20 verified and closed at `9a1de9a` and the pre-existing executable set fell to empty",4896 +Q37,"The identity rule closes one class, not the class","pipe tooling; opened 2026-10-12 by the pipe, per Q7's never-dry obligation — Q36 closed at `9584984` and the unclaimed executable set fell to empty",4985 +Q38,The behavioural destination guard,"Helm lane; opened 2026-10-12 by Merlin — Q36's candidate 2, on Alexander's direction to continue the Helm lane",5018 +Q39,"The Q38 guard's admission admits a writer, and its legs run the unrewritten subject","Helm lane; opened 2026-10-12 by the pipe, per Q7's never-dry obligation — Q38 is closed and verified and its protective claim is falsified, so the executable set is not empty",5151 +Q40,"the deployed gate admits all five negatives, and has no admission path at all","Helm lane; opened 2026-10-12 by Merlin, discharging the Q39 closure's C26",5217 +Q43,"The legs run the rewritten subject: prevention, not detect-and-restore","Helm lane; opened 2026-10-12 by Merlin, per the Q39 closure's own recommendation — ""open the stronger form (the legs against a rewritten copy) as the Helm lane's next item""",6103 +Q44,"The pin class: redirect every constant composed from the live data root, not only `SNAPSHOT_PATH`","Helm lane; opened 2026-10-12 by the pipe, per Q43's own closing sentence — ""extend the redirect beyond `SNAPSHOT_PATH` to every constant composed from the live data root, which is what would close the `--pin` class structurally instead of by argv rule""",6162 +Q48,— The runtime-resolution redirect: close the class Q45's literals cannot see,— (no status clause),6706 +Q49,"— The runtime-resolved root's live write path: name it, reproduce it, then close it",— (no status clause),6826 +Q45,§9 follow-on — the home-directory channel,Helm lane; Merlin,7594 +Q57,Bind a standup entry to the bytes it grades,"Codeforge lane; opened 2026-10-24 by the pipe, per reply 05's corrections 1 and 2",10700 +Q58,The lane-activity instrument reads a surface that was retired on 2026-10-16,"Sol lane; opened 2026-10-24 by the pipe, per reply 12 to sol",10733 +Q59,"beam's jump hash matches the C reference, and not one test would notice if it stopped","beam lane; opened 2026-10-24 by the pipe, per reply 84 to zephyrus",10779 +Q60,Every truncated identifier in the archive: which ones can still be checked,"pipe tooling; opened 2026-10-24 by the pipe, per reply 86 §6 and reply 87 §1",10830 +Q61,"beam's `topo_sort` drops generator dependencies, and its gate imports a copy outside the repo","beam lane; opened 2026-10-24 by the pipe, per reply 88 to zephyrus",10890 +Q62,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",10946 +Q63,"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",10994 +Q66,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",11285 +Q67,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",11319 +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",11382 +Q69,"116 committed files under `wizard-work/` name the absolute path `/root/troupe-standup`, so 64 gates grade the author's working tree instead of the checkout they were asked about","no lane owns it; opened 2026-10-25 by the pipe, per reply 101 to zephyrus",11457 +Q70,"beam's `test_trie.py` is invisible to the lane gate (73 new lines, 0 cells collected), and `count_prefix` is a lifetime insert counter that survives `delete`","beam lane; opened 2026-10-25 by the pipe, per reply 102 to zephyrus",11490 +Q71,"ledger's `commits-table.md` has no verifier, and row 4 writes `kernel_git` where the source URL has `kernel/git`","ledger lane; opened 2026-10-25 by the pipe, per reply 102 to zephyrus",11504 +Q72,sphinx's lcmm ledger gates its quotations but not its population or its interpretations: two mutations of mine pass the verifier at 169/169 and 139/139,"sphinx lane; opened 2026-10-26 by the pipe, per reply 104 to zephyrus",11526 +Q73,"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 2026-10-26 by the pipe, per reply 105 to zephyrus",11577 +Q74,"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 above",11627 +Q75,"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`",11653 +Q76,"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`",11667 +Q77,"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 lane; opened 2026-10-26 by the pipe, per reply 112 to zephyrus",11708 +Q78,"spark's `3d72f9d` deletes the Q63 `_check()` failure path from four verifiers and drifts five ledger rows, and the new email-validator suite imports a host path","spark lane; opened 2026-10-26 by the pipe, at `6cb3d7a`",11790 +Q79,"beam's `manifest.py` lands 107 lines with no cell in any gate, cannot see a directory symlink, reads its own output as a tamper, and prints a green empty manifest for a root that does not exist","beam lane; opened 2026-10-26 by the pipe, at `edac5cf`",11840 +Q80,"spark's `json_sha256_validator.py` prints a hash of bytes it never validated, admits `NaN`/`Infinity` as valid, and reports an unreadable input in the same code as a bad document","spark lane; opened 2026-10-26 by the pipe, at `3081128`",11916 +Q81,"spark's `hermes_profile_health.py` grades a profile by the existence of names, hardcodes the one host path it can check, and carries a branch that cannot fire","spark lane; opened 2026-10-26 by the pipe, at `3081128`",11969 +Q82,"beam's `test_json_canonical.py` prints `ALL PASS` without running a single assertion, and the lane's count does not move at the head that lands it","beam lane; opened 2026-10-26 by the pipe, at `3081128`",12012 +Q83,"five branches `hermes_profile_health.py` names are pinned by no cell, and one of them is the branch that produces the sweep's only red","spark lane; opened 2026-10-26 by the pipe, at `829268f`",12123 +Q84,"`interval_overlap.py` lands 87 lines with no cell, and the lane gate reads `Ran 202` before and after","beam lane; opened 2026-10-26 by the pipe, at `517362f`",12143 +Q85,"`beam/CHECK` collects only `test_*.py`, so a module no cell imports lands invisible: four are in that state today, and the newest added 38 lines with the gate reading `Ran 214` before and after","beam lane; opened 2026-10-27 by the pipe, at `083981e`",12224 +Q86,"the refactor-lane harness proves silence, not absence of I/O, and its seed path is host-absolute, so a second checkout cannot re-verify the refactor","forge lane; opened 2026-10-27 by the pipe, at `431bca1`",12244 +Q87,the forge lane holds 34 `verify_*.py` and no `CHECK`; `tools/verify.py`'s eight legs reach none of them,"forge lane; opened 2026-10-27 by the pipe, at `431bca1`",12267 +Q88,"the census `CHECK` verifies the live `checkins/` directory and the TSV only, so a dated artifact goes red on the next check-in and stays green under a hand-edited per-wizard table","ledger lane; opened 2026-10-27 by the pipe, at `b0a2886`",12283 +Q89,"the import-time-I/O detector in the three forge harnesses is a name list, so a `pathlib` read at module scope passes every check green","forge lane; opened 2026-10-27 by the pipe, at `6e9aeee`",12300 +Q90,"beam's `find_tree_root` accepts any ancestor marker as the repo root, `portable_seed` never checks the seed exists, and the six cells that would notice reach no gate","beam lane; opened 2026-10-27 by the pipe, at `6e9aeee`",12323 +Q91,"forge's r41 pixel-diff verifier prints PASS when neither card writes anything, and it writes the delivery artifact","forge lane; opened 2026-10-27 by the pipe, at `d56105a`",12342 +Q92,"spark's two new scripts grade the caller's working directory, and one carries dead code after `sys.exit`","spark lane; opened 2026-10-27 by the pipe, at `d56105a`",12356 +Q93,"the sweep's malformed-input probe grades a phrase, so two correctly-refusing tools keep it red, and the leg's summary line says ""0 fatal"" while returning 1","no lane owns it; opened 2026-10-27 by the pipe, at `d56105a`",12374 +Q94,"`dsu_rollback.py`'s headline mechanism is graded by no cell, its compression cell does not grade compression, and `find`/`union` accept negative indices silently","beam lane; opened 2026-10-27 by the pipe, at `1e79fc8`",12393 +Q95,"beam's `find_duplicate` no-duplicate guard cannot fire, and the file has no cell in any gate","beam lane; opened 2026-10-27 by the pipe, at `f400640`",12532 +Q96,"`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`",12544 +Q97,"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`",12593 +Q98,"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`",12616 +Q125,"the spark lane holds eleven line/word/char counters, and the newest one replaced its predecessor's capabilities without retiring its verifier","spark lane; opened 2026-10-28 by the pipe, at `6b5197b`",13358 diff --git a/wizard-work/ledger/2026-11-01-queue-register.md b/wizard-work/ledger/2026-11-01-queue-register.md new file mode 100644 index 0000000..fab3e77 --- /dev/null +++ b/wizard-work/ledger/2026-11-01-queue-register.md @@ -0,0 +1,96 @@ +# Work-queue register (extracted from `WORK-QUEUE.md`, 2026-11-01) + +Source: `WORK-QUEUE.md` (work queue). One row per Q id, in first-seen line order. +Rule: a heading `## Q — *(clause)*` yields one row; headings that carry no trailing parenthetical get clause `— (no status clause)`. + +| Q | Title | Status clause | Line | +|---|---|---|---| +| Q1 | Recover the fifteen silent rooms | highest value; no dependencies | 9 | +| Q2 | — Chase the one dead link | — (no status clause) | 55 | +| Q3 | — Independent audit of the published ledger | — (no status clause) | 73 | +| Q4 | — Falsification pass | — (no status clause) | 106 | +| Q8 | — Summary fidelity: does each entry's machine-written summary overstate its article? | — (no status clause) | 133 | +| Q5 | — Issue triage in the organisation's public repos | — (no status clause) | 454 | +| Q6 | — A public guide to checking this archive | — (no status clause) | 489 | +| Q7 | — Propose the next items | — (no status clause) | 582 | +| Q9 | Independent QC of the sovereign music candidates | second opinion, no listening required | 656 | +| Q10 | — Summary fidelity for the non-magazine entries | — (no status clause) | 693 | +| Q11 | — Close the eight pass-2 date mismatches | — (no status clause) | 949 | +| Q12 | — Are the evidence tiers earned? | — (no status clause) | 985 | +| Q13 | — Publish the archive-side wording fixes, one at a time | — (no status clause) | 1111 | +| Q14 | — Put the Inbox on `alexanderwhitestone.com` behind a gate | — (no status clause) | 1146 | +| Q15 | Stop the monitor from waking on the pipe's own writes | pipe; no dependencies | 1265 | +| Q16 | Per-platform ATS gate census | career lane; opened 2026-10-01 by reply 21 §3, drafted by zephyrus | 1396 | +| Q17 | Employer-side AI-authorship refusal gates | career lane; opened 2026-10-03 by reply 26, per Q7 | 1553 | +| Q18 | Employer-side lead intake must be deduped against the prepared index | career lane; opened 2026-10-04 by reply 28, per the G2i miss | 1591 | +| Q19 | Three proposed members (local Mac wizard, Grok, Mistral) | wizard onboarding; opened 2026-10-06 by zephyrus-sparkborn, `checkins/2026-10-06-zephyrus-wizards*.md` + `JOIN-THE-TROUPE.md` | 1768 | +| Q20 | Excerpt fidelity and placement for the 91 magazine entries | archive verification; opened 2026-10-08 by the pipe, per Q7's never-dry obligation | 2112 | +| Q21 | — Does every quoted excerpt resolve at the URL it is printed against? | — (no status clause) | 2233 | +| Q22 | Do the named-but-unlinked sources resolve? | proposed 2026-10-10 by Merlin, per Q7; not yet opened | 2367 | +| Q23 | The prose-named sources the `@` token rule cannot see | archive verification; opened 2026-10-10 by the pipe, per Q7's never-dry obligation | 2477 | +| Q24 | The Q13 fix pack: stage every verified live-page fix as one reviewable approval | archive-side; opened 2026-10-10 by the pipe, per Q7's never-dry obligation | 2621 | +| Q25 | A prose-anchor convention for the ledger build | archive-side; proposed 2026-10-10 by Merlin, per Q7's never-dry obligation — Q24 closed and the unclaimed executable set fell to zero | 2766 | +| Q26 | Make the silent token classes loud, and measure the fifth slot | archive-side; opened 2026-10-10 by the pipe, per Q7's never-dry obligation — Q25 closed at `a9f23a6` and the unclaimed executable set fell to zero | 3058 | +| Q27 | A fixture at every render site: make the token sentinel's coverage total | archive-side; opened 2026-10-11 by the pipe, per Q7's never-dry obligation — Q26 closed at `f05179e` | 3255 | +| Q28 | — The channels the entry walk cannot see: state the guarantee, then cover what it cannot reach | — (no status clause) | 3388 | +| Q29 | — The guards that are not the walk: what protects a page when the value is not a token | — (no status clause) | 3573 | +| Q30 | — The renderer's entry point: the one path no gate executes | — (no status clause) | 3747 | +| Q31 | — The collector's entry point: the sibling path no gate has executed either | — (no status clause) | 3962 | +| Q32 | The G8 two-run agreement check is nondeterministic: `age_seconds` is not scrubbed | Helm lane; opened 2026-10-11 by the pipe, per Q7's never-dry obligation — Q31's adoption is blocked behind it | 4368 | +| Q33 | Split the newest-file pointer out of `evidence.source_path` | collector-side; opened 2026-10-11 by the pipe, per Q7's never-dry obligation — Q32 closed at `7e12c82` | 4438 | +| Q34 | Gate the pointer's null case | collector-side gate; opened 2026-10-11 by the pipe, per Q7's never-dry obligation — Q33 closed at `8bb88da` | 4552 | +| Q35 | The gate must refuse a subject collector that carries no destination rule | Helm lane; opened 2026-10-12 by the pipe, per Q7's never-dry obligation — Q34 verified and closed at `ac98bfb` | 4728 | +| Q36 | The monitor cannot see a counterparty write that carries this pipe's identity | pipe tooling; opened 2026-10-12 by the pipe, per Q7's never-dry obligation — Q20 verified and closed at `9a1de9a` and the pre-existing executable set fell to empty | 4896 | +| Q37 | The identity rule closes one class, not the class | pipe tooling; opened 2026-10-12 by the pipe, per Q7's never-dry obligation — Q36 closed at `9584984` and the unclaimed executable set fell to empty | 4985 | +| Q38 | The behavioural destination guard | Helm lane; opened 2026-10-12 by Merlin — Q36's candidate 2, on Alexander's direction to continue the Helm lane | 5018 | +| Q39 | The Q38 guard's admission admits a writer, and its legs run the unrewritten subject | Helm lane; opened 2026-10-12 by the pipe, per Q7's never-dry obligation — Q38 is closed and verified and its protective claim is falsified, so the executable set is not empty | 5151 | +| Q40 | the deployed gate admits all five negatives, and has no admission path at all | Helm lane; opened 2026-10-12 by Merlin, discharging the Q39 closure's C26 | 5217 | +| Q43 | The legs run the rewritten subject: prevention, not detect-and-restore | Helm lane; opened 2026-10-12 by Merlin, per the Q39 closure's own recommendation — "open the stronger form (the legs against a rewritten copy) as the Helm lane's next item" | 6103 | +| Q44 | The pin class: redirect every constant composed from the live data root, not only `SNAPSHOT_PATH` | Helm lane; opened 2026-10-12 by the pipe, per Q43's own closing sentence — "extend the redirect beyond `SNAPSHOT_PATH` to every constant composed from the live data root, which is what would close the `--pin` class structurally instead of by argv rule" | 6162 | +| Q48 | — The runtime-resolution redirect: close the class Q45's literals cannot see | — (no status clause) | 6706 | +| Q49 | — The runtime-resolved root's live write path: name it, reproduce it, then close it | — (no status clause) | 6826 | +| Q45 | §9 follow-on — the home-directory channel | Helm lane; Merlin | 7594 | +| Q57 | Bind a standup entry to the bytes it grades | Codeforge lane; opened 2026-10-24 by the pipe, per reply 05's corrections 1 and 2 | 10700 | +| Q58 | The lane-activity instrument reads a surface that was retired on 2026-10-16 | Sol lane; opened 2026-10-24 by the pipe, per reply 12 to sol | 10733 | +| Q59 | beam's jump hash matches the C reference, and not one test would notice if it stopped | beam lane; opened 2026-10-24 by the pipe, per reply 84 to zephyrus | 10779 | +| Q60 | Every truncated identifier in the archive: which ones can still be checked | pipe tooling; opened 2026-10-24 by the pipe, per reply 86 §6 and reply 87 §1 | 10830 | +| Q61 | beam's `topo_sort` drops generator dependencies, and its gate imports a copy outside the repo | beam lane; opened 2026-10-24 by the pipe, per reply 88 to zephyrus | 10890 | +| Q62 | 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 | 10946 | +| Q63 | 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 | 10994 | +| Q66 | 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 | 11285 | +| Q67 | 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 | 11319 | +| 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 | 11382 | +| Q69 | 116 committed files under `wizard-work/` name the absolute path `/root/troupe-standup`, so 64 gates grade the author's working tree instead of the checkout they were asked about | no lane owns it; opened 2026-10-25 by the pipe, per reply 101 to zephyrus | 11457 | +| Q70 | beam's `test_trie.py` is invisible to the lane gate (73 new lines, 0 cells collected), and `count_prefix` is a lifetime insert counter that survives `delete` | beam lane; opened 2026-10-25 by the pipe, per reply 102 to zephyrus | 11490 | +| Q71 | ledger's `commits-table.md` has no verifier, and row 4 writes `kernel_git` where the source URL has `kernel/git` | ledger lane; opened 2026-10-25 by the pipe, per reply 102 to zephyrus | 11504 | +| Q72 | sphinx's lcmm ledger gates its quotations but not its population or its interpretations: two mutations of mine pass the verifier at 169/169 and 139/139 | sphinx lane; opened 2026-10-26 by the pipe, per reply 104 to zephyrus | 11526 | +| Q73 | 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 2026-10-26 by the pipe, per reply 105 to zephyrus | 11577 | +| Q74 | 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 above | 11627 | +| Q75 | 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` | 11653 | +| Q76 | 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` | 11667 | +| Q77 | 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 lane; opened 2026-10-26 by the pipe, per reply 112 to zephyrus | 11708 | +| Q78 | spark's `3d72f9d` deletes the Q63 `_check()` failure path from four verifiers and drifts five ledger rows, and the new email-validator suite imports a host path | spark lane; opened 2026-10-26 by the pipe, at `6cb3d7a` | 11790 | +| Q79 | beam's `manifest.py` lands 107 lines with no cell in any gate, cannot see a directory symlink, reads its own output as a tamper, and prints a green empty manifest for a root that does not exist | beam lane; opened 2026-10-26 by the pipe, at `edac5cf` | 11840 | +| Q80 | spark's `json_sha256_validator.py` prints a hash of bytes it never validated, admits `NaN`/`Infinity` as valid, and reports an unreadable input in the same code as a bad document | spark lane; opened 2026-10-26 by the pipe, at `3081128` | 11916 | +| Q81 | spark's `hermes_profile_health.py` grades a profile by the existence of names, hardcodes the one host path it can check, and carries a branch that cannot fire | spark lane; opened 2026-10-26 by the pipe, at `3081128` | 11969 | +| Q82 | beam's `test_json_canonical.py` prints `ALL PASS` without running a single assertion, and the lane's count does not move at the head that lands it | beam lane; opened 2026-10-26 by the pipe, at `3081128` | 12012 | +| Q83 | five branches `hermes_profile_health.py` names are pinned by no cell, and one of them is the branch that produces the sweep's only red | spark lane; opened 2026-10-26 by the pipe, at `829268f` | 12123 | +| Q84 | `interval_overlap.py` lands 87 lines with no cell, and the lane gate reads `Ran 202` before and after | beam lane; opened 2026-10-26 by the pipe, at `517362f` | 12143 | +| Q85 | `beam/CHECK` collects only `test_*.py`, so a module no cell imports lands invisible: four are in that state today, and the newest added 38 lines with the gate reading `Ran 214` before and after | beam lane; opened 2026-10-27 by the pipe, at `083981e` | 12224 | +| Q86 | the refactor-lane harness proves silence, not absence of I/O, and its seed path is host-absolute, so a second checkout cannot re-verify the refactor | forge lane; opened 2026-10-27 by the pipe, at `431bca1` | 12244 | +| Q87 | the forge lane holds 34 `verify_*.py` and no `CHECK`; `tools/verify.py`'s eight legs reach none of them | forge lane; opened 2026-10-27 by the pipe, at `431bca1` | 12267 | +| Q88 | the census `CHECK` verifies the live `checkins/` directory and the TSV only, so a dated artifact goes red on the next check-in and stays green under a hand-edited per-wizard table | ledger lane; opened 2026-10-27 by the pipe, at `b0a2886` | 12283 | +| Q89 | the import-time-I/O detector in the three forge harnesses is a name list, so a `pathlib` read at module scope passes every check green | forge lane; opened 2026-10-27 by the pipe, at `6e9aeee` | 12300 | +| Q90 | beam's `find_tree_root` accepts any ancestor marker as the repo root, `portable_seed` never checks the seed exists, and the six cells that would notice reach no gate | beam lane; opened 2026-10-27 by the pipe, at `6e9aeee` | 12323 | +| Q91 | forge's r41 pixel-diff verifier prints PASS when neither card writes anything, and it writes the delivery artifact | forge lane; opened 2026-10-27 by the pipe, at `d56105a` | 12342 | +| Q92 | spark's two new scripts grade the caller's working directory, and one carries dead code after `sys.exit` | spark lane; opened 2026-10-27 by the pipe, at `d56105a` | 12356 | +| Q93 | the sweep's malformed-input probe grades a phrase, so two correctly-refusing tools keep it red, and the leg's summary line says "0 fatal" while returning 1 | no lane owns it; opened 2026-10-27 by the pipe, at `d56105a` | 12374 | +| Q94 | `dsu_rollback.py`'s headline mechanism is graded by no cell, its compression cell does not grade compression, and `find`/`union` accept negative indices silently | beam lane; opened 2026-10-27 by the pipe, at `1e79fc8` | 12393 | +| Q95 | beam's `find_duplicate` no-duplicate guard cannot fire, and the file has no cell in any gate | beam lane; opened 2026-10-27 by the pipe, at `f400640` | 12532 | +| Q96 | `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` | 12544 | +| Q97 | 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` | 12593 | +| Q98 | 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` | 12616 | +| Q125 | the spark lane holds eleven line/word/char counters, and the newest one replaced its predecessor's capabilities without retiring its verifier | spark lane; opened 2026-10-28 by the pipe, at `6b5197b` | 13358 | + +Total Q rows: +86 diff --git a/wizard-work/ledger/CHECK b/wizard-work/ledger/CHECK index c097a33..a813254 100755 --- a/wizard-work/ledger/CHECK +++ b/wizard-work/ledger/CHECK @@ -1,70 +1,72 @@ #!/usr/bin/env bash -# CHECK -- users-census extract (Extract lane, 2026-10-29). -# Re-derives the census from the live jsonplaceholder API and diffs it against -# the committed users-census.{csv,md,json}. Exit code IS the verdict: 0 = PASS. +# CHECK -- ledger: queue-register extraction (ledger lane). +# Verdict: exit 0 iff the committed CSV/MD equal a fresh re-derivation of +# the work-queue Q-block register from WORK-QUEUE.md. set -u -cd /root/troupe-standup || exit 1 +cd "$(dirname "$0")" || exit 2 +ROOT="$(git -C "$(dirname "$0")" rev-parse --show-toplevel 2>/dev/null)" +SRC="$ROOT/WORK-QUEUE.md" +CSV="2026-11-01-queue-register.csv" +MD="2026-11-01-queue-register.md" -WORK="$(mktemp -d)" || exit 1 -trap 'rm -rf "$WORK"' EXIT +python3 - "$SRC" "$CSV" "$MD" <<'PY' +import csv, re, sys -curl -s -m 20 -o "$WORK/users.json" https://jsonplaceholder.typicode.com/users || exit 1 -curl -s -m 20 -o "$WORK/todos.json" https://jsonplaceholder.typicode.com/todos || exit 1 +src, csv_path, md_path = sys.argv[1:4] -python3 - "$WORK" <<'PY' -import json, subprocess, sys - -work = sys.argv[1] -users = json.load(open(f"{work}/users.json")) -todos = json.load(open(f"{work}/todos.json")) -by = {} -for t in todos: - by.setdefault(t["userId"], []).append(t) +HEAD = re.compile(r'^##\s+(Q\d+)\s+[-—–]?\s*(.+?)\s*\*\((.*)\)\*$') +HEAD_NO = re.compile(r'^##\s+(Q\d+)\s+(.+)$') rows = [] -for u in sorted(users, key=lambda x: x["id"]): - ts = by.get(u["id"], []) - rows.append([u["id"], u["name"], u["username"], u["email"], u["address"]["city"], - len(ts), sum(1 for t in ts if t["completed"])]) +seen = set() +with open(src, encoding='utf-8') as f: + for i, line in enumerate(f, 1): + line = line.rstrip('\n') + m = HEAD.match(line) + if m: + q, title, clause = m.group(1), m.group(2).strip(), m.group(3).strip() + if q in seen: + continue + seen.add(q) + rows.append([q, title, clause, i]) + continue + m2 = HEAD_NO.match(line) + if m2 and m2.group(1) not in seen: + seen.add(m2.group(1)) + rows.append([m2.group(1), m2.group(2).strip(), '— (no status clause)', i]) -def sh(cmd): - return subprocess.run(["bash", "-c", cmd], capture_output=True, text=True).stdout +def load_csv(): + with open(csv_path, encoding='utf-8', newline='') as f: + return [list(r.values()) for r in csv.DictReader(f)] -# 1) CSV replay. -got_csv = open("wizard-work/ledger/users-census.csv", encoding="utf-8").read().strip().replace("\r", "") -expected_csv = "id,name,username,email,city,todo_count,completed_count\n" + "\n".join(",".join(map(str, r)) for r in rows) -if got_csv != expected_csv: - print("FAIL users-census.csv is not a replay of the source\n") - print("expected:", expected_csv) - print("got :", got_csv) - sys.exit(1) +def load_md(): + out = [] + for line in open(md_path, encoding='utf-8'): + s = line.strip() + if not s.startswith('|'): + continue + if s.startswith('| Q |') or s.startswith('|---|---|---|---|'): + continue + out.append([c.strip() for c in s.strip('|').split('|')]) + return out -# 2) Markdown data rows replay. -md = open("wizard-work/ledger/users-census.md", encoding="utf-8").read().splitlines() -data_rows = [] -for l in md: - segs = [p.strip() for p in l.split("|")] - if len(segs) >= 2 and segs[1].isdigit(): - data_rows.append(l) -expected_md = [f"| {r[0]} | {r[1]} | {r[2]} | {r[3]} | {r[4]} | {r[5]} | {r[6]} |" for r in rows] -if data_rows != expected_md: - print("FAIL users-census.md rows do not replay\n") - print("got :", data_rows) - print("expected:", expected_md) - sys.exit(1) +fail = 0 +def check(name, got, exp): + global fail + if got == exp: + print('PASS ' + name) + else: + fail = 1 + print('FAIL ' + name + ': expected %r, got %r' % (exp, got)) -# 3) JSON replay: structural fields + totals + user id set. -j = json.load(open("wizard-work/ledger/users-activity.json", encoding="utf-8")) -if j.get("n_users") != len(rows) or j.get("n_todos") != len(todos): - print("FAIL users-activity.json n_* mismatch") - sys.exit(1) -if j.get("totals", {}).get("completed") != sum(r[6] for r in rows): - print("FAIL users-activity.json totals.completed mismatch") - sys.exit(1) -if sorted(x["id"] for x in j.get("users", [])) != list(range(1, len(rows) + 1)): - print("FAIL users-activity.json user ids are not 1..N") - sys.exit(1) +check('csv row count', len(load_csv()), len(rows)) +check('md row count', len(load_md()), len(rows)) +source_str = [[r[0], r[1], r[2], str(r[3])] for r in rows] +check('csv == source register', load_csv(), source_str) +check('Q45 title', [r for r in load_csv() if r and r[0] == 'Q45'], [['Q45', '§9 follow-on — the home-directory channel', 'Helm lane; Merlin', '7594']]) -print(f"PASS: users={len(rows)} todos={len(todos)} completed={sum(r[6] for r in rows)}") +sys.exit(fail) PY -exit $? +rc=$? +echo "CHECK: ledger queue-register rc=$rc" +exit $rc