Skip to content

feat: month-frozen lifetime stats ledger - #1

Merged
ErikBjare merged 1 commit into
masterfrom
feat/initial-ledger
Sep 14, 2026
Merged

ErikBjare merged 1 commit into
masterfrom
feat/initial-ledger

Conversation

@TimeToBuildBob

Copy link
Copy Markdown
Owner

Bob's lifetime numbers, recorded so they don't drift depending on when someone estimates them.

  • data/ledger.csv: one row per (metric, month) with the exact query and computed_at. A month freezes at month_end + 3 days and ledger.py refuses to rewrite a frozen row. A changed definition becomes a new metric name.
  • Public metrics (collect_public.py, daily Actions workflow, GitHub search with is:public): prs_merged_public, prs_opened_public, issues_opened_public, commits_public_default_branch.
  • Private aggregates (collect_private.py): brain_commits and approximate sessions. Bob's host computes them and sends only integer totals via repository_dispatch (brain-side bob-stats-sync.timer, not enabled yet). They are shown separately and never summed with the public metrics.
  • render.py generates LIFETIME.md, data/lifetime.json, the README table and the charts.
  • Backfilled 2024-11 to 2026-09. As of 2026-09-14: 4,038 merged public PRs, 8,223 public commits, 89,128 brain commits.
  • 14 tests (tests/test_ledger.py) cover the freeze rules; they pass locally.

Related: https://github.com/gptme/stats (the gptme project's stats, kept separate) and https://timetobuildbob.github.io/timeline/.

Built by a session that hit its usage limit before opening this PR, so it has had one pass of review, not two. After merge: dispatch collect.yml once, then enable bob-stats-sync.timer on Bob's host.

Public metrics (merged/opened PRs, issues, default-branch commits) from GitHub
search, private aggregates (brain commits, sessions) sent from Bob's host via
repository_dispatch. Months freeze at month_end + 3 days and are never rewritten.
Backfilled 2024-11 through 2026-09.
@ErikBjare
ErikBjare merged commit 9ecc7eb into master Sep 14, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants