grit · factory report · what’s cooking
v0.5.0 → v0.5.22 · Oct 6 – Oct 27, 2026

Three weeks of the grit factory

v0.5.0 was the last release made by hand. Since Oct 6, cloud agents have planned, written, reviewed, landed and released grit, with one human maintainer setting direction and making the calls the agents escalate. This is what they did and how.

22releases · v0.5.1 – v0.5.22
3,970commits on main
1,199reviewed changes landed
36/36roadmap items done
1.06×git's time, typical command · was 2.0× on Oct 20
8,021Rust tests · from 549

The work, day by day

4,811 agent runs over 22 days: 4,765 hours of agent time and 52.7B tokens. Every change was built by one agent and reviewed by another; release numbers mark the days a release went out.

Agent runs started per day

Building includes roadmap steps, issue fixes, the speed and quality loops and one-off tasks
BuildingReviewingTriage, dogfooding, integration, planning
0200400600Oct 6: 256 runs building 68 · reviewing 152 · other 36Oct 6Oct 7: 214 runs building 58 · reviewing 121 · other 35.1Oct 8: 176 runs building 47 · reviewing 117 · other 12.3Oct 9: 112 runs building 30 · reviewing 73 · other 9.4Oct 9Oct 10: 225 runs building 61 · reviewing 153 · other 11Oct 11: 229 runs building 76 · reviewing 111 · other 42.6Oct 12: 211 runs building 53 · reviewing 133 · other 25.7Oct 12Oct 13: 157 runs building 42 · reviewing 93 · other 22.8Oct 14: 121 runs building 33 · reviewing 69 · other 19.9Oct 15: 108 runs building 20 · reviewing 83 · other 5Oct 15Oct 16: 187 runs building 43 · reviewing 119 · other 25.11Oct 17: 105 runs building 38 · reviewing 58 · other 9.12Oct 18: 150 runs building 58 · reviewing 65 · other 27.13Oct 18Oct 19: 89 runs building 23 · reviewing 50 · other 16.14Oct 20: 290 runs building 77 · reviewing 190 · other 23.15Oct 21: 338 runs building 85 · reviewing 224 · other 29Oct 21Oct 22: 398 runs building 107 · reviewing 251 · other 40.17Oct 23: 345 runs building 90 · reviewing 221 · other 34.18Oct 24: 451 runs building 115 · reviewing 223 · other 113.19Oct 24Oct 25: 361 runs building 91 · reviewing 168 · other 102.20Oct 26: 201 runs building 50 · reviewing 89 · other 62.22Oct 27: 87 runs building 23 · reviewing 27 · other 37Oct 27
Show the numbers
DayBuildingReviewingOtherCommitsAgent hours
Oct 66815236114110
Oct 75812135165162
Oct 84711712202115
Oct 93073912261
Oct 106115311244159
Oct 117611142181184
Oct 125313325202160
Oct 13429322163144
Oct 1433691970146
Oct 1520835123189
Oct 164311925150157
Oct 173858988459
Oct 1858652710771
Oct 192350169579
Oct 207719023178442
Oct 218522429280283
Oct 2210725140312328
Oct 239022134311267
Oct 24115223113324602
Oct 2591168102302458
Oct 26508962183141
Oct 272327375449

Commits landed on main per day

3,970 in total
0100200300400Oct 6: 114 commits commits 114Oct 6Oct 7: 165 commits commits 165Oct 8: 202 commits commits 202Oct 9: 122 commits commits 122Oct 9Oct 10: 244 commits commits 244Oct 11: 181 commits commits 181Oct 12: 202 commits commits 202Oct 12Oct 13: 163 commits commits 163Oct 14: 70 commits commits 70Oct 15: 123 commits commits 123Oct 15Oct 16: 150 commits commits 150Oct 17: 88 commits commits 88Oct 18: 107 commits commits 107Oct 18Oct 19: 95 commits commits 95Oct 20: 178 commits commits 178Oct 21: 280 commits commits 280Oct 21Oct 22: 312 commits commits 312Oct 23: 311 commits commits 311Oct 24: 324 commits commits 324Oct 24Oct 25: 302 commits commits 302Oct 26: 183 commits commits 183Oct 27: 54 commits commits 54Oct 27

