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.