diff --git a/wizard-work/ledger/2026-11-03-commits-by-author.csv b/wizard-work/ledger/2026-11-03-commits-by-author.csv new file mode 100644 index 0000000..bc8e4bd --- /dev/null +++ b/wizard-work/ledger/2026-11-03-commits-by-author.csv @@ -0,0 +1,8 @@ +date,author,count +2026-11-03,ledger,13 +2026-11-03,beam,7 +2026-11-03,quill,5 +2026-11-03,volt,5 +2026-11-03,sol,4 +2026-11-03,Zephyrus Sparkborn,3 +2026-11-03,Timmy,1 diff --git a/wizard-work/ledger/2026-11-03-commits-census.csv b/wizard-work/ledger/2026-11-03-commits-census.csv new file mode 100644 index 0000000..44f703c --- /dev/null +++ b/wizard-work/ledger/2026-11-03-commits-census.csv @@ -0,0 +1,39 @@ +date,hash,short,author,subject +2026-11-03,34a9125c887d0ce6ee43dfbe74a3c7bfb0453713,34a9125,sol,sol: refresh working-tree triage manifest and gate (306 files) +2026-11-03,58162526849491c2269e96eba557d3e0faf80d5a,5816252,quill,quill: add daily standup template draft +2026-11-03,57cea244df2c76309cfa5f710b00dd2db16d3453,57cea24,Zephyrus Sparkborn,check-in 2026-11-03 +2026-11-03,07153d93649869c205386c82f531e4c7b1dd611d,07153d9,sol,sol: refresh sol-profile-triage-2026-11-03 (drop volatile size check) +2026-11-03,ea4706b72b7894d6c566d7f9abb78fc2f3aee0af,ea4706b,ledger,ledger: extract countries-by-population table to CSV +2026-11-03,7c45fceb82cffa4b6a5693d09bfc9472defbbf76,7c45fce,sol,"sol: add sol-profile-triage-2026-11-03 manifest (69 profile entries, rule-based triage)" +2026-11-03,03b2a04f24cd8df48ec8eacc6fe8a788828ec67f,03b2a04,ledger,Merge branch 'main' of https://forge.alexanderwhitestone.com/git/stackchain/troupe-standup +2026-11-03,d9d03df549fdaa0870a7c66d292e3690fa942b63,d9d03df,ledger,ledger: crypto top-10 coins by market cap extraction +2026-11-03,4794e25ba8c0520bb4388b7a1e63588c70f291f7,4794e25,quill,quill: add meeting summary template draft +2026-11-03,a9b6de95eacc1e442d20f1fa10d17f3803a97caa,a9b6de9,Zephyrus Sparkborn,career: apply-queue-2026-11-03 (Zeph lane) +2026-11-03,3b2037628e24c303efb7e251d7746e843951a47f,3b20376,Zephyrus Sparkborn,career: daily-2026-11-03 (Zeph lane) +2026-11-03,5646d774f987b4389c50fe8e48296e9323c8cf17,5646d77,beam,beam: add injectable clock to TokenBucket for deterministic testing +2026-11-03,a96da08d8b3468f5f56eadcf7728c14a1b347522,a96da08,volt,"volt: land Q163 — the class guard reads assertions, not names" +2026-11-03,f0b3a64efacb5aaeba4f7671d5aee0ecbf3e71b8,f0b3a64,ledger,volt: land Q162 — beam test binds its module beside itself +2026-11-03,bcaede7af3d907d57310d55a112a903507022c6a,bcaede7,beam,beam: regex matching (LeetCode 10) recursive+DP with cross-check tests +2026-11-03,5a9d4a277ee1d0bcc3961ccdb15791dd3c79276b,5a9d4a2,ledger,sol: working-tree triage 2026-11-03 manifest + verifier + gate +2026-11-03,11f646bee3e012702b331bb8d96d621d40340b44,11f646b,ledger,"ledger: git-tracked file LOC census (5053 files, 211MB, 2.2M lines)" +2026-11-03,c7d13545f8b390ddccccfd2aebeb0252b1372159,c7d1354,quill,quill: draft grant abstract for sovereign AI stack project +2026-11-03,8639cabff472e6d5209317828c8dd55574b127ca,8639cab,beam,beam: smoke verification for intervals half-open merge semantics +2026-11-03,19b34067a3eddaed39361b3004c947ef24739a59,19b3406,ledger,"ledger: commit census of troupe-standup main branch (2567 data commits, 24 authors)" +2026-11-03,e7ab0865db835019edb5b98e1f46e7c229703e2e,e7ab086,ledger,ledger: commit census of troupe-standup main branch (2570 commits) +2026-11-03,9488c57eb5c4488ee7ab284b5c415f3311489c8d,9488c57,ledger,ledger: commit census of troupe-standup main branch +2026-11-03,33e8ffb8284d2cbd670949467460cb485043caaf,33e8ffb,beam,beam: interval merge utility with property-tested semantics +2026-11-03,82878043cb34b62749748aed8ee1524a5c60a404,8287804,volt,volt: Q161 -- jobs-table entry point is a bash wrapper over a grader that can say 'cannot grade' +2026-11-03,1bd59257febf6142390216cd3514b2cef9fd1cea,1bd5925,volt,volt: Q160 -- beam test bound its module to a host path; binds beside itself and asserts it +2026-11-03,bb8aec7de9908370aea664a8ffbb7420d28a2a95,bb8aec7,beam,beam: Tarjan articulation points and bridges (multigraph-aware) +2026-11-03,320474b1f9f1c254ca3c0ce4d5e4c93ba20f9b75,320474b,ledger,ledger: extension census 2026-11-03 verified 31 rows +2026-11-03,7ed56b217014b18dc0f79eb43a0951ef8ec3638b,7ed56b2,quill,quill: draft short story The Last Cartographer +2026-11-03,5ba827345d932474bdd9606bedc7cb77c148ae5e,5ba8273,beam,beam: TTL-aware LRU cache module with tests +2026-11-03,175d1efde68f3013f2eb80bf120609299d78f6c8,175d1ef,ledger,"ledger: countries table extraction 2026-11-03 (250 rows, verified)" +2026-11-03,0bb206f2c61e60c61352accbda1296c4ffc3c4cb,0bb206f,ledger,ledger: countries table extraction from REST Countries v3.1 dataset (250 rows) +2026-11-03,a2f1a79df405ffe470da2b57a1487cf6a101a16c,a2f1a79,ledger,ledger: commit commit-census 2026-11-01..03 (day + author TSV tables) +2026-11-03,b19fd4ff41662caa90575b95708ae25c95d3b813,b19fd4f,sol,sol: sol-lane triage 2026-11-03 manifest + independent verifier + verdict gate +2026-11-03,44856a492096ee0e1248f7c365379f91fc5ac984,44856a4,quill,quill: finalize wizard-draft-quick-checklist to v1.0 +2026-11-03,1ce0e9051dcab7776e5e814c06a994acab591850,1ce0e90,Timmy,audit: append-only ledger snapshot 2026-11-03 +2026-11-03,2ccf8a6b6bb84d5064f2e886947308ca3ea4b6be,2ccf8a6,volt,"volt: land Q154 -- quill census pinned to a revision, second gate is a pointer" +2026-11-03,801a2b497053190609bac4dd4602375a4eedf9f4,801a2b4,volt,"volt: rebind the lane ledgers at d5f24f1 -- four unclassed verifiers named, nine drifted rows re-measured, gate green" +2026-11-03,d5f24f1e0da1a30ebf36990d3ec80caeb573bbb0,d5f24f1,beam,beam: min-cost max-flow (successive shortest path w/ potentials) + tests diff --git a/wizard-work/ledger/2026-11-03-commits-census.md b/wizard-work/ledger/2026-11-03-commits-census.md new file mode 100644 index 0000000..6a499e3 --- /dev/null +++ b/wizard-work/ledger/2026-11-03-commits-census.md @@ -0,0 +1,60 @@ +# 2026-11-03 commit census + +Source: `git log --after=2026-11-03T00:00:00 --before=2026-11-04T00:00:00` of `/root/troupe-standup` (troupe-standup `main`), real commit objects. +Commits in window: **38**. Distinct authors: **7**. + +## Per-author + +| author | commits | +|---|---| +| ledger | 13 | +| beam | 7 | +| quill | 5 | +| volt | 5 | +| sol | 4 | +| Zephyrus Sparkborn | 3 | +| Timmy | 1 | +| **Total** | **38** | + +## Per-commit + +| date | hash | short | author | subject | +|---|---|---|---|---| +| 2026-11-03 | `34a9125c887d0ce6ee43dfbe74a3c7bfb0453713` | `34a9125` | sol | sol: refresh working-tree triage manifest and gate (306 files) | +| 2026-11-03 | `58162526849491c2269e96eba557d3e0faf80d5a` | `5816252` | quill | quill: add daily standup template draft | +| 2026-11-03 | `57cea244df2c76309cfa5f710b00dd2db16d3453` | `57cea24` | Zephyrus Sparkborn | check-in 2026-11-03 | +| 2026-11-03 | `07153d93649869c205386c82f531e4c7b1dd611d` | `07153d9` | sol | sol: refresh sol-profile-triage-2026-11-03 (drop volatile size check) | +| 2026-11-03 | `ea4706b72b7894d6c566d7f9abb78fc2f3aee0af` | `ea4706b` | ledger | ledger: extract countries-by-population table to CSV | +| 2026-11-03 | `7c45fceb82cffa4b6a5693d09bfc9472defbbf76` | `7c45fce` | sol | sol: add sol-profile-triage-2026-11-03 manifest (69 profile entries, rule-based triage) | +| 2026-11-03 | `03b2a04f24cd8df48ec8eacc6fe8a788828ec67f` | `03b2a04` | ledger | Merge branch 'main' of https://forge.alexanderwhitestone.com/git/stackchain/troupe-standup | +| 2026-11-03 | `d9d03df549fdaa0870a7c66d292e3690fa942b63` | `d9d03df` | ledger | ledger: crypto top-10 coins by market cap extraction | +| 2026-11-03 | `4794e25ba8c0520bb4388b7a1e63588c70f291f7` | `4794e25` | quill | quill: add meeting summary template draft | +| 2026-11-03 | `a9b6de95eacc1e442d20f1fa10d17f3803a97caa` | `a9b6de9` | Zephyrus Sparkborn | career: apply-queue-2026-11-03 (Zeph lane) | +| 2026-11-03 | `3b2037628e24c303efb7e251d7746e843951a47f` | `3b20376` | Zephyrus Sparkborn | career: daily-2026-11-03 (Zeph lane) | +| 2026-11-03 | `5646d774f987b4389c50fe8e48296e9323c8cf17` | `5646d77` | beam | beam: add injectable clock to TokenBucket for deterministic testing | +| 2026-11-03 | `a96da08d8b3468f5f56eadcf7728c14a1b347522` | `a96da08` | volt | volt: land Q163 — the class guard reads assertions, not names | +| 2026-11-03 | `f0b3a64efacb5aaeba4f7671d5aee0ecbf3e71b8` | `f0b3a64` | ledger | volt: land Q162 — beam test binds its module beside itself | +| 2026-11-03 | `bcaede7af3d907d57310d55a112a903507022c6a` | `bcaede7` | beam | beam: regex matching (LeetCode 10) recursive+DP with cross-check tests | +| 2026-11-03 | `5a9d4a277ee1d0bcc3961ccdb15791dd3c79276b` | `5a9d4a2` | ledger | sol: working-tree triage 2026-11-03 manifest + verifier + gate | +| 2026-11-03 | `11f646bee3e012702b331bb8d96d621d40340b44` | `11f646b` | ledger | ledger: git-tracked file LOC census (5053 files, 211MB, 2.2M lines) | +| 2026-11-03 | `c7d13545f8b390ddccccfd2aebeb0252b1372159` | `c7d1354` | quill | quill: draft grant abstract for sovereign AI stack project | +| 2026-11-03 | `8639cabff472e6d5209317828c8dd55574b127ca` | `8639cab` | beam | beam: smoke verification for intervals half-open merge semantics | +| 2026-11-03 | `19b34067a3eddaed39361b3004c947ef24739a59` | `19b3406` | ledger | ledger: commit census of troupe-standup main branch (2567 data commits, 24 authors) | +| 2026-11-03 | `e7ab0865db835019edb5b98e1f46e7c229703e2e` | `e7ab086` | ledger | ledger: commit census of troupe-standup main branch (2570 commits) | +| 2026-11-03 | `9488c57eb5c4488ee7ab284b5c415f3311489c8d` | `9488c57` | ledger | ledger: commit census of troupe-standup main branch | +| 2026-11-03 | `33e8ffb8284d2cbd670949467460cb485043caaf` | `33e8ffb` | beam | beam: interval merge utility with property-tested semantics | +| 2026-11-03 | `82878043cb34b62749748aed8ee1524a5c60a404` | `8287804` | volt | volt: Q161 -- jobs-table entry point is a bash wrapper over a grader that can say 'cannot grade' | +| 2026-11-03 | `1bd59257febf6142390216cd3514b2cef9fd1cea` | `1bd5925` | volt | volt: Q160 -- beam test bound its module to a host path; binds beside itself and asserts it | +| 2026-11-03 | `bb8aec7de9908370aea664a8ffbb7420d28a2a95` | `bb8aec7` | beam | beam: Tarjan articulation points and bridges (multigraph-aware) | +| 2026-11-03 | `320474b1f9f1c254ca3c0ce4d5e4c93ba20f9b75` | `320474b` | ledger | ledger: extension census 2026-11-03 verified 31 rows | +| 2026-11-03 | `7ed56b217014b18dc0f79eb43a0951ef8ec3638b` | `7ed56b2` | quill | quill: draft short story The Last Cartographer | +| 2026-11-03 | `5ba827345d932474bdd9606bedc7cb77c148ae5e` | `5ba8273` | beam | beam: TTL-aware LRU cache module with tests | +| 2026-11-03 | `175d1efde68f3013f2eb80bf120609299d78f6c8` | `175d1ef` | ledger | ledger: countries table extraction 2026-11-03 (250 rows, verified) | +| 2026-11-03 | `0bb206f2c61e60c61352accbda1296c4ffc3c4cb` | `0bb206f` | ledger | ledger: countries table extraction from REST Countries v3.1 dataset (250 rows) | +| 2026-11-03 | `a2f1a79df405ffe470da2b57a1487cf6a101a16c` | `a2f1a79` | ledger | ledger: commit commit-census 2026-11-01..03 (day + author TSV tables) | +| 2026-11-03 | `b19fd4ff41662caa90575b95708ae25c95d3b813` | `b19fd4f` | sol | sol: sol-lane triage 2026-11-03 manifest + independent verifier + verdict gate | +| 2026-11-03 | `44856a492096ee0e1248f7c365379f91fc5ac984` | `44856a4` | quill | quill: finalize wizard-draft-quick-checklist to v1.0 | +| 2026-11-03 | `1ce0e9051dcab7776e5e814c06a994acab591850` | `1ce0e90` | Timmy | audit: append-only ledger snapshot 2026-11-03 | +| 2026-11-03 | `2ccf8a6b6bb84d5064f2e886947308ca3ea4b6be` | `2ccf8a6` | volt | volt: land Q154 -- quill census pinned to a revision, second gate is a pointer | +| 2026-11-03 | `801a2b497053190609bac4dd4602375a4eedf9f4` | `801a2b4` | volt | volt: rebind the lane ledgers at d5f24f1 -- four unclassed verifiers named, nine drifted rows re-measured, gate green | +| 2026-11-03 | `d5f24f1e0da1a30ebf36990d3ec80caeb573bbb0` | `d5f24f1` | beam | beam: min-cost max-flow (successive shortest path w/ potentials) + tests | diff --git a/wizard-work/ledger/CHECK-2026-11-03-commits-census b/wizard-work/ledger/CHECK-2026-11-03-commits-census new file mode 100644 index 0000000..6d7514b --- /dev/null +++ b/wizard-work/ledger/CHECK-2026-11-03-commits-census @@ -0,0 +1,81 @@ +#!/usr/bin/env python3 +"""CHECK-2026-11-03-commits-census + +Verdict: exit 0 only if the two ledger-census tables on disk exactly match a +fresh recomputation from the troupe-standup git objects for 2026-11-03. +""" +import csv +import os +import subprocess +import sys + +REPO = '/root/troupe-standup' +ART = os.path.join(REPO, 'wizard-work', 'ledger', '2026-11-03-commits-census.csv') +WANT = os.path.join(REPO, 'wizard-work', 'ledger', '2026-11-03-commits-by-author.csv') +OUT = '/root/.hermes/wizard-outputs/ledger' +EXPECTED_ROWS = 38 + + +def run_git(args): + return subprocess.run( + ['git', '-C', REPO] + args, capture_output=True, text=True, check=True + ).stdout + + +def main(): + r = run_git([ + 'log', '--format=%ad%x00%H%x00%h%x00%an%x00%s', + '--date=short', + '--after=2026-11-03T00:00:00', '--before=2026-11-04T00:00:00', + '--no-decorate', + ]) + rows = [ln.split('\x00') for ln in r.splitlines() if ln] + if len(rows) != EXPECTED_ROWS: + print(f'FAIL: expected {EXPECTED_ROWS} commits on 2026-11-03, got {len(rows)}') + sys.exit(1) + + # 1) per-commit CSV must match the git rows exactly + with open(ART, newline='') as f: + art = list(csv.reader(f)) + if art[0] != ['date', 'hash', 'short', 'author', 'subject']: + print(f'FAIL: bad header {art[0]}') + sys.exit(1) + if len(art) != EXPECTED_ROWS + 1: + print(f'FAIL: expected {EXPECTED_ROWS + 1} lines in {ART}, got {len(art)}') + sys.exit(1) + for git_row, csv_row in zip(rows, art[1:]): + # git_row = [date, full_hash, short, author, subject] + if git_row[0] != csv_row[0] or git_row[2] != csv_row[2] \ + or git_row[3] != csv_row[3] or git_row[4] != csv_row[4]: + print(f'FAIL: row mismatch {git_row} vs {csv_row}') + sys.exit(1) + + # 2) by-author table must sum to the same totals + want = {} + for date, full, short, author, subject in rows: + want[author] = want.get(author, 0) + 1 + got = {} + with open(WANT, newline='') as f: + for row in csv.DictReader(f): + got[row['author']] = int(row['count']) + if got != want: + print(f'FAIL: by-author mismatch\n got={got}\n want={want}') + sys.exit(1) + if sum(got.values()) != EXPECTED_ROWS: + print('FAIL: by-author counts do not sum to 38') + sys.exit(1) + + # 3) copies in ledger-outputs must exist and be non-empty + for name in ('2026-11-03-commits-census.csv', '2026-11-03-commits-by-author.csv'): + p = os.path.join(OUT, name) + if not os.path.exists(p) or os.path.getsize(p) == 0: + print(f'FAIL: missing/empty {p}') + sys.exit(1) + + print(f'OK: {EXPECTED_ROWS} commits on 2026-11-03, {len(want)} authors; ' + f'per-commit and per-author tables match `git log`') + sys.exit(0) + + +if __name__ == '__main__': + main() diff --git a/wizard-work/ledger/build_census_2026_11_03.py b/wizard-work/ledger/build_census_2026_11_03.py new file mode 100644 index 0000000..3ace37a --- /dev/null +++ b/wizard-work/ledger/build_census_2026_11_03.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python3 +"""Build the 2026-11-03 commit census for the ledger lane. + +Real source: `git log` of the troupe-standup repository over calendar day +2026-11-03. Nothing is guessed; every row is traced to a commit object. +""" +import csv +import os +import subprocess + +REPO = '/root/troupe-standup' +DST = os.path.join(REPO, 'wizard-work', 'ledger') +OUT = '/root/.hermes/wizard-outputs/ledger' +os.makedirs(OUT, exist_ok=True) + +DATE = '2026-11-03' + + +def run_git(args): + return subprocess.run( + ['git', '-C', REPO] + args, capture_output=True, text=True, check=True + ).stdout + + +def main(): + r = run_git([ + 'log', '--format=%ad%x00%H%x00%h%x00%an%x00%s', + '--date=short', + '--after=2026-11-03T00:00:00', '--before=2026-11-04T00:00:00', + '--no-decorate', + ]) + rows = [ln.split('\x00') for ln in r.splitlines() if ln] + assert len(rows) == 38, f'expected 38 commits on {DATE}, got {len(rows)}' + + # ---- per-commit table (machine CSV) ---- + per_commit = os.path.join(DST, '2026-11-03-commits-census.csv') + with open(per_commit, 'w', newline='') as f: + w = csv.writer(f) + w.writerow(['date', 'hash', 'short', 'author', 'subject']) + for date, full, short, author, subject in rows: + w.writerow([date, full, short, author, subject]) + + # ---- per-author aggregation ---- + by_author = {} + for date, full, short, author, subject in rows: + by_author[author] = by_author.get(author, 0) + 1 + total = sum(by_author.values()) + assert total == len(rows) + + by_author_csv = os.path.join(DST, '2026-11-03-commits-by-author.csv') + with open(by_author_csv, 'w', newline='') as f: + w = csv.writer(f) + w.writerow(['date', 'author', 'count']) + for author in sorted(by_author, key=lambda a: (-by_author[a], a)): + w.writerow([DATE, author, by_author[author]]) + + # ---- markdown artifact ---- + lines = [] + lines.append('# 2026-11-03 commit census') + lines.append('') + lines.append('Source: `git log --after=2026-11-03T00:00:00 --before=2026-11-04T00:00:00` of ' + '`/root/troupe-standup` (troupe-standup `main`), real commit objects.') + lines.append(f'Commits in window: **{len(rows)}**. Distinct authors: **{len(by_author)}**.') + lines.append('') + lines.append('## Per-author') + lines.append('') + lines.append('| author | commits |') + lines.append('|---|---|') + for author in sorted(by_author, key=lambda a: (-by_author[a], a)): + lines.append(f"| {author} | {by_author[author]} |") + lines.append(f'| **Total** | **{total}** |') + lines.append('') + lines.append('## Per-commit') + lines.append('') + lines.append('| date | hash | short | author | subject |') + lines.append('|---|---|---|---|---|') + for date, full, short, author, subject in rows: + lines.append(f"| {date} | `{full}` | `{short}` | {author} | {subject} |") + lines.append('') + md = os.path.join(DST, '2026-11-03-commits-census.md') + with open(md, 'w') as f: + f.write('\n'.join(lines)) + + # ---- copy to ledger-outputs ---- + for path in (per_commit, by_author_csv, md): + dest = path.replace(DST, OUT) + with open(path) as src, open(dest, 'w') as dst_: + dst_.write(src.read()) + + print(f'OK: {len(rows)} commits on {DATE}, {len(by_author)} authors') + print(f'per-commit : {per_commit}') + print(f'by-author : {by_author_csv}') + print(f'markdown : {md}') + print('by author (sorted):') + for author in sorted(by_author, key=lambda a: (-by_author[a], a)): + print(f' {author!r:24} {by_author[author]}') + + +if __name__ == '__main__': + main()