Where the agent hours went

Hours of agent run time by kind of work
Review: 2,790 runs, 1,424 agent hours, 19.2B tokensReview1,424 hRoadmap steps: 476 runs, 1,036 agent hours, 12.7B tokensRoadmap steps1,036 hIssue fixes: 442 runs, 934 agent hours, 9.8B tokensIssue fixes934 hOne-off tasks: 276 runs, 932 agent hours, 5.3B tokensOne-off tasks932 hSpeed loop: 46 runs, 134 agent hours, 2.0B tokensSpeed loop134 hQuality loop: 45 runs, 119 agent hours, 1.1B tokensQuality loop119 hIntegration: 123 runs, 82 agent hours, 978.2M tokensIntegration82 hDogfooding: 116 runs, 51 agent hours, 1.0B tokensDogfooding51 hIssue triage: 441 runs, 28 agent hours, 434.4M tokensIssue triage28 hDaily benchmark: 7 runs, 15 agent hours, 75.7M tokensDaily benchmark15 hPlanning: 44 runs, 7 agent hours, 109.8M tokensPlanning7 h

How a change gets to main

Nothing lands unreviewed. A second agent on a different model reviews every branch and sends it back until it’s right; the branch then has to pass the Rust test suite before it’s integrated. The maintainer is asked only when the factory isn’t sure.

1 · Work comes in

  • Roadmap steps462
  • Issue fixes426
  • One-off tasks219
  • Speed loop45
  • Quality loop44

2 · Another agent reviews

2,790

reviews. 28% of changes passed on the first round; the rest went back for fixes, up to 6 rounds.

3 · Integration

  • Automatic928
  • Integration agent232
  • Maintainer211

Automatic when reviewed and tests pass; security fixes always ask.

4 · Main

3,970

commits from 1,199 changes

5 · Daily release

22

releases, each checked on Linux, macOS and Windows with everyday scenarios

Review rounds before a change was accepted

1,205 finished changes
341 changes took 1 review round1 round341355 changes took 2 review rounds2 rounds355417 changes took 3 review rounds3 rounds41765 changes took 4 review rounds4 rounds6522 changes took 5 review rounds5 rounds224 changes took 6 review rounds6 rounds4

What the integration agent decided

Merge decisions it answered for the maintainer
Steer: sent back with specific fixes (149)Steer149Integrate: landed it (71)Integrate71Escalate: left it for the maintainer (14)Escalate14Discard: threw it away to start over (12)Discard12

Models doing the work

Tokens processed, by model
composer-2.5: 1,339 runs, 21.5B tokenscomposer-2.521.5Bgpt-5.6-sol: 2,821 runs, 19.0B tokensgpt-5.6-sol19.0Bclaude-opus-5-5: 297 runs, 7.2B tokensclaude-opus-5-57.2Bcodex: 190 runs, 4.1B tokenscodex4.1Bclaude-sonnet-5-5: 111 runs, 978.3M tokensclaude-sonnet-5-5978.3M

Dogfooding finds the bugs

448 GitHub issues; 418 filed by 114 agent dogfooding sessions using grit like real people would
236 bug issues triagedbug236115 perf issues triagedperf11532 feature issues triagedfeature3232 compat issues triagedcompat3210 security issues triagedsecurity103 docs issues triageddocs32 question issues triagedquestion2

383 closed with a fix the agents wrote; 56 still open.

The roadmap: 36 items, all done

The maintainer wrote the roadmap; a planning agent broke each item into about a dozen steps, the maintainer approved the plan, and build agents worked through the steps. 407 steps across 12 workstreams, finished on Oct 24. Then the factory switched to dogfooding.

