Playbook: verify a change
Run the checks for every component you touched, then report the actual results. A check you couldn’t run is reported as “not run (reason)”, never as passing. Everything below runs on macOS (Apple Silicon) and Linux.
| Paths changed | Run (from repo root) |
|---|---|
controlplane/** |
make lint-cp test-cp build-all (make test-cp-pg too if store/ or migrations/ changed; the SQLite store’s tests always run) |
images/catalog.yaml |
make test-cp (the tests load the real catalog) |
ml/** |
make lint-ml test-ml |
web/** |
make lint-web test-web and cd web && npm run build |
deploy/** |
make deploy-check |
infra/** |
cd infra/ansible && uvx ansible-lint --offline, plus shellcheck infra/scripts/*.sh |
Any *.yaml |
make lint-yaml |
| Docs only | Check that links resolve and that code references (paths, function names) still exist |
Also check these when they apply:
- API shape changed:
web/src/api/types.tsmatchescontrolplane/internal/api/json.go. - New cluster kind:
kube.allowedand the controller ClusterRole were both updated (TestBuildersOnlyEmitAllowedKindspasses). - Lifecycle changed: the diagram in
docs/architecture/control-plane.mdmatchesdomain/state.go. - Region or fallback logic changed: there’s a test that one region never sees another’s workloads, and a test that fallbacks are recorded (
placed_class) and accounted as what ran (rules 9 and 10). - OS-specific code added: it’s behind build tags in a driver package, and
make build-allstill passes (rule 11). - Nothing costs money: no pricing, payment, or paid-tier logic appears (rule 12).
- Workload behavior changed: each new decision shows up in the timeline with a specific reason from a fixed vocabulary (never raw runtime text), any new user input is in the export, and secrets in it are redacted and listed (rule 14). Check with
einsora events <id>andeinsora export <id>againstmake dev. - Isolation-sensitive paths changed (see
CONTRIBUTING.md): run thetenancy-reviewer.
Missing tools
Section titled “Missing tools”make doctor lists what’s missing on this machine.
| Tool | Install |
|---|---|
| Go 1.27+ | https://go.dev/dl or brew install go |
| uv | curl -LsSf https://astral.sh/uv/install.sh | sh or brew install uv |
| Node 22+ | https://nodejs.org or brew install node |
| golangci-lint | brew install golangci-lint |
| helm, kubeconform | brew install helm kubeconform |