Release Exceptions Policy¶
Status: active Last updated: 2026-05-28
This policy defines how temporary exceptions are allowed in the release readiness gate without weakening governance discipline.
1. Principle¶
Exceptions are temporary, explicit, and auditable.
No silent bypass is allowed.
2. Allowed Scope¶
An exception may only target a specific release gate check_id.
Examples:
trend_slo_statustrend_report_status
Exceptions must not be used to permanently skip critical safety controls.
3. Required Fields¶
Exceptions file JSON format:
{
"exceptions": [
{
"check_id": "trend_slo_status",
"approved_by": "repo-owner",
"reason": "insufficient historical samples during bootstrap",
"expires_at": "2026-06-15T00:00:00Z"
}
]
}
Required fields per exception:
check_idapproved_byreasonexpires_at(UTC ISO-8601)
4. Behavior¶
- Missing/invalid exception entries are reported in gate output.
- Expired exceptions are ignored and reported.
- Applied exceptions are listed in
exceptions_appliedwithin gate report. - Exceptions can downgrade a high-severity failure to medium severity for temporary operation.
5. Repository Location¶
Recommended path:
.github/release_exceptions.json- Template:
.github/release_exceptions.example.json
The file should be created only when needed and removed when no longer required.
6. Governance Rules¶
- Every exception must have explicit approver identity.
- Every exception must include a short remediation reason.
- Every exception must include a near-term expiry date.
- Exception usage must be referenced in release notes.
7. Related¶
docs/PRODUCTION_READINESS.mddocs/PRODUCT_100_EXECUTION_PLAN.mdtooling/generate_release_readiness_gate.py