Oct 6Oct 13Oct 20FoundationsCI gate for every integration Oct 6 – Oct 7 · 17 steps · 205.4M tokens · shipped in v0.5.1CI gate for every integrationPerformanceBenchmark suite and baseline vs Git Oct 7 – Oct 19 · 11 steps · 202.0M tokens · shipped in v0.5.14Benchmark suite and baseline vs GitFix super-linear hot paths Oct 7 – Oct 8 · 12 steps · 353.5M tokens · shipped in v0.5.2Fix super-linear hot pathsOne hashing abstraction, accelerated SHA-1 Oct 7 – Oct 8 · 10 steps · 140.8M tokens · shipped in v0.5.2One hashing abstraction, accelerated SHA-1Object database read path Oct 7 – Oct 10 · 10 steps · 351.0M tokens · shipped in v0.5.5Object database read pathReachability bitmaps Oct 10 – Oct 16 · 10 steps · 334.7M tokens · shipped in v0.5.10Reachability bitmapsParallelism Oct 10 – Oct 12 · 12 steps · 331.7M tokens · shipped in v0.5.7ParallelismReal-world performance campaign Oct 14 – Oct 19 · 12 steps · 433.2M tokens · shipped in v0.5.14Real-world performance campaignPerformance census: every command, every repo shape, time and memory Oct 20 – Oct 24 · 11 steps · 262.7M tokens · shipped in v0.5.19Performance census: every command, every repo shape, ti…Close the biggest speed and memory gaps from the census Oct 20 – Oct 21 · 11 steps · 296.9M tokens · shipped in v0.5.16Close the biggest speed and memory gaps from the censusDocsDocumentation site foundation Oct 7 – Oct 7 · 10 steps · 92.3M tokens · shipped in v0.5.1Documentation site foundationConsistency audit, docs and the JSON contract Oct 23 – Oct 24 · 12 steps · 299.6M tokens · shipped in v0.5.19Consistency audit, docs and the JSON contractScopePrune unused commands from the library Oct 7 – Oct 7 · 7 steps · 19.5M tokens · shipped in v0.5.1Prune unused commands from the libraryLibraryLibrary hygiene: no globals, no printing, no exits Oct 8 – Oct 9 · 12 steps · 432.2M tokens · shipped in v0.5.4Library hygiene: no globals, no printing, no exitsPluggable object database backend Oct 9 – Oct 10 · 12 steps · 184.1M tokens · shipped in v0.5.5Pluggable object database backendPluggable ref backends Oct 10 – Oct 11 · 10 steps · 305.5M tokens · shipped in v0.5.5Pluggable ref backendsNetwork, bundles and packing in the library Oct 10 – Oct 10 · 12 steps · 390.1M tokens · shipped in v0.5.5Network, bundles and packing in the libraryPublic API design pass Oct 12 – Oct 16 · 12 steps · 330.2M tokens · shipped in v0.5.10Public API design passTestingRust tests: objects, packs, odb Oct 8 – Oct 9 · 12 steps · 294.4M tokens · shipped in v0.5.4Rust tests: objects, packs, odbRust tests: refs, reflog, config, ignore, attributes Oct 9 – Oct 10 · 12 steps · 311.7M tokens · shipped in v0.5.5Rust tests: refs, reflog, config, ignore, attributesRust tests: index, diff, revwalk, revparse, merge Oct 11 – Oct 12 · 12 steps · 471.6M tokens · shipped in v0.5.7Rust tests: index, diff, revwalk, revparse, mergeCLIgrit-cli output contract: --json and --markdown Oct 12 – Oct 13 · 10 steps · 173.3M tokens · shipped in v0.5.8grit-cli output contract: --json and --markdowngrit-cli coverage of core features Oct 13 – Oct 14 · 12 steps · 320.5M tokens · shipped in v0.5.9grit-cli coverage of core featuresgrit history commands Oct 16 – Oct 17 · 11 steps · 382.7M tokens · shipped in v0.5.12grit history commandsCLI foundationsRevision selection and commit filtering (log, revs) Oct 20 – Oct 23 · 12 steps · 646.4M tokens · shipped in v0.5.18Revision selection and commit filtering (log, revs)Shared diff output (diff, show, log -p) Oct 20 – Oct 22 · 12 steps · 722.7M tokens · shipped in v0.5.16Shared diff output (diff, show, log -p)HistoryChange ids on every commit Oct 21 – Oct 21 · 9 steps · 197.6M tokens · shipped in v0.5.16Change ids on every commitRebase and history editing Oct 22 – Oct 23 · 12 steps · 332.0M tokens · shipped in v0.5.18Rebase and history editingInspection extras: blame, reflog, shortlog, resolve Oct 23 – Oct 24 · 12 steps · 326.7M tokens · shipped in v0.5.19Inspection extras: blame, reflog, shortlog, resolveWorktreePrecise commits: status, add, commit Oct 21 – Oct 22 · 12 steps · 515.8M tokens · shipped in v0.5.16Precise commits: status, add, commitHunk selection for agents (replacing `-p`) Oct 22 – Oct 23 · 9 steps · 213.6M tokens · shipped in v0.5.18Hunk selection for agents (replacing `-p`)Workspace extras: stash, worktree, reset, rm, mv, clean, config, init Oct 23 – Oct 24 · 12 steps · 290.7M tokens · shipped in v0.5.19Workspace extras: stash, worktree, reset, rm, mv, clean…BranchingBranches, tags and upstream tracking Oct 21 – Oct 23 · 12 steps · 321.7M tokens · shipped in v0.5.18Branches, tags and upstream trackingConflicts you can work through: merge, pick, revert Oct 22 – Oct 23 · 11 steps · 347.3M tokens · shipped in v0.5.18Conflicts you can work through: merge, pick, revertNetworkRemotes: fetch, pull, push Oct 21 – Oct 22 · 11 steps · 308.2M tokens · shipped in v0.5.16Remotes: fetch, pull, pushClone and remote management Oct 23 – Oct 24 · 11 steps · 280.0M tokens · shipped in v0.5.19Clone and remote management

