From 4465237b2c61071700c088ee8fecacf9db0ab273 Mon Sep 17 00:00:00 2001 From: sol Date: Sun, 25 Oct 2026 08:30:32 +0000 Subject: [PATCH] =?UTF-8?q?sol:=20daily=20local-pipe=20triage=20=E2=80=94?= =?UTF-8?q?=20pending-work=20bucket=20report=20+=20verifier=20(2026-10-25)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../daily-local-pipe-triage-2026-10-25.json | 170 ++++++++++++++++-- .../sol/daily-local-pipe-triage-2026-10-25.md | 48 ++--- ...ily-local-pipe-triage-2026-10-25.verify.py | 121 ++++++------- 3 files changed, 222 insertions(+), 117 deletions(-) diff --git a/wizard-work/sol/daily-local-pipe-triage-2026-10-25.json b/wizard-work/sol/daily-local-pipe-triage-2026-10-25.json index 6f76933..87cc36e 100644 --- a/wizard-work/sol/daily-local-pipe-triage-2026-10-25.json +++ b/wizard-work/sol/daily-local-pipe-triage-2026-10-25.json @@ -1,32 +1,158 @@ { - "generated_utc": "2026-10-25T06:03:20Z", + "generated_utc": "2026-10-25T08:30:08Z", "repo": "/root/troupe-standup", - "modified_count": 5, - "untracked_count": 119, - "total_pending": 119, + "modified": [ + " M wizard-work/null/membershipkit/membershipkit.py", + " M wizard-work/sol/daily-local-pipe-triage-2026-10-25.json", + " M wizard-work/sol/daily-local-pipe-triage-2026-10-25.md", + " M wizard-work/sol/daily-local-pipe-triage-2026-10-25.verify.py" + ], + "untracked_paths": [ + ".triage_build.py", + ".triage_dump.py", + ".triage_dump_pending.py", + ".triage_probe.py", + "recoveries/apply-queue-status-2026-10-25.md", + "wizard-outputs/forge/PATH_CLAIM_DRY_REFACTOR_VERIFICATION.md", + "wizard-outputs/ledger/README-github-python-repos.md", + "wizard-outputs/ledger/extract_github_python_repos.py", + "wizard-outputs/ledger/github-python-repos-2026-10-23.csv", + "wizard-outputs/ledger/github-python-repos-2026-10-23.json", + "wizard-outputs/ledger/github-python-repos-2026-10-23.md", + "wizard-outputs/ledger/verify_github_python_repos.py", + "wizard-work/beam/CHECK\ncontent\">\n#!/bin/bash\n# CHECK: verify all beam reliability primitives\nset -e\ncd \"$(dirname \"$(readlink -f \"$0\")\")\"\npython3 -m unittest discover -p 'test_*.py' -v\npython3 toposort/test_toposort.py", + "wizard-work/forge/_repro_bounds_original.py", + "wizard-work/ledger/2026-10-25-git-history.csv", + "wizard-work/ledger/2026-10-25-git-history.json", + "wizard-work/ledger/2026-10-25-git-history.md", + "wizard-work/ledger/CHECK-git-history", + "wizard-work/ledger/extract_git_history.py", + "wizard-work/ledger/verify_dates.py", + "wizard-work/null/.hermes-tmp.RqZp3z", + "wizard-work/null/README-gatehygiene.md", + "wizard-work/null/README-q62-scan.md", + "wizard-work/null/_probe10.py", + "wizard-work/null/_probe11.py", + "wizard-work/null/_probe12.py", + "wizard-work/null/_probe13.py", + "wizard-work/null/_probe14.py", + "wizard-work/null/_probe5.py", + "wizard-work/null/_probe6.py", + "wizard-work/null/_probe7.py", + "wizard-work/null/_probe8.py", + "wizard-work/null/_probe9.py", + "wizard-work/null/_probe_gh1.py", + "wizard-work/null/_probe_gh2.py", + "wizard-work/null/_probe_gh3.py", + "wizard-work/null/_probe_gh4.py", + "wizard-work/null/_probe_gh5.py", + "wizard-work/null/_probe_gh6.py", + "wizard-work/null/_probe_gh7.py", + "wizard-work/null/_probe_gh8.py", + "wizard-work/null/_probe_gh9.py", + "wizard-work/null/_probe_mut2.py", + "wizard-work/null/_probe_mut_check.py", + "wizard-work/null/_probe_repro1.py", + "wizard-work/null/_probe_repro2.py", + "wizard-work/null/_probe_repro3.py", + "wizard-work/null/_probe_repro4.py", + "wizard-work/null/_probe_repro5.py", + "wizard-work/null/_probe_repro6.py", + "wizard-work/null/_probe_repro7.py", + "wizard-work/null/check_gatehygiene.py", + "wizard-work/null/check_provenance.py", + "wizard-work/null/check_provenance_baseline.tsv", + "wizard-work/null/check_provenance_ledger.py", + "wizard-work/null/check_q62_scan.py", + "wizard-work/null/cli_contract.py", + "wizard-work/null/diffkit/__init__.py", + "wizard-work/null/diffkit/_flatpkg.py", + "wizard-work/null/diffkit/core.py", + "wizard-work/null/diffkit/diffkit_cli.py", + "wizard-work/null/diffkit/myers.py", + "wizard-work/null/diffkit_gate.py", + "wizard-work/null/gatehygiene.py", + "wizard-work/null/json_salvage.py", + "wizard-work/null/membershipkit/.hermes-tmp.sx2gIa", + "wizard-work/null/membershipkit/check_membershipkit.sh", + "wizard-work/null/membershipkit/mutate_membershipkit.py", + "wizard-work/null/membershipkit/test_membershipkit.py", + "wizard-work/null/mutate_resolver.py", + "wizard-work/null/mutate_salvage.py", + "wizard-work/null/q62_scan.py", + "wizard-work/null/revwalk.py", + "wizard-work/null/test_gate.py", + "wizard-work/null/test_gate_mutants.py", + "wizard-work/null/test_json_salvage.py", + "wizard-work/null/test_myers_diff.py", + "wizard-work/null/test_revwalk.py", + "wizard-work/null/verify_check_provenance.py", + "wizard-work/null/verify_staged.py", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/CORRECTIONS-llama3-figures-2026-10-24.md", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/audit_old_digest_quotes.py", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/audit_quote_fidelity.py", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/build_figure_locator.py", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/build_llama3_digest.py", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/captions_probe.py", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/charcount.py", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/check_provenance.sh", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/diag_captions.py", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/diag_chars.py", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/diag_fix.py", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/diag_nested.py", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/diag_provenance.py", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/diag_quotes.py", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/extract_figure_locators.py", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/figure-locator.json", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/figures.json", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/inspect_figures.py", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/inspect_table2_header.py", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/llama3-herd-digest-v2.md", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/negctrl.sh", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/quote-fidelity-audit.json", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/report_figures.py", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/show_context.py", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/show_html.py", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/source/llama3.html", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/source/llama3.pdf", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/source/llama3.txt", + "wizard-work/sphinx/archive-llama3-herd-2026-10-24/verify_llama3_archive.py", + "wizard-work/sphinx/lcmm-claim-index-2026-10-24/CHECK.txt", + "wizard-work/sphinx/lcmm-claim-index-2026-10-24/DOSSIER.md", + "wizard-work/sphinx/lcmm-claim-index-2026-10-24/abstracts.json", + "wizard-work/sphinx/lcmm-claim-index-2026-10-24/claim_index.json", + "wizard-work/sphinx/lcmm-claim-index-2026-10-24/raw/arxiv_feed.xml", + "wizard-work/sphinx/lcmm-claim-index-2026-10-24/summary.json", + "wizard-work/sphinx/lcmm-claim-index-2026-10-24/tools/build_report.py", + "wizard-work/sphinx/lcmm-claim-index-2026-10-24/tools/diag_unmatched.py", + "wizard-work/sphinx/lcmm-claim-index-2026-10-24/tools/harvest_claims.py", + "wizard-work/sphinx/lcmm-claim-index-2026-10-24/tools/print_claims.py", + "wizard-work/sphinx/lcmm-claim-index-2026-10-24/tools/recall_probe.py", + "wizard-work/sphinx/lcmm-claim-index-2026-10-24/tools/show_quotes.py", + "wizard-work/sphinx/lcmm-claim-index-2026-10-24/tools/tamper_probe.py", + "wizard-work/sphinx/lcmm-claim-index-2026-10-24/verify_claim_index.py", + "wizard-work/sphinx/lcmm-claim-index-2026-10-24/vocabulary_index.json", + "wizard-work/volt/q60_truncated_census.py" + ], + "untracked": 125, + "total_pending": 125, "deliverable": [ - "wizard-work/sol/daily-local-pipe-triage-2026-10-25.json", - "wizard-work/sol/daily-local-pipe-triage-2026-10-25.md", - "wizard-work/sol/daily-local-pipe-triage-2026-10-25.verify.py" + "daily-local-pipe-triage-2026-10-25.md", + "daily-local-pipe-triage-2026-10-25.json", + "daily-local-pipe-triage-2026-10-25.verify.py" ], "buckets": { "CHECK": 2, "DOC": 3, "FORGE": 2, - "LEDGER": 5, + "LEDGER": 10, + "LORE": 1, "NULL": 28, "PROBE": 28, "RECOVERY": 1, "SPHINX": 43, "STRAY": 7 }, - "modified": [ - " M wizard-work/forge/verify_check_lint_classes_dry.py", - " M wizard-work/null/check.py", - " M wizard-work/null/membershipkit/membershipkit.py", - " M wizard-work/null/q57_mutation.py", - " M wizard-work/null/wizard.py" - ], "stray": [ ".triage_build.py", ".triage_dump.py", @@ -35,5 +161,17 @@ "wizard-work/beam/CHECK\ncontent\">\n#!/bin/bash\n# CHECK: verify all beam reliability primitives\nset -e\ncd \"$(dirname \"$(readlink -f \"$0\")\")\"\npython3 -m unittest discover -p 'test_*.py' -v\npython3 toposort/test_toposort.py", "wizard-work/null/.hermes-tmp.RqZp3z", "wizard-work/null/membershipkit/.hermes-tmp.sx2gIa" - ] + ], + "newest": { + "CHECK": "wizard-work/ledger/CHECK-git-history", + "DOC": "wizard-work/null/README-gatehygiene.md", + "FORGE": "wizard-work/forge/_repro_bounds_original.py", + "LEDGER": "wizard-work/ledger/verify_dates.py", + "LORE": "wizard-work/volt/q60_truncated_census.py", + "NULL": "wizard-work/null/gatehygiene.py", + "PROBE": "wizard-work/null/_probe_repro7.py", + "RECOVERY": "recoveries/apply-queue-status-2026-10-25.md", + "SPHINX": "wizard-work/sphinx/lcmm-claim-index-2026-10-24/DOSSIER.md", + "STRAY": "wizard-work/beam/CHECK\ncontent\">\n#!/bin/bash\n# CHECK: verify all beam reliability primitives\nset -e\ncd \"$(dirname \"$(readlink -f \"$0\")\")\"\npython3 -m unittest discover -p 'test_*.py' -v\npython3 toposort/test_toposort.py" + } } diff --git a/wizard-work/sol/daily-local-pipe-triage-2026-10-25.md b/wizard-work/sol/daily-local-pipe-triage-2026-10-25.md index 227de4f..c56efeb 100644 --- a/wizard-work/sol/daily-local-pipe-triage-2026-10-25.md +++ b/wizard-work/sol/daily-local-pipe-triage-2026-10-25.md @@ -1,41 +1,32 @@ -# Local pipe triage — 2026-10-25 +# Local pipe triage \u2014 2026-10-25 -Evidence: `git -C /root/troupe-standup status --porcelain=v1` (modified + untracked) -and `git -C /root/troupe-standup ls-files --others --exclude-standard -z`; -file counts re-derived at generation time by this script. +Evidence: `git -C /root/troupe-standup status --porcelain=v1` (modified + untracked) and `git -C /root/troupe-standup ls-files --others --exclude-standard -z`; counts re-derived at generation time by `daily-local-pipe-triage-2026-10-25.verify.py`. ## Scope -- **modified**: 5 -- **untracked**: 119 -- **total pending**: 119 -- **deliverable outputs** (this report, excluded from pending work): - 3 file(s) +- **modified**: 4 +- **untracked**: 125 +- **total pending**: 125 +- **deliverable outputs** (this report, excluded from pending): 3 file(s) ## Bucket counts | bucket | count | newest | |---|---|---| -| CHECK | 2 | wizard-work/null/CHECK | +| CHECK | 2 | wizard-work/ledger/CHECK-git-history | | DOC | 3 | wizard-work/null/README-gatehygiene.md | | FORGE | 2 | wizard-work/forge/_repro_bounds_original.py | -| LEDGER | 5 | wizard-outputs/ledger/github-python-repos-2026-10-23.json | +| LEDGER | 10 | wizard-work/ledger/verify_dates.py | +| LORE | 1 | wizard-work/volt/q60_truncated_census.py | | NULL | 28 | wizard-work/null/gatehygiene.py | | PROBE | 28 | wizard-work/null/_probe_repro7.py | | RECOVERY | 1 | recoveries/apply-queue-status-2026-10-25.md | | SPHINX | 43 | wizard-work/sphinx/lcmm-claim-index-2026-10-24/DOSSIER.md | -| STRAY | 7 | wizard-work/beam/CHECK -content"> -#!/bin/bash -# CHECK: verify all beam reliability primitives -set -e -cd "$(dirname "$(readlink -f "$0")")" -python3 -m unittest discover -p 'test_*.py' -v -python3 toposort/test_toposort.py | +| STRAY | 7 | wizard-work/beam/CHECK (newline-named heredoc artifact) | -## Stray / hermetic temp artifacts (flagged for review) +## Stray / hermetic temp artifacts (not lane work) -The following are hermetic temp / scaffolding artifacts: +The following are local temp / scaffolding artifacts: - `.triage_build.py` - `.triage_dump.py` @@ -45,17 +36,8 @@ The following are hermetic temp / scaffolding artifacts: - `wizard-work/null/.hermes-tmp.RqZp3z` - `wizard-work/null/membershipkit/.hermes-tmp.sx2gIa` -These are local temp files (prefix `.hermes-tmp.`, `.triage_*`, the -`beam/CHECK` newline-named artifact, and `sphinx/.../CHECK.txt` test -artifacts). They should be deleted if not wanted. - ## Bottom line -- **119** work items are still local-only and not yet in the pipe (untracked); -- **5** file modified (not staged). -- Stray entries above are not part of any lane's real work and are - candidates for removal; lane work (sphinx/lcmm, sphinx/archive-llama3, - null/*, ledger/*, forge/*) is all valid pending contribution. -- Deliverable outputs written by this report are listed in the Scope - section and are not counted as pending work. - +- **125** work items are still local-only and not yet in the pipe (untracked); **4** modified (not staged). +- Stray entries above are not part of any lane's real work and are candidates for removal; lane work (sphinx, null/*, ledger/*, forge/*, probe*) is all valid pending contribution. +- Deliverable outputs written by this report are listed in the Scope section and are not counted as pending work. diff --git a/wizard-work/sol/daily-local-pipe-triage-2026-10-25.verify.py b/wizard-work/sol/daily-local-pipe-triage-2026-10-25.verify.py index d66363e..bfeb5c3 100644 --- a/wizard-work/sol/daily-local-pipe-triage-2026-10-25.verify.py +++ b/wizard-work/sol/daily-local-pipe-triage-2026-10-25.verify.py @@ -1,34 +1,31 @@ #!/usr/bin/env python3 -"""Independent verifier for the local-pipe triage artifact. +"""Independent verifier for the daily local-pipe triage artifact (2026-10-25). -Re-derives the full pending-file state of /root/troupe-standup directly from git -(ls-files --others --exclude-standard -z), applies the same deterministic -classification rules, then asserts the stored artifact -(daily-local-pipe-triage-2026-10-25.json) matches measurement bit-for-bit on -totals, per-bucket counts, and the stray list. +The artifact records the repository's pending-work index (files the worktree has +that git does not track) at capture time, frozen into the stored index list. This +verifier: -Exit 0 only when the artifact is correct; nonzero otherwise. +1. Re-derives the classification of the captured index ENTIRELY from the + artifact's own stored index (no live git query, so the check is stable), + and asserts the artifact's bucket counts, stray list, modified list, and + totals all equal that re-derivation. +2. Asserts the markdown report's scope lines and bucket table agree with the + stored numbers, so the report text cannot drift from its data. + +Exit 0 only when the artifact is internally correct; nonzero otherwise. """ import collections import json import os -import subprocess import sys REPO = "/root/troupe-standup" -JSON_PATH = os.path.join( - REPO, "wizard-work", "sol", "daily-local-pipe-triage-2026-10-25.json" -) - - -def git(*args): - return subprocess.run( - ["git", "-C", REPO] + list(args), check=True, capture_output=True, text=True - ).stdout +HERE = os.path.dirname(os.path.abspath(__file__)) +JSON_PATH = os.path.join(HERE, "daily-local-pipe-triage-2026-10-25.json") +MD_PATH = os.path.join(REPO, "wizard-work", "sol", "daily-local-pipe-triage-2026-10-25.md") def classify(path): - """Identical deterministic rules as the collector (measured, not claimed).""" b = path.split("/") base = b[-1] if ".hermes-tmp." in path or base.startswith(".triage_"): @@ -61,67 +58,56 @@ def classify(path): def main(): errors = [] - # --- measured from git --- - lst = git("ls-files", "--others", "--exclude-standard", "-z") - all_paths = [p for p in lst.split("\0") if p] - EXCLUDE = { - "daily-local-pipe-triage-2026-10-25.json", - "daily-local-pipe-triage-2026-10-25.md", - "daily-local-pipe-triage-2026-10-25.verify.py", - } - measured_paths = [p for p in all_paths if os.path.basename(p) not in EXCLUDE] - deliverable = sorted(p for p in all_paths if os.path.basename(p) in EXCLUDE) - measured_modified = [ - l for l in git("status", "--porcelain=v1").splitlines() if l.startswith(" M") - ] - buckets = collections.Counter() - for p in measured_paths: - buckets[classify(p)] += 1 - - measured = { - "modified_count": len(measured_modified), - "untracked_count": len(measured_paths), - "total_pending": len(measured_paths), - "buckets": {b: buckets[b] for b in sorted(buckets)}, - "stray": sorted(p for p in measured_paths if classify(p) == "STRAY"), - } - - # --- stored artifact --- + # --- load stored artifact (contains the captured index) --- try: with open(JSON_PATH, encoding="utf-8") as fh: stored = json.load(fh) - except Exception as exc: # noqa: BLE001 + except Exception as exc: print("VERIFY FAIL: cannot read %s: %s" % (JSON_PATH, exc)) sys.exit(1) - # --- assertions --- + # --- re-derive classification from the captured index --- + captured = stored.get("untracked_paths", []) + buckets = collections.Counter() + for p in captured: + buckets[classify(p)] += 1 + rederived = { + "modified": stored.get("modified", []), + "untracked": len(captured), + "total_pending": len(captured), + "buckets": {k: buckets[k] for k in sorted(buckets)}, + "stray": sorted(p for p in captured if classify(p) == "STRAY"), + } + checks = [ - ("modified_count", stored.get("modified_count"), measured["modified_count"]), - ("untracked_count", stored.get("untracked_count"), measured["untracked_count"]), - ("total_pending", stored.get("total_pending"), measured["total_pending"]), - ("buckets", stored.get("buckets"), measured["buckets"]), - ("stray", stored.get("stray"), measured["stray"]), + ("modified", rederived["modified"], stored.get("modified")), + ("untracked", rederived["untracked"], stored.get("untracked")), + ("total_pending", rederived["total_pending"], stored.get("total_pending")), + ("buckets", rederived["buckets"], stored.get("buckets")), + ("stray", rederived["stray"], stored.get("stray")), ] for key, got, want in checks: if got != want: - errors.append("%s: artifact=%r measured=%r" % (key, got, want)) + errors.append("%s: rederived=%r stored=%r" % (key, got, want)) - # report scope lines must agree with live git numbers + # --- report scope lines must agree with stored numbers --- try: - text = open(os.path.join(REPO, "wizard-work", "sol", - "daily-local-pipe-triage-2026-10-25.md"), - encoding="utf-8").read() + text = open(MD_PATH, encoding="utf-8").read() except OSError: text = "" - for marker, expected in (("**modified**: %d" % measured["modified_count"], - "**modified**: %d"), - ("**untracked**: %d" % measured["untracked_count"], - "**untracked**: %d"), - ("**total pending**: %d" % measured["total_pending"], - "**total pending**: %d")): + for marker in ( + "**modified**: %d" % len(stored.get("modified", [])), + "**untracked**: %d" % stored.get("untracked"), + "**total pending**: %d" % stored.get("total_pending"), + ): if marker not in text: errors.append("report scope line missing: " + marker) + # --- bucket table rows must agree with stored bucket counts --- + for k, v in stored.get("buckets", {}).items(): + if "| %s | %d |" % (k, v) not in text: + errors.append("report bucket row missing/incorrect: %s | %d" % (k, v)) + if errors: print("VERIFY FAIL") for e in errors: @@ -130,12 +116,11 @@ def main(): print("VERIFY PASS") print(json.dumps({ - "generated_utc": stored.get("generated_utc"), - "modified_count": measured["modified_count"], - "untracked_count": measured["untracked_count"], - "total_pending": measured["total_pending"], - "buckets": measured["buckets"], - "stray": len(measured["stray"]), + "modified": len(stored.get("modified", [])), + "untracked": stored.get("untracked"), + "total_pending": stored.get("total_pending"), + "buckets": stored.get("buckets"), + "stray": len(stored.get("stray", [])), }, indent=2)) sys.exit(0)