Dual-Gate Triage & Policies
Govern the balance between automated velocity and human oversight with two-stage verification gates and deterministic severity arithmetic.
The Two Operational Gates
When a new fingerprint arrives, it is staged without consuming AI tokens or executing external Git calls. Operators can manually approve triage, or allow policy rules to auto-advance into forensic analysis.
After release blame correlation and bounded LLM synthesis produce a structured hypothesis and 3 verification checks, the issue remains in draft. An on-call engineer reviews the diff and approves publication with one click.
Automation Modes
Both Gate 1 and Gate 2 require manual operator action. Best for staging environments, sensitive codebases, or trial evaluation.
Gate 1 auto-approves into blame isolation and LLM explanation. Gate 2 holds for mandatory human review before publishing.
High-confidence P1-Critical incidents auto-publish directly to GitHub Issues. Non-P1 or low-confidence runs remain at Gate 2.
Deterministic P1 / P2 / P3 Arithmetic
Severity is computed entirely by fixed integer arithmetic. The LLM plays zero part in assigning incident priority:
| Severity | Affected Users Threshold | Event Count Threshold |
|---|---|---|
| P1-Critical | ≥ 50 users (configurable) | ≥ 500 events (configurable) |
| P2-High | ≥ 10 users | ≥ 100 events |
| P3-Medium | Below P2 thresholds | Below P2 thresholds |
| 1 | # Dual-Gate Policy Rules Example |
| 2 | { |
| 3 | "default_mode": "semi_autonomous", |
| 4 | "rules": [ |
| 5 | { |
| 6 | "name": "auto-publish-critical-payments", |
| 7 | "condition": { |
| 8 | "environment": ["production"], |
| 9 | "severity": ["P1-Critical"] |
| 10 | }, |
| 11 | "action": { |
| 12 | "gate1": "auto_approve", |
| 13 | "gate2": "auto_publish", |
| 14 | "slack_alert": true |
| 15 | } |
| 16 | }, |
| 17 | { |
| 18 | "name": "require-manual-gate1-staging", |
| 19 | "condition": { |
| 20 | "environment": ["staging", "dev"] |
| 21 | }, |
| 22 | "action": { |
| 23 | "gate1": "require_manual", |
| 24 | "gate2": "require_manual", |
| 25 | "slack_alert": false |
| 26 | } |
| 27 | } |
| 28 | ] |
| 29 | } |