Speed: from 2× slower than git to even

A daily benchmark times every supported command on several repository shapes against stock git (git version 2.55.0). The speed loop always has one agent attacking the worst gap it shows, and a regression the next morning becomes a fix task.

On Oct 26 the benchmark machine moved from git 2.43.0 to 2.55.0, whose push and fetch are much faster; that explains most of that day’s uptick and the push rows below.

grit’s time relative to git, typical scenario

Geometric mean of grit ÷ git across every scenario; lower is faster
01.0×2.0×3.0×gitOct 20 (grit 0.5.15): 2.0× git's time across 82 scenariosOct 20Oct 21 (grit 0.5.16): 1.89× git's time across 96 scenariosOct 21Oct 22 (grit 0.5.16): 1.26× git's time across 107 scenariosOct 22Oct 23 (grit 0.5.18): 1.30× git's time across 120 scenariosOct 23Oct 24 (grit 0.5.20): 1.14× git's time across 136 scenariosOct 24Oct 25 (grit 0.5.20): 0.97× git's time across 139 scenariosOct 25Oct 26 (grit 0.5.22): 1.06× git's time across 141 scenariosOct 261.1×2.0×

Scenarios where grit beats git

The benchmark grew from 82 to 141 scenarios over the week
Faster than gitWithin 25%Slower
050100150Oct 20: 82 scenarios faster 15 · within 25% 6 · slower 61Oct 20Oct 21: 96 scenarios faster 15 · within 25% 10 · slower 71Oct 21Oct 22: 107 scenarios faster 29 · within 25% 13 · slower 65Oct 22Oct 23: 120 scenarios faster 32 · within 25% 13 · slower 75Oct 23Oct 24: 136 scenarios faster 44 · within 25% 23 · slower 69Oct 24Oct 25: 139 scenarios faster 61 · within 25% 15 · slower 63Oct 25Oct 26: 141 scenarios faster 62 · within 25% 17 · slower 62Oct 26

