Run the release-readiness
gates. Each gate is binary — green passes, red blocks — and the release is ready only when every gate is green (warnings surface but do not block). The commands are the repo's own (from
merge-readiness +
), never stripped-down substitutes.
Run each gate in order; collect a green / red / skip verdict into a one-line-per-gate report.
-
CI gate. gh run list --workflow=ci.yml --branch=main --limit=1 --json conclusion --jq '.[0].conclusion'
— green only on
. If
or
changed since the last tag (
git diff --name-only <last-tag>..HEAD -- <path>
), also require
/
green on main.
Done when every CI workflow that owns a changed path is green.
-
Static gates. ;
cargo clippy --all-targets --all-features -- -D warnings
. Red on any violation.
Done when both exit 0.
-
Test gate. cargo nextest run --all-features
;
cargo nextest run -p jackin --features e2e --profile docker-e2e
. Red on any failure.
Done when both suites pass.
-
Doc-link gate. Walk internal links under
(relative paths +
s); verify each target file exists. Red only on a broken link to a shipped page; warn on external URLs you cannot reach.
Done when every internal link resolves.
-
TODO freshness. Read
and
; flag items referencing completed work or showing no recent activity. Warn — does not block.
Done when every TODO item is either live or flagged stale.
-
Security exceptions. Read
; ask the operator whether each entry is still current. Review (blocks) until confirmed or the file is updated and re-read.
Done when the operator confirms the catalog.
-
Direct-commit audit. git log <last-tag>..HEAD --oneline --no-merges
; for each commit,
gh pr list --state merged --search "<sha>"
. Warn on commits with no PR — does not block.
Done when every non-merge commit since the last tag is matched to a PR or listed as ungrouped.
One line per gate:
green,
red (block),
warn,
skip. A red gate stops the release; a warn surfaces for the operator to accept or fix.