Launch Criteria
This page enumerates the exit criteria that must all be green before the Productify Framework drops its "Early Development" warnings and the website "early access" badge and declares itself launched.
Descriptive, not authoritative
This page is the human-readable description of the launch gate. The machine source of truth is the criteria manifest at deployments/ops/launch-gate/criteria.yml, evaluated by the launch-gate CI workflow. The two must not drift: when a criterion changes, change the manifest first and mirror it here. No manual "we feel ready" override flips the warnings — only the gate reporting green does.
How the gate works
deployments/ops/launch-gate/criteria.ymllists each criterion with a resolvable signal (a CI job conclusion, an issue-label count, or a coverage threshold).- The gate checker (
deployments/ops/launch-gate/check.py, wrapped bycheck.sh) resolves every signal, prints a green/red table, writes agate-status.jsonartifact, and exits non-zero if any criterion is unmet. - The
launch-gateCI workflow runs the checker on every pull request that touches a badge/warning file and on a schedule. It is registered as a required status context, so the pull request that removes the warnings cannot merge while the gate is red.
The gate is authoritative from day one and currently reports red — its upstream criteria are not yet all green. That is the intended state: it blocks a premature launch flip until the work below is genuinely done.
The criteria
1. Security review passed (incl. tenant-isolation regression)
The Wave 1 security release must be merged and its tenant-isolation regression tests must be passing on main. This proves the cross-tenant access vulnerabilities are fixed and guarded against silent regression.
- Signal: the
security-regressionCI workflow concludessuccesson the default branch. - Manifest id:
security-tenant-isolation.
2. Zero open P0/P1 bugs
There must be no open P0 or P1 items in the bug-fixes backlog. Launch-blocking severities are tracked by issue label so the count is queryable, not a matter of opinion.
- Signal: an issue search for the
P0/P1labels in theopenstate returns a count of0. - Manifest id:
p0-p1-empty.
3. Coverage baselines met
Test coverage must be at or above the baselines set for each core repository. This prevents launching on a codebase whose coverage silently eroded.
- Signal: the measured line coverage for each tracked repository is at or above its configured minimum.
- Manifest id:
coverage-baselines.
What flipping the gate unlocks
When — and only when — all three criteria report green, a single pull request may:
- remove the
Early Developmentwarning from the deployment overview and the project profile README, and - replace the website "early access" badge with the launched state.
That flip is the final launch step. It is intentionally not part of shipping the gate mechanism itself: the mechanism ships now and reports red; the flip happens later, gated on the signals above.
See Also
- Deployment Overview
- Architecture — monitoring, alerting, and backup that back the operational-readiness half of launch.