Everyday commands today

grit ÷ git, Oct 26; hover for the first measurement
← grit fastergrit slower →pull/rebase@synth-10k grit 41 ms · git 105 mspull/rebase0.39×merge/clean@synth-10k grit 134 ms · git 202 ms 2.4× on Oct 20merge/clean0.66×switch/branch@synth-10k grit 31 ms · git 44 ms 1.18× on Oct 20switch/branch0.71×pick/one@synth-10k grit 159 ms · git 222 ms 1.70× on Oct 20pick/one0.72×status/dirty@synth-10k grit 16 ms · git 21 ms 1.71× on Oct 20status/dirty0.78×diff/worktree@synth-10k grit 13 ms · git 15 ms 1.35× on Oct 20diff/worktree0.86×status/clean@synth-10k grit 15 ms · git 17 ms 2.3× on Oct 20status/clean0.90×commit/small@synth-10k grit 35 ms · git 38 ms 1.18× on Oct 20commit/small0.92×add/modified@synth-10k grit 19 ms · git 20 ms 21× on Oct 20add/modified0.96×stash/push-pop@synth-10k grit 392 ms · git 407 ms 1.58× on Oct 20stash/push-pop0.96×blame/file@git-git grit 307 ms · git 312 ms 2.8× on Oct 20blame/file0.98×clone/local@synth-10k grit 1.2 s · git 1.0 s 7.2× on Oct 20clone/local1.22×pull/fast-forward@git-git grit 153 ms · git 121 ms 9.3× on Oct 20pull/fast-forward1.26×log/oneline-100@git-git grit 5.1 ms · git 3.7 ms 1.84× on Oct 20log/oneline-1001.38×fetch/incremental@git-git grit 145 ms · git 104 ms 9.8× on Oct 20fetch/incremental1.39×show/head@git-git grit 3.7 ms · git 2.5 ms 1.31× on Oct 20show/head1.45×branch/list-json@many-refs grit 3.3 ms · git 2.2 msbranch/list-json1.49×branch/list@many-refs grit 3.1 ms · git 1.9 ms 3.5× on Oct 20branch/list1.59×branch/merged@many-refs grit 3.4 ms · git 2.1 msbranch/merged1.60×log/json-100@git-git grit 5.8 ms · git 3.6 mslog/json-1001.61×push/force-with-lease@git-git grit 1.4 s · git 151 mspush/force-with-lease9.5×push/incremental@git-git grit 2.1 s · git 170 mspush/incremental12×

By area

Geometric mean of grit ÷ git per area of git, Oct 26
← grit fastergrit slower →maintenance: 0.74× git's time; faster in 3 of 5 scenariosmaintenance (5)0.74×branching: 0.81× git's time; faster in 14 of 26 scenariosbranching (26)0.81×worktree: 0.98× git's time; faster in 24 of 43 scenariosworktree (43)0.98×history: 1.21× git's time; faster in 7 of 30 scenarioshistory (30)1.21×remote: 1.24× git's time; faster in 13 of 26 scenariosremote (26)1.24×objects: 1.51× git's time; faster in 0 of 6 scenariosobjects (6)1.51×other: 1.53× git's time; faster in 1 of 4 scenariosother (4)1.53×refs: 1.81× git's time; faster in 0 of 1 scenariosrefs (1)1.81×

Against v0.5.0 itself

