Skip to content

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

  1. deployments/ops/launch-gate/criteria.yml lists each criterion with a resolvable signal (a CI job conclusion, an issue-label count, or a coverage threshold).
  2. The gate checker (deployments/ops/launch-gate/check.py, wrapped by check.sh) resolves every signal, prints a green/red table, writes a gate-status.json artifact, and exits non-zero if any criterion is unmet.
  3. The launch-gate CI 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-regression CI workflow concludes success on 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/P1 labels in the open state returns a count of 0.
  • 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 Development warning 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