Panout review packOverviewFinal memoMVPLive outputsJudge roundsAppendicesDecisions

Source: docs/research/2026-09-03-defensibility/appendices/A-local-git-backtest.md

Agent-authored code: merge share and rework band

Measured 2026-09-03 against local git history only. Read-only; no repo was modified.

Method

1. Repos and agent share (last 180 days, default branch)

RepoBranchCommits 180dAgent commitsAgent %Note
/code/work/poe-app-platformmain8966758184.6%multi-author team repo
/code/work/poe2main8403716785.3%multi-author team repo
/code/work/work-brainorigin/main2488160.6%founder-authored
/code/jonesorigin/main20441627.9%founder-authored
/code/poe-browserorigin/main110917816.1%founder-authored
/code/dotfilesorigin/master55415027.1%founder-authored
/code/app-platform-feedbackorigin/main19800.0%founder-authored
/code/personal/dynorouterorigin/main19311057.0%founder-authored
/code/personal/cursor-pluginsorigin/main18210.5%upstream OSS clone, not founder-authored
/code/research/linearorigin/master10943.7%upstream OSS clone, not founder-authored
/code/personal/dynorouter-gatewayorigin/main714563.4%founder-authored
/code/games/car-racerorigin/master542342.6%founder-authored
/code/games/crosswordmaster4636.5%founder-authored
pooled244171544063.2%

Excluding the two upstream OSS clones (cursor-plugins, research/linear): 15435 / 24126 = 64.0% agent-authored.

Pattern breakdown on the two largest repos shows the markers are not double-counting artifacts: in poe2, 6,371 commits carry Generated with [Claude Code], 4,491 carry a Co-authored-by: Claude trailer, and 782 mention Codex (276 of which carry only the Codex marker). Spot-checking the Codex hits, most are 🤖 Generated with [Codex]; a minority are Reviewed by Codex, which is a review marker rather than an authorship marker and mildly inflates the count.

2. Rework within 30 days: agent vs human

RepoSampledMeasuredAgent nAgent reworkedAgent rateHuman nHuman reworkedHuman rate
/code/work/poe-app-platform40039632322268.7%736386.3%
/code/work/poe240039632321566.6%736284.9%
/code/work/work-brain400400100.0%39929473.7%
/code/jones400397502754.0%34715544.7%
/code/poe-browser400400512549.0%3498724.9%
/code/dotfiles400399855463.5%3148928.3%
/code/app-platform-feedback00--n/a--n/a
/code/personal/dynorouter1821821107164.5%724156.9%
/code/personal/cursor-plugins107102100.0%1017170.3%
/code/research/linear102894125.0%856171.8%
/code/personal/dynorouter-gateway6968442454.5%241145.8%
/code/games/car-racer303010880.0%2020100.0%
/code/games/crossword00--n/a--n/a
pooled (all)2859100264764.6%185795451.4%
pooled (excl. OSS clones)266899764664.8%167182249.2%

Restricted to commits whose git author is the founder (gareth@garethpaul.com/gpj@local): agent 209/351 = 59.5% reworked, human 432/1142 = 37.8% reworked.

3. Time from commit to first rework (agent commits)

Populationn reworkedp25 (h)p50 (h)p75 (h)p90 (h)mean (h)
Agent, all repos6470.617.184.6207.269.6
Human, all repos9540.01.221.3168.852.4
Agent, founder-authored only2090.00.069.0339.781.9
Human, founder-authored only4320.01.018.1304.371.9

Of 647 reworked agent commits, 102 (15.8%) were reworked by the very next commit on the branch (lower-bound 0 hours).

4. Reverts

RepoIn-window commits explicitly reverted
/code/work/poe-app-platform16
/code/work/poe216
/code/work/work-brain0
/code/jones1
/code/poe-browser6
/code/dotfiles0
/code/app-platform-feedback0
/code/personal/dynorouter0
/code/personal/cursor-plugins1
/code/research/linear0
/code/personal/dynorouter-gateway0
/code/games/car-racer0
/code/games/crossword0
total40

