{"generatedAt":"2026-10-23T02:02:10.408Z","edition":{"number":4,"month":"2026-10"},"links":{"page":"https://maint.grit-scm.com/cooking","repository":"https://github.com/gitbutlerapp/grit","poweredBy":"https://cursor.com/blog/typescript-sdk"},"focus":{"roadmapItem":22,"roadmapTotal":36,"title":"Performance census: every command, every repo shape, time and memory","workstream":"Performance","planProgress":82,"planUpdatedAt":"2026-10-23T02:01:55.669Z"},"stats":{"agentsWorking":11,"landedThisWeek":372,"landedTotal":835,"openIssues":6,"issuesTriaged":225,"reviewsDone":2074},"board":{"queued":[{"id":3247,"title":"`grit history fixup --hunks/--lines`","type":"plan step","status":"queued","progress":null,"updatedAt":"2026-10-22T16:03:20.402Z"},{"id":3246,"title":"`grit stash push --hunks/--lines`","type":"plan step","status":"queued","progress":null,"updatedAt":"2026-10-22T16:03:20.382Z"},{"id":3245,"title":"`grit commit --hunks/--lines/--patch-file`","type":"plan step","status":"queued","progress":null,"updatedAt":"2026-10-22T16:03:20.361Z"},{"id":3244,"title":"`grit restore --hunks/--lines` (discard or unstage selected hunks)","type":"plan step","status":"queued","progress":null,"updatedAt":"2026-10-22T16:03:20.342Z"},{"id":3028,"title":"Benchmark matrix: merge, pick, revert and restore scenarios with baselines","type":"plan step","status":"queued","progress":null,"updatedAt":"2026-10-22T02:35:58.428Z"},{"id":3026,"title":"pick/revert --check and -X ours|theirs, --conflict","type":"plan step","status":"queued","progress":null,"updatedAt":"2026-10-22T02:35:58.387Z"},{"id":2361,"title":"Docs site: performance overview page from the daily baseline","type":"plan step","status":"queued","progress":null,"updatedAt":"2026-10-20T00:57:47.029Z"}],"cooking":[{"id":3231,"title":"Roadmap: Hunk selection for agents (replacing `-p`)","type":"plan","status":"running","progress":44,"updatedAt":"2026-10-23T02:01:55.702Z"},{"id":3223,"title":"Roadmap: Rebase and history editing","type":"plan","status":"running","progress":83,"updatedAt":"2026-10-23T02:01:55.691Z"},{"id":2733,"title":"implement tree-sha256 commit/tag headers","type":"plan","status":"running","progress":75,"updatedAt":"2026-10-23T02:01:55.680Z"},{"id":2347,"title":"Roadmap: Performance census: every command, every repo shape, time and memory","type":"plan","status":"running","progress":82,"updatedAt":"2026-10-23T02:01:55.669Z"},{"id":2977,"title":"Roadmap: Conflicts you can work through: merge, pick, revert","type":"plan","status":"running","progress":55,"updatedAt":"2026-10-23T02:01:55.658Z"},{"id":2349,"title":"Roadmap: Revision selection and commit filtering (log, revs)","type":"plan","status":"running","progress":67,"updatedAt":"2026-10-23T02:01:55.646Z"},{"id":2828,"title":"Roadmap: Branches, tags and upstream tracking","type":"plan","status":"running","progress":67,"updatedAt":"2026-10-23T02:01:55.607Z"},{"id":3387,"title":"Speed: commit/paths@synth-10k","type":"perf","status":"running","progress":45,"updatedAt":"2026-10-23T01:57:49.624Z"},{"id":3258,"title":"`grit rebase --exec <cmd>`","type":"plan step","status":"running","progress":100,"updatedAt":"2026-10-23T01:57:22.889Z"},{"id":3389,"title":"Quality #20: Deduplicate","type":"quality","status":"running","progress":null,"updatedAt":"2026-10-23T01:45:12.207Z"},{"id":3354,"title":"Fix #1517: Linux v0.5.17: `grit log -- <path>` / `revs --count -- <path>` on git/git ~5x slower than git (2.5s vs 0.5s)","type":"issue fix","status":"running","progress":85,"updatedAt":"2026-10-23T01:42:56.129Z"},{"id":3253,"title":"`grit rebase --continue / --abort / --skip` and status hints","type":"plan step","status":"running","progress":100,"updatedAt":"2026-10-23T01:41:39.936Z"},{"id":3243,"title":"Line-range selection and `grit add --lines`","type":"plan step","status":"running","progress":100,"updatedAt":"2026-10-23T01:37:39.223Z"},{"id":3378,"title":"Perf regression 2026-10-22: diff/staged@deep-tree, diff/staged@synth-100k","type":"perf","status":"running","progress":60,"updatedAt":"2026-10-23T01:20:32.597Z"},{"id":3330,"title":"Follow-up: Hunk selection by id and `grit add --hunks`","type":"custom","status":"needs_input","progress":85,"updatedAt":"2026-10-22T23:25:35.547Z"},{"id":3024,"title":"grit pick: several commits, ranges, --continue/--abort/--skip, -x, --no-commit, --empty","type":"plan step","status":"needs_input","progress":95,"updatedAt":"2026-10-22T09:36:35.068Z"},{"id":2360,"title":"Full run: stability, time budget and committed daily baseline","type":"plan step","status":"running","progress":100,"updatedAt":"2026-10-21T18:53:34.355Z"},{"id":1721,"title":"Follow-up: Log, merge-base and rev-parse on deep history","type":"custom","status":"needs_input","progress":100,"updatedAt":"2026-10-15T04:34:36.337Z"}],"tasting":[{"id":3385,"title":"Main keeper: make CI on main green (test, coverage, rustdoc)","type":"custom","status":"in_review","progress":null,"updatedAt":"2026-10-23T01:55:37.633Z"},{"id":3367,"title":"Quality #19: Move logic into grit-lib","type":"quality","status":"in_review","progress":null,"updatedAt":"2026-10-23T01:41:47.603Z"},{"id":3368,"title":"Speed: tag/create@many-refs","type":"perf","status":"in_review","progress":null,"updatedAt":"2026-10-23T01:40:48.698Z"},{"id":3022,"title":"merge -X ours|theirs, --conflict=diff3|zdiff3, --allow-unrelated-histories","type":"plan step","status":"awaiting_merge","progress":null,"updatedAt":"2026-10-22T13:25:37.564Z"},{"id":2801,"title":"Benchmark tree-sha256 tags against the reference tool and git","type":"plan step","status":"awaiting_merge","progress":null,"updatedAt":"2026-10-22T12:46:32.661Z"},{"id":2996,"title":"grit-lib: --contains / --merged / --points-at filters","type":"plan step","status":"awaiting_merge","progress":null,"updatedAt":"2026-10-22T12:45:32.977Z"},{"id":3000,"title":"grit branch: list flags and rich JSON","type":"plan step","status":"awaiting_merge","progress":null,"updatedAt":"2026-10-22T10:34:36.722Z"},{"id":3002,"title":"grit tag: list filters, sort and annotation JSON","type":"plan step","status":"awaiting_merge","progress":null,"updatedAt":"2026-10-22T09:57:39.194Z"},{"id":3005,"title":"switch: -C, --discard-changes, --orphan, track flags","type":"plan step","status":"awaiting_merge","progress":null,"updatedAt":"2026-10-22T09:20:33.922Z"},{"id":3020,"title":"merge options: --ff-only, --no-ff, --squash, --no-commit, -m/--message-file","type":"plan step","status":"awaiting_merge","progress":null,"updatedAt":"2026-10-22T08:07:36.845Z"},{"id":2798,"title":"Add tree-sha256 to signed tags","type":"plan step","status":"awaiting_merge","progress":null,"updatedAt":"2026-10-22T07:58:33.445Z"},{"id":2398,"title":"revs: --parents and --cherry-pick/--cherry-mark (P1)","type":"plan step","status":"awaiting_merge","progress":null,"updatedAt":"2026-10-22T03:33:44.131Z"}]},"landed":[{"sha":"78f0c26fe3ade95882a6febf77689ccf09308829","title":"Merge branch 'factory/issue-1518-win-50k-perf-v2'","author":"Scott Chacon","date":"2026-10-23T02:00:10Z","url":"https://github.com/gitbutlerapp/grit/commit/78f0c26fe3ade95882a6febf77689ccf09308829"},{"sha":"6a32c1170459c1c75ddff704e2f631c253be99fa","title":"Merge branch 'factory/blame-mid-churn-perf-3322'","author":"Scott Chacon","date":"2026-10-23T01:52:01Z","url":"https://github.com/gitbutlerapp/grit/commit/6a32c1170459c1c75ddff704e2f631c253be99fa"},{"sha":"5dce71db582a97f5d8f42ca163d97c4937702359","title":"fix: Bugbot follow-ups for #1518 worktree scan","author":"Scott Chacon","date":"2026-10-23T00:46:11Z","url":"https://github.com/gitbutlerapp/grit/commit/5dce71db582a97f5d8f42ca163d97c4937702359"},{"sha":"9a3468867419ba262058491785ff6fec36b23073","title":"test: allow extra tracked paths in 50k add perf fixture","author":"Scott Chacon","date":"2026-10-22T23:54:42Z","url":"https://github.com/gitbutlerapp/grit/commit/9a3468867419ba262058491785ff6fec36b23073"},{"sha":"ef965bd675aa2b17dabd2e5a9233ce2c68c0b12f","title":"Fixes #1518: faster dense 50k worktree scans on Windows","author":"Scott Chacon","date":"2026-10-22T23:51:55Z","url":"https://github.com/gitbutlerapp/grit/commit/ef965bd675aa2b17dabd2e5a9233ce2c68c0b12f"},{"sha":"509ceac6d4e32102babf54d26ecf3bb0153cdd32","title":"fix(add): count line bounds from diff worktree bytes","author":"Scott Chacon","date":"2026-10-23T01:04:07Z","url":"https://github.com/gitbutlerapp/grit/commit/509ceac6d4e32102babf54d26ecf3bb0153cdd32"},{"sha":"2ff17c12adbcc9aa996a0d5b607664bd9669105d","title":"chore: drop stray insta skill snapshot artifact","author":"Scott Chacon","date":"2026-10-23T00:41:39Z","url":"https://github.com/gitbutlerapp/grit/commit/2ff17c12adbcc9aa996a0d5b607664bd9669105d"},{"sha":"ff17bc5faa4ef83e54696bafe00f4e847f2cc860","title":"fix(add): line selection pathspec, bounds, and hunk union","author":"Scott Chacon","date":"2026-10-23T00:41:25Z","url":"https://github.com/gitbutlerapp/grit/commit/ff17bc5faa4ef83e54696bafe00f4e847f2cc860"},{"sha":"f403c512c67bd4496e339696db2bcf965e552e5c","title":"Fix windowed blame diff mis-map for -L ranges","author":"Scott Chacon","date":"2026-10-23T00:57:56Z","url":"https://github.com/gitbutlerapp/grit/commit/f403c512c67bd4496e339696db2bcf965e552e5c"},{"sha":"96369e64ae5fc8f44ea24bd76930ca28ddccd517","title":"feat(add): line-range partial staging with grit add --lines","author":"Scott Chacon","date":"2026-10-22T23:55:17Z","url":"https://github.com/gitbutlerapp/grit/commit/96369e64ae5fc8f44ea24bd76930ca28ddccd517"},{"sha":"e47f1c73d1f53fc1df71811065079c49c1bb294e","title":"Fixes #1505: blame perf on mid-churn files and merge-heavy walks","author":"Scott Chacon","date":"2026-10-23T00:22:44Z","url":"https://github.com/gitbutlerapp/grit/commit/e47f1c73d1f53fc1df71811065079c49c1bb294e"},{"sha":"58a0908037ea350557f619cae5f9f671808dd25e","title":"Merge branch 'factory/ci-green-3374'","author":"Scott Chacon","date":"2026-10-23T01:30:07Z","url":"https://github.com/gitbutlerapp/grit/commit/58a0908037ea350557f619cae5f9f671808dd25e"}],"roadmap":{"done":26,"total":36,"items":[{"number":1,"title":"CI gate for every integration","workstream":"Foundations","status":"done"},{"number":2,"title":"Benchmark suite and baseline vs Git","workstream":"Performance","status":"done"},{"number":3,"title":"Documentation site foundation","workstream":"Docs","status":"done"},{"number":4,"title":"Fix super-linear hot paths","workstream":"Performance","status":"done"},{"number":5,"title":"Prune unused commands from the library","workstream":"Scope","status":"done"},{"number":6,"title":"One hashing abstraction, accelerated SHA-1","workstream":"Performance","status":"done"},{"number":7,"title":"Object database read path","workstream":"Performance","status":"done"},{"number":8,"title":"Library hygiene: no globals, no printing, no exits","workstream":"Library","status":"done"},{"number":9,"title":"Rust tests: objects, packs, odb","workstream":"Testing","status":"done"},{"number":10,"title":"Pluggable object database backend","workstream":"Library","status":"done"},{"number":11,"title":"Rust tests: refs, reflog, config, ignore, attributes","workstream":"Testing","status":"done"},{"number":12,"title":"Pluggable ref backends","workstream":"Library","status":"done"},{"number":13,"title":"Network, bundles and packing in the library","workstream":"Library","status":"done"},{"number":14,"title":"Reachability bitmaps","workstream":"Performance","status":"done"},{"number":15,"title":"Parallelism","workstream":"Performance","status":"done"},{"number":16,"title":"Rust tests: index, diff, revwalk, revparse, merge","workstream":"Testing","status":"done"},{"number":17,"title":"Public API design pass","workstream":"Library","status":"done"},{"number":18,"title":"grit-cli output contract: --json and --markdown","workstream":"CLI","status":"done"},{"number":19,"title":"grit-cli coverage of core features","workstream":"CLI","status":"done"},{"number":20,"title":"Real-world performance campaign","workstream":"Performance","status":"done"},{"number":21,"title":"grit history commands","workstream":"CLI","status":"done"},{"number":22,"title":"Performance census: every command, every repo shape, time and memory","workstream":"Performance","status":"active"},{"number":23,"title":"Close the biggest speed and memory gaps from the census","workstream":"Performance","status":"done"},{"number":24,"title":"Revision selection and commit filtering (log, revs)","workstream":"CLI foundations","status":"active"},{"number":25,"title":"Shared diff output (diff, show, log -p)","workstream":"CLI foundations","status":"done"},{"number":26,"title":"Change ids on every commit","workstream":"History","status":"done"},{"number":27,"title":"Precise commits: status, add, commit","workstream":"Worktree","status":"done"},{"number":28,"title":"Branches, tags and upstream tracking","workstream":"Branching","status":"active"},{"number":29,"title":"Remotes: fetch, pull, push","workstream":"Network","status":"done"},{"number":30,"title":"Conflicts you can work through: merge, pick, revert","workstream":"Branching","status":"active"},{"number":31,"title":"Rebase and history editing","workstream":"History","status":"active"},{"number":32,"title":"Hunk selection for agents (replacing `-p`)","workstream":"Worktree","status":"active"},{"number":33,"title":"Clone and remote management","workstream":"Network","status":"todo"},{"number":34,"title":"Inspection extras: blame, reflog, shortlog, resolve","workstream":"History","status":"todo"},{"number":35,"title":"Workspace extras: stash, worktree, reset, rm, mv, clean, config, init","workstream":"Worktree","status":"todo"},{"number":36,"title":"Consistency audit, docs and the JSON contract","workstream":"Docs","status":"todo"}]},"agents":{"launched":3347,"runs":5499,"agentTimeMs":11450038026,"tokens":32912796789,"outputTokens":99548282,"models":[{"model":"composer-2.5","tasks":1073,"tokens":17972447562,"agentTimeMs":7162804956},{"model":"gpt-5.6-sol","tasks":2136,"tokens":13541077064,"agentTimeMs":3757348316},{"model":"claude-opus-5-5","tasks":76,"tokens":1079041146,"agentTimeMs":435585977},{"model":"claude-sonnet-5-5","tasks":62,"tokens":320231017,"agentTimeMs":94298777}],"activity":{"unit":"hour","buckets":[{"start":"2026-10-16T02:00:00Z","runs":13},{"start":"2026-10-16T03:00:00Z","runs":14},{"start":"2026-10-16T04:00:00Z","runs":7},{"start":"2026-10-16T05:00:00Z","runs":5},{"start":"2026-10-16T06:00:00Z","runs":19},{"start":"2026-10-16T07:00:00Z","runs":17},{"start":"2026-10-16T08:00:00Z","runs":19},{"start":"2026-10-16T09:00:00Z","runs":12},{"start":"2026-10-16T10:00:00Z","runs":11},{"start":"2026-10-16T11:00:00Z","runs":11},{"start":"2026-10-16T12:00:00Z","runs":14},{"start":"2026-10-16T13:00:00Z","runs":22},{"start":"2026-10-16T14:00:00Z","runs":15},{"start":"2026-10-16T15:00:00Z","runs":11},{"start":"2026-10-16T16:00:00Z","runs":10},{"start":"2026-10-16T17:00:00Z","runs":13},{"start":"2026-10-16T18:00:00Z","runs":15},{"start":"2026-10-16T19:00:00Z","runs":8},{"start":"2026-10-16T20:00:00Z","runs":3},{"start":"2026-10-16T21:00:00Z","runs":4},{"start":"2026-10-16T22:00:00Z","runs":27},{"start":"2026-10-16T23:00:00Z","runs":18},{"start":"2026-10-17T00:00:00Z","runs":19},{"start":"2026-10-17T01:00:00Z","runs":20},{"start":"2026-10-17T02:00:00Z","runs":21},{"start":"2026-10-17T03:00:00Z","runs":13},{"start":"2026-10-17T04:00:00Z","runs":18},{"start":"2026-10-17T05:00:00Z","runs":2},{"start":"2026-10-17T06:00:00Z","runs":1},{"start":"2026-10-17T07:00:00Z","runs":0},{"start":"2026-10-17T08:00:00Z","runs":3},{"start":"2026-10-17T09:00:00Z","runs":1},{"start":"2026-10-17T10:00:00Z","runs":1},{"start":"2026-10-17T11:00:00Z","runs":2},{"start":"2026-10-17T12:00:00Z","runs":3},{"start":"2026-10-17T13:00:00Z","runs":4},{"start":"2026-10-17T14:00:00Z","runs":16},{"start":"2026-10-17T15:00:00Z","runs":9},{"start":"2026-10-17T16:00:00Z","runs":9},{"start":"2026-10-17T17:00:00Z","runs":9},{"start":"2026-10-17T18:00:00Z","runs":3},{"start":"2026-10-17T19:00:00Z","runs":0},{"start":"2026-10-17T20:00:00Z","runs":1},{"start":"2026-10-17T21:00:00Z","runs":1},{"start":"2026-10-17T22:00:00Z","runs":2},{"start":"2026-10-17T23:00:00Z","runs":1},{"start":"2026-10-18T00:00:00Z","runs":1},{"start":"2026-10-18T01:00:00Z","runs":2},{"start":"2026-10-18T02:00:00Z","runs":0},{"start":"2026-10-18T03:00:00Z","runs":0},{"start":"2026-10-18T04:00:00Z","runs":1},{"start":"2026-10-18T05:00:00Z","runs":2},{"start":"2026-10-18T06:00:00Z","runs":1},{"start":"2026-10-18T07:00:00Z","runs":0},{"start":"2026-10-18T08:00:00Z","runs":1},{"start":"2026-10-18T09:00:00Z","runs":4},{"start":"2026-10-18T10:00:00Z","runs":1},{"start":"2026-10-18T11:00:00Z","runs":0},{"start":"2026-10-18T12:00:00Z","runs":0},{"start":"2026-10-18T13:00:00Z","runs":3},{"start":"2026-10-18T14:00:00Z","runs":4},{"start":"2026-10-18T15:00:00Z","runs":7},{"start":"2026-10-18T16:00:00Z","runs":2},{"start":"2026-10-18T17:00:00Z","runs":4},{"start":"2026-10-18T18:00:00Z","runs":0},{"start":"2026-10-18T19:00:00Z","runs":27},{"start":"2026-10-18T20:00:00Z","runs":38},{"start":"2026-10-18T21:00:00Z","runs":26},{"start":"2026-10-18T22:00:00Z","runs":37},{"start":"2026-10-18T23:00:00Z","runs":29},{"start":"2026-10-19T00:00:00Z","runs":22},{"start":"2026-10-19T01:00:00Z","runs":6},{"start":"2026-10-19T02:00:00Z","runs":5},{"start":"2026-10-19T03:00:00Z","runs":4},{"start":"2026-10-19T04:00:00Z","runs":2},{"start":"2026-10-19T05:00:00Z","runs":1},{"start":"2026-10-19T06:00:00Z","runs":2},{"start":"2026-10-19T07:00:00Z","runs":2},{"start":"2026-10-19T08:00:00Z","runs":1},{"start":"2026-10-19T09:00:00Z","runs":2},{"start":"2026-10-19T10:00:00Z","runs":1},{"start":"2026-10-19T11:00:00Z","runs":4},{"start":"2026-10-19T12:00:00Z","runs":9},{"start":"2026-10-19T13:00:00Z","runs":3},{"start":"2026-10-19T14:00:00Z","runs":5},{"start":"2026-10-19T15:00:00Z","runs":5},{"start":"2026-10-19T16:00:00Z","runs":3},{"start":"2026-10-19T17:00:00Z","runs":2},{"start":"2026-10-19T18:00:00Z","runs":4},{"start":"2026-10-19T19:00:00Z","runs":2},{"start":"2026-10-19T20:00:00Z","runs":15},{"start":"2026-10-19T21:00:00Z","runs":7},{"start":"2026-10-19T22:00:00Z","runs":23},{"start":"2026-10-19T23:00:00Z","runs":16},{"start":"2026-10-20T00:00:00Z","runs":20},{"start":"2026-10-20T01:00:00Z","runs":21},{"start":"2026-10-20T02:00:00Z","runs":30},{"start":"2026-10-20T03:00:00Z","runs":24},{"start":"2026-10-20T04:00:00Z","runs":20},{"start":"2026-10-20T05:00:00Z","runs":14},{"start":"2026-10-20T06:00:00Z","runs":17},{"start":"2026-10-20T07:00:00Z","runs":15},{"start":"2026-10-20T08:00:00Z","runs":19},{"start":"2026-10-20T09:00:00Z","runs":17},{"start":"2026-10-20T10:00:00Z","runs":20},{"start":"2026-10-20T11:00:00Z","runs":25},{"start":"2026-10-20T12:00:00Z","runs":30},{"start":"2026-10-20T13:00:00Z","runs":23},{"start":"2026-10-20T14:00:00Z","runs":25},{"start":"2026-10-20T15:00:00Z","runs":23},{"start":"2026-10-20T16:00:00Z","runs":14},{"start":"2026-10-20T17:00:00Z","runs":14},{"start":"2026-10-20T18:00:00Z","runs":16},{"start":"2026-10-20T19:00:00Z","runs":12},{"start":"2026-10-20T20:00:00Z","runs":21},{"start":"2026-10-20T21:00:00Z","runs":14},{"start":"2026-10-20T22:00:00Z","runs":11},{"start":"2026-10-20T23:00:00Z","runs":18},{"start":"2026-10-21T00:00:00Z","runs":21},{"start":"2026-10-21T01:00:00Z","runs":8},{"start":"2026-10-21T02:00:00Z","runs":21},{"start":"2026-10-21T03:00:00Z","runs":22},{"start":"2026-10-21T04:00:00Z","runs":16},{"start":"2026-10-21T05:00:00Z","runs":26},{"start":"2026-10-21T06:00:00Z","runs":14},{"start":"2026-10-21T07:00:00Z","runs":14},{"start":"2026-10-21T08:00:00Z","runs":21},{"start":"2026-10-21T09:00:00Z","runs":45},{"start":"2026-10-21T10:00:00Z","runs":37},{"start":"2026-10-21T11:00:00Z","runs":38},{"start":"2026-10-21T12:00:00Z","runs":46},{"start":"2026-10-21T13:00:00Z","runs":41},{"start":"2026-10-21T14:00:00Z","runs":32},{"start":"2026-10-21T15:00:00Z","runs":24},{"start":"2026-10-21T16:00:00Z","runs":26},{"start":"2026-10-21T17:00:00Z","runs":14},{"start":"2026-10-21T18:00:00Z","runs":16},{"start":"2026-10-21T19:00:00Z","runs":10},{"start":"2026-10-21T20:00:00Z","runs":7},{"start":"2026-10-21T21:00:00Z","runs":20},{"start":"2026-10-21T22:00:00Z","runs":21},{"start":"2026-10-21T23:00:00Z","runs":8},{"start":"2026-10-22T00:00:00Z","runs":6},{"start":"2026-10-22T01:00:00Z","runs":30},{"start":"2026-10-22T02:00:00Z","runs":29},{"start":"2026-10-22T03:00:00Z","runs":44},{"start":"2026-10-22T04:00:00Z","runs":46},{"start":"2026-10-22T05:00:00Z","runs":53},{"start":"2026-10-22T06:00:00Z","runs":46},{"start":"2026-10-22T07:00:00Z","runs":41},{"start":"2026-10-22T08:00:00Z","runs":44},{"start":"2026-10-22T09:00:00Z","runs":38},{"start":"2026-10-22T10:00:00Z","runs":30},{"start":"2026-10-22T11:00:00Z","runs":16},{"start":"2026-10-22T12:00:00Z","runs":15},{"start":"2026-10-22T13:00:00Z","runs":8},{"start":"2026-10-22T14:00:00Z","runs":5},{"start":"2026-10-22T15:00:00Z","runs":6},{"start":"2026-10-22T16:00:00Z","runs":13},{"start":"2026-10-22T17:00:00Z","runs":19},{"start":"2026-10-22T18:00:00Z","runs":17},{"start":"2026-10-22T19:00:00Z","runs":25},{"start":"2026-10-22T20:00:00Z","runs":21},{"start":"2026-10-22T21:00:00Z","runs":17},{"start":"2026-10-22T22:00:00Z","runs":19},{"start":"2026-10-22T23:00:00Z","runs":47},{"start":"2026-10-23T00:00:00Z","runs":33},{"start":"2026-10-23T01:00:00Z","runs":17},{"start":"2026-10-23T02:00:00Z","runs":0}]}},"benchmarks":{"scale":"everyday operations","detailsUrl":"/cooking/bench","measuredAt":"2026-10-23T00:44:14Z","baseline":"grit 0.5.0","machine":"Linux · Intel Xeon · 4 cores · git 2.43.0 · grit 4c131b9","unit":"ms (median wall time); ratio = grit / git, lower is better","rows":[{"operation":"status-clean","repo":"synth-10k","gitMs":7.77,"gritMs":11.05,"ratio":1.422,"kind":"slower","baselineMs":55.11,"baselineRatio":7.091},{"operation":"status-dirty","repo":"synth-10k","gitMs":11.79,"gritMs":12.35,"ratio":1.047,"kind":"par","baselineMs":63.73,"baselineRatio":5.406},{"operation":"add","repo":"synth-10k","gitMs":17.64,"gritMs":17.62,"ratio":0.999,"kind":"par","baselineMs":48.6,"baselineRatio":2.756},{"operation":"commit","repo":"synth-10k","gitMs":28.17,"gritMs":25.52,"ratio":0.906,"kind":"faster","baselineMs":119.97,"baselineRatio":4.258},{"operation":"diff","repo":"synth-10k","gitMs":7.73,"gritMs":12,"ratio":1.551,"kind":"slower","baselineMs":46.69,"baselineRatio":6.037},{"operation":"log","repo":"git-git","gitMs":3.29,"gritMs":6.52,"ratio":1.984,"kind":"slower","baselineMs":null,"baselineRatio":null},{"operation":"log","repo":"git-git","gitMs":3.29,"gritMs":5.44,"ratio":1.656,"kind":"slower","baselineMs":null,"baselineRatio":null},{"operation":"show","repo":"git-git","gitMs":2.22,"gritMs":5.43,"ratio":2.444,"kind":"slower","baselineMs":147.75,"baselineRatio":66.496},{"operation":"blame","repo":"git-git","gitMs":280.18,"gritMs":344.64,"ratio":1.23,"kind":"slower","baselineMs":null,"baselineRatio":null},{"operation":"switch","repo":"synth-10k","gitMs":23.35,"gritMs":20.55,"ratio":0.88,"kind":"faster","baselineMs":66.37,"baselineRatio":2.842},{"operation":"branch","repo":"many-refs","gitMs":2.21,"gritMs":3.28,"ratio":1.486,"kind":"slower","baselineMs":2.23,"baselineRatio":1.01},{"operation":"merge","repo":"synth-10k","gitMs":99.02,"gritMs":75.67,"ratio":0.764,"kind":"faster","baselineMs":302.55,"baselineRatio":3.056},{"operation":"pick","repo":"synth-10k","gitMs":112.3,"gritMs":58.11,"ratio":0.517,"kind":"faster","baselineMs":162.13,"baselineRatio":1.444},{"operation":"stash","repo":"synth-10k","gitMs":215.76,"gritMs":368.91,"ratio":1.71,"kind":"slower","baselineMs":null,"baselineRatio":null},{"operation":"fetch","repo":"git-git","gitMs":109.06,"gritMs":14,"ratio":0.128,"kind":"faster","baselineMs":72281.06,"baselineRatio":662.758},{"operation":"pull","repo":"git-git","gitMs":119.25,"gritMs":20.57,"ratio":0.172,"kind":"faster","baselineMs":81363.19,"baselineRatio":682.302},{"operation":"pull","repo":"synth-10k","gitMs":69.77,"gritMs":38.42,"ratio":0.551,"kind":"faster","baselineMs":null,"baselineRatio":null},{"operation":"push","repo":"git-git","gitMs":1608.68,"gritMs":625.88,"ratio":0.389,"kind":"faster","baselineMs":null,"baselineRatio":null},{"operation":"push","repo":"git-git","gitMs":1643.42,"gritMs":8.64,"ratio":0.005,"kind":"faster","baselineMs":38991.9,"baselineRatio":23.726},{"operation":"clone","repo":"synth-10k","gitMs":983.26,"gritMs":676.43,"ratio":0.688,"kind":"faster","baselineMs":4500.53,"baselineRatio":4.577}]}}