sol: local pipe triage — pending-work bucket report + verifier (2026-10-25)
This commit is contained in:
1 parent
589e006ece
commit
5cae75b672
3 files changed
+244
No files matched your search
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"generated_utc": "2026-10-25T06:03:20Z",
|
||||
"repo": "/root/troupe-standup",
|
||||
"modified_count": 5,
|
||||
"untracked_count": 119,
|
||||
"total_pending": 119,
|
||||
"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"
|
||||
],
|
||||
"buckets": {
|
||||
"CHECK": 2,
|
||||
"DOC": 3,
|
||||
"FORGE": 2,
|
||||
"LEDGER": 5,
|
||||
"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",
|
||||
".triage_dump_pending.py",
|
||||
".triage_probe.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/null/.hermes-tmp.RqZp3z",
|
||||
"wizard-work/null/membershipkit/.hermes-tmp.sx2gIa"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
# Local pipe triage — 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.
|
||||
|
||||
## Scope
|
||||
|
||||
- **modified**: 5
|
||||
- **untracked**: 119
|
||||
- **total pending**: 119
|
||||
- **deliverable outputs** (this report, excluded from pending work):
|
||||
3 file(s)
|
||||
|
||||
## Bucket counts
|
||||
|
||||
| bucket | count | newest |
|
||||
|---|---|---|
|
||||
| CHECK | 2 | wizard-work/null/CHECK |
|
||||
| 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 |
|
||||
| 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 / hermetic temp artifacts (flagged for review)
|
||||
|
||||
The following are hermetic temp / scaffolding artifacts:
|
||||
|
||||
- `.triage_build.py`
|
||||
- `.triage_dump.py`
|
||||
- `.triage_dump_pending.py`
|
||||
- `.triage_probe.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/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.
|
||||
|
||||
@@ -0,0 +1,144 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Independent verifier for the local-pipe triage artifact.
|
||||
|
||||
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.
|
||||
|
||||
Exit 0 only when the artifact is 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
|
||||
|
||||
|
||||
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_"):
|
||||
return "STRAY"
|
||||
if "beam" in b:
|
||||
return "STRAY"
|
||||
if base == "CHECK" and "\n" in path:
|
||||
return "STRAY"
|
||||
if base.startswith("README-"):
|
||||
return "DOC"
|
||||
if base.startswith("CHECK"):
|
||||
return "CHECK"
|
||||
if base.startswith("_probe") or base.startswith("probe_"):
|
||||
return "PROBE"
|
||||
if "forge" in b:
|
||||
return "FORGE"
|
||||
if "sphinx" in b:
|
||||
return "SPHINX"
|
||||
if "recoveries" in b:
|
||||
return "RECOVERY"
|
||||
if "ledger" in b:
|
||||
return "LEDGER"
|
||||
if "wizard-work/null/" in ("/" + path + "/"):
|
||||
return "NULL"
|
||||
if path.startswith("wizard-work/"):
|
||||
return "LORE"
|
||||
return "MISC"
|
||||
|
||||
|
||||
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 ---
|
||||
try:
|
||||
with open(JSON_PATH, encoding="utf-8") as fh:
|
||||
stored = json.load(fh)
|
||||
except Exception as exc: # noqa: BLE001
|
||||
print("VERIFY FAIL: cannot read %s: %s" % (JSON_PATH, exc))
|
||||
sys.exit(1)
|
||||
|
||||
# --- assertions ---
|
||||
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"]),
|
||||
]
|
||||
for key, got, want in checks:
|
||||
if got != want:
|
||||
errors.append("%s: artifact=%r measured=%r" % (key, got, want))
|
||||
|
||||
# report scope lines must agree with live git numbers
|
||||
try:
|
||||
text = open(os.path.join(REPO, "wizard-work", "sol",
|
||||
"daily-local-pipe-triage-2026-10-25.md"),
|
||||
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")):
|
||||
if marker not in text:
|
||||
errors.append("report scope line missing: " + marker)
|
||||
|
||||
if errors:
|
||||
print("VERIFY FAIL")
|
||||
for e in errors:
|
||||
print(" -", e)
|
||||
sys.exit(1)
|
||||
|
||||
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"]),
|
||||
}, indent=2))
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in new issue
Block a user