When you encounter debt — a stale comment, a drifted convention, a dead test, a number that collides, a guard nobody wired up — fix it, whether or not it belongs to the thing you came here for. Leaving the shared space tidier than you found it takes precedence over staying inside your task’s boundary or worrying about stepping on someone’s toes.
The principle exists because the default is the opposite, and the default is expensive. Debt survives not because anyone decided to keep it but because every individual encounter with it was, reasonably, someone else’s problem — so the cost is paid over and over in small amounts by people who each correctly concluded it wasn’t theirs to fix. If not me, then who? If not now, then when? is the whole argument, and the answers are usually nobody and never.
Two rules keep this from becoming license to sprawl:
- Repair, don’t redesign. Picking up litter is not remodelling the building. If the tidy-up turns out to be a decision rather than a repair — it needs a decision record, or it changes behaviour someone relies on — stop and file it rather than smuggling it in. A drive-by refactor inside an unrelated change is its own kind of mess.
- Say what you picked up. An unexplained unrelated change in a diff reads as noise, or worse as a mistake. One line in the commit message turns it into a gift.
Applied here — three repairs, none of them the task at hand:
- Porting the migration machinery surfaced a
legacy-spellingsclass thatstatus_sectionsemitted butFAILABLEnever listed, so the enforcement dial rejected a notch it was already reporting on (#81). Nothing to do with migrations; one word, plus the test that should have caught it. - Declaring a third scheme in a downstream project surfaced that every
_template.mdhere still told the reader to copy it by hand, long afterluria newreplaced that workflow (#82) — six files, across the shipped scaffold and this record both. - Filing this principle surfaced that the
DPscheme never tookallocate = "merge"while the decisions did, so two concurrent branches could each claim the same principle number — precisely the collision ADR-049 exists to prevent, and one that had already happened. This document is the first filed under the fix.
The corollary, and the expensive half: a record’s own machinery is both the easiest place to apply this and the easiest place to over-apply it. Every repair above arrived with a test or a measurement attached. None of them redesigned anything, and that restraint is what keeps the licence worth having.