Read on 11 Oct 2026 in the portfolio folder, from commits in its output.
python3 -I site/year/yearstats.py site/data/year-yearstats.jsonFrom 25 Jan 2026 to the day this page was built, I made 9,057 commits in 15 repositories, on 214 days and in 1,772 hours that each have at least one commit. Every number links to the command that counted it, at the end of the page.
$ python3 -I site/year/yearstats.py site/data/year-yearstats.jsonDays with a commit214$ python3 -I site/year/yearstats.py site/data/year-yearstats.jsonHours with a commit1,772$ python3 -I site/year/yearstats.py site/data/year-yearstats.jsonLongest run of days67$ python3 -I site/year/yearstats.py site/data/year-yearstats.jsonPull requests merged988$ gh pr list -R <owner>/<repository> --state merged --limit 5000 --json number,createdAt,mergedAt --jq '.[] | [.number, .createdAt, .mergedAt] | @tsv'Lines of code added4,423,214$ python3 -I site/year/numstat.py site/data/year-numstat.jsonClaude Code sessions1,151$ python3 -I site/year/claude.py site/data/year-claude.jsonTool calls by Claude331,120$ python3 -I site/year/claude.py site/data/year-claude.jsonThe longest run of days with a commit is 67 days, to 11 Oct 2026, and the current one is 67 days. The busiest day was 5 Oct 2026, with 524 commits.
988 pull requests were merged. From opened to merged took 5.9 minutes in the middle case, and 84 % were merged within an hour. The most in one day was 111, on 25 Sep 2026.
7,344 commits, 81 %, name Claude as a co-author. In 1,151 sessions Claude made 331,120 tool calls, and at most 9 sessions, or 28 with their agents, worked in the same ten minutes. Up to 30 May 2026 the counts are Claude Code’s own per day; after it they come from the transcripts, where 2.4 % of the tool calls ended in an error and Claude edited 10,652 files.
The first commit of the year in each repository, in the order they began.
| Repository | First commit |
|---|---|
| First platform | 25 Jan 2026 |
| RAMTT Cowork | 8 Feb 2026 |
| Design Cowork | 15 Feb 2026 |
| First website | 5 Mar 2026 |
| Second website | 19 Mar 2026 |
| Prototypes | 24 Mar 2026 |
| RAMTT monorepo | 5 Apr 2026 |
| RAMTT before the rewrite | 3 May 2026 |
| RAMTT marketing | 22 Jul 2026 |
| Studio site | 1 Aug 2026 |
| Zibaldone | 28 Aug 2026 |
| Dotfiles | 9 Sep 2026 |
| Context bundle | 9 Sep 2026 |
| Portfolio | 29 Sep 2026 |
| Design system | 30 Sep 2026 |
An overview of RAMTT counted the monorepo as it stood that day. Each figure is quoted from its line in the file.
| What was counted | Then | Where it stands |
|---|---|---|
| Lines of TypeScript in the RAMTT monorepo | 582,849 | WORKING-OVERVIEW-2026-05-14.md, line 25 |
| Database tables | 296 | WORKING-OVERVIEW-2026-05-14.md, line 37 |
| API routes | 392 | WORKING-OVERVIEW-2026-05-14.md, line 43 |
| Engines | 91 | WORKING-OVERVIEW-2026-05-14.md, line 49 |
| Wearable platforms connected | 8 | WORKING-OVERVIEW-2026-05-14.md, line 55 |
| UI components | 310 | WORKING-OVERVIEW-2026-05-14.md, line 67 |
site/collect.mjs ran these commands on 11 Oct 2026, through the queue that runs one large job at a time on the Mac. The scripts are in site/year/, and their whole outputs are in site/data/.
Read by site/year/yearstats.py from every branch of the local copies and from the GitHub API for the repositories only there. A commit is counted once, in the first repository that holds it, by its time and subject; bots are left out and times are Copenhagen time.
Read on 11 Oct 2026 in the portfolio folder, from commits in its output.
python3 -I site/year/yearstats.py site/data/year-yearstats.jsonRead on 11 Oct 2026 in the portfolio folder, from active_days in its output.
python3 -I site/year/yearstats.py site/data/year-yearstats.jsonRead on 11 Oct 2026 in the portfolio folder, from active_hours in its output.
python3 -I site/year/yearstats.py site/data/year-yearstats.jsonRead on 11 Oct 2026 in the portfolio folder, from span_days in its output.
python3 -I site/year/yearstats.py site/data/year-yearstats.jsonRead on 11 Oct 2026 in the portfolio folder, from longest_streak_days in its output.
python3 -I site/year/yearstats.py site/data/year-yearstats.jsonRead on 11 Oct 2026 in the portfolio folder, from current_streak_days in its output.
python3 -I site/year/yearstats.py site/data/year-yearstats.jsonRead on 11 Oct 2026 in the portfolio folder, from busiest_day in its output.
python3 -I site/year/yearstats.py site/data/year-yearstats.jsonRead on 11 Oct 2026 in the portfolio folder, from max_in_one_hour in its output.
python3 -I site/year/yearstats.py site/data/year-yearstats.jsonRead on 11 Oct 2026 in the portfolio folder, from night_0_to_6 in its output.
python3 -I site/year/yearstats.py site/data/year-yearstats.jsonRead on 11 Oct 2026 in the portfolio folder, from weekend in its output.
python3 -I site/year/yearstats.py site/data/year-yearstats.jsonRead on 11 Oct 2026 in the portfolio folder, from claude_coauthored in its output.
python3 -I site/year/yearstats.py site/data/year-yearstats.jsonRead on 11 Oct 2026 in the portfolio folder, from first_commit in its output.
python3 -I site/year/yearstats.py site/data/year-yearstats.jsonRead on 11 Oct 2026 in the portfolio folder, from per_repo in its output.
python3 -I site/year/yearstats.py site/data/year-yearstats.jsonIt divides the commits made before six in the morning by all the commits. It is calculated from commits between midnight and six and commits.
It divides the commits that name Claude as a co-author by all the commits. It is calculated from commits written with Claude and commits.
Read by site/year/numstat.py from the diffs of the local copies, without merges. Files in vendor, node_modules, dist and generated folders, lock files, JSON, SVG and source maps are counted apart.
Read on 11 Oct 2026 in the portfolio folder, from total.code_added in its output.
python3 -I site/year/numstat.py site/data/year-numstat.jsonRead on 11 Oct 2026 in the portfolio folder, from markdown_added in its output.
python3 -I site/year/numstat.py site/data/year-numstat.jsonRead on 11 Oct 2026 in the portfolio folder, from total.written_added in its output.
python3 -I site/year/numstat.py site/data/year-numstat.jsonRead on 11 Oct 2026 in the portfolio folder, from total.generated_added in its output.
python3 -I site/year/numstat.py site/data/year-numstat.jsonRead on 11 Oct 2026 in the portfolio folder, from written_files_touched in its output.
python3 -I site/year/numstat.py site/data/year-numstat.jsonRead with the GitHub CLI, the time each was opened and merged.
Read on 11 Oct 2026 in the GitHub API, once for each of RAMTT monorepo, Zibaldone, Design system, Context bundle, Portfolio, Dotfiles, from one line per pull request in its output.
gh pr list -R <owner>/<repository> --state merged --limit 5000 --json number,createdAt,mergedAt --jq '.[] | [.number, .createdAt, .mergedAt] | @tsv'It is the middle of the times from a pull request being opened to its merge. It is calculated from merged pull requests.
It divides the pull requests merged within an hour of being opened by all of them. It is calculated from merged pull requests.
It is the date in Copenhagen time with the most merges, and the date is kept with the number. It is calculated from merged pull requests.
Read by site/year/claude.py from Claude Code’s own daily counts up to their last day, and after it from the transcripts kept on the Mac and in the archive, each session once by its id. It keeps counters only.
Read on 11 Oct 2026 in ~/.claude and ~/Archive/claude-projects-orphans-2026-09-09, from sessions in its output.
python3 -I site/year/claude.py site/data/year-claude.jsonRead on 11 Oct 2026 in ~/.claude and ~/Archive/claude-projects-orphans-2026-09-09, from tool_calls in its output.
python3 -I site/year/claude.py site/data/year-claude.jsonRead on 11 Oct 2026 in ~/.claude and ~/Archive/claude-projects-orphans-2026-09-09, from prompts in its output.
python3 -I site/year/claude.py site/data/year-claude.jsonRead on 11 Oct 2026 in ~/.claude and ~/Archive/claude-projects-orphans-2026-09-09, from parallel_peak_sessions in its output.
python3 -I site/year/claude.py site/data/year-claude.jsonRead on 11 Oct 2026 in ~/.claude and ~/Archive/claude-projects-orphans-2026-09-09, from parallel_peak_agents in its output.
python3 -I site/year/claude.py site/data/year-claude.jsonRead on 11 Oct 2026 in ~/.claude and ~/Archive/claude-projects-orphans-2026-09-09, from files_edited in its output.
python3 -I site/year/claude.py site/data/year-claude.jsonRead on 11 Oct 2026 in ~/.claude and ~/Archive/claude-projects-orphans-2026-09-09, from cutoff in its output.
python3 -I site/year/claude.py site/data/year-claude.jsonIt divides the tool results marked as an error by all the tool results in the transcripts. It is calculated from tool calls Claude made.
Read by site/year/linear.py through Linear’s GraphQL API, every issue and project of the workspace, with the key in the Keychain. It keeps counts only.
Read on 11 Oct 2026 in Linear’s API, workspace ramtt, from issues in its output.
python3 -I site/year/linear.py site/data/year-linear.jsonRead on 11 Oct 2026 in Linear’s API, workspace ramtt, from completed in its output.
python3 -I site/year/linear.py site/data/year-linear.jsonRead on 11 Oct 2026 in Linear’s API, workspace ramtt, from completed_within_a_day in its output.
python3 -I site/year/linear.py site/data/year-linear.jsonRead on 11 Oct 2026 in Linear’s API, workspace ramtt, from median_hours_to_complete in its output.
python3 -I site/year/linear.py site/data/year-linear.jsonRead on 11 Oct 2026 in Linear’s API, workspace ramtt, from decisions in its output.
python3 -I site/year/linear.py site/data/year-linear.jsonRead on 11 Oct 2026 in Linear’s API, workspace ramtt, from projects in its output.
python3 -I site/year/linear.py site/data/year-linear.jsonRead on 11 Oct 2026 in Linear’s API, workspace ramtt, from first_issue in its output.
python3 -I site/year/linear.py site/data/year-linear.jsonThe Workers are asked for their deployments by site/year/workers.sh, and the database is counted in its migrations.
Read on 11 Oct 2026 in the portfolio folder, from one line per Worker that answers in its output.
sh site/year/workers.shRead on 11 Oct 2026 in ~/Projects/RAMTT.
ls ~/Projects/RAMTT/apps/app/supabase/migrations/*.sql | wc -lRead on 11 Oct 2026 in ~/Projects/RAMTT.
cat ~/Projects/RAMTT/apps/app/supabase/migrations/*.sql | grep -ciE '^[[:space:]]*create table'Read on 11 Oct 2026 in ~/Projects/RAMTT.
cat ~/Projects/RAMTT/apps/app/supabase/migrations/*.sql | grep -ciE 'create policy'Read on 11 Oct 2026 in ~/Projects/RAMTT.
cat ~/Projects/RAMTT/apps/app/supabase/migrations/*.sql | wc -lQuoted from the overview of RAMTT named in each command, each figure from its line.
Read on 11 Oct 2026 in ~/ramtt_bank/decisions/project_overview_md, from the file ~/ramtt_bank/decisions/project_overview_md/WORKING-OVERVIEW-2026-05-14.md.
grep -n -x -A2 '582.849' ~/ramtt_bank/decisions/project_overview_md/WORKING-OVERVIEW-2026-05-14.mdRead on 11 Oct 2026 in ~/ramtt_bank/decisions/project_overview_md, from the file ~/ramtt_bank/decisions/project_overview_md/WORKING-OVERVIEW-2026-05-14.md.
grep -n -x -A2 '296' ~/ramtt_bank/decisions/project_overview_md/WORKING-OVERVIEW-2026-05-14.mdRead on 11 Oct 2026 in ~/ramtt_bank/decisions/project_overview_md, from the file ~/ramtt_bank/decisions/project_overview_md/WORKING-OVERVIEW-2026-05-14.md.
grep -n -x -A2 '392' ~/ramtt_bank/decisions/project_overview_md/WORKING-OVERVIEW-2026-05-14.mdRead on 11 Oct 2026 in ~/ramtt_bank/decisions/project_overview_md, from the file ~/ramtt_bank/decisions/project_overview_md/WORKING-OVERVIEW-2026-05-14.md.
grep -n -x -A2 '91' ~/ramtt_bank/decisions/project_overview_md/WORKING-OVERVIEW-2026-05-14.mdRead on 11 Oct 2026 in ~/ramtt_bank/decisions/project_overview_md, from the file ~/ramtt_bank/decisions/project_overview_md/WORKING-OVERVIEW-2026-05-14.md.
grep -n -x -A2 '8' ~/ramtt_bank/decisions/project_overview_md/WORKING-OVERVIEW-2026-05-14.mdRead on 11 Oct 2026 in ~/ramtt_bank/decisions/project_overview_md, from the file ~/ramtt_bank/decisions/project_overview_md/WORKING-OVERVIEW-2026-05-14.md.
grep -n -x -A2 '310' ~/ramtt_bank/decisions/project_overview_md/WORKING-OVERVIEW-2026-05-14.md