| Detected secret in diff | regex match on policies/secret-patterns.yml | BLOCK deploy. Redact value in output. Recommend git reset --soft HEAD~1 + rotation. Per FR-12, log incident in docs/problem-catalog/<slug>/. |
Missing approval artifact for require_approval op | scan state/approvals/ against approval-policy.yml: require_approval | BLOCK deploy. Surface which artifact is missing and how to author it. |
| Auth gate missing on new endpoint | endpoint added without matching auth middleware import/decorator | BLOCK deploy. Surface specific endpoint + project auth pattern to apply. |
| Customer-visible message added without approval | outbound message API call in diff + no external_customer_visible_message approval artifact | BLOCK deploy. Per FR-12 + approval-policy. |
| Production DB write outside repository pattern | direct connection / raw SQL outside *Repository.ts / *_repository.py | BLOCK deploy. Surface migration path through repository layer. |
| App access widened without approval | --access gains visitor (public), or --access="" (empty = EVERY org role incl. guest/client; NOT visitors, NOT lockdown — broad internal exposure) in diff/deploy notes, no approval artifact | BLOCK deploy. visitor = any unauthenticated user → confirm every reachable surface is public-safe; empty access → confirm org-wide exposure is intended. Require explicit approval either way. |
| Dashboard write scope broader than SDK usage | --permissions grants write on views the runtime only reads (no mutation SDK calls) | Finding (non-blocking): narrow to read per least-privilege; blocker if the grant spans client data views. |
| Gate permissions out of sync with runtime Gate-SDK calls | Gate-SDK calls changed in diff, no --sync-gate-permissions in deploy steps | BLOCK deploy until sync runs — soft mode masks the gap by silently degrading tokens. |
| Implicit service-token fallback | user-facing flow catches Gate 401/403 and retries with service-token auth | BLOCK. Explicit system/admin endpoints + audit logging only (fusebase-gate security rule). |
| Export crosses tenant boundary / leaks PII | export path reads without org/workspace filter, or dumps PII columns not needed downstream | BLOCK deploy. Require scoped query + PII field list in summary + explicit operator go-ahead (approval-policy.yml has no data-export key; auth_or_permission_change applies only if the diff also changes auth/permission code). |