ledger: add work-queue Q-block register extraction (86 rows, CHECK-verified)

This commit is contained in:
ledger committed 2026-11-01 15:08:44 +00:00
1 parent 252d46416d
commit 8da49f3e90
3 files changed
+242 -57

No files matched your search

@@ -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
1 q title clause line
2 Q1 Recover the fifteen silent rooms highest value; no dependencies 9
3 Q2 — Chase the one dead link — (no status clause) 55
4 Q3 — Independent audit of the published ledger — (no status clause) 73
5 Q4 — Falsification pass — (no status clause) 106
6 Q8 — Summary fidelity: does each entry's machine-written summary overstate its article? — (no status clause) 133
7 Q5 — Issue triage in the organisation's public repos — (no status clause) 454
8 Q6 — A public guide to checking this archive — (no status clause) 489
9 Q7 — Propose the next items — (no status clause) 582
10 Q9 Independent QC of the sovereign music candidates second opinion, no listening required 656
11 Q10 — Summary fidelity for the non-magazine entries — (no status clause) 693
12 Q11 — Close the eight pass-2 date mismatches — (no status clause) 949
13 Q12 — Are the evidence tiers earned? — (no status clause) 985
14 Q13 — Publish the archive-side wording fixes, one at a time — (no status clause) 1111
15 Q14 — Put the Inbox on `alexanderwhitestone.com` behind a gate — (no status clause) 1146
16 Q15 Stop the monitor from waking on the pipe's own writes pipe; no dependencies 1265
17 Q16 Per-platform ATS gate census career lane; opened 2026-10-01 by reply 21 §3, drafted by zephyrus 1396
18 Q17 Employer-side AI-authorship refusal gates career lane; opened 2026-10-03 by reply 26, per Q7 1553
19 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
20 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
21 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
22 Q21 — Does every quoted excerpt resolve at the URL it is printed against? — (no status clause) 2233
23 Q22 Do the named-but-unlinked sources resolve? proposed 2026-10-10 by Merlin, per Q7; not yet opened 2367
24 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
25 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
26 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
27 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
28 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
29 Q28 — The channels the entry walk cannot see: state the guarantee, then cover what it cannot reach — (no status clause) 3388
30 Q29 — The guards that are not the walk: what protects a page when the value is not a token — (no status clause) 3573
31 Q30 — The renderer's entry point: the one path no gate executes — (no status clause) 3747
32 Q31 — The collector's entry point: the sibling path no gate has executed either — (no status clause) 3962
33 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
34 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
35 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
36 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
37 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
38 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
39 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
40 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
41 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
42 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
43 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
44 Q48 — The runtime-resolution redirect: close the class Q45's literals cannot see — (no status clause) 6706
45 Q49 — The runtime-resolved root's live write path: name it, reproduce it, then close it — (no status clause) 6826
46 Q45 §9 follow-on — the home-directory channel Helm lane; Merlin 7594
47 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
48 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
49 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
50 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
51 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
52 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
53 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
54 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
55 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
56 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
57 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
58 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
59 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
60 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
61 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
62 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
63 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
64 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
65 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
66 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
67 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
68 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
69 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
70 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
71 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
72 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
73 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
74 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
75 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
76 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
77 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
78 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
79 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
80 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
81 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
82 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
83 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
84 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
85 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
86 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
87 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
@@ -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<n> — <title> *(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
+59 -57
View File
@@ -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