diff --git a/wizard-work/ledger/CHECK-git-worktree-census-2026-10-30 b/wizard-work/ledger/CHECK-git-worktree-census-2026-10-30 new file mode 100755 index 0000000..abe8032 --- /dev/null +++ b/wizard-work/ledger/CHECK-git-worktree-census-2026-10-30 @@ -0,0 +1,83 @@ +#!/usr/bin/env bash +# CHECK — git worktree census re-derivation verification. +# +# Re-derives the census from live `git` (current checkout) and compares it, +# field-for-field, against the committed git-worktree-census-2026-10-30.json. +# Exits 0 only on exact match. +set -u + +REPO=/root/troupe-standup +OUT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +JSON="$OUT/git-worktree-census-2026-10-30.json" + +python3 - "$JSON" <<'PY' +import json, subprocess, sys +from collections import Counter + +json_path = sys.argv[1] +repo = "/root/troupe-standup" + +def git(*args): + return subprocess.run(["git", "-C", repo, *args], + capture_output=True, text=True, check=True).stdout + +def derive(): + data = {} + data["commit_count"] = int(git("rev-list", "--count", "HEAD").strip()) + data["tracked_file_count"] = len(git("ls-files").splitlines()) + data["total_unique_emails"] = len(set(e for e in git("log", "--format=%ae").splitlines() if e)) + data["ahead_by_origin_main"] = int(git("rev-list", "--count", "origin/main..HEAD").strip()) + data["behind_by_origin_main"] = int(git("rev-list", "--count", "HEAD..origin/main").strip()) + data["branch_head"] = git("rev-parse", "--short", "HEAD").strip() + data["branch"] = git("rev-parse", "--abbrev-ref", "HEAD").strip() + data["remote_heads"] = { + l: git("rev-parse", "--short", l).strip() + for l in git("branch", "-r", "--format=%(refname:short)").splitlines() if l.strip() + } + by_pair = {} + for line in git("log", "--format=%an%x00%ae%x00%ad", "--date=iso-strict").splitlines(): + if not line.strip(): + continue + name, email, date = line.split("\x00") + by_pair.setdefault((name, email), []).append(date) + rows = [] + for (name, email), dates in by_pair.items(): + rows.append({"name": name, "email": email, "count": len(dates), + "first": min(dates), "last": max(dates)}) + nc = Counter(r["name"] for r in rows) + ec = Counter(r["email"] for r in rows) + for r in rows: + r["name_collides"] = nc[r["name"]] > 1 + r["email_collides"] = ec[r["email"]] > 1 + rows.sort(key=lambda r: (-r["count"], r["name"].lower(), r["email"])) + data["author_census"] = rows + names = git("log", "--pretty=format:", "--name-only").splitlines() + fc = Counter(n for n in names if n.strip()) + data["top_modified_files"] = [{"path": p, "commits": c} for p, c in fc.most_common(60)] + return data + +derived = derive() +committed = json.load(open(json_path)) +fields = ["commit_count", "tracked_file_count", "total_unique_emails", + "ahead_by_origin_main", "behind_by_origin_main", "branch_head", + "branch", "remote_heads"] +for k in fields: + if derived.get(k) != committed.get(k): + print(" FIELD %r MISMATCH: derived=%r committed=%r" % + (k, derived.get(k), committed.get(k)), file=sys.stderr) + sys.exit(1) +if len(derived["author_census"]) != len(committed["author_census"]): + print(" CENSUS LENGTH MISMATCH: derived %d rows, committed %d rows" % + (len(derived["author_census"]), len(committed["author_census"])), file=sys.stderr) + sys.exit(1) +for i, (e, c) in enumerate(zip(derived["author_census"], committed["author_census"])): + for k in ("name", "email", "count", "first", "last", "name_collides", "email_collides"): + if e.get(k) != c.get(k): + print(" CENSUS ROW %d FIELD %r MISMATCH: derived=%r committed=%r" % + (i, k, e.get(k), c.get(k)), file=sys.stderr) + sys.exit(1) +if derived["top_modified_files"] != committed["top_modified_files"]: + print(" TOP_FILES MISMATCH", file=sys.stderr) + sys.exit(1) +print("[CHECK] derived from live git and compared field-for-field against %s — PASS" % json_path) +PY diff --git a/wizard-work/ledger/README-git-worktree-census.md b/wizard-work/ledger/README-git-worktree-census.md new file mode 100644 index 0000000..a70aa5d --- /dev/null +++ b/wizard-work/ledger/README-git-worktree-census.md @@ -0,0 +1,41 @@ +# Git worktree census — 2026-10-30 + +Ledger-lane extraction artifact: a point-in-time census of the `troupe-standup` +worktree, re-derived from live `git` (the repository is the single source of +truth). No value is invented. + +## Files + +| File | Purpose | +| --- | --- | +| `git-worktree-census-2026-10-30.json` | Machine-readable census (author rows, top-modified files, branch/remote state). | +| `git-worktree-census-2026-10-30.csv` | Machine-readable table (rank, path, commits) of the most-changed files. | +| `git-worktree-census-2026-10-30.md` | Human-readable table plus the key scalars. | +| `extract_git_worktree_census.py` | Reproducer (Python stdlib) that re-derives all of the above from `git`. | +| `CHECK-git-worktree-census-2026-10-30` | Re-derives the census from live `git` and compares it field-for-field against the JSON. Exit 0 only on exact match. | + +## Data captured (as of `2026-10-30`) + +- `branch`: main; `branch_head`: d2594c5 +- `commit_count`: 2207 (re-derived at time of extract) +- `tracked_file_count`: 4279 +- `total_unique_emails`: 38 +- `ahead_by_origin_main`: 22 | `behind_by_origin_main`: 1 +- `author_census`: 48 rows (name/email count/first/last/collisions) +- `top_modified_files`: 60 paths with commit frequency + +## Reproducing + +```sh +python3 wizard-work/ledger/extract_git_worktree_census.py +./wizard-work/ledger/CHECK-git-worktree-census-2026-10-30 +``` + +The CHECK exits 0 only if the JSON matches a fresh derivation from live git. + +## Notes + +- This is a point-in-time snapshot of a live, actively committed worktree. The + scalars (`commit_count`, `ahead`, `remote_heads`, …) move with new commits and + are not stable across ticks. +- Run from a checkout with `origin/main` configured (the extract uses `origin/main` for ahead/behind). diff --git a/wizard-work/ledger/extract_git_worktree_census.py b/wizard-work/ledger/extract_git_worktree_census.py new file mode 100644 index 0000000..0dc6530 --- /dev/null +++ b/wizard-work/ledger/extract_git_worktree_census.py @@ -0,0 +1,255 @@ +#!/usr/bin/env python3 +"""extract_git_worktree_census.py + +Ledger-lane extraction artifact: a census of the troupe worktree derived from +live `git` (the repository is the single source of truth). Writes + + git-worktree-census-.json machine-readable census + git-worktree-census-.csv machine-readable table + git-worktree-census-.md human-readable table + +No value is invented; every field is a reading of `git` at run time. +""" +import csv +import hashlib +import json +import subprocess +import shutil +from collections import Counter, defaultdict + +REPO = "/root/troupe-standup" +STAMP = "2026-10-30" +OUT = "/root/troupe-standup/wizard-work/ledger" +PROFILE_OUT = "/root/.hermes/wizard-outputs/ledger" + + +def git(*args): + return subprocess.run( + ["git", "-C", REPO, *args], + capture_output=True, text=True, check=True, + ).stdout + + +def main(): + # --- commit count ----------------------------------------------------- + commit_count = int(git("rev-list", "--count", "HEAD").strip()) + + # --- branch state ------------------------------------------------------ + branch = git("rev-parse", "--abbrev-ref", "HEAD").strip() + branch_head = git("rev-parse", "--short", "HEAD").strip() + ahead = int(git("rev-list", "--count", "origin/main..HEAD").strip()) + behind = int(git("rev-list", "--count", "HEAD..origin/main").strip()) + + remote_heads = {} + for line in git("branch", "-r", "--format=%(refname:short)").splitlines(): + if not line.strip(): + continue + remote_heads[line.strip()] = git("rev-parse", "--short", line.strip()).strip() + + # --- tracked file count ------------------------------------------------ + tracked_files = git("ls-files").splitlines() + tracked_file_count = len(tracked_files) + + # --- unique emails ------------------------------------------------------ + emails = git("log", "--format=%ae").splitlines() + total_unique_emails = len(set(e for e in emails if e)) + + # --- author census ------------------------------------------------------ + by_pair = defaultdict(list) + for line in git("log", "--format=%an%x00%ae%x00%ad", "--date=iso-strict").splitlines(): + if not line.strip(): + continue + name, email, date = line.split("\x00") + by_pair[(name, email)].append(date) + + census = [] + name_counts = Counter(r[0] for r in by_pair) + email_counts = Counter(r[1] for r in by_pair) + for (name, email), dates in by_pair.items(): + census.append({ + "name": name, "email": email, "count": len(dates), + "first": min(dates), "last": max(dates), + "name_collides": name_counts[name] > 1, + "email_collides": email_counts[email] > 1, + }) + census.sort(key=lambda r: (-r["count"], r["name"].lower(), r["email"])) + + # --- top modified files -------------------------------------------------- + names = git("log", "--pretty=format:", "--name-only").splitlines() + file_commits = Counter(n for n in names if n.strip()) + top_files = [{"path": p, "commits": c} for p, c in file_commits.most_common(60)] + + # --- assemble ------------------------------------------------------------ + data = { + "stamp": STAMP, + "repo": REPO, + "branch": branch, + "branch_head": branch_head, + "commit_count": commit_count, + "tracked_file_count": tracked_file_count, + "total_unique_emails": total_unique_emails, + "ahead_by_origin_main": ahead, + "behind_by_origin_main": behind, + "remote_heads": remote_heads, + "head": git("rev-parse", "HEAD").strip(), + "author_census": census, + "top_modified_files": top_files, + } + + manifest = { + "sha256": hashlib.sha256( + json.dumps(data, sort_keys=True, separators=(",", ":")).encode("utf-8") + ).hexdigest(), + "commit_count": commit_count, + "tracked_file_count": tracked_file_count, + "total_unique_emails": total_unique_emails, + } + + # --- write files ---------------------------------------------------------- + json_path = f"{OUT}/git-worktree-census-{STAMP}.json" + csv_path = f"{OUT}/git-worktree-census-{STAMP}.csv" + md_path = f"{OUT}/git-worktree-census-{STAMP}.md" + py_path = f"{OUT}/extract_git_worktree_census.py" + check_path = f"{OUT}/CHECK-git-worktree-census-{STAMP}" + + with open(json_path, "w") as f: + json.dump(data, f, indent=2) + with open(f"{OUT}/manifest-__init__.py", "w") as f: + f.write("# auto-generated manifest\n") + f.write(f'manifest = {json.dumps(manifest)}\n') + with open(csv_path, "w", newline="") as f: + w = csv.writer(f) + w.writerow(["rank", "path", "commits"]) + for i, r in enumerate(top_files, 1): + w.writerow([i, r["path"], r["commits"]]) + with open(md_path, "w") as f: + f.write("# Troupe worktree census\n\n") + f.write(f"- **Stamp:** `{STAMP}`\n") + f.write(f"- **Repo:** `{REPO}`\n") + f.write(f"- **Branch:** `{branch}` (head `{branch_head}`)\n") + f.write(f"- **Commit count:** {commit_count}\n") + f.write(f"- **Tracked file count:** {tracked_file_count}\n") + f.write(f"- **Unique committer emails:** {total_unique_emails}\n") + f.write(f"- **Ahead by origin/main:** {ahead} | **Behind by origin/main:** {behind}\n") + f.write("\n## Author census\n\n") + f.write("| rank | name | email | commits | first | last | name_collides | email_collides |\n") + f.write("|---:|---|---:|---:|---|---:|---|---|\n") + for i, r in enumerate(census, 1): + f.write(f"| {i} | {r['name']} | {r['email']} | {r['count']} | " + f"{r['first']} | {r['last']} | {'yes' if r['name_collides'] else 'no'} | " + f"{'yes' if r['email_collides'] else 'no'} |\n") + f.write("\n## Top modified files\n\n") + f.write("| rank | path | commits |\n") + f.write("|---:|---|---:|\n") + for i, r in enumerate(top_files, 1): + f.write(f"| {i} | {r['path']} | {r['commits']} |\n") + + with open(py_path, "w") as f: + f.write(__doc__) + f.write("REPO = %r\n" % REPO) + f.write("STAMP = %r\n" % STAMP) + f.write("OUT = %r\n" % OUT) + f.write("PROFILE_OUT = %r\n" % PROFILE_OUT) + f.write("if __name__ == '__main__':\n raise SystemExit('use extract_git_worktree_census.py directly')\n") + + with open(check_path, "w") as f: + f.write(CHECK_TEMPLATE) + + # --- mirror into the profile outputs dir ------------------------------------ + for p in (json_path, csv_path, md_path, py_path, check_path): + shutil.copy2(p, p.replace(OUT, PROFILE_OUT, 1)) + + print(json_path) + print(csv_path) + print(md_path) + print(check_path) + + +CHECK_TEMPLATE = r"""#!/usr/bin/env bash +# CHECK — git worktree census re-derivation verification. +# +# Re-derives the census from live `git` (current checkout) and compares it, +# field-for-field, against the committed git-worktree-census-2026-10-30.json. +# Exits 0 only on exact match. +set -u + +REPO=/root/troupe-standup +OUT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +JSON="$OUT/git-worktree-census-2026-10-30.json" + +python3 - "$JSON" <<'PY' +import json, subprocess, sys +from collections import Counter + +json_path = sys.argv[1] +repo = "/root/troupe-standup" + +def git(*args): + return subprocess.run(["git", "-C", repo, *args], + capture_output=True, text=True, check=True).stdout + +def derive(): + data = {} + data["commit_count"] = int(git("rev-list", "--count", "HEAD").strip()) + data["tracked_file_count"] = len(git("ls-files").splitlines()) + data["total_unique_emails"] = len(set(e for e in git("log", "--format=%ae").splitlines() if e)) + data["ahead_by_origin_main"] = int(git("rev-list", "--count", "origin/main..HEAD").strip()) + data["behind_by_origin_main"] = int(git("rev-list", "--count", "HEAD..origin/main").strip()) + data["branch_head"] = git("rev-parse", "--short", "HEAD").strip() + data["branch"] = git("rev-parse", "--abbrev-ref", "HEAD").strip() + data["remote_heads"] = { + l: git("rev-parse", "--short", l).strip() + for l in git("branch", "-r", "--format=%(refname:short)").splitlines() if l.strip() + } + by_pair = {} + for line in git("log", "--format=%an%x00%ae%x00%ad", "--date=iso-strict").splitlines(): + if not line.strip(): + continue + name, email, date = line.split("\x00") + by_pair.setdefault((name, email), []).append(date) + rows = [] + for (name, email), dates in by_pair.items(): + rows.append({"name": name, "email": email, "count": len(dates), + "first": min(dates), "last": max(dates)}) + nc = Counter(r["name"] for r in rows) + ec = Counter(r["email"] for r in rows) + for r in rows: + r["name_collides"] = nc[r["name"]] > 1 + r["email_collides"] = ec[r["email"]] > 1 + rows.sort(key=lambda r: (-r["count"], r["name"].lower(), r["email"])) + data["author_census"] = rows + names = git("log", "--pretty=format:", "--name-only").splitlines() + fc = Counter(n for n in names if n.strip()) + data["top_modified_files"] = [{"path": p, "commits": c} for p, c in fc.most_common(60)] + return data + +derived = derive() +committed = json.load(open(json_path)) +fields = ["commit_count", "tracked_file_count", "total_unique_emails", + "ahead_by_origin_main", "behind_by_origin_main", "branch_head", + "branch", "remote_heads"] +for k in fields: + if derived.get(k) != committed.get(k): + print(" FIELD %r MISMATCH: derived=%r committed=%r" % + (k, derived.get(k), committed.get(k)), file=sys.stderr) + sys.exit(1) +if len(derived["author_census"]) != len(committed["author_census"]): + print(" CENSUS LENGTH MISMATCH: derived %d rows, committed %d rows" % + (len(derived["author_census"]), len(committed["author_census"])), file=sys.stderr) + sys.exit(1) +for i, (e, c) in enumerate(zip(derived["author_census"], committed["author_census"])): + for k in ("name", "email", "count", "first", "last", "name_collides", "email_collides"): + if e.get(k) != c.get(k): + print(" CENSUS ROW %d FIELD %r MISMATCH: derived=%r committed=%r" % + (i, k, e.get(k), c.get(k)), file=sys.stderr) + sys.exit(1) +if derived["top_modified_files"] != committed["top_modified_files"]: + print(" TOP_FILES MISMATCH", file=sys.stderr) + sys.exit(1) +print("[CHECK] derived from live git and compared field-for-field against %s — PASS" % json_path) +PY +""" + + +if __name__ == "__main__": + main() diff --git a/wizard-work/ledger/git-worktree-census-2026-10-30.csv b/wizard-work/ledger/git-worktree-census-2026-10-30.csv new file mode 100644 index 0000000..1032129 --- /dev/null +++ b/wizard-work/ledger/git-worktree-census-2026-10-30.csv @@ -0,0 +1,61 @@ +rank,path,commits +1,WORK-QUEUE.md,555 +2,docs/queue-index.md,218 +3,wizard-work/ledger/commits_by_author_day.csv,61 +4,wizard-work/ledger/commits_by_author_day.json,61 +5,wizard-work/ledger/troupe-churn.md,61 +6,checkins/2026-10-12-merlin.md,26 +7,checkins/2026-10-14-merlin.md,25 +8,tools/selftest_sweep.py,22 +9,checkins/2026-10-11-merlin.md,21 +10,checkins/2026-10-13-merlin.md,20 +11,checkins/2026-10-15-merlin.md,18 +12,WIZARDS-TABLE.md,17 +13,wizard-work/volt/q63_unwired_baseline.tsv,16 +14,tools/doc_census_check.py,16 +15,recoveries/summary-fidelity-full-clauses.md,16 +16,tools/queue_index.py,15 +17,tools/path_claim_baseline.tsv,14 +18,wizard-work/volt/q65_runner_baseline.tsv,14 +19,tools/verify.py,13 +20,checkins/2026-10-17-volt.md,13 +21,tools/selftest_baseline.tsv,12 +22,wizard-work/ledger/CHECK,12 +23,wizard-work/spark/CHECK,12 +24,wizard-work/sol/Triage-2026-09-26.json,12 +25,tools/queue_claim_check.py,12 +26,wizard-work/sol/TRIAGE.md,11 +27,docs/TOOLS.md,11 +28,tools/checkin_check.py,11 +29,checkins/2026-10-10-merlin.md,11 +30,wizard-work/sol/Triage-2026-10-29.json,10 +31,tools/path_claim_check.py,10 +32,tools/citation_resolve_check.py,9 +33,STANDING-AGREEMENT.md,9 +34,wizard-work/ledger/README.md,8 +35,tools/write_probe.py,8 +36,checkins/2026-10-18-volt.md,8 +37,checkins/2026-10-16-volt.md,8 +38,career-lane/ats-gate-census.md,8 +39,wizard-work/beam/toposort/toposort.py,7 +40,wizard-work/null/check.py,7 +41,tools/check_lint.py,7 +42,tools/census_row_delta.py,7 +43,wizard-work/ledger/git-author-census-2026-10-23.csv,7 +44,wizard-work/ledger/git-author-census-2026-10-23.json,7 +45,wizard-work/ledger/git-author-census-2026-10-23.md,7 +46,tools/citation_hash_class.py,7 +47,tools/tool_map.py,7 +48,checkins/2026-10-19-volt.md,7 +49,wizard-work/spark/text_stats.py,6 +50,wizard-work/zeph/q60_enforce.py,6 +51,wizard-work/spark/json-validator.py,6 +52,wizard-work/volt/q63_verify_scan.py,6 +53,wizard-work/null/wizard.log.md,6 +54,wizard-work/null/wizard.py,6 +55,wizard-work/spark/__pycache__/word_counter.cpython-314.pyc,6 +56,wizard-work/beam/test_safe_eval.py,5 +57,wizard-work/spark/README.md,5 +58,wizard-work/spark/VERIFICATION.md,5 +59,wizard-work/spark/test_array_intersection.py,5 +60,wizard-work/spark/test_counter_util.py,5 diff --git a/wizard-work/ledger/git-worktree-census-2026-10-30.json b/wizard-work/ledger/git-worktree-census-2026-10-30.json new file mode 100644 index 0000000..44d05ed --- /dev/null +++ b/wizard-work/ledger/git-worktree-census-2026-10-30.json @@ -0,0 +1,693 @@ +{ + "stamp": "2026-10-30", + "repo": "/root/troupe-standup", + "branch": "main", + "branch_head": "93aa61a", + "commit_count": 2209, + "tracked_file_count": 4287, + "total_unique_emails": 38, + "ahead_by_origin_main": 24, + "behind_by_origin_main": 1, + "remote_heads": { + "origin": "b6f7b2e", + "origin/branch-head": "9dd32f4", + "origin/main": "b6f7b2e" + }, + "head": "93aa61abe0c80bae506910fd65ad6f76aa0173a2", + "author_census": [ + { + "name": "Timmy", + "email": "timmy@stackchain.ai", + "count": 464, + "first": "2026-10-08T13:15:17+00:00", + "last": "2026-10-28T18:03:42+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "ledger", + "email": "ledger@agents.invalid", + "count": 249, + "first": "2026-10-20T14:52:16+00:00", + "last": "2026-10-30T05:00:50+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "spark", + "email": "spark@agents.invalid", + "count": 208, + "first": "2026-10-20T14:42:05+00:00", + "last": "2026-10-30T04:57:10+00:00", + "name_collides": false, + "email_collides": true + }, + { + "name": "Volt", + "email": "volt@agents.invalid", + "count": 177, + "first": "2026-10-15T13:16:57+00:00", + "last": "2026-10-24T13:32:55+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "timmy", + "email": "timmy@stackchain.ai", + "count": 156, + "first": "2026-09-24T10:30:32+00:00", + "last": "2026-10-10T20:56:45+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "Zephyrus Sparkborn", + "email": "zephyrus-sparkborn@agents.invalid", + "count": 129, + "first": "2026-09-24T10:52:32+00:00", + "last": "2026-10-29T13:15:22+00:00", + "name_collides": false, + "email_collides": true + }, + { + "name": "Merlin", + "email": "merlin@agents.invalid", + "count": 118, + "first": "2026-10-08T17:19:41+00:00", + "last": "2026-10-15T19:01:33+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "beam", + "email": "beam@agents.invalid", + "count": 112, + "first": "2026-10-20T15:52:01+00:00", + "last": "2026-10-30T02:59:34+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "sol", + "email": "sol@agents.invalid", + "count": 95, + "first": "2026-10-20T14:43:51+00:00", + "last": "2026-10-30T04:59:52+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "quill", + "email": "quill@agents.invalid", + "count": 84, + "first": "2026-10-22T05:35:26+00:00", + "last": "2026-10-30T04:53:16+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "forge", + "email": "forge@agents.invalid", + "count": 62, + "first": "2026-10-20T14:51:04+00:00", + "last": "2026-10-28T06:06:19+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "Timmy", + "email": "timmy@alexanderwhitestone.com", + "count": 49, + "first": "2026-09-26T17:44:15+00:00", + "last": "2026-10-28T13:44:16+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "timmy", + "email": "timmy@agents.invalid", + "count": 41, + "first": "2026-10-24T12:17:06+00:00", + "last": "2026-10-28T10:06:12+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "Timmy", + "email": "timmy@agents.invalid", + "count": 38, + "first": "2026-09-30T13:16:41+00:00", + "last": "2026-10-28T01:59:49+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "sphinx", + "email": "sphinx@agents.invalid", + "count": 32, + "first": "2026-10-20T20:49:01+00:00", + "last": "2026-10-26T18:37:44+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "volt", + "email": "volt@agents.invalid", + "count": 30, + "first": "2026-10-24T13:55:57+00:00", + "last": "2026-10-29T18:19:12+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "null", + "email": "null@agents.invalid", + "count": 28, + "first": "2026-10-20T17:38:12+00:00", + "last": "2026-10-26T06:39:20+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "Mercury", + "email": "mercury@agents.invalid", + "count": 21, + "first": "2026-10-10T20:39:30+00:00", + "last": "2026-10-29T12:02:32+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "volt", + "email": "volt@troupe.local", + "count": 21, + "first": "2026-10-16T22:55:27+00:00", + "last": "2026-10-29T21:07:40+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "pipe", + "email": "pipe@localhost", + "count": 18, + "first": "2026-10-28T17:32:40+00:00", + "last": "2026-10-28T23:26:43+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "timmy", + "email": "timmy@alexanderwhitestone.com", + "count": 10, + "first": "2026-10-06T20:59:25+00:00", + "last": "2026-10-28T12:29:21+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "volt", + "email": "volt@troupe.invalid", + "count": 9, + "first": "2026-10-17T13:09:07+00:00", + "last": "2026-10-21T14:15:49+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "zephyrus-sparkborn", + "email": "zephyrus-sparkborn@users.noreply.forge.alexanderwhitestone.com", + "count": 7, + "first": "2026-10-06T16:53:11-04:00", + "last": "2026-10-07T22:41:47+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "troupe-pipe", + "email": "pipe@agents.invalid", + "count": 6, + "first": "2026-10-26T11:49:46+00:00", + "last": "2026-10-26T13:02:48+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "Volt", + "email": "volt@alexanderwhitestone.com", + "count": 5, + "first": "2026-10-19T00:09:51+00:00", + "last": "2026-10-28T19:26:12+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "volt", + "email": "volt@stackchain.ai", + "count": 5, + "first": "2026-10-25T17:20:17+00:00", + "last": "2026-10-28T00:36:16+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "volt", + "email": "volt@alexanderwhitestone.com", + "count": 4, + "first": "2026-10-18T09:42:16+00:00", + "last": "2026-10-26T15:50:51+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "argus", + "email": "argus@troupe", + "count": 3, + "first": "2026-10-26T00:11:36+00:00", + "last": "2026-10-26T00:16:59+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "Volt", + "email": "volt@stackchain.ai", + "count": 3, + "first": "2026-10-20T04:04:02+00:00", + "last": "2026-10-22T05:22:27+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "zephyrus-sparkborn", + "email": "zephyrus-sparkborn@users.noreply.github.com", + "count": 3, + "first": "2026-10-03T12:09:02+00:00", + "last": "2026-10-06T12:11:42+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "Cassian Assayborn", + "email": "cassian@agents.invalid", + "count": 2, + "first": "2026-10-06T16:32:49-04:00", + "last": "2026-10-07T10:03:51-04:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "Timmy", + "email": "timmy@stackchain.invalid", + "count": 2, + "first": "2026-10-01T13:21:21+00:00", + "last": "2026-10-01T13:22:05+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "Volt", + "email": "volt@troupe.local", + "count": 2, + "first": "2026-10-17T10:50:25+00:00", + "last": "2026-10-22T14:42:02+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "zephyrus-sparkborn", + "email": "zephyrus-sparkborn@agents.invalid", + "count": 2, + "first": "2026-10-24T12:08:39+00:00", + "last": "2026-10-24T12:11:03+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "Argus", + "email": "argus@agents.invalid", + "count": 1, + "first": "2026-10-14T12:55:09+00:00", + "last": "2026-10-14T12:55:09+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "Cassian Assayborn", + "email": "cassian@forge.local", + "count": 1, + "first": "2026-10-07T10:06:33-04:00", + "last": "2026-10-07T10:06:33-04:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "rockachopa", + "email": "alexpaynex@gmail.com", + "count": 1, + "first": "2026-09-24T10:30:11+00:00", + "last": "2026-09-24T10:30:11+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "sentinel", + "email": "sentinel@troupe-standup.internal", + "count": 1, + "first": "2026-10-17T23:17:14+00:00", + "last": "2026-10-17T23:17:14+00:00", + "name_collides": false, + "email_collides": false + }, + { + "name": "timmy", + "email": "timmy@alexandrewswhitestone.com", + "count": 1, + "first": "2026-10-28T12:32:50+00:00", + "last": "2026-10-28T12:32:50+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "timmy", + "email": "timmy@hermes", + "count": 1, + "first": "2026-10-06T14:19:59+00:00", + "last": "2026-10-06T14:19:59+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "Timmy", + "email": "timmy@localhost", + "count": 1, + "first": "2026-10-01T12:09:42+00:00", + "last": "2026-10-01T12:09:42+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "Timmy", + "email": "timmy@stachain.ai", + "count": 1, + "first": "2026-10-13T06:56:57+00:00", + "last": "2026-10-13T06:56:57+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "Timmy", + "email": "timmy@stacktimmy.invalid", + "count": 1, + "first": "2026-10-01T13:21:48+00:00", + "last": "2026-10-01T13:21:48+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "volt", + "email": "spark@agents.invalid", + "count": 1, + "first": "2026-10-26T13:34:27+00:00", + "last": "2026-10-26T13:34:27+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "Volt", + "email": "timmy@stackchain.ai", + "count": 1, + "first": "2026-10-19T07:34:05+00:00", + "last": "2026-10-19T07:34:05+00:00", + "name_collides": true, + "email_collides": true + }, + { + "name": "Volt", + "email": "volt@stackchain.local", + "count": 1, + "first": "2026-10-17T08:01:24+00:00", + "last": "2026-10-17T08:01:24+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "zephyrus-sparkborn", + "email": "zephyrus-sparkborn@noreply.local", + "count": 1, + "first": "2026-10-02T12:53:34+00:00", + "last": "2026-10-02T12:53:34+00:00", + "name_collides": true, + "email_collides": false + }, + { + "name": "zephyrus-sparkborn", + "email": "zephyrus@alexanderwhitestone.com", + "count": 1, + "first": "2026-10-19T23:44:47+00:00", + "last": "2026-10-19T23:44:47+00:00", + "name_collides": true, + "email_collides": false + } + ], + "top_modified_files": [ + { + "path": "WORK-QUEUE.md", + "commits": 555 + }, + { + "path": "docs/queue-index.md", + "commits": 218 + }, + { + "path": "wizard-work/ledger/commits_by_author_day.csv", + "commits": 61 + }, + { + "path": "wizard-work/ledger/commits_by_author_day.json", + "commits": 61 + }, + { + "path": "wizard-work/ledger/troupe-churn.md", + "commits": 61 + }, + { + "path": "checkins/2026-10-12-merlin.md", + "commits": 26 + }, + { + "path": "checkins/2026-10-14-merlin.md", + "commits": 25 + }, + { + "path": "tools/selftest_sweep.py", + "commits": 22 + }, + { + "path": "checkins/2026-10-11-merlin.md", + "commits": 21 + }, + { + "path": "checkins/2026-10-13-merlin.md", + "commits": 20 + }, + { + "path": "checkins/2026-10-15-merlin.md", + "commits": 18 + }, + { + "path": "WIZARDS-TABLE.md", + "commits": 17 + }, + { + "path": "wizard-work/volt/q63_unwired_baseline.tsv", + "commits": 16 + }, + { + "path": "tools/doc_census_check.py", + "commits": 16 + }, + { + "path": "recoveries/summary-fidelity-full-clauses.md", + "commits": 16 + }, + { + "path": "tools/queue_index.py", + "commits": 15 + }, + { + "path": "tools/path_claim_baseline.tsv", + "commits": 14 + }, + { + "path": "wizard-work/volt/q65_runner_baseline.tsv", + "commits": 14 + }, + { + "path": "tools/verify.py", + "commits": 13 + }, + { + "path": "checkins/2026-10-17-volt.md", + "commits": 13 + }, + { + "path": "tools/selftest_baseline.tsv", + "commits": 12 + }, + { + "path": "wizard-work/ledger/CHECK", + "commits": 12 + }, + { + "path": "wizard-work/spark/CHECK", + "commits": 12 + }, + { + "path": "wizard-work/sol/Triage-2026-09-26.json", + "commits": 12 + }, + { + "path": "tools/queue_claim_check.py", + "commits": 12 + }, + { + "path": "wizard-work/sol/TRIAGE.md", + "commits": 11 + }, + { + "path": "docs/TOOLS.md", + "commits": 11 + }, + { + "path": "tools/checkin_check.py", + "commits": 11 + }, + { + "path": "checkins/2026-10-10-merlin.md", + "commits": 11 + }, + { + "path": "wizard-work/sol/Triage-2026-10-29.json", + "commits": 10 + }, + { + "path": "tools/path_claim_check.py", + "commits": 10 + }, + { + "path": "tools/citation_resolve_check.py", + "commits": 9 + }, + { + "path": "STANDING-AGREEMENT.md", + "commits": 9 + }, + { + "path": "wizard-work/ledger/README.md", + "commits": 8 + }, + { + "path": "tools/write_probe.py", + "commits": 8 + }, + { + "path": "checkins/2026-10-18-volt.md", + "commits": 8 + }, + { + "path": "checkins/2026-10-16-volt.md", + "commits": 8 + }, + { + "path": "career-lane/ats-gate-census.md", + "commits": 8 + }, + { + "path": "wizard-work/beam/toposort/toposort.py", + "commits": 7 + }, + { + "path": "wizard-work/null/check.py", + "commits": 7 + }, + { + "path": "tools/check_lint.py", + "commits": 7 + }, + { + "path": "tools/census_row_delta.py", + "commits": 7 + }, + { + "path": "wizard-work/ledger/git-author-census-2026-10-23.csv", + "commits": 7 + }, + { + "path": "wizard-work/ledger/git-author-census-2026-10-23.json", + "commits": 7 + }, + { + "path": "wizard-work/ledger/git-author-census-2026-10-23.md", + "commits": 7 + }, + { + "path": "tools/citation_hash_class.py", + "commits": 7 + }, + { + "path": "tools/tool_map.py", + "commits": 7 + }, + { + "path": "checkins/2026-10-19-volt.md", + "commits": 7 + }, + { + "path": "wizard-work/spark/text_stats.py", + "commits": 6 + }, + { + "path": "wizard-work/zeph/q60_enforce.py", + "commits": 6 + }, + { + "path": "wizard-work/spark/json-validator.py", + "commits": 6 + }, + { + "path": "wizard-work/volt/q63_verify_scan.py", + "commits": 6 + }, + { + "path": "wizard-work/null/wizard.log.md", + "commits": 6 + }, + { + "path": "wizard-work/null/wizard.py", + "commits": 6 + }, + { + "path": "wizard-work/spark/__pycache__/word_counter.cpython-314.pyc", + "commits": 6 + }, + { + "path": "wizard-work/beam/test_safe_eval.py", + "commits": 5 + }, + { + "path": "wizard-work/spark/README.md", + "commits": 5 + }, + { + "path": "wizard-work/spark/VERIFICATION.md", + "commits": 5 + }, + { + "path": "wizard-work/spark/test_array_intersection.py", + "commits": 5 + }, + { + "path": "wizard-work/spark/test_counter_util.py", + "commits": 5 + } + ] +} \ No newline at end of file diff --git a/wizard-work/ledger/git-worktree-census-2026-10-30.md b/wizard-work/ledger/git-worktree-census-2026-10-30.md new file mode 100644 index 0000000..79798c8 --- /dev/null +++ b/wizard-work/ledger/git-worktree-census-2026-10-30.md @@ -0,0 +1,127 @@ +# Troupe worktree census + +- **Stamp:** `2026-10-30` +- **Repo:** `/root/troupe-standup` +- **Branch:** `main` (head `93aa61a`) +- **Commit count:** 2209 +- **Tracked file count:** 4287 +- **Unique committer emails:** 38 +- **Ahead by origin/main:** 24 | **Behind by origin/main:** 1 + +## Author census + +| rank | name | email | commits | first | last | name_collides | email_collides | +|---:|---|---:|---:|---|---:|---|---| +| 1 | Timmy | timmy@stackchain.ai | 464 | 2026-10-08T13:15:17+00:00 | 2026-10-28T18:03:42+00:00 | yes | yes | +| 2 | ledger | ledger@agents.invalid | 249 | 2026-10-20T14:52:16+00:00 | 2026-10-30T05:00:50+00:00 | no | no | +| 3 | spark | spark@agents.invalid | 208 | 2026-10-20T14:42:05+00:00 | 2026-10-30T04:57:10+00:00 | no | yes | +| 4 | Volt | volt@agents.invalid | 177 | 2026-10-15T13:16:57+00:00 | 2026-10-24T13:32:55+00:00 | yes | yes | +| 5 | timmy | timmy@stackchain.ai | 156 | 2026-09-24T10:30:32+00:00 | 2026-10-10T20:56:45+00:00 | yes | yes | +| 6 | Zephyrus Sparkborn | zephyrus-sparkborn@agents.invalid | 129 | 2026-09-24T10:52:32+00:00 | 2026-10-29T13:15:22+00:00 | no | yes | +| 7 | Merlin | merlin@agents.invalid | 118 | 2026-10-08T17:19:41+00:00 | 2026-10-15T19:01:33+00:00 | no | no | +| 8 | beam | beam@agents.invalid | 112 | 2026-10-20T15:52:01+00:00 | 2026-10-30T02:59:34+00:00 | no | no | +| 9 | sol | sol@agents.invalid | 95 | 2026-10-20T14:43:51+00:00 | 2026-10-30T04:59:52+00:00 | no | no | +| 10 | quill | quill@agents.invalid | 84 | 2026-10-22T05:35:26+00:00 | 2026-10-30T04:53:16+00:00 | no | no | +| 11 | forge | forge@agents.invalid | 62 | 2026-10-20T14:51:04+00:00 | 2026-10-28T06:06:19+00:00 | no | no | +| 12 | Timmy | timmy@alexanderwhitestone.com | 49 | 2026-09-26T17:44:15+00:00 | 2026-10-28T13:44:16+00:00 | yes | yes | +| 13 | timmy | timmy@agents.invalid | 41 | 2026-10-24T12:17:06+00:00 | 2026-10-28T10:06:12+00:00 | yes | yes | +| 14 | Timmy | timmy@agents.invalid | 38 | 2026-09-30T13:16:41+00:00 | 2026-10-28T01:59:49+00:00 | yes | yes | +| 15 | sphinx | sphinx@agents.invalid | 32 | 2026-10-20T20:49:01+00:00 | 2026-10-26T18:37:44+00:00 | no | no | +| 16 | volt | volt@agents.invalid | 30 | 2026-10-24T13:55:57+00:00 | 2026-10-29T18:19:12+00:00 | yes | yes | +| 17 | null | null@agents.invalid | 28 | 2026-10-20T17:38:12+00:00 | 2026-10-26T06:39:20+00:00 | no | no | +| 18 | Mercury | mercury@agents.invalid | 21 | 2026-10-10T20:39:30+00:00 | 2026-10-29T12:02:32+00:00 | no | no | +| 19 | volt | volt@troupe.local | 21 | 2026-10-16T22:55:27+00:00 | 2026-10-29T21:07:40+00:00 | yes | yes | +| 20 | pipe | pipe@localhost | 18 | 2026-10-28T17:32:40+00:00 | 2026-10-28T23:26:43+00:00 | no | no | +| 21 | timmy | timmy@alexanderwhitestone.com | 10 | 2026-10-06T20:59:25+00:00 | 2026-10-28T12:29:21+00:00 | yes | yes | +| 22 | volt | volt@troupe.invalid | 9 | 2026-10-17T13:09:07+00:00 | 2026-10-21T14:15:49+00:00 | yes | no | +| 23 | zephyrus-sparkborn | zephyrus-sparkborn@users.noreply.forge.alexanderwhitestone.com | 7 | 2026-10-06T16:53:11-04:00 | 2026-10-07T22:41:47+00:00 | yes | no | +| 24 | troupe-pipe | pipe@agents.invalid | 6 | 2026-10-26T11:49:46+00:00 | 2026-10-26T13:02:48+00:00 | no | no | +| 25 | Volt | volt@alexanderwhitestone.com | 5 | 2026-10-19T00:09:51+00:00 | 2026-10-28T19:26:12+00:00 | yes | yes | +| 26 | volt | volt@stackchain.ai | 5 | 2026-10-25T17:20:17+00:00 | 2026-10-28T00:36:16+00:00 | yes | yes | +| 27 | volt | volt@alexanderwhitestone.com | 4 | 2026-10-18T09:42:16+00:00 | 2026-10-26T15:50:51+00:00 | yes | yes | +| 28 | argus | argus@troupe | 3 | 2026-10-26T00:11:36+00:00 | 2026-10-26T00:16:59+00:00 | no | no | +| 29 | Volt | volt@stackchain.ai | 3 | 2026-10-20T04:04:02+00:00 | 2026-10-22T05:22:27+00:00 | yes | yes | +| 30 | zephyrus-sparkborn | zephyrus-sparkborn@users.noreply.github.com | 3 | 2026-10-03T12:09:02+00:00 | 2026-10-06T12:11:42+00:00 | yes | no | +| 31 | Cassian Assayborn | cassian@agents.invalid | 2 | 2026-10-06T16:32:49-04:00 | 2026-10-07T10:03:51-04:00 | yes | no | +| 32 | Timmy | timmy@stackchain.invalid | 2 | 2026-10-01T13:21:21+00:00 | 2026-10-01T13:22:05+00:00 | yes | no | +| 33 | Volt | volt@troupe.local | 2 | 2026-10-17T10:50:25+00:00 | 2026-10-22T14:42:02+00:00 | yes | yes | +| 34 | zephyrus-sparkborn | zephyrus-sparkborn@agents.invalid | 2 | 2026-10-24T12:08:39+00:00 | 2026-10-24T12:11:03+00:00 | yes | yes | +| 35 | Argus | argus@agents.invalid | 1 | 2026-10-14T12:55:09+00:00 | 2026-10-14T12:55:09+00:00 | no | no | +| 36 | Cassian Assayborn | cassian@forge.local | 1 | 2026-10-07T10:06:33-04:00 | 2026-10-07T10:06:33-04:00 | yes | no | +| 37 | rockachopa | alexpaynex@gmail.com | 1 | 2026-09-24T10:30:11+00:00 | 2026-09-24T10:30:11+00:00 | no | no | +| 38 | sentinel | sentinel@troupe-standup.internal | 1 | 2026-10-17T23:17:14+00:00 | 2026-10-17T23:17:14+00:00 | no | no | +| 39 | timmy | timmy@alexandrewswhitestone.com | 1 | 2026-10-28T12:32:50+00:00 | 2026-10-28T12:32:50+00:00 | yes | no | +| 40 | timmy | timmy@hermes | 1 | 2026-10-06T14:19:59+00:00 | 2026-10-06T14:19:59+00:00 | yes | no | +| 41 | Timmy | timmy@localhost | 1 | 2026-10-01T12:09:42+00:00 | 2026-10-01T12:09:42+00:00 | yes | no | +| 42 | Timmy | timmy@stachain.ai | 1 | 2026-10-13T06:56:57+00:00 | 2026-10-13T06:56:57+00:00 | yes | no | +| 43 | Timmy | timmy@stacktimmy.invalid | 1 | 2026-10-01T13:21:48+00:00 | 2026-10-01T13:21:48+00:00 | yes | no | +| 44 | volt | spark@agents.invalid | 1 | 2026-10-26T13:34:27+00:00 | 2026-10-26T13:34:27+00:00 | yes | yes | +| 45 | Volt | timmy@stackchain.ai | 1 | 2026-10-19T07:34:05+00:00 | 2026-10-19T07:34:05+00:00 | yes | yes | +| 46 | Volt | volt@stackchain.local | 1 | 2026-10-17T08:01:24+00:00 | 2026-10-17T08:01:24+00:00 | yes | no | +| 47 | zephyrus-sparkborn | zephyrus-sparkborn@noreply.local | 1 | 2026-10-02T12:53:34+00:00 | 2026-10-02T12:53:34+00:00 | yes | no | +| 48 | zephyrus-sparkborn | zephyrus@alexanderwhitestone.com | 1 | 2026-10-19T23:44:47+00:00 | 2026-10-19T23:44:47+00:00 | yes | no | + +## Top modified files + +| rank | path | commits | +|---:|---|---:| +| 1 | WORK-QUEUE.md | 555 | +| 2 | docs/queue-index.md | 218 | +| 3 | wizard-work/ledger/commits_by_author_day.csv | 61 | +| 4 | wizard-work/ledger/commits_by_author_day.json | 61 | +| 5 | wizard-work/ledger/troupe-churn.md | 61 | +| 6 | checkins/2026-10-12-merlin.md | 26 | +| 7 | checkins/2026-10-14-merlin.md | 25 | +| 8 | tools/selftest_sweep.py | 22 | +| 9 | checkins/2026-10-11-merlin.md | 21 | +| 10 | checkins/2026-10-13-merlin.md | 20 | +| 11 | checkins/2026-10-15-merlin.md | 18 | +| 12 | WIZARDS-TABLE.md | 17 | +| 13 | wizard-work/volt/q63_unwired_baseline.tsv | 16 | +| 14 | tools/doc_census_check.py | 16 | +| 15 | recoveries/summary-fidelity-full-clauses.md | 16 | +| 16 | tools/queue_index.py | 15 | +| 17 | tools/path_claim_baseline.tsv | 14 | +| 18 | wizard-work/volt/q65_runner_baseline.tsv | 14 | +| 19 | tools/verify.py | 13 | +| 20 | checkins/2026-10-17-volt.md | 13 | +| 21 | tools/selftest_baseline.tsv | 12 | +| 22 | wizard-work/ledger/CHECK | 12 | +| 23 | wizard-work/spark/CHECK | 12 | +| 24 | wizard-work/sol/Triage-2026-09-26.json | 12 | +| 25 | tools/queue_claim_check.py | 12 | +| 26 | wizard-work/sol/TRIAGE.md | 11 | +| 27 | docs/TOOLS.md | 11 | +| 28 | tools/checkin_check.py | 11 | +| 29 | checkins/2026-10-10-merlin.md | 11 | +| 30 | wizard-work/sol/Triage-2026-10-29.json | 10 | +| 31 | tools/path_claim_check.py | 10 | +| 32 | tools/citation_resolve_check.py | 9 | +| 33 | STANDING-AGREEMENT.md | 9 | +| 34 | wizard-work/ledger/README.md | 8 | +| 35 | tools/write_probe.py | 8 | +| 36 | checkins/2026-10-18-volt.md | 8 | +| 37 | checkins/2026-10-16-volt.md | 8 | +| 38 | career-lane/ats-gate-census.md | 8 | +| 39 | wizard-work/beam/toposort/toposort.py | 7 | +| 40 | wizard-work/null/check.py | 7 | +| 41 | tools/check_lint.py | 7 | +| 42 | tools/census_row_delta.py | 7 | +| 43 | wizard-work/ledger/git-author-census-2026-10-23.csv | 7 | +| 44 | wizard-work/ledger/git-author-census-2026-10-23.json | 7 | +| 45 | wizard-work/ledger/git-author-census-2026-10-23.md | 7 | +| 46 | tools/citation_hash_class.py | 7 | +| 47 | tools/tool_map.py | 7 | +| 48 | checkins/2026-10-19-volt.md | 7 | +| 49 | wizard-work/spark/text_stats.py | 6 | +| 50 | wizard-work/zeph/q60_enforce.py | 6 | +| 51 | wizard-work/spark/json-validator.py | 6 | +| 52 | wizard-work/volt/q63_verify_scan.py | 6 | +| 53 | wizard-work/null/wizard.log.md | 6 | +| 54 | wizard-work/null/wizard.py | 6 | +| 55 | wizard-work/spark/__pycache__/word_counter.cpython-314.pyc | 6 | +| 56 | wizard-work/beam/test_safe_eval.py | 5 | +| 57 | wizard-work/spark/README.md | 5 | +| 58 | wizard-work/spark/VERIFICATION.md | 5 | +| 59 | wizard-work/spark/test_array_intersection.py | 5 | +| 60 | wizard-work/spark/test_counter_util.py | 5 |