Goodhart's Law
When a measure becomes a target, it stops being a good measure.
Goodhart's law — usually stated as when a measure becomes a target, it ceases to be a good measure — describes what happens when a proxy is optimised directly. The proxy was informative because it correlated with the thing you cared about; pressure on the proxy breaks the correlation.
Software is full of instances. A coverage percentage is a proxy for thoroughness; enforced as a target it produces tests written to touch lines rather than to specify behaviour, and annotations that exclude the hard parts. A green build is a proxy for correctness; treated as the goal it produces checks that cannot fail. A count of shipped items is a proxy for progress; treated as the goal it produces empty items reported as built.
There is a variant worth naming separately, because it bites when instructing any generative system: the number in view becomes the number produced. If a constraint says "at most two hundred characters", output clusters just under two hundred — the ceiling was read as the goal. Stating the intended target in the description and keeping the hard limit far away, as a runaway backstop rather than the visible figure, is the shape that works. See Anchoring Effect and Structured Output.
Goodhart is not an argument against measurement. It is an argument for keeping the measure and the goal distinguishable, and for expecting drift whenever they are collapsed.
See also7
Hand-picked in the note itself — the neighbours worth reading next.
Coverage Gate
A build check that fails when coverage falls below a threshold, and what that pressure produces.
Testing & Verification14 connections
Code Coverage
The proportion of code executed by a test suite — a map of what is untested, not a measure of quality.
Testing & Verification12 connections
Fail Fast
Crash at the point of misconfiguration rather than degrading quietly into a wrong state.
Method12 connections
Anchoring Effect
A stated number pulls subsequent estimates toward it, regardless of relevance.
Method9 connections
Performance Budget
A committed numeric ceiling on a page's cost, enforced automatically.
Web Platform16 connections
Prompt Engineering
Shaping a model's input to make the desired behaviour reliable rather than occasional.
Agents & Language Models18 connections
Core Web Vitals
Google's small set of user-centred performance metrics: loading, interactivity, and visual stability.
Web Platform12 connections
Related2
Nearby in the graph rather than deliberately chosen. Looser, sometimes surprising.
Linked from10
Notes elsewhere in the wiki that reach for this one.
- Anchoring EffectMethod
A stated number pulls subsequent estimates toward it, regardless of relevance.
- BacklinkMeaning & Society
The automatically-derived list of pages linking to the current one.
- Branch CoverageTesting & Verification
The proportion of conditional outcomes exercised — the strictest ordinary coverage metric, and the most informative.
- Code CoverageTesting & Verification
The proportion of code executed by a test suite — a map of what is untested, not a measure of quality.
- Core Web VitalsWeb Platform
Google's small set of user-centred performance metrics: loading, interactivity, and visual stability.
- Coverage GateTesting & Verification
A build check that fails when coverage falls below a threshold, and what that pressure produces.
- Fail FastMethod
Crash at the point of misconfiguration rather than degrading quietly into a wrong state.
- Performance BudgetWeb Platform
A committed numeric ceiling on a page's cost, enforced automatically.
- Prompt EngineeringAgents & Language Models
Shaping a model's input to make the desired behaviour reliable rather than occasional.
- Unreachable CodeTesting & Verification
Code no input can execute — usually a guard against a state the surrounding invariants forbid.