ledger: regenerate churn tables (commits-by-author-day, work inventory) + passing CHECK
This commit is contained in:
1 parent
cf80507de7
commit
5ed85136d2
6 files changed
+1179
No files matched your search
Executable
+75
@@ -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
|
||||
|
@@ -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
|
||||
}
|
||||
]
|
||||
@@ -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 |
|
||||
@@ -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
|
||||
|
@@ -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"
|
||||
}
|
||||
]
|
||||
Reference in new issue
Block a user