sol: untracked-file triage census 2026-11-02 (310 files: script/doc/data/media/other)
This commit is contained in:
1 parent
0bb7349ff6
commit
c948dbe0ca
5 files changed
+2505
No files matched your search
@@ -0,0 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
# CHECK -- sol: untracked-file triage census (2026-11-02) verification gate.
|
||||
# Exit 0 iff the committed census re-derives from the live tree and every
|
||||
# frozen path still exists as a real, non-ignored file.
|
||||
set -u
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
cd "$SCRIPT_DIR" || exit 2
|
||||
|
||||
exec python3 verify_untracked_file_classify_2026_11_02.py
|
||||
@@ -0,0 +1,126 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Generate the untracked-file triage census for the sol (triage) lane.
|
||||
|
||||
Classifies every file currently untracked in the troupe checkout into
|
||||
categories by a small extension rubric, then reconciles the committed
|
||||
manifest against a fresh live enumeration.
|
||||
|
||||
Produces:
|
||||
untracked-file-classify-2026-11-02.tsv
|
||||
untracked-file-classify-2026-11-02.json
|
||||
"""
|
||||
import json
|
||||
import subprocess
|
||||
import sys
|
||||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
|
||||
REPO = Path("/root/troupe-standup")
|
||||
OUT = REPO / "wizard-work" / "sol"
|
||||
TSV = OUT / "untracked-file-classify-2026-11-02.tsv"
|
||||
JSON = OUT / "untracked-file-classify-2026-11-02.json"
|
||||
|
||||
# Extension -> category rubric (single source of truth for classifier + verifier).
|
||||
RULER = {
|
||||
# script
|
||||
"py": "script", "sh": "script", "bash": "script", "zsh": "script",
|
||||
"ps1": "script", "bat": "script", "fish": "script",
|
||||
# doc
|
||||
"md": "doc", "txt": "doc", "rst": "doc", "adoc": "doc", "org": "doc", "log": "doc",
|
||||
# data
|
||||
"json": "data", "jsonl": "data", "csv": "data", "tsv": "data",
|
||||
"yaml": "data", "yml": "data", "toml": "data", "db": "data",
|
||||
"sqlite": "data", "xml": "data", "ipynb": "data", "env": "data",
|
||||
# media
|
||||
"jpg": "media", "jpeg": "media", "png": "media", "gif": "media",
|
||||
"webp": "media", "svg": "media", "mp3": "media", "wav": "media",
|
||||
"mp4": "media", "webm": "media",
|
||||
}
|
||||
|
||||
|
||||
def extension(rel: str) -> str:
|
||||
name = rel.rsplit("/", 1)[-1]
|
||||
return name.rsplit(".", 1)[1].lower() if "." in name else ""
|
||||
|
||||
|
||||
def classify(rel: str) -> str:
|
||||
ext = extension(rel)
|
||||
if ext in RULER:
|
||||
return RULER[ext]
|
||||
p = REPO.joinpath(*rel.split("/"))
|
||||
try:
|
||||
with p.open("rb") as fh:
|
||||
head = fh.read(512)
|
||||
except OSError:
|
||||
return "data"
|
||||
if b"\x00" in head:
|
||||
return "data"
|
||||
return "other"
|
||||
|
||||
|
||||
def gather() -> list[str]:
|
||||
# The census never classifies its own outputs (they live under OUT and are
|
||||
# excluded; they are the producer, not data).
|
||||
local = OUT.resolve()
|
||||
proc = subprocess.run(
|
||||
["git", "-C", str(REPO), "ls-files", "--others", "--exclude-standard"],
|
||||
check=True, capture_output=True, text=True,
|
||||
)
|
||||
files = []
|
||||
for line in proc.stdout.splitlines():
|
||||
line = line.strip()
|
||||
if not line:
|
||||
continue
|
||||
p = REPO.joinpath(*line.split("/"))
|
||||
if local in p.resolve().parents or p.resolve() == local:
|
||||
continue
|
||||
if p.is_file():
|
||||
files.append(line)
|
||||
return sorted(files)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
files = gather()
|
||||
rows = []
|
||||
for rel in files:
|
||||
p = REPO.joinpath(*rel.split("/"))
|
||||
rows.append({
|
||||
"rel": rel,
|
||||
"size": p.stat().st_size,
|
||||
"ext": extension(rel),
|
||||
"category": classify(rel),
|
||||
})
|
||||
|
||||
counts = {}
|
||||
for r in rows:
|
||||
counts[r["category"]] = counts.get(r["category"], 0) + 1
|
||||
|
||||
OUT.mkdir(parents=True, exist_ok=True)
|
||||
with TSV.open("w", encoding="utf-8") as fh:
|
||||
fh.write("rel\tsize_bytes\text\tcategory\n")
|
||||
for r in rows:
|
||||
fh.write(f'{r["rel"]}\t{r["size"]}\t{r["ext"]}\t{r["category"]}\n')
|
||||
|
||||
manifest = {
|
||||
"lane": "triage",
|
||||
"operator": "sol",
|
||||
"dated": datetime.now(timezone.utc).isoformat(),
|
||||
"unit": "untracked-file census, 2026-11-02",
|
||||
"method": "extension rubric + binary sniff; universe = git ls-files --others --exclude-standard filtered to real files on disk",
|
||||
"total_files": len(rows),
|
||||
"by_category": counts,
|
||||
"rubric": RULER,
|
||||
"files": rows,
|
||||
}
|
||||
with JSON.open("w", encoding="utf-8") as fh:
|
||||
json.dump(manifest, fh, indent=2, sort_keys=True)
|
||||
fh.write("\n")
|
||||
|
||||
print(f"census ok: {len(rows)} files")
|
||||
print(f"by_category: {counts}")
|
||||
print(f"wrote {TSV} and {JSON}")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,311 @@
|
||||
rel size_bytes ext category
|
||||
CHECK-2026-11-02-openmeteo-summary 428 other
|
||||
CHECK-q154 5909 other
|
||||
CHECK-q159 4956 other
|
||||
CHECK-sol-untracked-classify 457 other
|
||||
CHECK-triage-2026-10-29 358 other
|
||||
checkins/2026-10-27-sentinel.md 1849 md doc
|
||||
d.jsonl 12 jsonl data
|
||||
docs/clawrouter-plan.md 4537 md doc
|
||||
docs/flux2-deploy.md 8724 md doc
|
||||
docs/video-deploy.md 8123 md doc
|
||||
inbox/dump_seed.py 922 py script
|
||||
kanban.db 0 db data
|
||||
recoveries/apply-queue-status-2026-10-25.md 6271 md doc
|
||||
repo_exts.tsv 365 tsv data
|
||||
repo_files.tsv 206338 tsv data
|
||||
repo_tree.tsv 8165 tsv data
|
||||
s.json 45 json data
|
||||
test_sample.txt 48 txt doc
|
||||
test_validation.txt 86 txt doc
|
||||
test_verification.txt 49 txt doc
|
||||
validate_artifact.py 774 py script
|
||||
wizard-outputs/forge/PATH_CLAIM_DRY_REFACTOR_VERIFICATION.md 4737 md doc
|
||||
wizard-outputs/forge/ops-pulse-refactor/_debug_r33.py 1331 py script
|
||||
wizard-outputs/forge/ops-pulse-refactor/_debug_r33_redraw.py 1690 py script
|
||||
wizard-outputs/ledger/README-github-python-repos.md 2250 md doc
|
||||
wizard-outputs/ledger/extract_github_python_repos.py 6517 py script
|
||||
wizard-outputs/ledger/github-python-repos-2026-10-23.csv 42250 csv data
|
||||
wizard-outputs/ledger/github-python-repos-2026-10-23.json 67658 json data
|
||||
wizard-outputs/ledger/github-python-repos-2026-10-23.md 24924 md doc
|
||||
wizard-outputs/ledger/verify_github_python_repos.py 4938 py script
|
||||
wizard-work/beam/_run_tests.py 158 py script
|
||||
wizard-work/beam/test_counterparty_sig.py 4856 py script
|
||||
wizard-work/beam/test_handle_resolve.py 2904 py script
|
||||
wizard-work/beam/test_majority.py 4500 py script
|
||||
wizard-work/beam/test_oracle_dl.py 3760 py script
|
||||
wizard-work/beam/test_tarjan_scc.py 4114 py script
|
||||
wizard-work/beam/test_toposort_kahn.py 4123 py script
|
||||
wizard-work/null/README-gatehygiene.md 7478 md doc
|
||||
wizard-work/null/README-q62-scan.md 5716 md doc
|
||||
wizard-work/null/_probe10.py 3271 py script
|
||||
wizard-work/null/_probe11.py 3976 py script
|
||||
wizard-work/null/_probe12.py 2206 py script
|
||||
wizard-work/null/_probe13.py 2953 py script
|
||||
wizard-work/null/_probe14.py 2474 py script
|
||||
wizard-work/null/_probe5.py 3046 py script
|
||||
wizard-work/null/_probe6.py 2894 py script
|
||||
wizard-work/null/_probe7.py 1486 py script
|
||||
wizard-work/null/_probe8.py 2379 py script
|
||||
wizard-work/null/_probe9.py 4568 py script
|
||||
wizard-work/null/_probe_binding_defects.py 5081 py script
|
||||
wizard-work/null/_probe_gh1.py 257 py script
|
||||
wizard-work/null/_probe_gh2.py 220 py script
|
||||
wizard-work/null/_probe_gh3.py 288 py script
|
||||
wizard-work/null/_probe_gh4.py 686 py script
|
||||
wizard-work/null/_probe_gh5.py 1126 py script
|
||||
wizard-work/null/_probe_gh6.py 1066 py script
|
||||
wizard-work/null/_probe_gh7.py 830 py script
|
||||
wizard-work/null/_probe_gh8.py 1052 py script
|
||||
wizard-work/null/_probe_gh9.py 1358 py script
|
||||
wizard-work/null/_probe_mut2.py 2505 py script
|
||||
wizard-work/null/_probe_mut_check.py 2616 py script
|
||||
wizard-work/null/_probe_q70_5h.py 657 py script
|
||||
wizard-work/null/_probe_repro1.py 787 py script
|
||||
wizard-work/null/_probe_repro2.py 1048 py script
|
||||
wizard-work/null/_probe_repro3.py 2071 py script
|
||||
wizard-work/null/_probe_repro4.py 1469 py script
|
||||
wizard-work/null/_probe_repro5.py 2370 py script
|
||||
wizard-work/null/_probe_repro6.py 1341 py script
|
||||
wizard-work/null/_probe_repro7.py 1449 py script
|
||||
wizard-work/null/btreekit/README-btreekit.md 4346 md doc
|
||||
wizard-work/null/btreekit/btreekit.py 11248 py script
|
||||
wizard-work/null/btreekit/check_btreekit.py 1159 py script
|
||||
wizard-work/null/btreekit/mutate_btreekit.py 6996 py script
|
||||
wizard-work/null/btreekit/test_btreekit.py 8041 py script
|
||||
wizard-work/null/check_gatehygiene.py 10190 py script
|
||||
wizard-work/null/check_provenance.py 38968 py script
|
||||
wizard-work/null/check_provenance_baseline.tsv 2246 tsv data
|
||||
wizard-work/null/check_provenance_ledger.py 5544 py script
|
||||
wizard-work/null/check_q62_scan.py 6960 py script
|
||||
wizard-work/null/cli_contract.py 5355 py script
|
||||
wizard-work/null/diffkit/__init__.py 1371 py script
|
||||
wizard-work/null/diffkit/_flatpkg.py 2449 py script
|
||||
wizard-work/null/diffkit/core.py 11143 py script
|
||||
wizard-work/null/diffkit/diffkit_cli.py 2975 py script
|
||||
wizard-work/null/diffkit/myers.py 8623 py script
|
||||
wizard-work/null/diffkit_gate.py 10435 py script
|
||||
wizard-work/null/gatehygiene.py 21867 py script
|
||||
wizard-work/null/gitignore_kit/gitignore.py 10967 py script
|
||||
wizard-work/null/gitignore_kit/test_gitignore.py 16611 py script
|
||||
wizard-work/null/json_salvage.py 15671 py script
|
||||
wizard-work/null/lrkit-2026-10-26/lrkit.py 14579 py script
|
||||
wizard-work/null/lrkit-2026-10-26/verify_lrkit.py 27593 py script
|
||||
wizard-work/null/membershipkit/.hermes-tmp.sx2gIa 6979 sx2gia other
|
||||
wizard-work/null/membershipkit/check_membershipkit.sh 1443 sh script
|
||||
wizard-work/null/membershipkit/mutate_membershipkit.py 7987 py script
|
||||
wizard-work/null/membershipkit/test_membershipkit.py 32209 py script
|
||||
wizard-work/null/mutate_resolver.py 4290 py script
|
||||
wizard-work/null/mutate_salvage.py 6922 py script
|
||||
wizard-work/null/pathbind/CHECK 602 other
|
||||
wizard-work/null/pathbind/census-pinned.json 46784 json data
|
||||
wizard-work/null/pathbind/demo_fix.py 4291 py script
|
||||
wizard-work/null/pathbind/pathbind.py 27587 py script
|
||||
wizard-work/null/pathbind/probe_lanes.py 4165 py script
|
||||
wizard-work/null/pathbind/test_pathbind.py 7462 py script
|
||||
wizard-work/null/q58_warncontrol.py 18176 py script
|
||||
wizard-work/null/q62_scan.py 19296 py script
|
||||
wizard-work/null/q70_sabotage.py 8812 py script
|
||||
wizard-work/null/q76_binding.py 12523 py script
|
||||
wizard-work/null/q80_warn.py 2948 py script
|
||||
wizard-work/null/revwalk.py 4527 py script
|
||||
wizard-work/null/test_gate.py 3099 py script
|
||||
wizard-work/null/test_gate_mutants.py 13282 py script
|
||||
wizard-work/null/test_json_salvage.py 10156 py script
|
||||
wizard-work/null/test_myers_diff.py 19570 py script
|
||||
wizard-work/null/test_revwalk.py 8952 py script
|
||||
wizard-work/null/verify_check_provenance.py 5591 py script
|
||||
wizard-work/null/verify_staged.py 13470 py script
|
||||
wizard-work/quill/draft-compliance-report-2026-10-31.pin 761 pin other
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/build_ledger.py 13675 py script
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.26368v1-p001-o000.jpg 28022 jpg media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.27470v1-p004-o000.jpg 88917 jpg media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.27470v1-p004-o002.jpg 90255 jpg media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.27470v1-p004-o004.jpg 87500 jpg media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.27470v1-p004-o006.jpg 88304 jpg media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.27470v1-p004-o008.jpg 72997 jpg media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.27470v1-p004-o010.jpg 55865 jpg media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.27470v1-p004-o012.jpg 55865 jpg media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.27470v1-p004-o014.jpg 83490 jpg media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.27470v1-p004-o016.jpg 84604 jpg media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.27470v1-p005-o018.jpg 86277 jpg media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.27470v1-p005-o020.jpg 87228 jpg media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.27470v1-p005-o022.jpg 92311 jpg media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.27470v1-p005-o024.jpg 85931 jpg media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.27470v1-p005-o026.jpg 88378 jpg media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.27470v1-p005-o028.jpg 87024 jpg media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.27470v1-p005-o030.jpg 84591 jpg media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.27470v1-p005-o032.jpg 86017 jpg media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.31261v1-p002-o000.png 60837 png media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.31261v1-p021-o002.png 21725 png media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.31261v1-p023-o004.png 12942 png media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.31261v1-p023-o005.png 12986 png media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.31261v1-p023-o006.png 12156 png media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.31261v1-p023-o007.png 13652 png media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.31261v1-p026-o008.png 1050128 png media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.32663v1-p001-o000.png 3333 png media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.32663v1-p001-o001.png 790 png media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.32663v1-p006-o004.png 123 png media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.32663v1-p006-o005.png 413 png media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.32663v1-p006-o006.png 518 png media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.32663v1-p006-o007.png 417 png media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.35831v1-p005-o000.jpg 115253 jpg media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/figs/2609.35831v1-p008-o001.png 155246 png media
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/ledger.json 63113 json data
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/sources/2609.26368v1.pdf 492936 pdf data
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/sources/2609.26368v1.pdfimages.json 372 json data
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/sources/2609.26368v1.pdfinfo.json 673 json data
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/sources/2609.27470v1.pdf 2284745 pdf data
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/sources/2609.27470v1.pdfimages.json 3348 json data
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/sources/2609.27470v1.pdfinfo.json 574 json data
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/sources/2609.31261v1.pdf 1632631 pdf data
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/sources/2609.31261v1.pdfimages.json 1116 json data
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/sources/2609.31261v1.pdfinfo.json 646 json data
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/sources/2609.32663v1.pdf 515865 pdf data
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/sources/2609.32663v1.pdfimages.json 1023 json data
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/sources/2609.32663v1.pdfinfo.json 596 json data
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/sources/2609.35831v1.pdf 352153 pdf data
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/sources/2609.35831v1.pdfimages.json 465 json data
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/sources/2609.35831v1.pdfinfo.json 683 json data
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.26368v1.p01.txt 5064 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.26368v1.p02.txt 3699 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.26368v1.p03.txt 3336 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.26368v1.p04.txt 4212 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.26368v1.p05.txt 3868 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.26368v1.p06.txt 3423 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.26368v1.p07.txt 3624 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.26368v1.p08.txt 4592 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.26368v1.p09.txt 3832 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.26368v1.p10.txt 3318 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.26368v1.p11.txt 2877 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.26368v1.p12.txt 605 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.26368v1.p13.txt 3213 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.26368v1.p14.txt 3528 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.26368v1.p15.txt 3187 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.26368v1.p16.txt 3649 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.27470v1.p01.txt 7067 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.27470v1.p02.txt 6697 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.27470v1.p03.txt 6839 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.27470v1.p04.txt 4831 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.27470v1.p05.txt 4852 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.27470v1.p06.txt 7092 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.27470v1.p07.txt 7399 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.27470v1.p08.txt 8404 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.27470v1.p09.txt 7573 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.27470v1.p10.txt 5236 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.27470v1.p11.txt 6424 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.27470v1.p12.txt 8272 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.27470v1.p13.txt 6604 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.27470v1.p14.txt 6581 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.27470v1.p15.txt 2976 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p01.txt 5451 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p02.txt 3568 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p03.txt 5950 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p04.txt 5104 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p05.txt 5902 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p06.txt 5396 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p07.txt 5687 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p08.txt 5056 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p09.txt 4097 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p10.txt 4247 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p11.txt 3439 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p12.txt 3779 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p13.txt 3783 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p14.txt 3907 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p15.txt 4439 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p16.txt 4568 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p17.txt 4088 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p18.txt 4796 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p19.txt 4943 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p20.txt 4768 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p21.txt 3805 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p22.txt 4800 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p23.txt 5137 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p24.txt 4349 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p25.txt 4220 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p26.txt 1885 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p27.txt 3779 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p28.txt 2507 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p29.txt 3875 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p30.txt 3559 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.31261v1.p31.txt 2249 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.32663v1.p01.txt 7578 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.32663v1.p02.txt 4421 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.32663v1.p03.txt 6973 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.32663v1.p04.txt 4810 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.32663v1.p05.txt 4374 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.32663v1.p06.txt 4400 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.32663v1.p07.txt 6022 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.32663v1.p08.txt 5014 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.32663v1.p09.txt 5557 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.32663v1.p10.txt 3913 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.32663v1.p11.txt 4074 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.32663v1.p12.txt 4179 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.32663v1.p13.txt 4412 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.32663v1.p14.txt 3586 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.32663v1.p15.txt 4588 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.32663v1.p16.txt 6472 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.32663v1.p17.txt 2656 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.32663v1.p18.txt 4037 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.32663v1.p19.txt 1975 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.35831v1.p01.txt 4495 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.35831v1.p02.txt 3028 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.35831v1.p03.txt 3024 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.35831v1.p04.txt 1489 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.35831v1.p05.txt 1223 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.35831v1.p06.txt 2935 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.35831v1.p07.txt 2515 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.35831v1.p08.txt 1628 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.35831v1.p09.txt 2760 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.35831v1.p10.txt 3046 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.35831v1.p11.txt 2507 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.35831v1.p12.txt 2410 txt doc
|
||||
wizard-work/sphinx/archive-lcmm-figureground-2026-10-26/text/2609.35831v1.p13.txt 1458 txt doc
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/CORRECTIONS-llama3-figures-2026-10-24.md 4940 md doc
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/audit_old_digest_quotes.py 2206 py script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/audit_quote_fidelity.py 6622 py script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/build_figure_locator.py 3266 py script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/build_llama3_digest.py 22097 py script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/captions_probe.py 2233 py script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/charcount.py 683 py script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/check_provenance.sh 2412 sh script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/diag_captions.py 1455 py script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/diag_chars.py 1498 py script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/diag_fix.py 3082 py script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/diag_nested.py 1599 py script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/diag_provenance.py 1993 py script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/diag_quotes.py 1356 py script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/extract_figure_locators.py 6593 py script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/figure-locator.json 5223 json data
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/figures.json 29077 json data
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/inspect_figures.py 865 py script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/inspect_table2_header.py 1551 py script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/llama3-herd-digest-v2.md 9060 md doc
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/negctrl.sh 3636 sh script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/quote-fidelity-audit.json 5229 json data
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/report_figures.py 1076 py script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/show_context.py 698 py script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/show_html.py 698 py script
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/source/llama3.html 1072570 html other
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/source/llama3.pdf 9833173 pdf data
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/source/llama3.txt 422553 txt doc
|
||||
wizard-work/sphinx/archive-llama3-herd-2026-10-24/verify_llama3_archive.py 15177 py script
|
||||
wizard-work/sphinx/archive-mmlongcite-2026-10-25/probe_paper_facts.json 1024 json data
|
||||
wizard-work/sphinx/lcmm-claim-index-2026-10-24/CHECK.txt 216 txt doc
|
||||
wizard-work/sphinx/lcmm-claim-index-2026-10-24/DOSSIER.md 21874 md doc
|
||||
wizard-work/sphinx/lcmm-claim-index-2026-10-24/abstracts.json 413378 json data
|
||||
wizard-work/sphinx/lcmm-claim-index-2026-10-24/claim_index.json 41723 json data
|
||||
wizard-work/sphinx/lcmm-claim-index-2026-10-24/raw/arxiv_feed.xml 1090239 xml data
|
||||
wizard-work/sphinx/lcmm-claim-index-2026-10-24/summary.json 2276 json data
|
||||
wizard-work/sphinx/lcmm-claim-index-2026-10-24/tools/build_report.py 15127 py script
|
||||
wizard-work/sphinx/lcmm-claim-index-2026-10-24/tools/diag_unmatched.py 1568 py script
|
||||
wizard-work/sphinx/lcmm-claim-index-2026-10-24/tools/harvest_claims.py 17246 py script
|
||||
wizard-work/sphinx/lcmm-claim-index-2026-10-24/tools/print_claims.py 615 py script
|
||||
wizard-work/sphinx/lcmm-claim-index-2026-10-24/tools/recall_probe.py 2042 py script
|
||||
wizard-work/sphinx/lcmm-claim-index-2026-10-24/tools/show_quotes.py 520 py script
|
||||
wizard-work/sphinx/lcmm-claim-index-2026-10-24/tools/tamper_probe.py 4479 py script
|
||||
wizard-work/sphinx/lcmm-claim-index-2026-10-24/verify_claim_index.py 13265 py script
|
||||
wizard-work/sphinx/lcmm-claim-index-2026-10-24/vocabulary_index.json 119587 json data
|
||||
wizard-work/volt/q157-newentry/newentry_readings.tsv 2764 tsv data
|
||||
wizard-work/volt/q157-newentry/newentry_take.py 5337 py script
|
||||
wizard-work/wizard-work/sol/Untracked-Triad-2026-11-01.json 16365 json data
|
||||
|
@@ -0,0 +1,144 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Independent verifier for the untracked-file triage census (2026-11-02).
|
||||
|
||||
Re-derives every category from the embedded extension rubric, reconciles the
|
||||
committed manifest against a fresh live enumeration, confirms every frozen
|
||||
path exists as a real, non-ignored file, and cross-checks the aggregate
|
||||
counts.
|
||||
|
||||
Exit 0 iff all checks pass.
|
||||
"""
|
||||
import json
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
REPO = Path("/root/troupe-standup")
|
||||
SRC = REPO / "wizard-work" / "sol"
|
||||
OUT = REPO / "wizard-work" / "sol" # census outputs are excluded from the universe
|
||||
MANIFEST = SRC / "untracked-file-classify-2026-11-02.json"
|
||||
|
||||
# Embedded rubric (must match the producer exactly).
|
||||
RULER = {
|
||||
"py": "script", "sh": "script", "bash": "script", "zsh": "script",
|
||||
"ps1": "script", "bat": "script", "fish": "script",
|
||||
"md": "doc", "txt": "doc", "rst": "doc", "adoc": "doc", "org": "doc", "log": "doc",
|
||||
"json": "data", "jsonl": "data", "csv": "data", "tsv": "data",
|
||||
"yaml": "data", "yml": "data", "toml": "data", "db": "data",
|
||||
"sqlite": "data", "xml": "data", "ipynb": "data", "env": "data",
|
||||
"jpg": "media", "jpeg": "media", "png": "media", "gif": "media",
|
||||
"webp": "media", "svg": "media", "mp3": "media", "wav": "media",
|
||||
"mp4": "media", "webm": "media",
|
||||
}
|
||||
|
||||
|
||||
def extension(rel: str) -> str:
|
||||
name = rel.rsplit("/", 1)[-1]
|
||||
return name.rsplit(".", 1)[1].lower() if "." in name else ""
|
||||
|
||||
|
||||
def classify(rel: str) -> str:
|
||||
ext = extension(rel)
|
||||
if ext in RULER:
|
||||
return RULER[ext]
|
||||
p = REPO.joinpath(*rel.split("/"))
|
||||
try:
|
||||
with p.open("rb") as fh:
|
||||
head = fh.read(512)
|
||||
except OSError:
|
||||
return "data"
|
||||
if b"\x00" in head:
|
||||
return "data"
|
||||
return "other"
|
||||
|
||||
|
||||
def is_ignored(rel: str) -> bool:
|
||||
res = subprocess.run(
|
||||
["git", "-C", str(REPO), "check-ignore", "-q", "--", rel],
|
||||
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL,
|
||||
)
|
||||
return res.returncode == 0
|
||||
|
||||
|
||||
def live_files():
|
||||
# Exclude the census's own outputs (see producer) so the gate is a
|
||||
# reconciliation, not a self-inclusion.
|
||||
local = OUT.resolve()
|
||||
proc = subprocess.run(
|
||||
["git", "-C", str(REPO), "ls-files", "--others", "--exclude-standard"],
|
||||
check=True, capture_output=True, text=True,
|
||||
)
|
||||
out = []
|
||||
for line in proc.stdout.splitlines():
|
||||
line = line.strip()
|
||||
if not line:
|
||||
continue
|
||||
p = REPO.joinpath(*line.split("/"))
|
||||
if local in p.resolve().parents or p.resolve() == local:
|
||||
continue
|
||||
if p.is_file():
|
||||
out.append(line)
|
||||
return sorted(out)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
problems = []
|
||||
|
||||
if not MANIFEST.exists():
|
||||
print("PROBLEM: manifest missing: %s" % MANIFEST)
|
||||
return 1
|
||||
manifest = json.loads(MANIFEST.read_text(encoding="utf-8"))
|
||||
|
||||
# Live universe (re-computed, so the gate is not a stale file).
|
||||
live = live_files()
|
||||
|
||||
# Re-derive and compare against the committed manifest.
|
||||
live_by_cat = {}
|
||||
live_by_rel = {}
|
||||
for rel in live:
|
||||
live_by_cat[classify(rel)] = live_by_cat.get(classify(rel), 0) + 1
|
||||
live_by_rel[rel] = classify(rel)
|
||||
|
||||
manifest_files = manifest.get("files", [])
|
||||
manifest_by_rel = {f.get("rel"): f.get("category") for f in manifest_files}
|
||||
|
||||
for rel in live:
|
||||
if rel not in manifest_by_rel:
|
||||
problems.append("in live but absent from manifest: %s" % rel)
|
||||
elif manifest_by_rel[rel] != live_by_rel[rel]:
|
||||
problems.append(
|
||||
"category mismatch %s: live=%s manifest=%s" % (rel, live_by_rel[rel], manifest_by_rel[rel])
|
||||
)
|
||||
|
||||
for rel in manifest_by_rel:
|
||||
if rel not in live_by_rel:
|
||||
problems.append("in manifest but absent live: %s" % rel)
|
||||
|
||||
# Every frozen path must still exist as a real, non-ignored file.
|
||||
for rel in live:
|
||||
p = REPO.joinpath(*rel.split("/"))
|
||||
if not p.is_file():
|
||||
problems.append("missing on disk: %s" % rel)
|
||||
elif is_ignored(rel):
|
||||
problems.append("ignored by .gitignore: %s" % rel)
|
||||
|
||||
# Aggregate self-consistency.
|
||||
if manifest.get("total_files") != len(live):
|
||||
problems.append("total_files %s != live files %d" % (manifest.get("total_files"), len(live)))
|
||||
if manifest.get("by_category") != live_by_cat:
|
||||
problems.append("by_category mismatch: manifest=%s live=%s" % (manifest.get("by_category"), live_by_cat))
|
||||
|
||||
if problems:
|
||||
print("VERIFY FAIL (%d problems)" % len(problems))
|
||||
for pb in problems[:80]:
|
||||
print(" - %s" % pb)
|
||||
if len(problems) > 80:
|
||||
print(" ... %d more" % (len(problems) - 80))
|
||||
return 1
|
||||
|
||||
print("VERIFY OK (%d untracked files, categories re-derived, all paths present)" % len(live))
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in new issue
Block a user