Resource Starvation
Failures caused by competition for a finite shared resource rather than by any defect.
Resource starvation is what happens when concurrent work competes for a finite resource — processor time, memory, disk, file descriptors, a spending limit — and something misses a deadline as a result. The failure looks like a defect and is not.
The diagnostic signature is consistent and worth memorising: a timeout, never an assertion failure, in a file unrelated to whatever changed, that passes in isolation. A test asserting something wrong fails the same way every time; a starved test fails on the timing and passes alone.
The commonest sources in a development environment are several test suites running at once, a development server's file watcher re-running a suite on every save by anyone, instrumented runs that are several times slower than uninstrumented ones, and continuous-integration runners with genuinely small disks. Disk exhaustion is especially deceptive: coverage tooling writing per-file data can consume a runner's free space in minutes, after which every subsequent error is a downstream symptom.
Responses that work: serialise rather than parallelise the contended step, give the starved run the machine, add retry only where the failure is known to be environmental, and — most valuable — record the resource state at failure time so the next occurrence is diagnosable rather than a mystery. See Observability.
See also6
Hand-picked in the note itself — the neighbours worth reading next.
Flaky Test
A test that passes and fails on identical input, and the most corrosive thing a suite can contain.
Testing & Verification12 connections
Instrumentation
Adding measurement to code so its execution can be observed, and the distortions that introduces.
Testing & Verification12 connections
Fan-Out and Fan-In
Splitting work across parallel workers and recombining their results.
Agents & Language Models9 connections
Continuous Integration
Automatically building and testing every change, so integration problems surface immediately.
Version Control & Delivery17 connections
Process
A running program with its own memory, environment, and identity.
Systems & Tooling10 connections
Token Budget
The finite allowance of model usage a task may consume, and the design decisions it forces.
Agents & Language Models11 connections
Related2
Nearby in the graph rather than deliberately chosen. Looser, sometimes surprising.
Linked from7
Notes elsewhere in the wiki that reach for this one.
- DaemonSystems & Tooling
A long-running background process managed by the operating system's service supervisor.
- Fan-Out and Fan-InAgents & Language Models
Splitting work across parallel workers and recombining their results.
- Flaky TestTesting & Verification
A test that passes and fails on identical input, and the most corrosive thing a suite can contain.
- InstrumentationTesting & Verification
Adding measurement to code so its execution can be observed, and the distortions that introduces.
- ObservabilityMethod
How much of a system's internal state can be inferred from what it emits.
- ProcessSystems & Tooling
A running program with its own memory, environment, and identity.
- Token BudgetAgents & Language Models
The finite allowance of model usage a task may consume, and the design decisions it forces.