# Release Gate Policy — DAARION.city # # Controls strictness of each gate per deployment profile. # # Modes: # off — gate is fully skipped (no call, no output) # warn — gate always pass=True; findings become recommendations only # strict — gate can fail release (pass=False) when fail_on conditions are met # # Profiles: dev | staging | prod # Set via release_check input `gate_profile` (default: dev). profiles: dev: description: "Development: strict for security gates, warn for governance" gates: pr_review: mode: "strict" config_lint: mode: "strict" dependency_scan: mode: "strict" fail_on_severities: ["CRITICAL", "HIGH"] contract_diff: mode: "strict" threat_model: mode: "strict" smoke: mode: "warn" drift: mode: "warn" slo_watch: mode: "warn" followup_watch: mode: "warn" fail_on: ["P0", "P1"] privacy_watch: mode: "warn" cost_watch: mode: "warn" recurrence_watch: mode: "warn" risk_watch: mode: "warn" risk_delta_watch: mode: "warn" platform_review_required: mode: "warn" staging: description: "Staging: strict security + strict privacy on errors" gates: pr_review: mode: "strict" config_lint: mode: "strict" dependency_scan: mode: "strict" fail_on_severities: ["CRITICAL", "HIGH"] contract_diff: mode: "strict" threat_model: mode: "strict" smoke: mode: "warn" drift: mode: "strict" slo_watch: mode: "strict" # Don't deploy if SLO currently breached followup_watch: mode: "strict" fail_on: ["P0", "P1"] privacy_watch: mode: "strict" fail_on: ["error"] cost_watch: mode: "warn" recurrence_watch: mode: "strict" # Block staging deploy if P0/P1 high recurrence fail_on: severity_in: ["P0", "P1"] high_recurrence: true risk_watch: mode: "strict" # Block staging if score >= fail_at for p0_services risk_delta_watch: mode: "strict" # Block staging for p0_services when delta >= fail_delta platform_review_required: mode: "warn" # warn-first: never blocks staging by default prod: description: "Production: maximum strictness across all gates" gates: pr_review: mode: "strict" config_lint: mode: "strict" dependency_scan: mode: "strict" fail_on_severities: ["CRITICAL", "HIGH", "MEDIUM"] contract_diff: mode: "strict" threat_model: mode: "strict" smoke: mode: "strict" drift: mode: "strict" slo_watch: mode: "warn" # Warn: don't automatically block prod deploys on SLO followup_watch: mode: "warn" fail_on: ["P0"] privacy_watch: mode: "strict" fail_on: ["error"] cost_watch: mode: "warn" recurrence_watch: mode: "warn" # Warn only in prod (accumulate data first) risk_watch: mode: "warn" # Warn only in prod risk_delta_watch: mode: "warn" # Warn only in prod platform_review_required: mode: "warn" # Start conservative in prod # ─── Defaults (used if profile or gate not found) ──────────────────────────── defaults: mode: "warn" # privacy_watch default fail_on (for strict mode): privacy_fail_on: ["error"] # cost_watch is never strict by default cost_always_warn: true