Skip to content
HN On Hacker News ↗

Parsimony: which AI coding agent changes the least code?

▲ 77 points • 19 comments • by lasu • 3w ago • HN discussion ↗

Pangram verdict · v3.3

We believe that this text is a mix of AI and human-written content.

47 %

AI likelihood · overall

Mixed
50% human-written 50% AI-generated
SEGMENTS · HUMAN 1 of 5
SEGMENTS · AI 0 of 5
WORD COUNT 299
PEAK AI % 67% · §4
Analyzed
Oct 13
backend: pangram/v3.3
Segments scanned
5 windows
avg 60 words each
Distribution
50 / 50%
human / AI fraction
Verdict
Mixed
Pangram v3.3

Article text · 299 words · 5 segments analyzed

Human AI-generated
§1 Mixed · 45%

Existing benchmarks measure solve rate and cost, but don't punish excess code, which makes a codebase harder to work with in the long term. Parsimony measures how much code AI models add.

§2 Mixed · 58%

It takes the patches that benchmarks already publish and counts coding units: syntax elements like statements, calls, comparisons, names and literals. Lines aren't counted, so cramming code isn't rewarded, and deleted code is subtracted: net units = added − removed.

§3 Mixed · 34%

Compare models Chart X axis Y axis How to read this Models are ranked by mean net units added on the tasks they solved, lowest first. "Net units added (mean)" also includes failed attempts. Solved comes from SWE-bench Verified; tests aren't rerun. Measured is how many solved attempts could be measured. Leaderboard Task Rank Model Method Each patch is applied to the task's code, and both versions of every changed file are parsed.

§4 Mixed · 67%

Nothing is run. Tests, docs and generated files are left out. Only Python is measured. Pass/fail comes from SWE-bench's published results; tests aren't rerun. Limits Smaller isn't always better: units measure size, not readability or design. Models that write more code also tend to solve more tasks (Spearman 0.33–0.60 on the boards with 26+ models). Every model uses the same agent (mini-SWE-agent), but the agent still affects how much code gets written. Add your own benchmark Have code-size numbers from another benchmark? Download the example file, fill in your results and open it to get the same chart and table. The file stays in your browser.

§5 Human · 10%

Format and how to share it. Open benchmark JSON Example: check for a negative number Both return the same result. def has_negative(values): found = False for value in values: if value < 0: found = True return found def has_negative(values): return any(value < 0 for value in values)