Contributing
Architecture
How all the pieces fit together.
Layer 1 — Engineer tools
cmd/burnless, cmd/agent, cmd/controllerCLI, agent daemon, and Kubernetes operator. Thin wrappers — all logic lives in internal/.
Layer 2 — Core platform
internal/slo, internal/config, internal/runbook, internal/metrics, internal/notify, internal/toilAll business logic. Pure Go packages with no knowledge of each other. Each has one job.
Layer 3 — External integrations
Prometheus, Grafana, Slack, PagerDuty, KubernetesAll behind Go interfaces. New integrations = new file, no core changes needed.
Key design decisions
sre.yaml is the single source of truth
All config in Git. No database for config. Every change is a PR.
internal/ packages have no knowledge of each other
internal/slo knows nothing about internal/metrics. They communicate through interfaces.
Interfaces for everything external
Prometheus, Grafana, Slack are behind Go interfaces. Swap backends without touching core logic.
CLI is thin, internal/ is thick
cmd/burnless/main.go is 12 lines. All logic in internal/. Same logic powers CLI, agent, and SaaS API.
For the full architecture document, see the docs/ folder on GitHub.