Skip to main content

LINT.SUPPRESSION_TOOL_RULE_UNDESCRIBED — a suppression names a tool rule this build does not describe

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

A suppression names an id inside an external tool's namespace — SQUAWK. or PGLS. — that this build's rule map does not describe. It is accepted. This notice says so.

Why it is accepted​

The tools move on their own schedule. A rule your installed binary emits today may have no row in the map that shipped with this package, and refusing the suppression would make you wait for a release here before you could silence a finding you have already decided about.

The only lever that existed before was suppression.allow_undetermined: ['tool_rule_unmapped'], which frees the entire bucket of unmapped tool findings — including the locking rules the tool is installed for. That is not a choice anybody should have to make to silence one line.

Why it is not accepted silently​

The refusal this replaces exists against the most expensive misconfiguration there is: a typo that leaves the rule firing while you believe it is off. A tool namespace is exactly where a typo is likeliest, because the ids are somebody else's and nothing here can check their spelling.

So this is the third state — not valid, not refused, but accepted and named. It fires on every run and deterministically: it needs no run that would have produced the finding, which makes it a stronger safety net than an "this ignore never matched" report could be.

What to do about it​

Nothing, if the id is right. The notice will keep appearing, and that is the honest state: this build cannot confirm the rule exists.

If findings you expected to disappear are still there, check the spelling against the tool, not against this package's documentation — they can differ. Squawk, for one, documents prefer-timestamptz and prints prefer-timestamp-tz.

Which ids this covers​

The prefixes are derived from the adapters the drivers ship, never from a written list. A list would be right the day it was written and blind the day a driver package brought a third tool — and it would fail in the direction that reads as a typo, sending somebody to hunt a misspelling instead of a missing entry.

Not a rule, and it says so​

This is a runner notice: no rule produced it, and none could, because it describes the project's configuration rather than a statement. It carries an id, a message prefix and this documentation URL exactly like a rule's finding, because a reader should not have to know the difference to act on it.

Sources​

  • The tools' own finding-id prefixes, read from Driver::tools().
  • The shipped rule map, which is what "describes" means here.