15. CI and Release Gate
This repo treats green tests as a hard gate for merge and release.
Required checks (main)
Enable branch protection on main and require:
Status (2026-06-24):
mainbranch protection is live via GitHub API — merges require greenfalsify / test-suite.
| Check name | Workflow | Job |
|---|---|---|
falsify / test-suite |
.github/workflows/falsify.yml |
test-suite |
release-gate / test-suite (on tags) |
.github/workflows/release-gate.yml |
test-suite |
Local verification (before push/tag)
python -m pip install -e '.[dev]'
python -m pytest tests -q
Expected: all tests pass (currently 27).
Release procedure
- Ensure
mainis green onfalsify / test-suite - Merge all intended changes
- Create tag only after local + CI tests pass:
git tag v0.1.1
git push origin v0.1.1
release-gateruns onv*tags and must pass- Publish GitHub Release notes after tag gate is green
What failed in v0.1.0 postmortem
- README slogan changed to
Review first. Trust after. tests/test_falsify_core.pystill assertedStop trusting confident AI.- Release was published while core tests were red
Fix: commit 2cb484f aligned test markers with README positioning.
Upgrade trigger
Any of the following must block release:
python -m pytest tests -qreturns non-zero locallyfalsify / test-suitefails onmainrelease-gate / test-suitefails onv*tag push