Engineering practice · 7 min

What a migration linter taught me about saying no

Guardrails work when they explain the risk and leave room for an informed exception.

migration-linter.md

This essay is sample content. Replace it with your own writing before production deployment.

The first version of the linter was technically correct and socially useless. It blocked dangerous statements, but it could not answer the next question: what should I do instead?

A warning is a small design document

A useful rule names the operation, the risk, the conditions that make the risk more likely, and a safer path. That is more writing than code. It is also the difference between a tool people trust and a tool people learn to silence.

Refusal needs an escape hatch

Some migrations really do need the lock. The linter allowed a local suppression only when it included a reason. That kept the final decision with the team while leaving evidence for the person reading the incident six months later.

The larger lesson was simple: saying no is most useful when it preserves agency and carries enough context to support a better yes.

Go to

↑ ↓ moveEnter openEsc close