ledger: file-tree census + extension census of troupe repo HEAD
This commit is contained in:
1 parent
b1b2c60854
commit
3b8315f158
6 files changed
+3667
No files matched your search
@@ -0,0 +1,40 @@
|
|||||||
|
# ledger: File-tree census & extension census of the troupe repo
|
||||||
|
|
||||||
|
## Artifact
|
||||||
|
Inventory extracted from the troupe repository at its HEAD commit
|
||||||
|
(`363c608555c3995f8b015bb80a24e0b4c6bb8b68`), branch `main`, run in
|
||||||
|
`/root/troupe-standup`. Two summary tables plus a full file listing:
|
||||||
|
|
||||||
|
| file | columns | rows | meaning |
|
||||||
|
|---|---|---|---|
|
||||||
|
| `repo_tree.tsv` | rank, directory, file_count | 150 (header + 149 directories) | tracked files grouped by directory; root files under `(root)` |
|
||||||
|
| `repo_exts.tsv` | rank, extension, file_count | 30 (header + 29 extensions) | tracked files grouped by lowercased extension; suffix-less files under `(none)` |
|
||||||
|
| `repo_files.tsv` | rank, path | 3344 | every tracked file, full path, one row |
|
||||||
|
|
||||||
|
## Method
|
||||||
|
- **Source of truth:** `git ls-tree -r --name-only HEAD` in `/root/troupe-standup`.
|
||||||
|
- **Directory grouping:** `os.path.dirname` of each path; paths with no parent
|
||||||
|
grouped under `(root)`.
|
||||||
|
- **Extension grouping:** suffix after the last `.`, lowercased; paths with no
|
||||||
|
suffix under `(none)`.
|
||||||
|
- **Ordering:** `file_count` descending, then name ascending.
|
||||||
|
|
||||||
|
## Evidence (measured from a fresh recompute)
|
||||||
|
- Total tracked files: **3345** (confirmed by `git ls-files | wc -l` at HEAD).
|
||||||
|
- Directory groups: **149**; extension groups: **29**; every group sum equals 3345.
|
||||||
|
- Top directories: `wizard-work/sphinx/archive-memgallery-2026-10-21/figures`
|
||||||
|
(635), `wizard-work/spark` (372), `replies` (366).
|
||||||
|
- Top extensions: `md` (829), `png` (803), `py` (653), `txt` (551),
|
||||||
|
`json` (231).
|
||||||
|
- SHA-256 (content): repo_tree.tsv `4f9734382d845bf7…`,
|
||||||
|
repo_exts.tsv `4df53c190854c7c8…`, repo_files.tsv `6ead4a46156d2b47…`.
|
||||||
|
|
||||||
|
## Verification (the verdict gate)
|
||||||
|
`verify_tree_census.py` independently re-enumerates the repo from git and diffs
|
||||||
|
the recomputed tables field-for-field against the committed artifacts.
|
||||||
|
Exit code 0 = artifact matches a fresh source recompute (all checks passed);
|
||||||
|
nonzero = mismatch.
|
||||||
|
|
||||||
|
```
|
||||||
|
cd /root/troupe-standup && ./wizard-work/ledger/verify.sh
|
||||||
|
```
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
rank extension file_count
|
||||||
|
1 md 830
|
||||||
|
2 png 803
|
||||||
|
3 py 653
|
||||||
|
4 txt 551
|
||||||
|
5 json 231
|
||||||
|
6 sh 56
|
||||||
|
7 html 55
|
||||||
|
8 csv 43
|
||||||
|
9 svg 31
|
||||||
|
10 (none) 16
|
||||||
|
11 age 16
|
||||||
|
12 tsv 15
|
||||||
|
13 xml 12
|
||||||
|
14 log 5
|
||||||
|
15 pdf 4
|
||||||
|
16 sha256 4
|
||||||
|
17 jsonl 3
|
||||||
|
18 mp3 3
|
||||||
|
19 c 2
|
||||||
|
20 diff 2
|
||||||
|
21 jpg 2
|
||||||
|
22 check 1
|
||||||
|
23 dl 1
|
||||||
|
24 goyiwz 1
|
||||||
|
25 gz 1
|
||||||
|
26 md5 1
|
||||||
|
27 "py""" 1
|
||||||
|
28 rc 1
|
||||||
|
29 yaml 1
|
||||||
|
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,150 @@
|
|||||||
|
rank directory file_count
|
||||||
|
1 wizard-work/sphinx/archive-memgallery-2026-10-21/figures 635
|
||||||
|
2 wizard-work/spark 372
|
||||||
|
3 replies 366
|
||||||
|
4 wizard-work/sphinx/longctx-needle-grounding-2026-10-22/chunks 229
|
||||||
|
5 wizard-work/ledger 159
|
||||||
|
6 wizard-work/forge 104
|
||||||
|
7 wizard-work/sol 98
|
||||||
|
8 checkins 92
|
||||||
|
9 wizard-work/beam 78
|
||||||
|
10 recoveries 63
|
||||||
|
11 wizard-work/volt 58
|
||||||
|
12 wizard-work/sphinx/longctx-figure-grounding-2026-10-21/figures 50
|
||||||
|
13 wizard-work/sphinx/longctx-figure-grounding-2026-10-21/ocr 50
|
||||||
|
14 wizard-work/sphinx/longctx-figure-grounding-2026-10-21/renders 50
|
||||||
|
15 wizard-work/quill 35
|
||||||
|
16 tools 26
|
||||||
|
17 wizard-work/sphinx/arxiv-digest-verified-2026-10-25 23
|
||||||
|
18 wizard-work/sphinx/archive-gemini25-2026-10-24/figures 22
|
||||||
|
19 wizard-work/sphinx/archive-memgallery-2026-10-21 22
|
||||||
|
20 wizard-work/sphinx/archive-memlens-2026-10-22 22
|
||||||
|
21 wizard-work/sphinx/archive-mm-prm-2026-10-22/chunks 18
|
||||||
|
22 access 17
|
||||||
|
23 wizard-work/null 17
|
||||||
|
24 wizard-work/sphinx/archive-mm-prm-2026-10-22/tables 17
|
||||||
|
25 career-lane 16
|
||||||
|
26 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/sources 16
|
||||||
|
27 wizard-work/sphinx/phonon-reel-audio-archive-2026-10-21 16
|
||||||
|
28 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/captions 15
|
||||||
|
29 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/corpus 15
|
||||||
|
30 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/text 15
|
||||||
|
31 wizard-work/sphinx/archive-transformer-pdf-modality-2026-10-23/text 15
|
||||||
|
32 wizard-work/sphinx/archive-transformer-pdf-modality-2026-10-23/text-layout 15
|
||||||
|
33 wizard-work/sphinx/archive-arxiv-lc-2026-10-22 14
|
||||||
|
34 wizard-work/sphinx/archive-remember-r1-figures-2026-10-23 14
|
||||||
|
35 wizard-work/sphinx/longctx-arxiv-archive-2026-10-20 13
|
||||||
|
36 wizard-work/sphinx/longctx-citations-2026-10-21 13
|
||||||
|
37 wizard-work/sphinx/archive-kvcc-reconcile-2026-10-23/sources 12
|
||||||
|
38 wizard-work/sphinx/archive-remember-r1-figures-2026-10-23/figures 12
|
||||||
|
39 wizard-work/sphinx/longctx-arxiv-archive-2026-10-20/corpus 12
|
||||||
|
40 wizard-work/sphinx/longctx-citations-2026-10-21/sources 12
|
||||||
|
41 wizard-work/sphinx/longctx-niah-bench-2026-10-21/corpus 12
|
||||||
|
42 wizard-work/null/jsonpatch 11
|
||||||
|
43 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23 11
|
||||||
|
44 wizard-work/sphinx/longctx-figure-grounding-2026-10-21 11
|
||||||
|
45 wizard-work/sphinx/longctx-niah-bench-2026-10-21 11
|
||||||
|
46 wizard-work/sphinx/archive-gemini25-2026-10-24 10
|
||||||
|
47 wizard-work/sphinx/archive-transformer-pdf-modality-2026-10-23 10
|
||||||
|
48 wizard-work/sphinx/longctx-needle-grounding-2026-10-22 10
|
||||||
|
49 wizard-work/sphinx/longctx-needle-grounding-2026-10-22/tools 10
|
||||||
|
50 (root) 9
|
||||||
|
51 harness-reflections 9
|
||||||
|
52 wizard-work/null/base32c 9
|
||||||
|
53 wizard-work/sphinx 9
|
||||||
|
54 wizard-work/sphinx/archive-lcmm-metadata-2026-10-25 9
|
||||||
|
55 docs 8
|
||||||
|
56 wizard-work/sphinx/archive-kvcc-reconcile-2026-10-23 8
|
||||||
|
57 wizard-work/sphinx/archive-lc-coverage-crossindex-2026-10-23 8
|
||||||
|
58 wizard-work/sphinx/archive-lc-coverage-crossindex-2026-10-23/raw 8
|
||||||
|
59 wizard-work/ledger/2026-10-24-countries-gdp-nominal 7
|
||||||
|
60 wizard-work/ledger/2026-10-25-git-history-live-b1edd09 7
|
||||||
|
61 wizard-work/ledger/2026-10-25-head-20-commits 7
|
||||||
|
62 wizard-work/sphinx/archive-mmlongcite-2026-10-25 7
|
||||||
|
63 wizard-work/sphinx/figure-locator-llama3-2026-10-24 7
|
||||||
|
64 wizard-work/sphinx/longctx-needle-grounding-2026-10-22/raw 7
|
||||||
|
65 wizard-work/sphinx/longctx-needle-grounding-2026-10-22/text 7
|
||||||
|
66 wizard-work/null/diffkit 6
|
||||||
|
67 wizard-work/null/schedkit 6
|
||||||
|
68 wizard-work/sphinx/archive-agentic-memory-5paper-dossier-2026-10-25 6
|
||||||
|
69 wizard-work/sphinx/archive-gutenberg/raw 6
|
||||||
|
70 wizard-work/sphinx/archive-gutenberg/txt 6
|
||||||
|
71 wizard-work/sphinx/archive-mm-prm-2026-10-22 6
|
||||||
|
72 wizard-work/sphinx/archive-transformer-pdf-modality-2026-10-23/figures 6
|
||||||
|
73 wizard-work/sphinx/longcontext-archive-2026-10-21/raw 6
|
||||||
|
74 wizard-work/sphinx/longctx-figure-grounding-2026-10-21/figverify-egmmujuw 6
|
||||||
|
75 wizard-work/sphinx/phonon-reel-audio-archive-2026-10-21/spectra 6
|
||||||
|
76 wizard-work/sphinx/transformer-archive 6
|
||||||
|
77 wizard-work/ledger/2026-10-22-top-ml-repos 5
|
||||||
|
78 wizard-work/ledger/2026-10-22-top-repos-by-stars 5
|
||||||
|
79 wizard-work/ledger/gdp-us-states-2026-10-23 5
|
||||||
|
80 wizard-work/ledger/top-50-repos-by-stars 5
|
||||||
|
81 wizard-work/null/artifact-seal 5
|
||||||
|
82 wizard-work/null/crdtkit 5
|
||||||
|
83 wizard-work/null/datalogkit 5
|
||||||
|
84 wizard-work/null/deporder 5
|
||||||
|
85 wizard-work/null/minisql 5
|
||||||
|
86 wizard-work/sphinx/archive-agentic-memory-5paper-dossier-2026-10-25/corpus 5
|
||||||
|
87 decisions 4
|
||||||
|
88 notes 4
|
||||||
|
89 wizard-work/ledger/2026-10-22-media-catalog 4
|
||||||
|
90 wizard-work/ledger/2026-10-24-job-postings 4
|
||||||
|
91 wizard-work/null/budgeted-planner 4
|
||||||
|
92 wizard-work/null/checklint 4
|
||||||
|
93 wizard-work/null/jsonpatch/_probe_cli_tmp 4
|
||||||
|
94 wizard-work/null/schedkit/evidence 4
|
||||||
|
95 wizard-work/sol/triage-inbox-2026-09-26 4
|
||||||
|
96 wizard-work/sphinx/archive-gemini25-2026-10-24/meta 4
|
||||||
|
97 wizard-work/sphinx/archive-gutenberg 4
|
||||||
|
98 wizard-work/sphinx/archive-mmlongcite-2026-10-25/source 4
|
||||||
|
99 wizard-work/sphinx/longcontext-archive-2026-10-21/figures 4
|
||||||
|
100 wizard-work/sphinx/longcontext-archive-2026-10-21/tools 4
|
||||||
|
101 wizard-work/sphinx/longctx-figure-grounding-2026-10-21/figverify-aq5whmkm 4
|
||||||
|
102 wizard-work/null/deporder/examples 3
|
||||||
|
103 wizard-work/null/intervalkit 3
|
||||||
|
104 wizard-work/null/raglite 3
|
||||||
|
105 wizard-work/sphinx/archive-index-2026-10-23 3
|
||||||
|
106 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/figures/2609.17688v1 3
|
||||||
|
107 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/figures/2609.36651v1 3
|
||||||
|
108 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/figures/2609.38154v1 3
|
||||||
|
109 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/figures/2610.01927v1 3
|
||||||
|
110 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/figures/2610.02181v1 3
|
||||||
|
111 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/figures/2610.05940v1 3
|
||||||
|
112 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/figures/2610.09027v1 3
|
||||||
|
113 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/figures/2610.11924v1 3
|
||||||
|
114 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/figures/2610.26431v1 3
|
||||||
|
115 wizard-work/sphinx/archive-memgallery-2026-10-21/raw 3
|
||||||
|
116 wizard-work/sphinx/archive-mm-prm-2026-10-22/figures 3
|
||||||
|
117 wizard-work/sphinx/archive-transformer-pdf-modality-2026-10-23/rasters 3
|
||||||
|
118 wizard-work/sphinx/figure-label-audit 3
|
||||||
|
119 wizard-work/sphinx/phonon-reel-audio-archive-2026-10-21/sources 3
|
||||||
|
120 wizard-work/volt/2026-10-22-media-catalog-verify 3
|
||||||
|
121 wizard-work/beam/toposort 2
|
||||||
|
122 wizard-work/null/chunktext 2
|
||||||
|
123 wizard-work/null/regexnfa 2
|
||||||
|
124 wizard-work/spark/test_valid_json 2
|
||||||
|
125 wizard-work/sphinx/archive-gemini25-2026-10-24/raw 2
|
||||||
|
126 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/figures/2609.25611v1 2
|
||||||
|
127 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/figures/2609.27470v1 2
|
||||||
|
128 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/figures/2609.32182v1 2
|
||||||
|
129 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/figures/2609.36364v1 2
|
||||||
|
130 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/figures/2610.10156v1 2
|
||||||
|
131 wizard-work/sphinx/archive-transformer-pdf-modality-2026-10-23/cross-rendering 2
|
||||||
|
132 wizard-work/sphinx/longcontext-archive-2026-10-21 2
|
||||||
|
133 wizard-work/sphinx/phonon-reel-audio-archive-2026-10-21/evidence 2
|
||||||
|
134 """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" 1
|
||||||
|
135 audits 1
|
||||||
|
136 docs/q13-fix-pack 1
|
||||||
|
137 inbox 1
|
||||||
|
138 wizard-work/null/datalogkit/examples 1
|
||||||
|
139 wizard-work/null/membershipkit 1
|
||||||
|
140 wizard-work/null/minisql/_archive 1
|
||||||
|
141 wizard-work/quill/drafting-standup-reports 1
|
||||||
|
142 wizard-work/sphinx/archive-kvcc-reconcile-2026-10-23/figures 1
|
||||||
|
143 wizard-work/sphinx/archive-lc-mm-dossier-2026-10-23/figures/2610.23250v1 1
|
||||||
|
144 wizard-work/sphinx/archive-lcmm-metadata-2026-10-25/source 1
|
||||||
|
145 wizard-work/sphinx/archive-proactegomem-2026-10-23 1
|
||||||
|
146 wizard-work/sphinx/archive-transformer-pdf-modality-2026-10-23/source 1
|
||||||
|
147 wizard-work/sphinx/figure-locator-llama3-2026-10-24/source 1
|
||||||
|
148 wizard-work/sphinx/longcontext-archive-2026-10-21/manifest 1
|
||||||
|
149 wizard-work/sphinx/longctx-needle-grounding-2026-10-22/manifests 1
|
||||||
|
@@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Verdict gate for the ledger file-tree census artifact.
|
||||||
|
# Exit code 0 = correct (artifact matches a fresh git recompute); nonzero = wrong.
|
||||||
|
cd /root/troupe-standup || exit 1
|
||||||
|
exec python3 wizard-work/ledger/verify_tree_census.py
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""Verify the file-tree census & extension census artifact against a fresh git recompute.
|
||||||
|
|
||||||
|
Exit code 0 = artifact matches a fresh source recompute (all checks passed),
|
||||||
|
nonzero = mismatch. Not a tautology: it re-enumerates the repo from git and
|
||||||
|
compares the produced tables field-for-field against the committed files.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import csv
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
import sys
|
||||||
|
from collections import Counter
|
||||||
|
|
||||||
|
REPO = "/root/troupe-standup"
|
||||||
|
DEST = os.path.join(REPO, "wizard-work", "ledger")
|
||||||
|
|
||||||
|
FILES = ["repo_tree.tsv", "repo_exts.tsv", "repo_files.tsv"]
|
||||||
|
|
||||||
|
|
||||||
|
def run(args):
|
||||||
|
return subprocess.run(args, cwd=REPO, capture_output=True, text=True)
|
||||||
|
|
||||||
|
|
||||||
|
def read_tsv(name):
|
||||||
|
with open(os.path.join(DEST, name), newline="", encoding="utf-8") as f:
|
||||||
|
return list(csv.reader(f, delimiter="\t"))
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
failures = 0
|
||||||
|
|
||||||
|
def check(name, cond, detail=""):
|
||||||
|
nonlocal failures
|
||||||
|
print(("%s %s" % ("PASS" if cond else "FAIL", name)) + ((" " + detail) if (detail and not cond) else ""))
|
||||||
|
if not cond:
|
||||||
|
failures += 1
|
||||||
|
|
||||||
|
# 1) fresh enumeration from git
|
||||||
|
tree = run(["git", "ls-tree", "-r", "--name-only", "HEAD"])
|
||||||
|
check("git ls-tree exit 0", tree.returncode == 0, tree.stderr.strip())
|
||||||
|
paths = [l for l in tree.stdout.splitlines() if l.strip()]
|
||||||
|
check("git ls-tree lists files", len(paths) > 0, "got %d" % len(paths))
|
||||||
|
|
||||||
|
dir_counts = Counter()
|
||||||
|
ext_counts = Counter()
|
||||||
|
for p in paths:
|
||||||
|
d = os.path.dirname(p)
|
||||||
|
dir_counts[d if d else "(root)"] += 1
|
||||||
|
ext = os.path.splitext(p)[1].lstrip(".").lower() or "(none)"
|
||||||
|
ext_counts[ext] += 1
|
||||||
|
|
||||||
|
# 2) repo_tree.tsv
|
||||||
|
rows = read_tsv("repo_tree.tsv")
|
||||||
|
check("repo_tree header", rows[0] == ["rank", "directory", "file_count"], str(rows[0]))
|
||||||
|
data = rows[1:]
|
||||||
|
expected_tree = sorted(dir_counts.items(), key=lambda kv: (-kv[1], kv[0]))
|
||||||
|
check("repo_tree rows == directory groups",
|
||||||
|
len(data) == len(expected_tree),
|
||||||
|
"got %d, expected %d" % (len(data), len(expected_tree)))
|
||||||
|
check("repo_tree dir/counts match recompute",
|
||||||
|
[(r[1], int(r[2])) for r in data] == [(d, c) for d, c in expected_tree])
|
||||||
|
|
||||||
|
# 3) repo_exts.tsv
|
||||||
|
rows = read_tsv("repo_exts.tsv")
|
||||||
|
check("repo_exts header", rows[0] == ["rank", "extension", "file_count"], str(rows[0]))
|
||||||
|
data = rows[1:]
|
||||||
|
expected_ext = sorted(ext_counts.items(), key=lambda kv: (-kv[1], kv[0]))
|
||||||
|
check("repo_exts rows == extension groups",
|
||||||
|
len(data) == len(expected_ext),
|
||||||
|
"got %d, expected %d" % (len(data), len(expected_ext)))
|
||||||
|
check("repo_exts ext/counts match recompute",
|
||||||
|
[(r[1], int(r[2])) for r in data] == [(d, c) for d, c in expected_ext])
|
||||||
|
|
||||||
|
# 4) repo_files.tsv
|
||||||
|
rows = read_tsv("repo_files.tsv")
|
||||||
|
check("repo_files header", rows[0] == ["rank", "path"], str(rows[0]))
|
||||||
|
file_paths = [r[1] for r in rows[1:]]
|
||||||
|
check("repo_files data rows == git ls-tree rows",
|
||||||
|
len(file_paths) == len(paths),
|
||||||
|
"got %d, git ls-tree %d" % (len(file_paths), len(paths)))
|
||||||
|
check("repo_files rows equal git ls-tree set",
|
||||||
|
sorted(file_paths) == sorted(paths))
|
||||||
|
|
||||||
|
# 5) group sums reconcile to total
|
||||||
|
check("dir sum == total", sum(dir_counts.values()) == len(paths),
|
||||||
|
"got %d, total %d" % (sum(dir_counts.values()), len(paths)))
|
||||||
|
check("ext sum == total", sum(ext_counts.values()) == len(paths),
|
||||||
|
"got %d, total %d" % (sum(ext_counts.values()), len(paths)))
|
||||||
|
|
||||||
|
print("result:", "PASS" if failures == 0 else "FAIL")
|
||||||
|
sys.exit(1 if failures else 0)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Reference in new issue
Block a user