# ADR 0223: The candidate's unit tests are checked by the required CI

> Source: https://github.com/max-listov/stitchkit/blob/master/docs/decisions/0223-release-candidate-tests-are-ci-evidence.md

---

# ADR 0223 — The candidate's unit tests are checked by the required CI

## Decision

For a release commit pushed to a remote release branch, pre-push keeps metadata,
privacy, frozen lockfile, lint and types. All unit tests and the selected lanes are
run by the full exact-SHA push CI; only its green evidence authorises master/tag/npm.
An ordinary push keeps the fast gate, an unverified direct master push keeps the
full gate. A mixed push that includes an ordinary branch does not get the lighter
profile.

The candidate record is called `verify:candidate` and is not evidence for
`verify:fast`: it contains no tests. The full/release fast attestation of ADR 0222
is stored only after the full fast subset. The full diagnostic commands stay
available. This refines the local candidate profile of ADR 0222; its other
decisions remain in force.
(Amended by ADR 0247: the candidate also runs the tests that read release metadata.)

## Reason and limits

Real releases showed about 95s of a repeated local test stage before the same
mandatory CI tests. Moving this stage into the single mandatory CI does not reduce
publication coverage. A different SHA, a PR run and a red/cancelled CI do not
authorise publication. Protected npm OIDC, pins, privacy, native qualification and
the check of published bytes do not change. GitHub/npm queues remain a measurable
external wait; the local saving is not a guarantee of their duration.

Serves P.
