Contributing

Architecture

How all the pieces fit together.

Layer 1 — Engineer tools

cmd/burnless, cmd/agent, cmd/controller

CLI, 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/toil

All business logic. Pure Go packages with no knowledge of each other. Each has one job.

Layer 3 — External integrations

Prometheus, Grafana, Slack, PagerDuty, Kubernetes

All 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.