Files
so-many-crows/guardrails.go
T
SmokeyandClaude Opus 5.5 7ae7f670ff So Many Crows v1: Sentry triage, crows, guardrails, trust ledger
Go command-line tool. Sentry classifies each todo item as solo, split,
or murder; text-only crows fly under budget, timeout, and flock caps;
trust is earned per crow and per task type; abusive requesters get a
mild, fading cooldown. Runs offline with a mock brain.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UQnSw4RRWp8uqpj3nsnnXF
2026-10-27 08:16:58 -06:00

39 lines
1.4 KiB
Go

package main
import "time"
// Guardrails exist before capabilities. Version one crows are text-only:
// no web, no files, no APIs. Each future capability gets its own guardrail
// block here before it is switched on.
type Guardrails struct {
MaxCrowsInFlight int // flock cap: concurrent crow calls
MurderSize int // crows that attack one item together
MaxItemsPerList int // todo list size cap
MaxItemChars int // per-item length cap
MaxSubtasks int // split width; subtasks never split again (depth 1)
TokenBudgetPerItem int // cost ceiling per todo item
TokenBudgetPerList int // cost ceiling per list
CrowTimeout time.Duration // a stalled crow is dropped
PromoteAfter int // clean streak needed to earn the next trust level
MaxRequestsPerMin int // requester rate cap
BaseCooldown time.Duration // first offense cooldown; doubles per strike
MaxCooldown time.Duration
}
func DefaultGuardrails() Guardrails {
return Guardrails{
MaxCrowsInFlight: 5,
MurderSize: 3,
MaxItemsPerList: 20,
MaxItemChars: 2000,
MaxSubtasks: 4,
TokenBudgetPerItem: 20_000,
TokenBudgetPerList: 100_000,
CrowTimeout: 60 * time.Second,
PromoteAfter: 10,
MaxRequestsPerMin: 5,
BaseCooldown: 30 * time.Second,
MaxCooldown: time.Hour,
}
}