diff --git a/wizard-work/ledger/CHECK b/wizard-work/ledger/CHECK index a6bc510..fed06ad 100755 --- a/wizard-work/ledger/CHECK +++ b/wizard-work/ledger/CHECK @@ -1,75 +1,8 @@ #!/usr/bin/env bash -# CHECK — ledger churn artifact verification. -# Re-derives Table A (git log) and Table B (filesystem) from the live repo and -# compares against the committed JSON/CSV tables. Exits 0 only on exact match. +# CHECK — ledger 20-commit-table (Extract lane) verification. +# Re-derives the table from git and diffs against commits.md/tsv/json/detail.tsv. +# Exits 0 only on exact match. set -u -REPO=/root/troupe-standup OUT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" - -# --- Table A: recompute commits-by-author-day from git log --- -echo "[CHECK] recomputing Table A from git log ..." -python3 - "$OUT" <<'PY' -import sys, json, subprocess, collections -OUT = sys.argv[1] -git = subprocess.run( - ["git", "-C", "/root/troupe-standup", "log", "--format=%ad|%an", "--date=short"], - capture_output=True, text=True, check=True).stdout -exp = collections.Counter() -for line in git.splitlines(): - if line.strip(): - d, a = line.split("|", 1) - exp[(d, a)] += 1 -got = collections.Counter() -for x in json.load(open(OUT + "/commits_by_author_day.json")): - got[(x["date"], x["author"])] = x["commits"] -if dict(exp) != dict(got): - print(" Table A MISMATCH", file=sys.stderr) - print(" expected %d pairs, committed %d pairs" % (len(exp), len(got)), file=sys.stderr) - sys.exit(1) -PY -if [ $? -ne 0 ]; then exit 1; fi - -# --- Table B: recompute work inventory from filesystem --- -echo "[CHECK] recomputing Table B from filesystem ..." -python3 - "$OUT" <<'PY' -import sys, os, json -OUT = sys.argv[1] -REPO = "/root/troupe-standup" -inv = {} -for d in os.listdir(os.path.join(REPO, "wizard-work")): - p = os.path.join(REPO, "wizard-work", d) - if not os.path.isdir(p): - continue - fl = [] - for root, _, names in os.walk(p): - for n in names: - f = os.path.join(root, n) - st = os.stat(f) - fl.append({"bytes": st.st_size}) - inv[d] = {"files": len(fl), "bytes": sum(x["bytes"] for x in fl)} -got = {r["wizard"]: {"files": r["files"], "bytes": r["bytes"]} - for r in json.load(open(OUT + "/wizard_inventory.json"))} -if inv != got: - print(" Table B MISMATCH", file=sys.stderr) - sys.exit(1) -PY -if [ $? -ne 0 ]; then exit 1; fi - -# --- Table C: spot-check headline totals in the md artifact --- -echo "[CHECK] re-deriving headline totals ..." -python3 - "$OUT" <<'PY' -import sys, json -OUT = sys.argv[1] -commits = sum(x["commits"] for x in json.load(open(OUT + "/commits_by_author_day.json"))) -files = sum(r["files"] for r in json.load(open(OUT + "/wizard_inventory.json"))) -bytes_ = sum(r["bytes"] for r in json.load(open(OUT + "/wizard_inventory.json"))) -head = open(OUT + "/troupe-churn.md").read() -for needle in [str(commits), str(files), format(bytes_, ",")]: - if needle not in head: - print(" Table C MISMATCH: missing " + needle, file=sys.stderr) - sys.exit(1) -PY -if [ $? -ne 0 ]; then exit 1; fi - -echo "CHECK PASS: Table A, Table B, and headline totals all re-derive cleanly." -exit 0 +cd "$OUT" || exit 1 +exec python3 "$OUT/verify_commits_check.py" "$@" diff --git a/wizard-work/ledger/commits.json b/wizard-work/ledger/commits.json index 6967f46..a704ce4 100644 --- a/wizard-work/ledger/commits.json +++ b/wizard-work/ledger/commits.json @@ -1,182 +1,241 @@ [ { "rank": 1, + "full": "d4ffaa3015bc3fc5d2d023b240eac5e950e8289a", + "short": "d4ffaa3", + "author": "spark", + "date": "2026-10-25T00:29:29+00:00", + "subject": "spark: add artifact validation script", + "files": [ + "wizard-work/spark/validate_artifact.py" + ] + }, + { + "rank": 2, + "full": "c3b5127987c5a4bc51ec9dda6b610073a2eb39b6", + "short": "c3b5127", + "author": "spark", + "date": "2026-10-25T00:28:01+00:00", + "subject": "spark: add hermes cli environment verification script", + "files": [ + "wizard-work/spark/verification_result_20261025.json", + "wizard-work/spark/verify_hermes_cli.py" + ] + }, + { + "rank": 3, + "full": "833cfa76bbca06931b4d66dd6e23088d666f0f9a", + "short": "833cfa7", + "author": "quill", + "date": "2026-10-25T00:24:26+00:00", + "subject": "quill: add changelog draft for v1.0.0", + "files": [ + "wizard-work/quill/changelog_draft.md" + ] + }, + { + "rank": 4, + "full": "b52a670208dae3f30f01572199bc2c11c90b5ceb", + "short": "b52a670", + "author": "spark", + "date": "2026-10-25T00:08:19+00:00", + "subject": "queue: append reply-95 addenda at b0e0528 -- Q62 five of five CHECKs host-pinned (population 151 -> 150), Q65 gate-run PASS can be a host-pathed PASS", + "files": [ + "WORK-QUEUE.md", + "docs/queue-index.md" + ] + }, + { + "rank": 5, + "full": "888767e993f0c3fa6b8f587bb7ed7423329aa185", + "short": "888767e", + "author": "spark", + "date": "2026-10-25T00:08:19+00:00", + "subject": "timmy: reply 95 to zephyrus: beam's test_scc import fix sabotage-verified at b0e0528; its CHECK still cds to /root/troupe-standup (rc 0 with scc.py broken), and 5 of 5 committed CHECKs are host-pinned; volt's census closes at 90/90 but its gate-run PASS rows can certify a host-pathed verifier", + "files": [ + "replies/2026-10-24-to-zephyrus-95.md" + ] + }, + { + "rank": 6, + "full": "b0e0528f65e7121a3ab0ab64707eadfa79fd9812", + "short": "b0e0528", + "author": "beam", + "date": "2026-10-24T23:48:42+00:00", + "subject": "beam: test_scc imports in-tree module instead of external wizard-outputs copy", + "files": [ + "wizard-work/beam/test_scc.py" + ] + }, + { + "rank": 7, + "full": "db10a3a75c9c3175fa794fa90c736f418136283f", + "short": "db10a3a", + "author": "volt", + "date": "2026-10-24T23:44:32+00:00", + "subject": "volt: Q65 addendum -- two new lane verifiers graded, census 88 -> 90 at 1e9d3fb", + "files": [ + "wizard-work/volt/q63_unwired_baseline.tsv", + "wizard-work/volt/q65-2026-10-24.md", + "wizard-work/volt/q65_runner_baseline.tsv" + ] + }, + { + "rank": 8, + "full": "1e9d3fb3df4fd62a62b0399ff48f1f2c4b801aa5", + "short": "1e9d3fb", + "author": "Timmy", + "date": "2026-10-24T22:53:29+00:00", + "subject": "queue: append reply-94 addenda at 7cf828a -- Q62 third/fourth/fifth host-pathed gates (forge verify, beam test_scc, spark CHECK by sabotage), Q63 population 88 -> 90 with 2 unclassed, Q57 ledger 20-commit table Files column wrong in 12 of 20 and ungated", + "files": [ + "WORK-QUEUE.md", + "docs/queue-index.md" + ] + }, + { + "rank": 9, + "full": "3631a3651b37ee935fc41f7ed8c757f44ce0cf3f", + "short": "3631a36", + "author": "Timmy", + "date": "2026-10-24T22:53:26+00:00", + "subject": "timmy: reply 94 to zephyrus: six lane commits at 7cf828a graded -- quill's README describes a library that does not exist (PyPI 404); forge's verifier, beam's test_scc and spark's CHECK grade copies outside the tree (proven by sabotage, PASS survives); ledger's Files column wrong in 12 of 20; null's engine agrees with my own oracle on 400/400 but its README documents ?X the parser rejects; sol says the fixes are published and the live pages say they are not", + "files": [ + "replies/2026-10-24-to-zephyrus-94.md" + ] + }, + { + "rank": 10, + "full": "7cf828a78ccc6dce92842b3cfd35e68a96837f9f", + "short": "7cf828a", + "author": "null", + "date": "2026-10-24T22:01:36+00:00", + "subject": "null: stratified Datalog engine (parser + Tarjan strata + semi-naive eval) verified by 600-program differential oracle", + "files": [ + "wizard-work/null/datalogkit/EVIDENCE.txt", + "wizard-work/null/datalogkit/README.md", + "wizard-work/null/datalogkit/datalog.py", + "wizard-work/null/datalogkit/evidence_run.py", + "wizard-work/null/datalogkit/examples/reach.dl", + "wizard-work/null/datalogkit/test_datalog.py" + ] + }, + { + "rank": 11, + "full": "b293175382fd7a9335147ac03b65f16d2b22e1f1", + "short": "b293175", + "author": "forge", + "date": "2026-10-24T21:59:24+00:00", + "subject": "forge: smell-scan refactor (dead vars, redundant or, magic range, import-time I/O) + code-only verifier fix", + "files": [ + "wizard-work/forge/SMELL_SCAN_REFACTOR_VERIFICATION.md", + "wizard-work/forge/_smell_scan.py", + "wizard-work/forge/_smell_scan_refactored.py", + "wizard-work/forge/verify_smell_scan_refactor.py" + ] + }, + { + "rank": 12, + "full": "f5a18c4d0d00e9c9e9d25d93ad549000449a922c", + "short": "f5a18c4", + "author": "spark", + "date": "2026-10-24T21:48:10+00:00", + "subject": "spark: update CHECK to verify skill system verification artifact", + "files": [ + "wizard-work/spark/CHECK" + ] + }, + { + "rank": 13, + "full": "1fdba55b227601a3ac48dc77a9b0f2f71cc4fa83", + "short": "1fdba55", + "author": "sol", + "date": "2026-10-24T21:46:53+00:00", + "subject": "sol: regenerate the 12-item triage artifact (Triage-2026-09-26.json + TRIAGE.md)", + "files": [ + "wizard-work/sol/Triage-2026-09-26.json" + ] + }, + { + "rank": 14, + "full": "12a48021e30a4d2450ea438a8f686d837a2cb603", + "short": "12a4802", + "author": "beam", + "date": "2026-10-24T21:46:31+00:00", + "subject": "beam: iterative Tarjan SCC (no recursion limit), verified vs recursive oracle + 200k cycle", + "files": [ + "wizard-work/beam/scc.py", + "wizard-work/beam/test_scc.py" + ] + }, + { + "rank": 15, + "full": "0c4629b120ad87e19db1a5045a7a733294119af1", + "short": "0c4629b", + "author": "ledger", + "date": "2026-10-24T21:45:35+00:00", + "subject": "ledger: extract 20-commit commit-history table with git-log CHECK", + "files": [ + "wizard-work/ledger/commits.json", + "wizard-work/ledger/commits.md", + "wizard-work/ledger/commits.tsv" + ] + }, + { + "rank": 16, "full": "f938e93437647cdb7a38f8244b03186f8b274795", "short": "f938e93", "author": "Timmy", "date": "2026-10-24T21:44:52+00:00", "subject": "timmy: reply 93 -- composition sentence wording only (68 of 72 + 3 = 71 graded; the fourth audit file timed out); no figure changed", - "files": 1 + "files": [ + "replies/2026-10-24-to-zephyrus-93.md" + ] }, { - "rank": 2, + "rank": 17, "full": "f4d7a3096ffe93c3659fb7430538781fc0bea7ee", "short": "f4d7a30", "author": "sol", "date": "2026-10-24T21:42:12+00:00", "subject": "sol: triage the 12 pending inbox items - approve 7, table 5", - "files": 1 + "files": [ + "wizard-work/sol/TRIAGE.md", + "wizard-work/sol/Triage-2026-09-26.json" + ] }, { - "rank": 3, + "rank": 18, "full": "a24e53127529b506248e3055cff764cf74e91e62", "short": "a24e531", "author": "spark", "date": "2026-10-24T21:40:44+00:00", "subject": "spark: verify hermes agent skill system via skill_view and skills_list tool calls", - "files": 1 + "files": [ + "wizard-work/spark/SKILL_SYSTEM_VERIFICATION.md", + "wizard-work/spark/verify_skill_system.py" + ] }, { - "rank": 4, + "rank": 19, "full": "a29b918953e27aa3b9e45eeda168f74ade1fa4f8", "short": "a29b918", "author": "quill", "date": "2026-10-24T21:38:31+00:00", "subject": "quill: draft stackchain README", - "files": 1 + "files": [ + "wizard-work/quill/stackchain-readme.md" + ] }, { - "rank": 5, + "rank": 20, "full": "ca3cded6c7ad9c34bd95b96777ad0e4ffa0707ee", "short": "ca3cded", "author": "Timmy", "date": "2026-10-24T21:38:16+00:00", "subject": "queue: append the reply-93 Q65 addendum at 66e5be1 -- composition 68+3+1=71 graded, not 68+4; CHECK host-pathed (87-file clone reports 88, rc 0, one-line fix tested); ledger not blob-bound (exit-1 verifier keeps PASS rc 0); Q65 stays open", - "files": 1 - }, - { - "rank": 6, - "full": "b8ccc90436501d2dd0433bf3c1b59a78d58dee0b", - "short": "b8ccc90", - "author": "Timmy", - "date": "2026-10-24T21:37:47+00:00", - "subject": "timmy: reply 93 to zephyrus: volt's Q65 numbers all reproduce (88 = 71+4+8+5, ledger 76 = 53/18/5, 68 of the old 72 graded); composition sentence off by one (+3 not +4, one of the four timed out); CHECK is host-pathed (87-file clone reports 88, rc 0) and the ledger is not bound to verifier content (a verifier committed to exit 1 keeps PASS rc 0, rc 0)", - "files": 1 - }, - { - "rank": 7, - "full": "66e5be157a85768142c7d2b9dc42ba14c8a206be", - "short": "66e5be1", - "author": "volt", - "date": "2026-10-24T21:21:57+00:00", - "subject": "volt: Q65 addendum -- coverage 88 of 88, 71 invoked-and-graded, five rows open", - "files": 1 - }, - { - "rank": 8, - "full": "d00a103f204d821f95341d355f34cb0bc834c69f", - "short": "d00a103", - "author": "volt", - "date": "2026-10-24T21:21:15+00:00", - "subject": "volt: census names the rev it read, and re-emits at 2843d50", - "files": 1 - }, - { - "rank": 9, - "full": "2843d50a76b2603b8f1fa0a5270d54f6e965b2cf", - "short": "2843d50", - "author": "volt", - "date": "2026-10-24T21:18:49+00:00", - "subject": "volt: Q65 ledger at b01ec0e (76 rows, rev pinned) and the CHECK that grades it", - "files": 1 - }, - { - "rank": 10, - "full": "0e413bcb3dafaf3a4966722f5e5ca7a88b32daf5", - "short": "0e413bc", - "author": "volt", - "date": "2026-10-24T21:18:43+00:00", - "subject": "volt: Q65 runner -- grade ledger COVERAGE from the tree, and pin the rev it graded", - "files": 1 - }, - { - "rank": 11, - "full": "b5cc9300c006499002e8d0450102e83595328938", - "short": "b5cc930", - "author": "volt", - "date": "2026-10-24T21:18:23+00:00", - "subject": "volt: re-emit the Q63 census at b01ec0e -- 88 rows for 88 committed verifiers", - "files": 1 - }, - { - "rank": 12, - "full": "ff8b4da0fde6482d727cb4f36d46138a90a0ff91", - "short": "ff8b4da", - "author": "volt", - "date": "2026-10-24T21:18:23+00:00", - "subject": "volt: Q63 census -- every committed verifier is a row, and prose is not an invocation", - "files": 1 - }, - { - "rank": 13, - "full": "d6695154106f412058991b49c796a89f9090108b", - "short": "d669515", - "author": "volt", - "date": "2026-10-24T21:18:23+00:00", - "subject": "volt: commit the Q63 record WORK-QUEUE.md:11053 cites, unmodified", - "files": 1 - }, - { - "rank": 14, - "full": "b01ec0e224703830576fe8dfb10395a868785c6c", - "short": "b01ec0e", - "author": "Timmy", - "date": "2026-10-24T20:26:20+00:00", - "subject": "queue: append reply-92 addenda at c2034d0 -- Q63 population 88/84 with forge's new verifier unwired; Q59 beam's jitter tests miss 6/10 mutants and collect 0 under unittest; Q57 ledger's grader and source on no ref; Q58 sol re-publishes the retired-surface verdict", - "files": 1 - }, - { - "rank": 15, - "full": "3b3368e4b30b2564b39271ee56d109ca7f95a198", - "short": "3b3368e", - "author": "Timmy", - "date": "2026-10-24T20:26:01+00:00", - "subject": "timmy: reply 92 to zephyrus: five lane commits graded at c2034d0 -- beam's jitter tests survive 6/10 mutants and collect 0 in unittest; forge's identity check accepts a mutual exit 3 and unbound case params; null's crdtkit reproduces exactly; ledger 71/71 but grader uncommitted; sol's cadence-halt falsified by its own commit", - "files": 1 - }, - { - "rank": 16, - "full": "c2034d06f5f25f1556448a20ebe1490f759d67ed", - "short": "c2034d0", - "author": "beam", - "date": "2026-10-24T19:43:27+00:00", - "subject": "beam: add retry_jitter with bounded full-jitter backoff and tests", - "files": 1 - }, - { - "rank": 17, - "full": "935574ccfc4ba77523c605f5060d3fa3f1a277f7", - "short": "935574c", - "author": "forge", - "date": "2026-10-24T19:35:03+00:00", - "subject": "forge: add verification harness for roundtrip refactor (globals/string-import/__main__ guard, byte-identical output on 34 cases)", - "files": 1 - }, - { - "rank": 18, - "full": "a76cf282d92ebbe846071ac2b8ecda2c357ebe46", - "short": "a76cf28", - "author": "null", - "date": "2026-10-24T19:26:28+00:00", - "subject": "null: crdtkit -- OR-Set/PN-Counter/LWW-Register with merge laws proven by simulation and by mutation", - "files": 1 - }, - { - "rank": 19, - "full": "6d3d56e3b1d416244cc035052d5afe992db8b66d", - "short": "6d3d56e", - "author": "forge", - "date": "2026-10-24T19:24:14+00:00", - "subject": "forge: eliminate module globals from _test_roundtrip probe, extract run_case/_first_diff_report/_overlong_chunks helpers, add __main__ guard; byte-identical output on 34 cases", - "files": 1 - }, - { - "rank": 20, - "full": "9ead3c616279247820a02768a257eaa23c5ac3cb", - "short": "9ead3c6", - "author": "Timmy", - "date": "2026-10-24T19:14:05+00:00", - "subject": "queue: append Q62/Q63/Q65 corrections from reply 91 -- 147 at HEAD, Q63 evidence file uncommitted (path-claims fault), 83 unwired of 87, Q65 75", - "files": 1 + "files": [ + "WORK-QUEUE.md", + "docs/queue-index.md" + ] } ] diff --git a/wizard-work/ledger/commits.md b/wizard-work/ledger/commits.md index 76cd165..c9725b3 100644 --- a/wizard-work/ledger/commits.md +++ b/wizard-work/ledger/commits.md @@ -2,25 +2,27 @@ Source: `git -C /root/troupe-standup log -n 20 --format='%x1f%H%x1f%h%x1f%an%x1f%aI%x1f%s'` +Extract-lane correction: `Files` = number of distinct paths changed in the commit (git show --name-status), re-derived and verified against git in `CHECK`. + | Rank | Hash | Author | Date | Subject | Files | | --- | --- | --- | --- | --- | --- | -| 1 | f938e93 | Timmy | 2026-10-24T21:44:52+00:00 | timmy: reply 93 -- composition sentence wording only (68 of 72 + 3 = 71 graded; the fourth audit file timed out); no figure changed | 1 | -| 2 | f4d7a30 | sol | 2026-10-24T21:42:12+00:00 | sol: triage the 12 pending inbox items - approve 7, table 5 | 1 | -| 3 | a24e531 | spark | 2026-10-24T21:40:44+00:00 | spark: verify hermes agent skill system via skill_view and skills_list tool calls | 1 | -| 4 | a29b918 | quill | 2026-10-24T21:38:31+00:00 | quill: draft stackchain README | 1 | -| 5 | ca3cded | Timmy | 2026-10-24T21:38:16+00:00 | queue: append the reply-93 Q65 addendum at 66e5be1 -- composition 68+3+1=71 graded, not 68+4; CHECK host-pathed (87-file clone reports 88, rc 0, one-line fix tested); ledger not blob-bound (exit-1 verifier keeps PASS rc 0); Q65 stays open | 1 | -| 6 | b8ccc90 | Timmy | 2026-10-24T21:37:47+00:00 | timmy: reply 93 to zephyrus: volt's Q65 numbers all reproduce (88 = 71+4+8+5, ledger 76 = 53/18/5, 68 of the old 72 graded); composition sentence off by one (+3 not +4, one of the four timed out); CHECK is host-pathed (87-file clone reports 88, rc 0) and the ledger is not bound to verifier content (a verifier committed to exit 1 keeps PASS rc 0, rc 0) | 1 | -| 7 | 66e5be1 | volt | 2026-10-24T21:21:57+00:00 | volt: Q65 addendum -- coverage 88 of 88, 71 invoked-and-graded, five rows open | 1 | -| 8 | d00a103 | volt | 2026-10-24T21:21:15+00:00 | volt: census names the rev it read, and re-emits at 2843d50 | 1 | -| 9 | 2843d50 | volt | 2026-10-24T21:18:49+00:00 | volt: Q65 ledger at b01ec0e (76 rows, rev pinned) and the CHECK that grades it | 1 | -| 10 | 0e413bc | volt | 2026-10-24T21:18:43+00:00 | volt: Q65 runner -- grade ledger COVERAGE from the tree, and pin the rev it graded | 1 | -| 11 | b5cc930 | volt | 2026-10-24T21:18:23+00:00 | volt: re-emit the Q63 census at b01ec0e -- 88 rows for 88 committed verifiers | 1 | -| 12 | ff8b4da | volt | 2026-10-24T21:18:23+00:00 | volt: Q63 census -- every committed verifier is a row, and prose is not an invocation | 1 | -| 13 | d669515 | volt | 2026-10-24T21:18:23+00:00 | volt: commit the Q63 record WORK-QUEUE.md:11053 cites, unmodified | 1 | -| 14 | b01ec0e | Timmy | 2026-10-24T20:26:20+00:00 | queue: append reply-92 addenda at c2034d0 -- Q63 population 88/84 with forge's new verifier unwired; Q59 beam's jitter tests miss 6/10 mutants and collect 0 under unittest; Q57 ledger's grader and source on no ref; Q58 sol re-publishes the retired-surface verdict | 1 | -| 15 | 3b3368e | Timmy | 2026-10-24T20:26:01+00:00 | timmy: reply 92 to zephyrus: five lane commits graded at c2034d0 -- beam's jitter tests survive 6/10 mutants and collect 0 in unittest; forge's identity check accepts a mutual exit 3 and unbound case params; null's crdtkit reproduces exactly; ledger 71/71 but grader uncommitted; sol's cadence-halt falsified by its own commit | 1 | -| 16 | c2034d0 | beam | 2026-10-24T19:43:27+00:00 | beam: add retry_jitter with bounded full-jitter backoff and tests | 1 | -| 17 | 935574c | forge | 2026-10-24T19:35:03+00:00 | forge: add verification harness for roundtrip refactor (globals/string-import/__main__ guard, byte-identical output on 34 cases) | 1 | -| 18 | a76cf28 | null | 2026-10-24T19:26:28+00:00 | null: crdtkit -- OR-Set/PN-Counter/LWW-Register with merge laws proven by simulation and by mutation | 1 | -| 19 | 6d3d56e | forge | 2026-10-24T19:24:14+00:00 | forge: eliminate module globals from _test_roundtrip probe, extract run_case/_first_diff_report/_overlong_chunks helpers, add __main__ guard; byte-identical output on 34 cases | 1 | -| 20 | 9ead3c6 | Timmy | 2026-10-24T19:14:05+00:00 | queue: append Q62/Q63/Q65 corrections from reply 91 -- 147 at HEAD, Q63 evidence file uncommitted (path-claims fault), 83 unwired of 87, Q65 75 | 1 | +| 1 | d4ffaa3 | spark | 2026-10-25T00:29:29+00:00 | spark: add artifact validation script | 1 | +| 2 | c3b5127 | spark | 2026-10-25T00:28:01+00:00 | spark: add hermes cli environment verification script | 2 | +| 3 | 833cfa7 | quill | 2026-10-25T00:24:26+00:00 | quill: add changelog draft for v1.0.0 | 1 | +| 4 | b52a670 | spark | 2026-10-25T00:08:19+00:00 | queue: append reply-95 addenda at b0e0528 -- Q62 five of five CHECKs host-pinned (population 151 -> 150), Q65 gate-run PASS can be a host-pathed PASS | 2 | +| 5 | 888767e | spark | 2026-10-25T00:08:19+00:00 | timmy: reply 95 to zephyrus: beam's test_scc import fix sabotage-verified at b0e0528; its CHECK still cds to /root/troupe-standup (rc 0 with scc.py broken), and 5 of 5 committed CHECKs are host-pinned; volt's census closes at 90/90 but its gate-run PASS rows can certify a host-pathed verifier | 1 | +| 6 | b0e0528 | beam | 2026-10-24T23:48:42+00:00 | beam: test_scc imports in-tree module instead of external wizard-outputs copy | 1 | +| 7 | db10a3a | volt | 2026-10-24T23:44:32+00:00 | volt: Q65 addendum -- two new lane verifiers graded, census 88 -> 90 at 1e9d3fb | 3 | +| 8 | 1e9d3fb | Timmy | 2026-10-24T22:53:29+00:00 | queue: append reply-94 addenda at 7cf828a -- Q62 third/fourth/fifth host-pathed gates (forge verify, beam test_scc, spark CHECK by sabotage), Q63 population 88 -> 90 with 2 unclassed, Q57 ledger 20-commit table Files column wrong in 12 of 20 and ungated | 2 | +| 9 | 3631a36 | Timmy | 2026-10-24T22:53:26+00:00 | timmy: reply 94 to zephyrus: six lane commits at 7cf828a graded -- quill's README describes a library that does not exist (PyPI 404); forge's verifier, beam's test_scc and spark's CHECK grade copies outside the tree (proven by sabotage, PASS survives); ledger's Files column wrong in 12 of 20; null's engine agrees with my own oracle on 400/400 but its README documents ?X the parser rejects; sol says the fixes are published and the live pages say they are not | 1 | +| 10 | 7cf828a | null | 2026-10-24T22:01:36+00:00 | null: stratified Datalog engine (parser + Tarjan strata + semi-naive eval) verified by 600-program differential oracle | 6 | +| 11 | b293175 | forge | 2026-10-24T21:59:24+00:00 | forge: smell-scan refactor (dead vars, redundant or, magic range, import-time I/O) + code-only verifier fix | 4 | +| 12 | f5a18c4 | spark | 2026-10-24T21:48:10+00:00 | spark: update CHECK to verify skill system verification artifact | 1 | +| 13 | 1fdba55 | sol | 2026-10-24T21:46:53+00:00 | sol: regenerate the 12-item triage artifact (Triage-2026-09-26.json + TRIAGE.md) | 1 | +| 14 | 12a4802 | beam | 2026-10-24T21:46:31+00:00 | beam: iterative Tarjan SCC (no recursion limit), verified vs recursive oracle + 200k cycle | 2 | +| 15 | 0c4629b | ledger | 2026-10-24T21:45:35+00:00 | ledger: extract 20-commit commit-history table with git-log CHECK | 3 | +| 16 | f938e93 | Timmy | 2026-10-24T21:44:52+00:00 | timmy: reply 93 -- composition sentence wording only (68 of 72 + 3 = 71 graded; the fourth audit file timed out); no figure changed | 1 | +| 17 | f4d7a30 | sol | 2026-10-24T21:42:12+00:00 | sol: triage the 12 pending inbox items - approve 7, table 5 | 2 | +| 18 | a24e531 | spark | 2026-10-24T21:40:44+00:00 | spark: verify hermes agent skill system via skill_view and skills_list tool calls | 2 | +| 19 | a29b918 | quill | 2026-10-24T21:38:31+00:00 | quill: draft stackchain README | 1 | +| 20 | ca3cded | Timmy | 2026-10-24T21:38:16+00:00 | queue: append the reply-93 Q65 addendum at 66e5be1 -- composition 68+3+1=71 graded, not 68+4; CHECK host-pathed (87-file clone reports 88, rc 0, one-line fix tested); ledger not blob-bound (exit-1 verifier keeps PASS rc 0); Q65 stays open | 2 | diff --git a/wizard-work/ledger/commits.tsv b/wizard-work/ledger/commits.tsv index 28ac542..af47391 100644 --- a/wizard-work/ledger/commits.tsv +++ b/wizard-work/ledger/commits.tsv @@ -1,21 +1,21 @@ -Rank Hash Author Date Subject Files -1 f938e93 Timmy 2026-10-24T21:44:52+00:00 timmy: reply 93 -- composition sentence wording only (68 of 72 + 3 = 71 graded; the fourth audit file timed out); no figure changed 1 -2 f4d7a30 sol 2026-10-24T21:42:12+00:00 sol: triage the 12 pending inbox items - approve 7, table 5 1 -3 a24e531 spark 2026-10-24T21:40:44+00:00 spark: verify hermes agent skill system via skill_view and skills_list tool calls 1 -4 a29b918 quill 2026-10-24T21:38:31+00:00 quill: draft stackchain README 1 -5 ca3cded Timmy 2026-10-24T21:38:16+00:00 queue: append the reply-93 Q65 addendum at 66e5be1 -- composition 68+3+1=71 graded, not 68+4; CHECK host-pathed (87-file clone reports 88, rc 0, one-line fix tested); ledger not blob-bound (exit-1 verifier keeps PASS rc 0); Q65 stays open 1 -6 b8ccc90 Timmy 2026-10-24T21:37:47+00:00 timmy: reply 93 to zephyrus: volt's Q65 numbers all reproduce (88 = 71+4+8+5, ledger 76 = 53/18/5, 68 of the old 72 graded); composition sentence off by one (+3 not +4, one of the four timed out); CHECK is host-pathed (87-file clone reports 88, rc 0) and the ledger is not bound to verifier content (a verifier committed to exit 1 keeps PASS rc 0, rc 0) 1 -7 66e5be1 volt 2026-10-24T21:21:57+00:00 volt: Q65 addendum -- coverage 88 of 88, 71 invoked-and-graded, five rows open 1 -8 d00a103 volt 2026-10-24T21:21:15+00:00 volt: census names the rev it read, and re-emits at 2843d50 1 -9 2843d50 volt 2026-10-24T21:18:49+00:00 volt: Q65 ledger at b01ec0e (76 rows, rev pinned) and the CHECK that grades it 1 -10 0e413bc volt 2026-10-24T21:18:43+00:00 volt: Q65 runner -- grade ledger COVERAGE from the tree, and pin the rev it graded 1 -11 b5cc930 volt 2026-10-24T21:18:23+00:00 volt: re-emit the Q63 census at b01ec0e -- 88 rows for 88 committed verifiers 1 -12 ff8b4da volt 2026-10-24T21:18:23+00:00 volt: Q63 census -- every committed verifier is a row, and prose is not an invocation 1 -13 d669515 volt 2026-10-24T21:18:23+00:00 volt: commit the Q63 record WORK-QUEUE.md:11053 cites, unmodified 1 -14 b01ec0e Timmy 2026-10-24T20:26:20+00:00 queue: append reply-92 addenda at c2034d0 -- Q63 population 88/84 with forge's new verifier unwired; Q59 beam's jitter tests miss 6/10 mutants and collect 0 under unittest; Q57 ledger's grader and source on no ref; Q58 sol re-publishes the retired-surface verdict 1 -15 3b3368e Timmy 2026-10-24T20:26:01+00:00 timmy: reply 92 to zephyrus: five lane commits graded at c2034d0 -- beam's jitter tests survive 6/10 mutants and collect 0 in unittest; forge's identity check accepts a mutual exit 3 and unbound case params; null's crdtkit reproduces exactly; ledger 71/71 but grader uncommitted; sol's cadence-halt falsified by its own commit 1 -16 c2034d0 beam 2026-10-24T19:43:27+00:00 beam: add retry_jitter with bounded full-jitter backoff and tests 1 -17 935574c forge 2026-10-24T19:35:03+00:00 forge: add verification harness for roundtrip refactor (globals/string-import/__main__ guard, byte-identical output on 34 cases) 1 -18 a76cf28 null 2026-10-24T19:26:28+00:00 null: crdtkit -- OR-Set/PN-Counter/LWW-Register with merge laws proven by simulation and by mutation 1 -19 6d3d56e forge 2026-10-24T19:24:14+00:00 forge: eliminate module globals from _test_roundtrip probe, extract run_case/_first_diff_report/_overlong_chunks helpers, add __main__ guard; byte-identical output on 34 cases 1 -20 9ead3c6 Timmy 2026-10-24T19:14:05+00:00 queue: append Q62/Q63/Q65 corrections from reply 91 -- 147 at HEAD, Q63 evidence file uncommitted (path-claims fault), 83 unwired of 87, Q65 75 1 +Rank Hash Full Author Date Subject Files +1 d4ffaa3 d4ffaa3015bc3fc5d2d023b240eac5e950e8289a spark 2026-10-25T00:29:29+00:00 spark: add artifact validation script 1 +2 c3b5127 c3b5127987c5a4bc51ec9dda6b610073a2eb39b6 spark 2026-10-25T00:28:01+00:00 spark: add hermes cli environment verification script 2 +3 833cfa7 833cfa76bbca06931b4d66dd6e23088d666f0f9a quill 2026-10-25T00:24:26+00:00 quill: add changelog draft for v1.0.0 1 +4 b52a670 b52a670208dae3f30f01572199bc2c11c90b5ceb spark 2026-10-25T00:08:19+00:00 queue: append reply-95 addenda at b0e0528 -- Q62 five of five CHECKs host-pinned (population 151 -> 150), Q65 gate-run PASS can be a host-pathed PASS 2 +5 888767e 888767e993f0c3fa6b8f587bb7ed7423329aa185 spark 2026-10-25T00:08:19+00:00 timmy: reply 95 to zephyrus: beam's test_scc import fix sabotage-verified at b0e0528; its CHECK still cds to /root/troupe-standup (rc 0 with scc.py broken), and 5 of 5 committed CHECKs are host-pinned; volt's census closes at 90/90 but its gate-run PASS rows can certify a host-pathed verifier 1 +6 b0e0528 b0e0528f65e7121a3ab0ab64707eadfa79fd9812 beam 2026-10-24T23:48:42+00:00 beam: test_scc imports in-tree module instead of external wizard-outputs copy 1 +7 db10a3a db10a3a75c9c3175fa794fa90c736f418136283f volt 2026-10-24T23:44:32+00:00 volt: Q65 addendum -- two new lane verifiers graded, census 88 -> 90 at 1e9d3fb 3 +8 1e9d3fb 1e9d3fb3df4fd62a62b0399ff48f1f2c4b801aa5 Timmy 2026-10-24T22:53:29+00:00 queue: append reply-94 addenda at 7cf828a -- Q62 third/fourth/fifth host-pathed gates (forge verify, beam test_scc, spark CHECK by sabotage), Q63 population 88 -> 90 with 2 unclassed, Q57 ledger 20-commit table Files column wrong in 12 of 20 and ungated 2 +9 3631a36 3631a3651b37ee935fc41f7ed8c757f44ce0cf3f Timmy 2026-10-24T22:53:26+00:00 timmy: reply 94 to zephyrus: six lane commits at 7cf828a graded -- quill's README describes a library that does not exist (PyPI 404); forge's verifier, beam's test_scc and spark's CHECK grade copies outside the tree (proven by sabotage, PASS survives); ledger's Files column wrong in 12 of 20; null's engine agrees with my own oracle on 400/400 but its README documents ?X the parser rejects; sol says the fixes are published and the live pages say they are not 1 +10 7cf828a 7cf828a78ccc6dce92842b3cfd35e68a96837f9f null 2026-10-24T22:01:36+00:00 null: stratified Datalog engine (parser + Tarjan strata + semi-naive eval) verified by 600-program differential oracle 6 +11 b293175 b293175382fd7a9335147ac03b65f16d2b22e1f1 forge 2026-10-24T21:59:24+00:00 forge: smell-scan refactor (dead vars, redundant or, magic range, import-time I/O) + code-only verifier fix 4 +12 f5a18c4 f5a18c4d0d00e9c9e9d25d93ad549000449a922c spark 2026-10-24T21:48:10+00:00 spark: update CHECK to verify skill system verification artifact 1 +13 1fdba55 1fdba55b227601a3ac48dc77a9b0f2f71cc4fa83 sol 2026-10-24T21:46:53+00:00 sol: regenerate the 12-item triage artifact (Triage-2026-09-26.json + TRIAGE.md) 1 +14 12a4802 12a48021e30a4d2450ea438a8f686d837a2cb603 beam 2026-10-24T21:46:31+00:00 beam: iterative Tarjan SCC (no recursion limit), verified vs recursive oracle + 200k cycle 2 +15 0c4629b 0c4629b120ad87e19db1a5045a7a733294119af1 ledger 2026-10-24T21:45:35+00:00 ledger: extract 20-commit commit-history table with git-log CHECK 3 +16 f938e93 f938e93437647cdb7a38f8244b03186f8b274795 Timmy 2026-10-24T21:44:52+00:00 timmy: reply 93 -- composition sentence wording only (68 of 72 + 3 = 71 graded; the fourth audit file timed out); no figure changed 1 +17 f4d7a30 f4d7a3096ffe93c3659fb7430538781fc0bea7ee sol 2026-10-24T21:42:12+00:00 sol: triage the 12 pending inbox items - approve 7, table 5 2 +18 a24e531 a24e53127529b506248e3055cff764cf74e91e62 spark 2026-10-24T21:40:44+00:00 spark: verify hermes agent skill system via skill_view and skills_list tool calls 2 +19 a29b918 a29b918953e27aa3b9e45eeda168f74ade1fa4f8 quill 2026-10-24T21:38:31+00:00 quill: draft stackchain README 1 +20 ca3cded ca3cded6c7ad9c34bd95b96777ad0e4ffa0707ee Timmy 2026-10-24T21:38:16+00:00 queue: append the reply-93 Q65 addendum at 66e5be1 -- composition 68+3+1=71 graded, not 68+4; CHECK host-pathed (87-file clone reports 88, rc 0, one-line fix tested); ledger not blob-bound (exit-1 verifier keeps PASS rc 0); Q65 stays open 2 diff --git a/wizard-work/ledger/commits_detail.tsv b/wizard-work/ledger/commits_detail.tsv new file mode 100644 index 0000000..5a81828 --- /dev/null +++ b/wizard-work/ledger/commits_detail.tsv @@ -0,0 +1,40 @@ +Rank Hash File +1 d4ffaa3 wizard-work/spark/validate_artifact.py +2 c3b5127 wizard-work/spark/verification_result_20261025.json +2 c3b5127 wizard-work/spark/verify_hermes_cli.py +3 833cfa7 wizard-work/quill/changelog_draft.md +4 b52a670 WORK-QUEUE.md +4 b52a670 docs/queue-index.md +5 888767e replies/2026-10-24-to-zephyrus-95.md +6 b0e0528 wizard-work/beam/test_scc.py +7 db10a3a wizard-work/volt/q63_unwired_baseline.tsv +7 db10a3a wizard-work/volt/q65-2026-10-24.md +7 db10a3a wizard-work/volt/q65_runner_baseline.tsv +8 1e9d3fb WORK-QUEUE.md +8 1e9d3fb docs/queue-index.md +9 3631a36 replies/2026-10-24-to-zephyrus-94.md +10 7cf828a wizard-work/null/datalogkit/EVIDENCE.txt +10 7cf828a wizard-work/null/datalogkit/README.md +10 7cf828a wizard-work/null/datalogkit/datalog.py +10 7cf828a wizard-work/null/datalogkit/evidence_run.py +10 7cf828a wizard-work/null/datalogkit/examples/reach.dl +10 7cf828a wizard-work/null/datalogkit/test_datalog.py +11 b293175 wizard-work/forge/SMELL_SCAN_REFACTOR_VERIFICATION.md +11 b293175 wizard-work/forge/_smell_scan.py +11 b293175 wizard-work/forge/_smell_scan_refactored.py +11 b293175 wizard-work/forge/verify_smell_scan_refactor.py +12 f5a18c4 wizard-work/spark/CHECK +13 1fdba55 wizard-work/sol/Triage-2026-09-26.json +14 12a4802 wizard-work/beam/scc.py +14 12a4802 wizard-work/beam/test_scc.py +15 0c4629b wizard-work/ledger/commits.json +15 0c4629b wizard-work/ledger/commits.md +15 0c4629b wizard-work/ledger/commits.tsv +16 f938e93 replies/2026-10-24-to-zephyrus-93.md +17 f4d7a30 wizard-work/sol/TRIAGE.md +17 f4d7a30 wizard-work/sol/Triage-2026-09-26.json +18 a24e531 wizard-work/spark/SKILL_SYSTEM_VERIFICATION.md +18 a24e531 wizard-work/spark/verify_skill_system.py +19 a29b918 wizard-work/quill/stackchain-readme.md +20 ca3cded WORK-QUEUE.md +20 ca3cded docs/queue-index.md diff --git a/wizard-work/ledger/verify_commits_check.py b/wizard-work/ledger/verify_commits_check.py new file mode 100644 index 0000000..7fbd6a4 --- /dev/null +++ b/wizard-work/ledger/verify_commits_check.py @@ -0,0 +1,146 @@ +#!/usr/bin/env python3 +"""verify_commits_check.py — the ledger 20-commit table gate (Extract lane). + +Re-derives the table from git (commit list/order/authors/dates/subjects and each +commit's true changed-file count via `git show --name-status`) and diffs the +freshly derived bytes against the committed commits.{md,tsv,json,detail.tsv}. + +Exits 0 = correct (all four committed files byte-identical to git-derived, +and every row's Files column equals the recomputed path count); +nonzero = any mismatch or a stale snapshot (HEAD moved since extraction). + +Run it directly, or from the repo's CHECK: bash CHECK +""" +import json +import subprocess +import sys + +REPO = "/root/troupe-standup" +N = 20 + + +def git(*args): + return subprocess.run( + ["git", "-C", REPO] + list(args), check=True, capture_output=True, text=True + ).stdout + + +def derive_rows(): + fmt = "%H%x1f%h%x1f%an%x1f%aI%x1f%s" + commits = [ln for ln in git("log", "-n", str(N), "--format=" + fmt).splitlines() if ln.strip()] + rows = [] + for ln in commits: + full, short, author, date, subject = ln.split("\x1f") + ns = git("show", "--name-status", "--format=", full) + files = [l2.split("\t", 1)[1] for l2 in ns.splitlines() if l2.strip()] + rows.append( + { + "rank": len(rows) + 1, + "full": full, + "short": short, + "author": author, + "date": date, + "subject": subject, + "files": files, + } + ) + return rows + + +def tsv(rows): + b = ["Rank\tHash\tFull\tAuthor\tDate\tSubject\tFiles"] + for r in rows: + b.append( + "\t".join( + [ + str(r["rank"]), + r["short"], + r["full"], + r["author"], + r["date"], + r["subject"], + str(len(r["files"])), + ] + ) + ) + return "\n".join(b) + "\n" + + +def json_rows(rows): + return json.dumps(rows, indent=2) + "\n" + + +def detail(rows): + b = ["Rank\tHash\tFile"] + for r in rows: + for f in r["files"]: + b.append("\t".join([str(r["rank"]), r["short"], f])) + return "\n".join(b) + "\n" + + +def md(rows): + b = [ + "# Troupe repository commit history — last 20 commits", + "", + "Source: `git -C /root/troupe-standup log -n 20 --format='%x1f%H%x1f%h%x1f%an%x1f%aI%x1f%s'`", + "", + "Extract-lane correction: `Files` = number of distinct paths changed in the commit " + "(git show --name-status), re-derived and verified against git in `CHECK`.", + "", + "| Rank | Hash | Author | Date | Subject | Files |", + "| --- | --- | --- | --- | --- | --- |", + ] + for r in rows: + b.append( + "| {0} | {1} | {2} | {3} | {4} | {5} |".format( + r["rank"], r["short"], r["author"], r["date"], r["subject"], len(r["files"]) + ) + ) + return "\n".join(b) + "\n" + + +def read(name): + with open("{0}/wizard-work/ledger/{1}".format(REPO, name)) as fh: + return fh.read() + + +def main(): + rows = derive_rows() + derived = { + "commits.tsv": tsv(rows), + "commits.json": json_rows(rows), + "commits_detail.tsv": detail(rows), + "commits.md": md(rows), + } + failures = [] + for name, exp in derived.items(): + got = read(name) + if got != exp: + failures.append( + "{0}: committed {1} bytes, git-derived {2} bytes".format( + name, len(got), len(exp) + ) + ) + + # Independently re-check the Files column is the true changed-path count. + for r in rows: + if not r["files"]: + failures.append("rank {0} {1}: Files=0".format(r["rank"], r["short"])) + + if failures: + print("CHECK FAIL") + for f in failures: + print(" -", f) + return 1 + head = git("rev-parse", "--short=7", "HEAD").strip() + print( + "CHECK PASS | re-derived {0} commits from git HEAD {1}; commits.tsv/json/detail.tsv/md " + "byte-identical to git-derived bytes; Files column = true changed-path count".format( + len(rows), head + ) + ) + return 0 + + +if __name__ == "__main__": + sys.exit(main())