SOX tiers

Policy Tiers · GREEN · YELLOW · RED · BLACK

Every write goes through policy.classify(amount, account) first. Tier determines auto-post vs HITL vs block. Source of truth: agent/policy.py.
🚦Decisions today
1282
8536 this week
🟢Auto-handled
99%
GREEN + YELLOW · no human
🛎️HITL · today
9
RED-tier requests
Blocked · today
2
BLACK-tier · manual only
GREEN
< $5,000
auto-post
Default · no human in loop
today1184
7d7842
YELLOW
$5,000 – $50,000
auto-post + async Slack alert
FYI to ops · still autonomous
today87
7d612
RED
$50,000 – $500,000
HITL approval required
Pause for human · 30-min SLA
today9
7d68
BLACK
≥ $500,000 OR regulated
manual escalation · no auto path
Finance manager only · audited
today2
7d14
Test it
Classify any amount · live call to agent/policy.py via FastAPI
The decision tree
How a write gets classified
amount = abs(write.amount)

if   amount < 5_000:    return GREEN   # auto-post
elif amount < 50_000:   return YELLOW  # auto-post + async Slack alert
elif amount < 500_000:  return RED     # HITL approval required (30-min SLA)
else:                   return BLACK   # manual escalation only

# Regulated accounts (suspense · intercompany) always escalate to BLACK
# regardless of amount
connecting…