The same scenarios timed with v0.5.0 and with grit on Oct 23; log scale. The bar marks git.
1.0 ms10 ms100 ms1.0 s10 s100 sfetch/incremental@git-git v0.5.0 76 s → 14 ms (5365× faster) · git 104 msfetch/incrementalpush/incremental@git-git v0.5.0 37 s → 7.6 ms (4956× faster) · git 1.6 spush/incrementalpull/fast-forward@git-git v0.5.0 83 s → 22 ms (3849× faster) · git 118 mspull/fast-forwardshow/head@git-git v0.5.0 138 ms → 4.4 ms (32× faster) · git 2.2 msshow/headclone/local@synth-10k v0.5.0 4.4 s → 698 ms (6.3× faster) · git 950 msclone/localstatus/dirty@synth-10k v0.5.0 62 ms → 11 ms (5.7× faster) · git 11 msstatus/dirtystatus/clean@synth-10k v0.5.0 53 ms → 10 ms (5.2× faster) · git 7.2 msstatus/cleancommit/small@synth-10k v0.5.0 116 ms → 23 ms (4.9× faster) · git 28 mscommit/smalldiff/worktree@synth-10k v0.5.0 49 ms → 10 ms (4.8× faster) · git 8.1 msdiff/worktreemerge/clean@synth-10k v0.5.0 294 ms → 72 ms (4.1× faster) · git 99 msmerge/cleanswitch/branch@synth-10k v0.5.0 60 ms → 19 ms (3.1× faster) · git 23 msswitch/branchadd/modified@synth-10k v0.5.0 49 ms → 17 ms (2.9× faster) · git 18 msadd/modifiedpick/one@synth-10k v0.5.0 151 ms → 62 ms (2.4× faster) · git 111 mspick/one

Biggest single wins from the speed loop

Before → after, measured by the agent that made the change; log scale. The bar marks git.
1.0 ms10 ms100 ms1.0 s10 s30 sgc: 15 s → 1.1 s (14× faster) · task #2986gcclone, 10k files: 6.6 s → 670 ms (9.9× faster) · git 990 ms · task #2700clone, 10k fileslog -- <path>, git.git: 3.2 s → 463 ms (7.0× faster) · git 370 ms · task #4526log -- <path>, git.gitpull, git.git: 1.4 s → 33 ms (41× faster) · git 124 ms · task #2689pull, git.gitremote show, 10k refs: 1.1 s → 22 ms (50× faster) · git 37 ms · task #4041remote show, 10k refsrestore hunks, big file: 46 ms → 16 ms (2.8× faster) · git 8.6 ms · task #3957restore hunks, big filereset --mixed, 10k files: 44 ms → 9.9 ms (4.4× faster) · git 7.9 ms · task #4288reset --mixed, 10k filestag list, 10k refs: 33 ms → 7.6 ms (4.3× faster) · task #3368tag list, 10k refsshow HEAD, git.git: 13 ms → 5.0 ms (2.7× faster) · task #2986show HEAD, git.gitbundle verify: 10 ms → 2.6 ms (3.9× faster) · git 0.8 ms · task #3426bundle verify

Libification: grit became a library

At v0.5.0, most of grit was a 281k-line legacy binary and the library held 31% of the code. The factory deleted the legacy crate on day one, rebuilt every command on grit-lib, and kept the CLI a thin layer that renders library results: today the library is 89% of the code.

Lines of Rust per release

