Skip to content
Blog
MethodApril 2, 2026

Why I never merge without an audit

Tests, coverage, lint, post-batch audit, CI/CD. The full sequence, and what happens when you skip it.

The validation sequence

  • All tests pass, no exceptions.
  • Coverage stays above 80%.
  • Lint is clean.
  • The batch goes through a post-delivery audit.
  • The CI build compiles before merge.
If any one of these steps breaks, the batch does not ship.

Why 80% and not 100%

Below 80%, untested zones accumulate too fast. Above 90%, too much time goes into getters and impossible cases.

The threshold is not moral. It is a production compromise: high enough to stay reliable, low enough not to slow the project artificially.

Lint as the first quality gate

Lint catches dead imports, unused variables, invalid React patterns and impure render calls. It is the fastest quality layer to enforce.

If lint does not pass, I do not even consider the batch ready to discuss.

Post-lot audit is the highest-leverage step

The audit happens with some distance, often the next day. I look for what was 'good enough to ship' but not clean enough to support the next block.

On Grimoire, the batch 9 audit exposed duplicated subscription and wallet logic. Fixed before batch 10. Without that audit, the debt would have spread across later batches.

What happens when you skip these steps

Tech debt is not linear. An unvalidated batch does not cost one batch of delay: it makes every later batch more expensive.

The discipline is not pleasant day to day. It is what makes batch 14 remain as clean as batch 1.