Why I never merge without an audit
Tests, coverage, lint, post-lot 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 lot goes through a post-delivery audit.
- The CI build compiles before merge.
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 lot 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 lot 9 audit exposed duplicated subscription and wallet logic. Fixed before lot 10. Without that audit, the debt would have spread across later lots.
What happens when you skip these steps
Tech debt is not linear. An unvalidated lot does not cost one lot of delay: it makes every later lot more expensive.
The discipline is not pleasant day to day. It is what makes lot 14 remain as clean as lot 1.