Skip to main content

LINT.DEBT.NOT_RECORDABLE — a recording run was asked for from a view that cannot support one

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

You ran sqlens:lint --file=… --debt=record. Nothing was written.

Why one file is not enough

The debt account is reconciled by comparing what a run owes against what the ledger records. A single-file run owes only what that one migration leaves behind — and the migration that settles an existing debt is, by construction, a different file. Recording from that view would therefore remove entries for the honest reason that this run could not see them: a data-losing operation justified by a blind spot, which is the worst shape a write can have.

Why this is a finding and not a refusal

--file is the pre-commit path. Refusing the whole run would fail the hook and block the commit over a flag combination, instead of doing the lint the hook was installed for. So the lint runs, the mode falls back to reading, and the fall-back is named: it is undetermined, it appears in the report, and under strict_undetermined it moves the exit code. What it never is, is silent.

What to do

Run it over the full pending set:

php artisan sqlens:lint --debt=record

The fast path keeps working for what it is for — --debt=check over one file compares that migration's debts against the ledger and reports the difference, without writing.