One way ratchet
Description
A doctrine that guarantees a desirable property (correctness, completeness, safety, auditability) by mandating monotonic growth: always add, never remove. The doctrine works locally — every addition is justified, every preservation is safe — but the system accumulates unboundedly over time. Without a paired pruning counter-doctrine (always-add + periodic-cull = stable system), the ratchet eventually produces bloat, slowness, or maintenance pressure that exceeds the doctrine’s original value. The concept picks out a specific failure mode of correctness-first design: rules that are individually right but collectively produce the wrong shape because they lack a counter-rule. The diagnostic question — “if we never stopped adding, would the system stay useful?” — distinguishes one-way-ratchets that need counter-doctrines from genuinely-bounded accumulation (where natural turnover or external pressure does the pruning automatically).Triggers
User-initiated: User describes a system that has accumulated cruft, bloat, or unmanageable size despite each individual addition being justified. Vocabulary cues: “ratchet,” “monotonic,” “always add,” “never delete,” “rot,” “bloat,” “cruft.” Agent-initiated: Agent notices a doctrine that produces monotonic growth, asks “what’s the counter-doctrine?”, and finds none. Candidate inference: “this needs a paired pruning rule, not just a sunsetting hope.” Situation-shape signals: Doctrines articulated as “always X” or “never not-X.” Slow CI, slow startup times, large config files, deep dependency trees. “We can’t tell what’s still needed” rhetoric.Exclusions
- Natural turnover — biological systems with cellular replacement, populations with births + deaths, codebases with employee turnover: the prune happens without explicit doctrine.
- External pressure that prunes — markets remove failing products; users remove tools they don’t use; the system has implicit pruning even without internal counter-doctrine.
- Truly bounded resources — when storage or computation is finite and binding, the system can’t ratchet unboundedly; the constraint forces selection.
- Append-only is the right shape — git history, audit logs, scientific publications. The concept would mislead if applied to systems where monotonic growth is the design point, not the failure mode.
Structure
Relationships
- doctrine — the correctness rule is a doctrine; the counter-rule is also a doctrine. The pair is what stabilizes the ratchet.
- graduation-promotion — graduation is a one-way ratchet by default (promotion without demotion produces accumulation); explicit demotion is the counter-doctrine.
- asymmetric-gate — one-way-ratchet is the limiting case of asymmetric-gate.
- hysteresis — ratchets produce hysteresis: state depends on full history, reversal requires explicit work.
- cargo-cult — copying the add-doctrine without the prune-doctrine is a canonical cargo-cult instance (“we test like Google does!” — without Google’s culling discipline).
Examples
Government regulations · public-policy
Government regulations · public-policy
Dependency lists · computer-science
Dependency lists · computer-science
Backup retention · computer-science
Backup retention · computer-science
Configuration accumulation · computer-science
Configuration accumulation · computer-science
Lehman's Laws of Software Evolution (1980) — Law III (Self-Regulation), Law VI (Continuing Growth), Law VII (Declining Quality); grounded in longitudinal studies of large software systems through the 1970s, most famously OS/360 at IBM. · computer-science
Lehman's Laws of Software Evolution (1980) — Law III (Self-Regulation), Law VI (Continuing Growth), Law VII (Declining Quality); grounded in longitudinal studies of large software systems through the 1970s, most famously OS/360 at IBM. · computer-science
Log retention · computer-science
Log retention · computer-science
Memory accretion in code review · computer-science
Memory accretion in code review · computer-science
*Refactoring* (Fowler 1999) — refactoring as the prune-doctrine paired with the build-doctrine. · computer-science
*Refactoring* (Fowler 1999) — refactoring as the prune-doctrine paired with the build-doctrine. · computer-science
Test suites that only grow · computer-science
Test suites that only grow · computer-science