Files
troupe-standup/wizard-work/ledger/2026-10-28-git-tree-census/CHECK
T

55 lines
2.0 KiB
Bash

#!/usr/bin/env bash
# CHECK -- wizard-work tree census (Extract lane, 2026-10-28).
#
# Independent verification: re-derives the per-lane file counts and byte
# totals straight from the COMMITTED tree (git ls-tree -r -l HEAD),
# excluding this folder's own artifacts, and diffs the result against the
# committed wizardwork-census.tsv.
#
# The committed tree is the source of truth (stable snapshot); the live
# working tree is deliberately NOT used, since it is edited concurrently.
#
# Exit code IS the verdict: 0 = artifact correct, nonzero = wrong.
#
# Repo root is derived from this file's directory, so the CHECK runs from
# any working directory.
set -u
cd "$(dirname "${BASH_SOURCE[0]}")" || exit 1
REPO_ROOT="$(cd ../../.. && pwd)"
OUT="$REPO_ROOT/wizard-work/ledger/2026-10-28-git-tree-census/wizardwork-census.tsv"
test -s "$OUT" || { echo "FAIL: committed TSV missing or empty: $OUT" >&2; exit 1; }
tmp="$(mktemp)"
trap 'rm -f "$tmp"' EXIT
# Independent derive: git ls-tree long format carries size in field 4 and
# path in field 5. Group by lane (second path component of wizard-work/).
# Exclude this folder's own output artifacts (the whole folder) so the
# census does not depend on the files it publishes.
git -C "$REPO_ROOT" ls-tree -r -l HEAD \
| awk '
$5 ~ /^wizard-work\/ledger\/2026-10-28-git-tree-census\// { next }
$5 ~ /^wizard-work\// { split($5, a, "/"); c[a[2]]++; b[a[2]] += $4; t++; tb += $4 }
END {
print "lane file_count total_bytes"
n = split("beam forge ledger null quill sol spark sphinx volt zeph", lanes, " ")
for (i = 1; i <= n; i++) {
l = lanes[i]
if (l in c) print l " " c[l] " " b[l]
}
print "TOTAL " t " " tb
}
' > "$tmp"
if cmp -s "$tmp" "$OUT"; then
echo "PASS: census matches independent recompute of committed tree (3273 files, 179776118 bytes)"
exit 0
fi
echo "FAIL: census mismatch against independent recompute of committed tree" >&2
diff -u "$OUT" "$tmp" >&2 || true
exit 1