A Red Test Is Not Enough: What Evidence Should Block a Merge?
Fail closed: missing results must never silently become “safe to merge.” Evidence must explain product vs infrastructure failure.
By Endia Engineering · 359 words
The failure
A check is red. Nobody knows whether:
- the product broke
- the selector drifted
- the preview was not ready
- the runner timed out
So someone clicks merge anyway — or blocks the wrong change for a day.
A binary red/green without evidence is a coin flip wearing a CI badge.
Evidence that should accompany a blocking decision
Minimum useful set:
- Failed assertion — what was expected vs observed
- Screenshot — what the browser showed at failure
- Step / trace — which step died
- Console context — client errors if present
- DOM / locator context — what was targeted
- Merge recommendation — explicit safe to merge vs regression detected
- Infra vs product classification — timeout/launch failure ≠ checkout math bug
Endia’s public security framing states results as safe to merge or regression detected from executed runs with evidence — verification failure must not silently claim success (/security).
No result must not become safe to merge
| Outcome | Merge interpretation | | --- | --- | | All critical steps passed | Candidate for merge (safe to merge) | | Assertion / product failure | Block (regression detected) | | Runner crash / timeout / missing check | Block or keep pending — never invent pass |
Fail closed means: if the browser journey did not actually complete, do not pretend it did. Treat incomplete verification as not mergeable under branch protection.
Why “just fail the job” is insufficient
CI systems can fail for reasons orthogonal to the customer journey. Without artifacts, on-call engineers cannot tell whether to revert product code or fix the harness.
Evidence turns a fight about feelings into a review of the failed step.
Checklist
- [ ] Require linked evidence on blocking checks.
- [ ] Train the team to read screenshot + assertion before arguing about flakes.
- [ ] Treat missing conclusions as not mergeable under branch protection.
- [ ] Separate harness outages from product regressions in incident language.
Related
Sources
- Security page on merge outcomes · checked 2026-09-24
- Preview deployment docs · checked 2026-09-24
Protect a critical flow
Record the journey you cannot afford to break. Run it on every Vercel preview.