Explicit reverts are rare (40 across 24417 commits). Rework, not revert, is where correction shows up.

5. Landing path: direct-to-default vs merge commit

RepoAgent commits 180dDirect on first-parent chainArrived via mergeDirect %
/code/work/poe-app-platform758175810100.0%
/code/work/poe2716771670100.0%
/code/work/work-brain16160100.0%
/code/jones162157496.9%
/code/poe-browser1781462782.0%
/code/dotfiles1501292086.0%
/code/app-platform-feedback000n/a
/code/personal/dynorouter110822874.5%
/code/personal/cursor-plugins110100.0%
/code/research/linear440100.0%
/code/personal/dynorouter-gateway45450100.0%
/code/games/car-racer23101343.5%
/code/games/crossword330100.0%
pooled15440153419299.4%

6. Session-store metadata (~/.claude/projects/)

MetricCount
Project directories present6
Session JSONL files total8
Session JSONL files modified in last 30 days8
Distinct project directories with >=1 session in last 30d3
Of those, directories corresponding to a /code repo0
~/.claude/claude_request_* scratch dirs (all within last 30d)50

All eight sessions are dated 2026-08-30 and live under three /tmp/jones-agent-guidance/... project paths. The three project directories that do map to /code repos (-code-jones, -code-work-poe2, -code-quora-work-poe2) contain zero JSONL files. ~/.claude/sessions/ is empty. No prompt contents were read.

Implication for the measurement: the local session store has been pruned or rotated and cannot corroborate the git-trailer signal. The 180-day agent share above rests entirely on commit-message trailers.

Caveats

  1. Git-only baseline. Rework is a proxy for quality, not a measurement of it. A reworked line may have been correct and superseded by a new requirement; an un-reworked line may be dead code nobody has touched.
  2. Reverse-blame is line-identity, not semantics. Reformatting, a rename that -M did not catch, or a whitespace change counts as rework. Conversely, a semantically wrong line left untouched for 30 days counts as survived.
  3. Attribution is by commit trailer. A human who hand-wrote a patch inside an agent session still gets an agent trailer, and vice versa. Reviewed by Codex inflates the Codex bucket. There is no way from git alone to separate 'agent wrote it' from 'agent was in the room'.
  4. Not a single founder. The two largest repos (poe2, poe-app-platform, together 17,369 of 24,417 pooled commits) are multi-author team repos where the founder is a minority committer. Pooled numbers are dominated by that team, not by one person. The founder-only slice is reported separately.
  5. Two repos are upstream OSS clones (cursor-plugins = Anysphere, research/linear = Linear) and reflect other organizations' practices entirely.
  6. Sampling. Repos with more than 400 in-window non-merge commits were capped at the 400 most recent. Six repos hit the cap: poe-app-platform (7,708 eligible), poe2 (7,708), work-brain (2,258), jones (1,851), poe-browser (1,080), dotfiles (482). Their rework rates describe the most recent slice of the 150-day window, not all of it. The other seven repos were measured exhaustively.
  7. Time-to-rework is a lower bound. Reverse blame names the last commit where a line survived; the edit lands at that commit's child. Reported hours therefore understate the true delay, and 0 means 'the next commit'.
  8. Files skipped. Lockfiles, minified bundles, binaries, and .sha256 files were excluded from the added-line set, and only the 20 highest-volume files per commit were checked. Commits touching only skipped files produced no measurement and are absent from the denominators (see 'Measured' vs 'Sampled').
  9. The direct-to-default figure is a weak proxy for review. A squash-merge from a reviewed PR lands as a single linear commit on the first-parent chain and is indistinguishable here from a direct push. Repos using squash-merge will show near-100% 'direct'. This number bounds review from below only in repos that use merge commits.
  10. Two repos produced no rework measurement. app-platform-feedback (198 commits) and games/crossword (46 commits) have zero commits older than 30 days inside the 180-day window: all their recent activity is younger than the 30-day exclusion, so no commit has a complete forward window. They contribute to Section 1 only.