Ballast logo Ballast

2026 Velocity vs. Durability Study

We Measured Code Durability Against Commit Velocity in 70 Open-Source Projects, Before and After AI.

A Ballast Study, June 2026

Does shipping faster mean shipping worse?

To find out whether shipping code faster means the work stays landed or gets quietly reworked, we scored 70 well-known open-source repositories on code durability and commit velocity from 2020 to 2026, comparing 2020-2022, before AI coding tools were widely available, to 2023 and after.

Of the 20 repositories that accelerated since 2023, durability held or rose in 11 and dropped in 9. Speeding up did not, on balance, cost durability in this sample.

The remaining 50 repositories did not accelerate. Most are mature, feature-complete projects, where commit activity slows over time regardless of tooling.

A handful of projects saw large durability gains while accelerating, including react (+350), filament (+135), and serde (+119).

The link between acceleration and durability here is correlational, not causal: the data shows commit cadence and durability, not whether a project used AI tools.

The sample: 70 repos in a pre-registered, frozen set, spanning 5 language ecosystems at 14 repos each. Every score comes from git history alone, with no AI involved in the scoring.

Methodology

How we measured it

A 2005 Microsoft paper showed that relative code churn predicts post-release defect density. We use a kindred signal but aim it at a different target. Rather than predict defects, we score each project's durability at monthly checkpoints across its git history. Each checkpoint uses only the history available up to that moment, and we back-test the score against the rework that actually followed. The score is leakage-safe by construction, and what it captures is forward-looking: how well a project's work tends to stay landed instead of being torn up and redone.

The durability score

Durability is read entirely from a repository's git history and expressed on a 300-850 scale. It's a behavioral measure: how much newly written code overwrites code that was itself shipped recently (rework), and how concentrated or sprawling each change's footprint is (scope).

The score is deterministic: no AI is involved, so the same repository always produces the same number.

Velocity crossed with durability

For each repository we measured two things across the 2023 boundary, when AI coding tools started becoming widely available, and crossed them. A velocity inflection is commits per month since 2023 divided by the 2020-2022 baseline: 1.25x or higher counts as accelerated, 0.80x or lower as decelerated. A durability trajectory is the change in score: a rise of more than 15 points counts as up, within 15 points either way counts as held, and a drop of more than 15 points counts as down. Every label describes what we observe in the history, not why it happened.

Three outcomes follow from crossing these two measures. Q1 is success: velocity accelerated and durability held or rose. Q2 is caution: velocity accelerated but durability dropped. Q3 covers everything that didn't accelerate; most of the projects we examined fall here.

Caveats to read before citing this

Acceleration is the observable; AI usage is not. The engine reads git history, not tooling. It sees commit cadence and durability, never whether a contributor used an AI assistant. So "accelerated since 2023" is a measurement, and "AI made it accelerate" is an inference we deliberately don't make. The link is temporal and correlational.

There's also a maturation confound. Mature open-source projects naturally slow their commit cadence over time as a lifecycle effect, not an AI effect. That inflates the flat/decelerated bucket and makes our "accelerated" set conservative.

What it revealed

Faster didn't mean worse

Across the sample, 11 repositories accelerated and stayed durable, 9 accelerated but saw durability drop, and 50 did not accelerate, a bucket where the natural maturation of established projects confounds the reading.

The back-test

Does a low score predict anything?

Every repository in the sample was back-tested against the rework that actually followed. Each monthly checkpoint scores durability using only the history available up to that moment; we then measure the rework rate — the share of changed lines that overwrite recently shipped lines — over the following three months. Within each repository, we compare the months in its bottom durability-score quartile to the months in its top quartile. 68 of 70 repositories had back-testable history (kubernetes and grafana carry no back-test block in the frozen snapshot).

  • 1.6× — a repository's bottom-quartile months carried, on average, that multiple of the forward rework of its top-quartile months (geometric mean 1.64× across the 68 back-tested repos; median 1.40×).
  • 90% — the ratio exceeded 1, meaning the score was predictive, in 61 of 68 repositories.

Read the fine print before citing this: it is a within-repo, month-level comparison — each repository against its own history, never low-scoring repos against high-scoring ones. The outcome is rework, not defects. And like everything in this study, the relationship is correlational, not causal.

The highlights

The standouts

