Why TODOs rot — and how I built a tool to make them expire

Why TODOs rot — and how I built a tool to make them expire

Source: Dev.to

The real problem with TODOs ## I wanted TODOs to behave like real work ## How DebtBomb works ## Why this changes behavior ## It’s language-agnostic and stupidly simple Every codebase I’ve worked on has the same graveyard. It’s not in a folder. It’s in the comments. // TODO: remove later // FIXME: temporary hack // HACK: this is ugly We write them with good intentions. We tell ourselves we’ll come back. We almost never do. Six months later nobody remembers why that code exists, but now it’s part of production — and touching it feels dangerous. That’s not laziness. It’s how software systems work. A TODO is a promise with no deadline. Without a deadline: Teams don’t ignore tech debt because they don’t care — they ignore it because nothing forces it to surface. Bugs don’t get ignored because: So I asked a simple question: What if technical debt worked the same way? That led me to build a small open-source CLI called DebtBomb. // TODO: remove later // @debtbomb(expire=2026-02-10, owner=pricing, reason="temporary promo logic") “This code is allowed to exist — but only until this date.” DebtBomb scans your code in CI. The debt becomes: visible, owned, and impossible to ignore. The magic isn’t in the parsing. It’s in the pressure. Once developers know that: They stop writing vague TODOs and start making real decisions: “Do I actually need this?” “Who owns it?” “When will it be removed?” Debt becomes a contract, not a hope. DebtBomb doesn’t understand your code. It just reads comments. That means it works with: Teams are already using it in CI DebtBomb now integrates with: go install github.com/jobin-404/debtbomb/cmd/debtbomb@latest debtbomb check Repo: github I’d love your feedback This started as a personal itch, but it turns out a lot of people hate how TODOs rot. If you’ve dealt with technical debt in production systems, I’d love to hear: How do you track “temporary” code today? What would make a tool like this actually usable in your tea Templates let you quickly answer FAQs or store snippets for re-use. Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse - It has no owner - It has no priority - It has no cost - So it quietly rots. - CI fails/warns - Tickets get created - People get paged - When the expiry date passes: - The build fails/warns - A Jira ticket is created or updated - Your team is notified in Slack, Discord, or Microsoft Teams - Expired debt blocks deploys - It shows up in Jira - It pings the team - Bash Anything with comments No ASTs. No compilers. Just text. - Microsoft Teams So expired debt doesn’t just fail silently — it shows up where your team already works. You can try it in 30 seconds