Non-test code; protocol and HTTP server crates are under 2k lines and left out
grit-libgrit-cligrit-legacy
0200k400k600k0.5.0 · Jun 18: 414,072 lines grit-lib 127,718 · grit-cli 5,214 · grit-legacy 281,1400.5.00.5.1 · Oct 7: 141,862 lines grit-lib 135,929 · grit-cli 5,933 · grit-legacy 00.5.10.5.4 · Oct 9: 164,634 lines grit-lib 158,183 · grit-cli 6,451 · grit-legacy 00.5.40.5.7 · Oct 12: 208,713 lines grit-lib 196,844 · grit-cli 11,869 · grit-legacy 00.5.70.5.10 · Oct 16: 230,644 lines grit-lib 213,331 · grit-cli 17,313 · grit-legacy 00.5.100.5.13 · Oct 18: 250,095 lines grit-lib 231,073 · grit-cli 19,022 · grit-legacy 00.5.130.5.16 · Oct 22: 287,868 lines grit-lib 264,290 · grit-cli 23,578 · grit-legacy 00.5.160.5.19 · Oct 24: 348,035 lines grit-lib 308,439 · grit-cli 39,596 · grit-legacy 00.5.190.5.22 · Oct 26: 391,474 lines grit-lib 348,186 · grit-cli 43,288 · grit-legacy 00.5.22

Rust tests

#[test] functions per release: 549 → 8,021, plus git-compatibility checks against system git
02.5k5.0k7.5k10kv0.5.0 (Jun 18): 549 tests0.5.0v0.5.1 (Oct 7): 844 tests0.5.1v0.5.4 (Oct 9): 1,691 tests0.5.4v0.5.7 (Oct 12): 3,116 tests0.5.7v0.5.10 (Oct 16): 3,633 tests0.5.10v0.5.13 (Oct 18): 4,012 tests0.5.13v0.5.16 (Oct 22): 4,933 tests0.5.16v0.5.19 (Oct 24): 6,455 tests0.5.19v0.5.22 (Oct 26): 8,021 tests0.5.228.0k549

The quality loop

One agent at a time rotates through five themes; another model reviews each change. 44 runs so far.
ThemeRunsLines addedLines removedWhat it does
Move logic into grit-lib15+10,061−3,510Moves decisions out of grit-cli into typed library APIs, so the CLI only renders
Deduplicate8+2,575−1,444Finds logic implemented more than once and keeps one copy
Dead code and dependencies7+269−4,295Deletes code nothing calls and dependencies nothing needs
Library API quality7+4,035−1,287Typed errors and clearer signatures for embedders
Simplify7+1,297−2,870Rewrites tangled code into something shorter and clearer

New ideas, not just a git clone

Beyond git compatibility, the roadmap pushed grit toward being a better tool for agents and for programs that embed it.

Change ids on every commit

Every commit carries a stable change id that survives amend, rebase, pick and revert, so a change can be followed through history rewrites.

v0.5.16 · 9 steps

Hunk selection for agents

Stage, commit, restore and stash individual hunks and lines by id, non-interactively. It replaces `-p`, which agents can't drive.

v0.5.18 · 21 steps

--json and --markdown everywhere

A documented output contract on every command: machine-readable JSON for tools and agents, Markdown for humans and LLMs.

v0.5.8 · 22 steps

grit history

Rewrite commits directly (reword, split, drop, move) without starting an interactive rebase, plus a full rebase command.

v0.5.12 · 23 steps

Conflicts you can work through

Merge, pick and revert stop with a typed conflict state that both the CLI and the library can inspect, resolve and continue.

v0.5.18 · 11 steps

Pluggable storage

The object database and ref stores are traits. Embedders can back a repository with their own storage, in memory or remote.

v0.5.5 · 22 steps

Reachability bitmaps and parallelism

Bitmaps for fast counting and packing, and parallel status, checkout, index-pack and pack reads on large repositories.

v0.5.10 · 22 steps

A library you can embed

grit-lib has no globals, never prints and never exits. It exposes a typed Repository API with a checked public-API snapshot.

v0.5.4 · 24 steps

Every release