These are the highest and lowest durability changes in the frozen sample, as of June 2026. The findings, including each linked per-repo report, are frozen in time; we keep scoring these projects, and the current live score links track where they are now.

Q1: accelerated and durability held or rose

Q2: accelerated but durability dropped

Notable Q3 projects that improved durability without accelerating

Authors

Ed Grosvenor, artisan.build

We help companies scale AI across their teams by setting up the guardrails needed to control costs, security, and quality.

The full sample

Full Repository List

These are all 70 repos from the frozen list, as of June 2026, with their metrics, quadrant, and a link to their full per-repo report.

Score is the latest durability reading (300-850). Velocity is commits per month since 2023 divided by the 2020-2022 baseline. Durability delta is the change from the last pre-2023 month to the latest reading. Engine version 1.0.0.

JavaScript / TypeScript

Repository Score Velocity Durability Δ Status
facebook/react Current live score → 747 ×1.71 +350 Q1 · Accelerated & durable
vercel/next.js Current live score → 589 ×1.65 +21 Q1 · Accelerated & durable
sveltejs/svelte Current live score → 729 ×2.71 −45 Q2 · Caution
TanStack/query Current live score → 512 ×1.6 −188 Q2 · Caution
colinhacks/zod Current live score → 792 ×0.75 −4 Q3 · Flat / decel
vuejs/core Current live score → 775 ×0.64 −10 Q3 · Flat / decel
prisma/prisma Current live score → 751 ×0.54 +109 Q3 · Flat / decel
excalidraw/excalidraw Current live score → 743 ×0.33 +16 Q3 · Flat / decel
vitejs/vite Current live score → 731 ×0.64 +68 Q3 · Flat / decel
t3-oss/create-t3-app Current live score → 717 ×0.17 −53 Q3 · Flat / decel
withastro/astro Current live score → 602 ×0.87 −16 Q3 · Flat / decel
nestjs/nest Current live score → 500 ×0.87 −303 Q3 · Flat / decel
remix-run/remix Current live score → 432 ×1.14 −180 Q3 · Flat / decel
trpc/trpc Current live score → 400 ×0.55 −160 Q3 · Flat / decel

Python

Repository Score Velocity Durability Δ Status
pydantic/pydantic Current live score → 771 ×2.63 +92 Q1 · Accelerated & durable
langchain-ai/langchain Current live score → 760 ×4.04 +96 Q1 · Accelerated & durable
apache/airflow Current live score → 697 ×1.65 +10 Q1 · Accelerated & durable
psf/requests Current live score → 834 ×1.35 −16 Q2 · Caution
fastapi/fastapi Current live score → 782 ×2.17 −59 Q2 · Caution
encode/httpx Current live score → 850 ×0.44 +69 Q3 · Flat / decel
pallets/flask Current live score → 843 ×0.51 +96 Q3 · Flat / decel
sqlalchemy/sqlalchemy Current live score → 812 ×0.62 +18 Q3 · Flat / decel
django/django Current live score → 806 ×0.82 −6 Q3 · Flat / decel
psf/black Current live score → 800 ×0.77 −28 Q3 · Flat / decel
python-poetry/poetry Current live score → 798 ×0.7 −17 Q3 · Flat / decel
pandas-dev/pandas Current live score → 790 ×0.63 +40 Q3 · Flat / decel
Textualize/rich Current live score → 780 ×0.2 −43 Q3 · Flat / decel
dbt-labs/dbt-core Current live score → 618 ×0.69 −8 Q3 · Flat / decel

PHP

Repository Score Velocity Durability Δ Status
filamentphp/filament Current live score → 774 ×1.44 +135 Q1 · Accelerated & durable
api-platform/core Current live score → 717 ×1.57 +117 Q1 · Accelerated & durable
barryvdh/laravel-debugbar Current live score → 787 ×3.52 −60 Q2 · Caution
nikic/PHP-Parser Current live score → 850 ×0.72 +89 Q3 · Flat / decel
Seldaek/monolog Current live score → 848 ×0.72 +40 Q3 · Flat / decel
thephpleague/flysystem Current live score → 840 ×0.26 +95 Q3 · Flat / decel
spatie/laravel-permission Current live score → 817 ×1.12 −16 Q3 · Flat / decel
statamic/cms Current live score → 798 ×1.07 −35 Q3 · Flat / decel
laravel/framework Current live score → 783 ×0.85 −27 Q3 · Flat / decel
sebastianbergmann/phpunit Current live score → 767 ×1.19 +139 Q3 · Flat / decel
guzzle/guzzle Current live score → 752 ×1.11 −88 Q3 · Flat / decel
composer/composer Current live score → 751 ×0.35 −65 Q3 · Flat / decel
livewire/livewire Current live score → 699 ×1.24 +29 Q3 · Flat / decel
symfony/symfony Current live score → 680 ×0.93 −115 Q3 · Flat / decel

