Skip to content
Ichnois
docs/triage-policies

Dual-Gate Triage & Policies

Govern the balance between automated velocity and human oversight with two-stage verification gates and deterministic severity arithmetic.

The Dual-Gate Principle: Gate 1 controls whether raw telemetry warrants git blame and AI token spend. Gate 2 controls whether the synthesized draft issue is allowed to publish to your public or private GitHub repository.

The Two Operational Gates

Gate 1 · Incident Staging (staged_raw)

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.

Gate 2 · Pre-Publication Sign-off (staged_draft)

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

Full Manual (full_manual)Highest Control

Both Gate 1 and Gate 2 require manual operator action. Best for staging environments, sensitive codebases, or trial evaluation.

Semi-Autonomous (semi_autonomous)Default Recommended

Gate 1 auto-approves into blame isolation and LLM explanation. Gate 2 holds for mandatory human review before publishing.

Fully Autonomous (fully_autonomous)Velocity

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:

SeverityAffected Users ThresholdEvent Count Threshold
P1-Critical≥ 50 users (configurable)≥ 500 events (configurable)
P2-High≥ 10 users≥ 100 events
P3-MediumBelow P2 thresholdsBelow P2 thresholds
policies/payments-production.json — Triage Policy Rule
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}