ReleaseDateCommitsSummary
v0.5.1Oct 736grit v0.5.1 moves all SHA-1/SHA-256 hashing into one grit-lib module, fixes SHA-256 gaps, and adds hot-path benchmarks and a larger docs site.
v0.5.2Oct 8—
v0.5.3Oct 8203grit v0.5.3 mostly speeds up add, status, checkout and pack reads, and moves grit-lib away from globals and printing, with fixes for index, checkout and ref-name bugs.
v0.5.4Oct 9121v0.5.4 fixes commit signing and two clone failures, and mostly reworks the object database into pluggable backends with much broader refs and config tests.
v0.5.5Oct 11316v0.5.5 turns grit-lib into a pluggable library for refs, objects, bitmaps and network transfer, and adds many commands such as restore, stash, blame, revert, clean, rm, mv and bundle.
v0.5.6Oct 1196grit v0.5.6 adds parallelism across pack, index, ODB and status code, speeds up blame and status, and fixes many clone, diff and Windows bugs.
v0.5.7Oct 12220v0.5.7 adds parallel status, checkout and index-pack, clone/fetch/pull progress output, a typed grit-lib Repository API, and fixes for about twenty reported bugs.
v0.5.8Oct 13163grit v0.5.8 adds gc, repack, fsck, notes, reflog and other commands, and fixes many CRLF, ssh, clone, merge and Windows switch problems.
v0.5.9Oct 1475v0.5.9 adds a task-based `grit gc` and faster fsck, clone, commit, status and path-limited log, and fixes several push, diff, status and identity bugs.
v0.5.10Oct 16122v0.5.10 is mainly a performance release speeding up status, diff, switch, blame, add and pack reads on large repos, plus new log, status and add options.
v0.5.11Oct 16145v0.5.11 fixes several merge, diff, log and clone bugs and speeds up merge, blame and log, with large additions to the benchmark suite and history rewrite library.
v0.5.12Oct 1794v0.5.12 adds a new `grit history` command group for rewriting commits and fixes many Windows, macOS, push, fetch, fsck and index bugs.
v0.5.13Oct 1894v0.5.13 mostly fixes bugs in blame, gc, history and switch, redacts URL passwords in auth errors, and adds performance work on diff, commit and switch.
v0.5.14Oct 1992grit v0.5.14 is mostly a performance release for diff, commit, switch, clone, gc and log, plus fixes for fsck, add, rm and credential leaks.
v0.5.15Oct 20183v0.5.15 speeds up status, diff, commit, blame, merge and clone, fixes several path and config bugs, and adds many new grit diff options.
v0.5.16Oct 22290grit v0.5.16 adds change ids on every commit and richer log, show, diff and status output, plus Windows fixes and speedups.
v0.5.17Oct 22297v0.5.17 adds a library-first surface for branches, tags, fetch/pull/push, merge/pick/revert conflicts, history editing and tree-sha256, plus non-UTF-8 path, empty-tree and SHAttered fixes.
v0.5.18Oct 23283grit v0.5.18 adds hunk and line-level staging, commit, restore and stash, a full rebase command, and many merge, pick, branch, tag and remote options, plus performance and bug fixes.
v0.5.19Oct 24159v0.5.19 adds many options to blame, reflog, clone, config, worktree, stash, remote and resolve, and fixes Windows performance and several correctness bugs.
v0.5.20Oct 25217v0.5.20 is mostly a performance and memory release for add, gc/repack, clone, status, blame and revwalks, plus fixes to diff, ignore, merge, fetch and push.
v0.5.21Oct 26304v0.5.21 mostly cuts memory and time in clone, fetch, gc/repack, fsck and merge on large repos, and fixes many concurrency, Windows and Git-compatibility bugs.
v0.5.22Oct 26172v0.5.22 mostly fixes correctness gaps against system Git and cuts memory and time on large blobs, big worktrees and push, fetch and clone.
A snapshot from Tue, 27 Oct 2026 09:38:06 GMT, built from the factory database, grit’s git history and the daily benchmark (on AMD EPYC 7763 64-Core Processor). Refresh it with node --env-file=.env.local scripts/since-0.5.0.mjs. Agent hours are summed run time, so parallel agents count separately. Speed figures are medians from hyperfine runs on the same machine as git.