Go

Repository Score Velocity Durability Δ Status
junegunn/fzf Current live score → 821 ×2.21 +66 Q1 · Accelerated & durable
charmbracelet/bubbletea Current live score → 781 ×1.37 −30 Q2 · Caution
prometheus/prometheus Current live score → 744 ×1.56 −49 Q2 · Caution
grafana/grafana Current live score → 662 ×1.6 −28 Q2 · Caution
spf13/cobra Current live score → 850 ×0.47 +7 Q3 · Flat / decel
labstack/echo Current live score → 825 ×0.69 +3 Q3 · Flat / decel
gohugoio/hugo Current live score → 776 ×1.12 +8 Q3 · Flat / decel
hashicorp/terraform Current live score → 768 ×0.82 −20 Q3 · Flat / decel
jesseduffield/lazygit Current live score → 758 ×1.16 +339 Q3 · Flat / decel
traefik/traefik Current live score → 722 ×1.1 +218 Q3 · Flat / decel
kubernetes/kubernetes Current live score → 717 ×0.91 +10 Q3 · Flat / decel
gin-gonic/gin Current live score → 690 ×0.98 −157 Q3 · Flat / decel
cli/cli Current live score → 643 ×0.79 −80 Q3 · Flat / decel
ent/ent Current live score → 465 ×0.18 +17 Q3 · Flat / decel

Rust

Repository Score Velocity Durability Δ Status
BurntSushi/ripgrep Current live score → 850 ×1.28 +0 Q1 · Accelerated & durable
serde-rs/serde Current live score → 846 ×1.52 +119 Q1 · Accelerated & durable
pola-rs/polars Current live score → 712 ×1.56 +27 Q1 · Accelerated & durable
bevyengine/bevy Current live score → 669 ×2.02 −103 Q2 · Caution
starship/starship Current live score → 831 ×0.83 +58 Q3 · Flat / decel
sharkdp/bat Current live score → 823 ×0.57 +48 Q3 · Flat / decel
ajeetdsouza/zoxide Current live score → 779 ×0.5 −5 Q3 · Flat / decel
alacritty/alacritty Current live score → 757 ×0.57 −48 Q3 · Flat / decel
tokio-rs/tokio Current live score → 756 ×0.72 −15 Q3 · Flat / decel
tokio-rs/axum Current live score → 749 ×0.46 +31 Q3 · Flat / decel
astral-sh/ruff Current live score → 734 ×1.21 +106 Q3 · Flat / decel
clap-rs/clap Current live score → 729 ×0.47 +6 Q3 · Flat / decel
denoland/deno Current live score → 690 ×1.2 −29 Q3 · Flat / decel
sharkdp/fd Current live score → 685 ×0.59 −98 Q3 · Flat / decel
Changelog

What's changed, and why

  1. · Published the aggregate back-test lift

    The per-repo back-tests were in the frozen dataset from day one, but the study reported no aggregate figure. Now that the number is cited elsewhere (including our own landing page), it belongs here where it can be checked: across the 68 back-tested repos, bottom-durability-quartile months carried a geometric-mean 1.64× (median 1.40×) the forward 3-month rework of top-quartile months, and the ratio exceeded 1 in 61 of 68 repos. Derived from the frozen June-2026 blobs — an addition to the published copy, not a recomputation.

  2. · Initial publication

    First public release of the velocity-vs-durability study — all 70 pre-registered repositories scored on the 300–850 durability scale, with no dropouts. Each repo carries its full June-2026 state: the monthly durability trajectory, coverage & confidence, the predictive back-test, and the scored + diagnostic component breakdown. The dataset is frozen and citable as of this date.

Artisan Build, Inc., 1111B South Governors Avenue STE 28132, Dover, Delaware 19904, USA