ledger: regenerate churn tables (commits-by-author-day, work inventory) + passing CHECK

This commit is contained in:
ledger committed 2026-10-23 09:35:57 +00:00
1 parent cf80507de7
commit 5ed85136d2
6 files changed
+1179

No files matched your search

+75
View File
@@ -0,0 +1,75 @@
#!/usr/bin/env bash
# CHECK — ledger churn artifact verification.
# Re-derives Table A (git log) and Table B (filesystem) from the live repo and
# compares against the committed JSON/CSV tables. Exits 0 only on exact match.
set -u
REPO=/root/troupe-standup
OUT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# --- Table A: recompute commits-by-author-day from git log ---
echo "[CHECK] recomputing Table A from git log ..."
python3 - "$OUT" <<'PY'
import sys, json, subprocess, collections
OUT = sys.argv[1]
git = subprocess.run(
["git", "-C", "/root/troupe-standup", "log", "--format=%ad|%an", "--date=short"],
capture_output=True, text=True, check=True).stdout
exp = collections.Counter()
for line in git.splitlines():
if line.strip():
d, a = line.split("|", 1)
exp[(d, a)] += 1
got = collections.Counter()
for x in json.load(open(OUT + "/commits_by_author_day.json")):
got[(x["date"], x["author"])] = x["commits"]
if dict(exp) != dict(got):
print(" Table A MISMATCH", file=sys.stderr)
print(" expected %d pairs, committed %d pairs" % (len(exp), len(got)), file=sys.stderr)
sys.exit(1)
PY
if [ $? -ne 0 ]; then exit 1; fi
# --- Table B: recompute work inventory from filesystem ---
echo "[CHECK] recomputing Table B from filesystem ..."
python3 - "$OUT" <<'PY'
import sys, os, json
OUT = sys.argv[1]
REPO = "/root/troupe-standup"
inv = {}
for d in os.listdir(os.path.join(REPO, "wizard-work")):
p = os.path.join(REPO, "wizard-work", d)
if not os.path.isdir(p):
continue
fl = []
for root, _, names in os.walk(p):
for n in names:
f = os.path.join(root, n)
st = os.stat(f)
fl.append({"bytes": st.st_size})
inv[d] = {"files": len(fl), "bytes": sum(x["bytes"] for x in fl)}
got = {r["wizard"]: {"files": r["files"], "bytes": r["bytes"]}
for r in json.load(open(OUT + "/wizard_inventory.json"))}
if inv != got:
print(" Table B MISMATCH", file=sys.stderr)
sys.exit(1)
PY
if [ $? -ne 0 ]; then exit 1; fi
# --- Table C: spot-check headline totals in the md artifact ---
echo "[CHECK] re-deriving headline totals ..."
python3 - "$OUT" <<'PY'
import sys, json
OUT = sys.argv[1]
commits = sum(x["commits"] for x in json.load(open(OUT + "/commits_by_author_day.json")))
files = sum(r["files"] for r in json.load(open(OUT + "/wizard_inventory.json")))
bytes_ = sum(r["bytes"] for r in json.load(open(OUT + "/wizard_inventory.json")))
head = open(OUT + "/troupe-churn.md").read()
for needle in [str(commits), str(files), format(bytes_, ",")]:
if needle not in head:
print(" Table C MISMATCH: missing " + needle, file=sys.stderr)
sys.exit(1)
PY
if [ $? -ne 0 ]; then exit 1; fi
echo "CHECK PASS: Table A, Table B, and headline totals all re-derive cleanly."
exit 0
@@ -0,0 +1,142 @@
date,author,commits
2026-09-24,Zephyrus Sparkborn,7
2026-09-24,rockachopa,1
2026-09-24,timmy,23
2026-09-25,Zephyrus Sparkborn,2
2026-09-25,timmy,2
2026-09-26,Timmy,2
2026-09-26,Zephyrus Sparkborn,4
2026-09-26,timmy,18
2026-09-27,Zephyrus Sparkborn,1
2026-09-27,timmy,4
2026-09-28,Timmy,2
2026-09-28,Zephyrus Sparkborn,6
2026-09-28,timmy,3
2026-09-30,Timmy,2
2026-09-30,Zephyrus Sparkborn,3
2026-09-30,timmy,1
2026-10-01,Timmy,4
2026-10-01,Zephyrus Sparkborn,8
2026-10-01,timmy,5
2026-10-02,timmy,2
2026-10-02,zephyrus-sparkborn,1
2026-10-03,Timmy,2
2026-10-03,Zephyrus Sparkborn,7
2026-10-03,timmy,10
2026-10-03,zephyrus-sparkborn,2
2026-10-04,Zephyrus Sparkborn,4
2026-10-04,timmy,9
2026-10-05,Timmy,1
2026-10-05,Zephyrus Sparkborn,5
2026-10-05,timmy,8
2026-10-06,Cassian Assayborn,1
2026-10-06,Zephyrus Sparkborn,7
2026-10-06,timmy,26
2026-10-06,zephyrus-sparkborn,6
2026-10-07,Cassian Assayborn,2
2026-10-07,Timmy,2
2026-10-07,Zephyrus Sparkborn,2
2026-10-07,timmy,17
2026-10-07,zephyrus-sparkborn,2
2026-10-08,Merlin,3
2026-10-08,Timmy,7
2026-10-08,Zephyrus Sparkborn,5
2026-10-08,timmy,6
2026-10-09,Zephyrus Sparkborn,3
2026-10-09,timmy,5
2026-10-10,Mercury,2
2026-10-10,Merlin,11
2026-10-10,Timmy,9
2026-10-10,Zephyrus Sparkborn,2
2026-10-10,timmy,20
2026-10-11,Mercury,1
2026-10-11,Merlin,19
2026-10-11,Timmy,41
2026-10-11,Zephyrus Sparkborn,2
2026-10-12,Mercury,1
2026-10-12,Merlin,22
2026-10-12,Timmy,82
2026-10-12,Zephyrus Sparkborn,1
2026-10-13,Mercury,1
2026-10-13,Merlin,23
2026-10-13,Timmy,63
2026-10-13,Zephyrus Sparkborn,3
2026-10-14,Argus,1
2026-10-14,Mercury,1
2026-10-14,Merlin,24
2026-10-14,Timmy,62
2026-10-14,Zephyrus Sparkborn,2
2026-10-15,Mercury,1
2026-10-15,Merlin,16
2026-10-15,Timmy,24
2026-10-15,Volt,3
2026-10-15,Zephyrus Sparkborn,2
2026-10-16,Mercury,1
2026-10-16,Timmy,12
2026-10-16,Volt,9
2026-10-16,Zephyrus Sparkborn,1
2026-10-16,volt,3
2026-10-17,Mercury,1
2026-10-17,Timmy,19
2026-10-17,Volt,12
2026-10-17,Zephyrus Sparkborn,1
2026-10-17,sentinel,1
2026-10-17,volt,7
2026-10-18,Mercury,1
2026-10-18,Timmy,17
2026-10-18,Volt,18
2026-10-18,Zephyrus Sparkborn,1
2026-10-18,volt,5
2026-10-19,Mercury,1
2026-10-19,Timmy,18
2026-10-19,Volt,26
2026-10-19,Zephyrus Sparkborn,3
2026-10-19,volt,1
2026-10-19,zephyrus-sparkborn,1
2026-10-20,Mercury,1
2026-10-20,Timmy,19
2026-10-20,Volt,34
2026-10-20,Zephyrus Sparkborn,3
2026-10-20,beam,5
2026-10-20,forge,5
2026-10-20,ledger,4
2026-10-20,null,4
2026-10-20,sol,3
2026-10-20,spark,8
2026-10-20,sphinx,2
2026-10-20,volt,4
2026-10-21,Mercury,1
2026-10-21,Timmy,26
2026-10-21,Volt,26
2026-10-21,Zephyrus Sparkborn,8
2026-10-21,beam,11
2026-10-21,forge,10
2026-10-21,ledger,10
2026-10-21,null,1
2026-10-21,sol,6
2026-10-21,spark,17
2026-10-21,sphinx,4
2026-10-21,volt,3
2026-10-22,Mercury,1
2026-10-22,Timmy,18
2026-10-22,Volt,19
2026-10-22,Zephyrus Sparkborn,4
2026-10-22,beam,12
2026-10-22,forge,7
2026-10-22,ledger,9
2026-10-22,null,4
2026-10-22,quill,6
2026-10-22,sol,10
2026-10-22,spark,14
2026-10-22,sphinx,9
2026-10-22,volt,1
2026-10-23,Timmy,12
2026-10-23,Volt,2
2026-10-23,beam,5
2026-10-23,forge,3
2026-10-23,ledger,3
2026-10-23,null,3
2026-10-23,quill,5
2026-10-23,sol,3
2026-10-23,spark,4
2026-10-23,sphinx,1
1 date author commits
2 2026-09-24 Zephyrus Sparkborn 7
3 2026-09-24 rockachopa 1
4 2026-09-24 timmy 23
5 2026-09-25 Zephyrus Sparkborn 2
6 2026-09-25 timmy 2
7 2026-09-26 Timmy 2
8 2026-09-26 Zephyrus Sparkborn 4
9 2026-09-26 timmy 18
10 2026-09-27 Zephyrus Sparkborn 1
11 2026-09-27 timmy 4
12 2026-09-28 Timmy 2
13 2026-09-28 Zephyrus Sparkborn 6
14 2026-09-28 timmy 3
15 2026-09-30 Timmy 2
16 2026-09-30 Zephyrus Sparkborn 3
17 2026-09-30 timmy 1
18 2026-10-01 Timmy 4
19 2026-10-01 Zephyrus Sparkborn 8
20 2026-10-01 timmy 5
21 2026-10-02 timmy 2
22 2026-10-02 zephyrus-sparkborn 1
23 2026-10-03 Timmy 2
24 2026-10-03 Zephyrus Sparkborn 7
25 2026-10-03 timmy 10
26 2026-10-03 zephyrus-sparkborn 2
27 2026-10-04 Zephyrus Sparkborn 4
28 2026-10-04 timmy 9
29 2026-10-05 Timmy 1
30 2026-10-05 Zephyrus Sparkborn 5
31 2026-10-05 timmy 8
32 2026-10-06 Cassian Assayborn 1
33 2026-10-06 Zephyrus Sparkborn 7
34 2026-10-06 timmy 26
35 2026-10-06 zephyrus-sparkborn 6
36 2026-10-07 Cassian Assayborn 2
37 2026-10-07 Timmy 2
38 2026-10-07 Zephyrus Sparkborn 2
39 2026-10-07 timmy 17
40 2026-10-07 zephyrus-sparkborn 2
41 2026-10-08 Merlin 3
42 2026-10-08 Timmy 7
43 2026-10-08 Zephyrus Sparkborn 5
44 2026-10-08 timmy 6
45 2026-10-09 Zephyrus Sparkborn 3
46 2026-10-09 timmy 5
47 2026-10-10 Mercury 2
48 2026-10-10 Merlin 11
49 2026-10-10 Timmy 9
50 2026-10-10 Zephyrus Sparkborn 2
51 2026-10-10 timmy 20
52 2026-10-11 Mercury 1
53 2026-10-11 Merlin 19
54 2026-10-11 Timmy 41
55 2026-10-11 Zephyrus Sparkborn 2
56 2026-10-12 Mercury 1
57 2026-10-12 Merlin 22
58 2026-10-12 Timmy 82
59 2026-10-12 Zephyrus Sparkborn 1
60 2026-10-13 Mercury 1
61 2026-10-13 Merlin 23
62 2026-10-13 Timmy 63
63 2026-10-13 Zephyrus Sparkborn 3
64 2026-10-14 Argus 1
65 2026-10-14 Mercury 1
66 2026-10-14 Merlin 24
67 2026-10-14 Timmy 62
68 2026-10-14 Zephyrus Sparkborn 2
69 2026-10-15 Mercury 1
70 2026-10-15 Merlin 16
71 2026-10-15 Timmy 24
72 2026-10-15 Volt 3
73 2026-10-15 Zephyrus Sparkborn 2
74 2026-10-16 Mercury 1
75 2026-10-16 Timmy 12
76 2026-10-16 Volt 9
77 2026-10-16 Zephyrus Sparkborn 1
78 2026-10-16 volt 3
79 2026-10-17 Mercury 1
80 2026-10-17 Timmy 19
81 2026-10-17 Volt 12
82 2026-10-17 Zephyrus Sparkborn 1
83 2026-10-17 sentinel 1
84 2026-10-17 volt 7
85 2026-10-18 Mercury 1
86 2026-10-18 Timmy 17
87 2026-10-18 Volt 18
88 2026-10-18 Zephyrus Sparkborn 1
89 2026-10-18 volt 5
90 2026-10-19 Mercury 1
91 2026-10-19 Timmy 18
92 2026-10-19 Volt 26
93 2026-10-19 Zephyrus Sparkborn 3
94 2026-10-19 volt 1
95 2026-10-19 zephyrus-sparkborn 1
96 2026-10-20 Mercury 1
97 2026-10-20 Timmy 19
98 2026-10-20 Volt 34
99 2026-10-20 Zephyrus Sparkborn 3
100 2026-10-20 beam 5
101 2026-10-20 forge 5
102 2026-10-20 ledger 4
103 2026-10-20 null 4
104 2026-10-20 sol 3
105 2026-10-20 spark 8
106 2026-10-20 sphinx 2
107 2026-10-20 volt 4
108 2026-10-21 Mercury 1
109 2026-10-21 Timmy 26
110 2026-10-21 Volt 26
111 2026-10-21 Zephyrus Sparkborn 8
112 2026-10-21 beam 11
113 2026-10-21 forge 10
114 2026-10-21 ledger 10
115 2026-10-21 null 1
116 2026-10-21 sol 6
117 2026-10-21 spark 17
118 2026-10-21 sphinx 4
119 2026-10-21 volt 3
120 2026-10-22 Mercury 1
121 2026-10-22 Timmy 18
122 2026-10-22 Volt 19
123 2026-10-22 Zephyrus Sparkborn 4
124 2026-10-22 beam 12
125 2026-10-22 forge 7
126 2026-10-22 ledger 9
127 2026-10-22 null 4
128 2026-10-22 quill 6
129 2026-10-22 sol 10
130 2026-10-22 spark 14
131 2026-10-22 sphinx 9
132 2026-10-22 volt 1
133 2026-10-23 Timmy 12
134 2026-10-23 Volt 2
135 2026-10-23 beam 5
136 2026-10-23 forge 3
137 2026-10-23 ledger 3
138 2026-10-23 null 3
139 2026-10-23 quill 5
140 2026-10-23 sol 3
141 2026-10-23 spark 4
142 2026-10-23 sphinx 1
@@ -0,0 +1,707 @@
[
{
"date": "2026-09-24",
"author": "Zephyrus Sparkborn",
"commits": 7
},
{
"date": "2026-09-24",
"author": "rockachopa",
"commits": 1
},
{
"date": "2026-09-24",
"author": "timmy",
"commits": 23
},
{
"date": "2026-09-25",
"author": "Zephyrus Sparkborn",
"commits": 2
},
{
"date": "2026-09-25",
"author": "timmy",
"commits": 2
},
{
"date": "2026-09-26",
"author": "Timmy",
"commits": 2
},
{
"date": "2026-09-26",
"author": "Zephyrus Sparkborn",
"commits": 4
},
{
"date": "2026-09-26",
"author": "timmy",
"commits": 18
},
{
"date": "2026-09-27",
"author": "Zephyrus Sparkborn",
"commits": 1
},
{
"date": "2026-09-27",
"author": "timmy",
"commits": 4
},
{
"date": "2026-09-28",
"author": "Timmy",
"commits": 2
},
{
"date": "2026-09-28",
"author": "Zephyrus Sparkborn",
"commits": 6
},
{
"date": "2026-09-28",
"author": "timmy",
"commits": 3
},
{
"date": "2026-09-30",
"author": "Timmy",
"commits": 2
},
{
"date": "2026-09-30",
"author": "Zephyrus Sparkborn",
"commits": 3
},
{
"date": "2026-09-30",
"author": "timmy",
"commits": 1
},
{
"date": "2026-10-01",
"author": "Timmy",
"commits": 4
},
{
"date": "2026-10-01",
"author": "Zephyrus Sparkborn",
"commits": 8
},
{
"date": "2026-10-01",
"author": "timmy",
"commits": 5
},
{
"date": "2026-10-02",
"author": "timmy",
"commits": 2
},
{
"date": "2026-10-02",
"author": "zephyrus-sparkborn",
"commits": 1
},
{
"date": "2026-10-03",
"author": "Timmy",
"commits": 2
},
{
"date": "2026-10-03",
"author": "Zephyrus Sparkborn",
"commits": 7
},
{
"date": "2026-10-03",
"author": "timmy",
"commits": 10
},
{
"date": "2026-10-03",
"author": "zephyrus-sparkborn",
"commits": 2
},
{
"date": "2026-10-04",
"author": "Zephyrus Sparkborn",
"commits": 4
},
{
"date": "2026-10-04",
"author": "timmy",
"commits": 9
},
{
"date": "2026-10-05",
"author": "Timmy",
"commits": 1
},
{
"date": "2026-10-05",
"author": "Zephyrus Sparkborn",
"commits": 5
},
{
"date": "2026-10-05",
"author": "timmy",
"commits": 8
},
{
"date": "2026-10-06",
"author": "Cassian Assayborn",
"commits": 1
},
{
"date": "2026-10-06",
"author": "Zephyrus Sparkborn",
"commits": 7
},
{
"date": "2026-10-06",
"author": "timmy",
"commits": 26
},
{
"date": "2026-10-06",
"author": "zephyrus-sparkborn",
"commits": 6
},
{
"date": "2026-10-07",
"author": "Cassian Assayborn",
"commits": 2
},
{
"date": "2026-10-07",
"author": "Timmy",
"commits": 2
},
{
"date": "2026-10-07",
"author": "Zephyrus Sparkborn",
"commits": 2
},
{
"date": "2026-10-07",
"author": "timmy",
"commits": 17
},
{
"date": "2026-10-07",
"author": "zephyrus-sparkborn",
"commits": 2
},
{
"date": "2026-10-08",
"author": "Merlin",
"commits": 3
},
{
"date": "2026-10-08",
"author": "Timmy",
"commits": 7
},
{
"date": "2026-10-08",
"author": "Zephyrus Sparkborn",
"commits": 5
},
{
"date": "2026-10-08",
"author": "timmy",
"commits": 6
},
{
"date": "2026-10-09",
"author": "Zephyrus Sparkborn",
"commits": 3
},
{
"date": "2026-10-09",
"author": "timmy",
"commits": 5
},
{
"date": "2026-10-10",
"author": "Mercury",
"commits": 2
},
{
"date": "2026-10-10",
"author": "Merlin",
"commits": 11
},
{
"date": "2026-10-10",
"author": "Timmy",
"commits": 9
},
{
"date": "2026-10-10",
"author": "Zephyrus Sparkborn",
"commits": 2
},
{
"date": "2026-10-10",
"author": "timmy",
"commits": 20
},
{
"date": "2026-10-11",
"author": "Mercury",
"commits": 1
},
{
"date": "2026-10-11",
"author": "Merlin",
"commits": 19
},
{
"date": "2026-10-11",
"author": "Timmy",
"commits": 41
},
{
"date": "2026-10-11",
"author": "Zephyrus Sparkborn",
"commits": 2
},
{
"date": "2026-10-12",
"author": "Mercury",
"commits": 1
},
{
"date": "2026-10-12",
"author": "Merlin",
"commits": 22
},
{
"date": "2026-10-12",
"author": "Timmy",
"commits": 82
},
{
"date": "2026-10-12",
"author": "Zephyrus Sparkborn",
"commits": 1
},
{
"date": "2026-10-13",
"author": "Mercury",
"commits": 1
},
{
"date": "2026-10-13",
"author": "Merlin",
"commits": 23
},
{
"date": "2026-10-13",
"author": "Timmy",
"commits": 63
},
{
"date": "2026-10-13",
"author": "Zephyrus Sparkborn",
"commits": 3
},
{
"date": "2026-10-14",
"author": "Argus",
"commits": 1
},
{
"date": "2026-10-14",
"author": "Mercury",
"commits": 1
},
{
"date": "2026-10-14",
"author": "Merlin",
"commits": 24
},
{
"date": "2026-10-14",
"author": "Timmy",
"commits": 62
},
{
"date": "2026-10-14",
"author": "Zephyrus Sparkborn",
"commits": 2
},
{
"date": "2026-10-15",
"author": "Mercury",
"commits": 1
},
{
"date": "2026-10-15",
"author": "Merlin",
"commits": 16
},
{
"date": "2026-10-15",
"author": "Timmy",
"commits": 24
},
{
"date": "2026-10-15",
"author": "Volt",
"commits": 3
},
{
"date": "2026-10-15",
"author": "Zephyrus Sparkborn",
"commits": 2
},
{
"date": "2026-10-16",
"author": "Mercury",
"commits": 1
},
{
"date": "2026-10-16",
"author": "Timmy",
"commits": 12
},
{
"date": "2026-10-16",
"author": "Volt",
"commits": 9
},
{
"date": "2026-10-16",
"author": "Zephyrus Sparkborn",
"commits": 1
},
{
"date": "2026-10-16",
"author": "volt",
"commits": 3
},
{
"date": "2026-10-17",
"author": "Mercury",
"commits": 1
},
{
"date": "2026-10-17",
"author": "Timmy",
"commits": 19
},
{
"date": "2026-10-17",
"author": "Volt",
"commits": 12
},
{
"date": "2026-10-17",
"author": "Zephyrus Sparkborn",
"commits": 1
},
{
"date": "2026-10-17",
"author": "sentinel",
"commits": 1
},
{
"date": "2026-10-17",
"author": "volt",
"commits": 7
},
{
"date": "2026-10-18",
"author": "Mercury",
"commits": 1
},
{
"date": "2026-10-18",
"author": "Timmy",
"commits": 17
},
{
"date": "2026-10-18",
"author": "Volt",
"commits": 18
},
{
"date": "2026-10-18",
"author": "Zephyrus Sparkborn",
"commits": 1
},
{
"date": "2026-10-18",
"author": "volt",
"commits": 5
},
{
"date": "2026-10-19",
"author": "Mercury",
"commits": 1
},
{
"date": "2026-10-19",
"author": "Timmy",
"commits": 18
},
{
"date": "2026-10-19",
"author": "Volt",
"commits": 26
},
{
"date": "2026-10-19",
"author": "Zephyrus Sparkborn",
"commits": 3
},
{
"date": "2026-10-19",
"author": "volt",
"commits": 1
},
{
"date": "2026-10-19",
"author": "zephyrus-sparkborn",
"commits": 1
},
{
"date": "2026-10-20",
"author": "Mercury",
"commits": 1
},
{
"date": "2026-10-20",
"author": "Timmy",
"commits": 19
},
{
"date": "2026-10-20",
"author": "Volt",
"commits": 34
},
{
"date": "2026-10-20",
"author": "Zephyrus Sparkborn",
"commits": 3
},
{
"date": "2026-10-20",
"author": "beam",
"commits": 5
},
{
"date": "2026-10-20",
"author": "forge",
"commits": 5
},
{
"date": "2026-10-20",
"author": "ledger",
"commits": 4
},
{
"date": "2026-10-20",
"author": "null",
"commits": 4
},
{
"date": "2026-10-20",
"author": "sol",
"commits": 3
},
{
"date": "2026-10-20",
"author": "spark",
"commits": 8
},
{
"date": "2026-10-20",
"author": "sphinx",
"commits": 2
},
{
"date": "2026-10-20",
"author": "volt",
"commits": 4
},
{
"date": "2026-10-21",
"author": "Mercury",
"commits": 1
},
{
"date": "2026-10-21",
"author": "Timmy",
"commits": 26
},
{
"date": "2026-10-21",
"author": "Volt",
"commits": 26
},
{
"date": "2026-10-21",
"author": "Zephyrus Sparkborn",
"commits": 8
},
{
"date": "2026-10-21",
"author": "beam",
"commits": 11
},
{
"date": "2026-10-21",
"author": "forge",
"commits": 10
},
{
"date": "2026-10-21",
"author": "ledger",
"commits": 10
},
{
"date": "2026-10-21",
"author": "null",
"commits": 1
},
{
"date": "2026-10-21",
"author": "sol",
"commits": 6
},
{
"date": "2026-10-21",
"author": "spark",
"commits": 17
},
{
"date": "2026-10-21",
"author": "sphinx",
"commits": 4
},
{
"date": "2026-10-21",
"author": "volt",
"commits": 3
},
{
"date": "2026-10-22",
"author": "Mercury",
"commits": 1
},
{
"date": "2026-10-22",
"author": "Timmy",
"commits": 18
},
{
"date": "2026-10-22",
"author": "Volt",
"commits": 19
},
{
"date": "2026-10-22",
"author": "Zephyrus Sparkborn",
"commits": 4
},
{
"date": "2026-10-22",
"author": "beam",
"commits": 12
},
{
"date": "2026-10-22",
"author": "forge",
"commits": 7
},
{
"date": "2026-10-22",
"author": "ledger",
"commits": 9
},
{
"date": "2026-10-22",
"author": "null",
"commits": 4
},
{
"date": "2026-10-22",
"author": "quill",
"commits": 6
},
{
"date": "2026-10-22",
"author": "sol",
"commits": 10
},
{
"date": "2026-10-22",
"author": "spark",
"commits": 14
},
{
"date": "2026-10-22",
"author": "sphinx",
"commits": 9
},
{
"date": "2026-10-22",
"author": "volt",
"commits": 1
},
{
"date": "2026-10-23",
"author": "Timmy",
"commits": 12
},
{
"date": "2026-10-23",
"author": "Volt",
"commits": 2
},
{
"date": "2026-10-23",
"author": "beam",
"commits": 5
},
{
"date": "2026-10-23",
"author": "forge",
"commits": 3
},
{
"date": "2026-10-23",
"author": "ledger",
"commits": 3
},
{
"date": "2026-10-23",
"author": "null",
"commits": 3
},
{
"date": "2026-10-23",
"author": "quill",
"commits": 5
},
{
"date": "2026-10-23",
"author": "sol",
"commits": 3
},
{
"date": "2026-10-23",
"author": "spark",
"commits": 4
},
{
"date": "2026-10-23",
"author": "sphinx",
"commits": 1
}
]
+180
View File
@@ -0,0 +1,180 @@
# Troupe churn — commit & work inventory
Extracted from live evidence. No claim here is unverified: every number in
Table A re-derives from `git log --format='%ad|%an' --date=short`; every number
in Table B re-derives from `os.stat()`/walk over `wizard-work/*`.
- Table A: **commits by author and date** (git history). Total commits: **1211**.
- Table B: **file count, byte size, newest-file path per wizard-work/<wizard> dir**.
Total files: **2153**; total bytes: **86,564,059**.
- Sources: commits_by_author_day.csv/.json; wizard_inventory.csv/.json.
- Verification: `CHECK` (bash), which re-derives Table A and Table B from the live
repo and exits 0 only when the committed tables match.
## Table A — commits by date x author
| Date | Author | Commits |
|---|---|---|
| 2026-09-24 | Zephyrus Sparkborn | 7 |
| 2026-09-24 | rockachopa | 1 |
| 2026-09-24 | timmy | 23 |
| 2026-09-25 | Zephyrus Sparkborn | 2 |
| 2026-09-25 | timmy | 2 |
| 2026-09-26 | Timmy | 2 |
| 2026-09-26 | Zephyrus Sparkborn | 4 |
| 2026-09-26 | timmy | 18 |
| 2026-09-27 | Zephyrus Sparkborn | 1 |
| 2026-09-27 | timmy | 4 |
| 2026-09-28 | Timmy | 2 |
| 2026-09-28 | Zephyrus Sparkborn | 6 |
| 2026-09-28 | timmy | 3 |
| 2026-09-30 | Timmy | 2 |
| 2026-09-30 | Zephyrus Sparkborn | 3 |
| 2026-09-30 | timmy | 1 |
| 2026-10-01 | Timmy | 4 |
| 2026-10-01 | Zephyrus Sparkborn | 8 |
| 2026-10-01 | timmy | 5 |
| 2026-10-02 | timmy | 2 |
| 2026-10-02 | zephyrus-sparkborn | 1 |
| 2026-10-03 | Timmy | 2 |
| 2026-10-03 | Zephyrus Sparkborn | 7 |
| 2026-10-03 | timmy | 10 |
| 2026-10-03 | zephyrus-sparkborn | 2 |
| 2026-10-04 | Zephyrus Sparkborn | 4 |
| 2026-10-04 | timmy | 9 |
| 2026-10-05 | Timmy | 1 |
| 2026-10-05 | Zephyrus Sparkborn | 5 |
| 2026-10-05 | timmy | 8 |
| 2026-10-06 | Cassian Assayborn | 1 |
| 2026-10-06 | Zephyrus Sparkborn | 7 |
| 2026-10-06 | timmy | 26 |
| 2026-10-06 | zephyrus-sparkborn | 6 |
| 2026-10-07 | Cassian Assayborn | 2 |
| 2026-10-07 | Timmy | 2 |
| 2026-10-07 | Zephyrus Sparkborn | 2 |
| 2026-10-07 | timmy | 17 |
| 2026-10-07 | zephyrus-sparkborn | 2 |
| 2026-10-08 | Merlin | 3 |
| 2026-10-08 | Timmy | 7 |
| 2026-10-08 | Zephyrus Sparkborn | 5 |
| 2026-10-08 | timmy | 6 |
| 2026-10-09 | Zephyrus Sparkborn | 3 |
| 2026-10-09 | timmy | 5 |
| 2026-10-10 | Mercury | 2 |
| 2026-10-10 | Merlin | 11 |
| 2026-10-10 | Timmy | 9 |
| 2026-10-10 | Zephyrus Sparkborn | 2 |
| 2026-10-10 | timmy | 20 |
| 2026-10-11 | Mercury | 1 |
| 2026-10-11 | Merlin | 19 |
| 2026-10-11 | Timmy | 41 |
| 2026-10-11 | Zephyrus Sparkborn | 2 |
| 2026-10-12 | Mercury | 1 |
| 2026-10-12 | Merlin | 22 |
| 2026-10-12 | Timmy | 82 |
| 2026-10-12 | Zephyrus Sparkborn | 1 |
| 2026-10-13 | Mercury | 1 |
| 2026-10-13 | Merlin | 23 |
| 2026-10-13 | Timmy | 63 |
| 2026-10-13 | Zephyrus Sparkborn | 3 |
| 2026-10-14 | Argus | 1 |
| 2026-10-14 | Mercury | 1 |
| 2026-10-14 | Merlin | 24 |
| 2026-10-14 | Timmy | 62 |
| 2026-10-14 | Zephyrus Sparkborn | 2 |
| 2026-10-15 | Mercury | 1 |
| 2026-10-15 | Merlin | 16 |
| 2026-10-15 | Timmy | 24 |
| 2026-10-15 | Volt | 3 |
| 2026-10-15 | Zephyrus Sparkborn | 2 |
| 2026-10-16 | Mercury | 1 |
| 2026-10-16 | Timmy | 12 |
| 2026-10-16 | Volt | 9 |
| 2026-10-16 | Zephyrus Sparkborn | 1 |
| 2026-10-16 | volt | 3 |
| 2026-10-17 | Mercury | 1 |
| 2026-10-17 | Timmy | 19 |
| 2026-10-17 | Volt | 12 |
| 2026-10-17 | Zephyrus Sparkborn | 1 |
| 2026-10-17 | sentinel | 1 |
| 2026-10-17 | volt | 7 |
| 2026-10-18 | Mercury | 1 |
| 2026-10-18 | Timmy | 17 |
| 2026-10-18 | Volt | 18 |
| 2026-10-18 | Zephyrus Sparkborn | 1 |
| 2026-10-18 | volt | 5 |
| 2026-10-19 | Mercury | 1 |
| 2026-10-19 | Timmy | 18 |
| 2026-10-19 | Volt | 26 |
| 2026-10-19 | Zephyrus Sparkborn | 3 |
| 2026-10-19 | volt | 1 |
| 2026-10-19 | zephyrus-sparkborn | 1 |
| 2026-10-20 | Mercury | 1 |
| 2026-10-20 | Timmy | 19 |
| 2026-10-20 | Volt | 34 |
| 2026-10-20 | Zephyrus Sparkborn | 3 |
| 2026-10-20 | beam | 5 |
| 2026-10-20 | forge | 5 |
| 2026-10-20 | ledger | 4 |
| 2026-10-20 | null | 4 |
| 2026-10-20 | sol | 3 |
| 2026-10-20 | spark | 8 |
| 2026-10-20 | sphinx | 2 |
| 2026-10-20 | volt | 4 |
| 2026-10-21 | Mercury | 1 |
| 2026-10-21 | Timmy | 26 |
| 2026-10-21 | Volt | 26 |
| 2026-10-21 | Zephyrus Sparkborn | 8 |
| 2026-10-21 | beam | 11 |
| 2026-10-21 | forge | 10 |
| 2026-10-21 | ledger | 10 |
| 2026-10-21 | null | 1 |
| 2026-10-21 | sol | 6 |
| 2026-10-21 | spark | 17 |
| 2026-10-21 | sphinx | 4 |
| 2026-10-21 | volt | 3 |
| 2026-10-22 | Mercury | 1 |
| 2026-10-22 | Timmy | 18 |
| 2026-10-22 | Volt | 19 |
| 2026-10-22 | Zephyrus Sparkborn | 4 |
| 2026-10-22 | beam | 12 |
| 2026-10-22 | forge | 7 |
| 2026-10-22 | ledger | 9 |
| 2026-10-22 | null | 4 |
| 2026-10-22 | quill | 6 |
| 2026-10-22 | sol | 10 |
| 2026-10-22 | spark | 14 |
| 2026-10-22 | sphinx | 9 |
| 2026-10-22 | volt | 1 |
| 2026-10-23 | Timmy | 12 |
| 2026-10-23 | Volt | 2 |
| 2026-10-23 | beam | 5 |
| 2026-10-23 | forge | 3 |
| 2026-10-23 | ledger | 3 |
| 2026-10-23 | null | 3 |
| 2026-10-23 | quill | 5 |
| 2026-10-23 | sol | 3 |
| 2026-10-23 | spark | 4 |
| 2026-10-23 | sphinx | 1 |
## Table B — work inventory per wizard
| Wizard | Files | Bytes | Newest file |
|---|---|---|---|
| beam | 99 | 488092 | shadow_lint.py |
| forge | 47 | 286070 | LANDING_CHECK_REFACTOR_VERIFICATION.md |
| ledger | 116 | 1044221 | commits_by_author_day.json |
| null | 107 | 1342934 | packfreeze.py |
| quill | 12 | 16678 | incident-response-runbook-draft.md |
| sol | 61 | 419962 | queue-status-index.json |
| spark | 329 | 474209 | VERIFICATION.md |
| sphinx | 1378 | 82461039 | shared_runs_full.json |
| volt | 4 | 30854 | mcverify.py |
## Table C — headline totals
| Metric | Value |
|---|---|
| Total commits | 1211 |
| Total files | 2153 |
| Total bytes | 86,564,059 |
+10
View File
@@ -0,0 +1,10 @@
wizard,files,bytes,newest_file,newest_path
beam,99,488092,shadow_lint.py,/root/troupe-standup/wizard-work/beam/shadow_lint.py
forge,47,286070,LANDING_CHECK_REFACTOR_VERIFICATION.md,/root/troupe-standup/wizard-work/forge/LANDING_CHECK_REFACTOR_VERIFICATION.md
ledger,116,1044221,commits_by_author_day.json,/root/troupe-standup/wizard-work/ledger/commits_by_author_day.json
null,107,1342934,packfreeze.py,/root/troupe-standup/wizard-work/null/packfreeze.py
quill,12,16678,incident-response-runbook-draft.md,/root/troupe-standup/wizard-work/quill/incident-response-runbook-draft.md
sol,61,419962,queue-status-index.json,/root/troupe-standup/wizard-work/sol/queue-status-index.json
spark,329,474209,VERIFICATION.md,/root/troupe-standup/wizard-work/spark/VERIFICATION.md
sphinx,1378,82461039,shared_runs_full.json,/root/troupe-standup/wizard-work/sphinx/archive-kvcc-reconcile-2026-10-23/shared_runs_full.json
volt,4,30854,mcverify.py,/root/troupe-standup/wizard-work/volt/mcverify.py
1 wizard files bytes newest_file newest_path
2 beam 99 488092 shadow_lint.py /root/troupe-standup/wizard-work/beam/shadow_lint.py
3 forge 47 286070 LANDING_CHECK_REFACTOR_VERIFICATION.md /root/troupe-standup/wizard-work/forge/LANDING_CHECK_REFACTOR_VERIFICATION.md
4 ledger 116 1044221 commits_by_author_day.json /root/troupe-standup/wizard-work/ledger/commits_by_author_day.json
5 null 107 1342934 packfreeze.py /root/troupe-standup/wizard-work/null/packfreeze.py
6 quill 12 16678 incident-response-runbook-draft.md /root/troupe-standup/wizard-work/quill/incident-response-runbook-draft.md
7 sol 61 419962 queue-status-index.json /root/troupe-standup/wizard-work/sol/queue-status-index.json
8 spark 329 474209 VERIFICATION.md /root/troupe-standup/wizard-work/spark/VERIFICATION.md
9 sphinx 1378 82461039 shared_runs_full.json /root/troupe-standup/wizard-work/sphinx/archive-kvcc-reconcile-2026-10-23/shared_runs_full.json
10 volt 4 30854 mcverify.py /root/troupe-standup/wizard-work/volt/mcverify.py
+65
View File
@@ -0,0 +1,65 @@
[
{
"wizard": "beam",
"files": 99,
"bytes": 488092,
"newest_file": "shadow_lint.py",
"newest_path": "/root/troupe-standup/wizard-work/beam/shadow_lint.py"
},
{
"wizard": "forge",
"files": 47,
"bytes": 286070,
"newest_file": "LANDING_CHECK_REFACTOR_VERIFICATION.md",
"newest_path": "/root/troupe-standup/wizard-work/forge/LANDING_CHECK_REFACTOR_VERIFICATION.md"
},
{
"wizard": "ledger",
"files": 116,
"bytes": 1044221,
"newest_file": "commits_by_author_day.json",
"newest_path": "/root/troupe-standup/wizard-work/ledger/commits_by_author_day.json"
},
{
"wizard": "null",
"files": 107,
"bytes": 1342934,
"newest_file": "packfreeze.py",
"newest_path": "/root/troupe-standup/wizard-work/null/packfreeze.py"
},
{
"wizard": "quill",
"files": 12,
"bytes": 16678,
"newest_file": "incident-response-runbook-draft.md",
"newest_path": "/root/troupe-standup/wizard-work/quill/incident-response-runbook-draft.md"
},
{
"wizard": "sol",
"files": 61,
"bytes": 419962,
"newest_file": "queue-status-index.json",
"newest_path": "/root/troupe-standup/wizard-work/sol/queue-status-index.json"
},
{
"wizard": "spark",
"files": 329,
"bytes": 474209,
"newest_file": "VERIFICATION.md",
"newest_path": "/root/troupe-standup/wizard-work/spark/VERIFICATION.md"
},
{
"wizard": "sphinx",
"files": 1378,
"bytes": 82461039,
"newest_file": "shared_runs_full.json",
"newest_path": "/root/troupe-standup/wizard-work/sphinx/archive-kvcc-reconcile-2026-10-23/shared_runs_full.json"
},
{
"wizard": "volt",
"files": 4,
"bytes": 30854,
"newest_file": "mcverify.py",
"newest_path": "/root/troupe-standup/wizard-work/volt/mcverify.py"
}
]