Skip to main content

LINT.DEBT.UNRECORDED — this run owes a debt the ledger has never heard of

  • Category: safety
  • Level: 0
  • Stability: stable
  • Suites: lint

A rule reported an open end — a deliberate two-step whose second step has not happened — and the committed debt ledger holds no entry for it.

This is not a defect in the migration. The patterns that produce open ends are the recommended ones: ADD CONSTRAINT … NOT VALID instead of a locking scan, expand before contract, a concurrent index build instead of a blocking one. Each is right, and each leaves something owed.

Why it is reported rather than recorded​

Writing to a committed file is a decision, and sqlens:lint does not make it for you. Run sqlens:lint --debt=record when you want the account brought up to date; an ordinary lint reports the difference and changes nothing.

Why it is reported at all​

The alternative is noticing an open end and saying nothing until somebody asks. That is the silence the account exists to end: nothing breaks, nothing is slow, no error is raised, and the second half of a safe pattern quietly never happens.

What to do​

  • Finish it — run the second step, and the debt disappears on its own.
  • Record it — --debt=record writes it into the ledger with today's date, so its age starts being counted and the report can tell a week-old debt from a two-year-old one.
  • Carry it deliberately — record it, then edit the entry to state: acknowledged with a reason. It stays visible and stops escalating with age, because somebody decided it should.