Description
The 700-plus-line config.example.yaml is a useful exhaustive reference but is too large to be the first configuration a new operator edits. Add small, independently valid starters for the supported first-run destinations while keeping the exhaustive example authoritative.
Acceptance Criteria
- #1 Small starters exist for Grafana Cloud OTLP, Prometheus-only, and stdout smoke testing
- #2 The Prometheus starter needs only Tailscale authentication and an explicit scrape-exposure choice
- #3 Each starter states which credentials are values versus *_file mounts and points to -preflight for authenticated proof
- #4 Tests load and validate every starter with placeholder secrets, and generated/reference ownership is documented
Definition of Done
- #1 go build ./… && go vet ./… && go test -race ./…
- #2 golangci-lint run
- #3 scripts/regen-generated.sh (only if a generated artifact’s inputs changed)
Implementation Plan
Add the three frozen examples/config starters and a real config.Load validation test with placeholder secrets; document value versus *_file credentials and point each starter to -preflight.
Implementation Notes
All three starters load and validate through config.Load and are committed in bundled pause snapshot 2cf46446d5c6a7a30ea6f7d0c54d61ec9889d522. Resume with exact-head CI and live first-signal proof.
Final evidence: all starter configs loaded through config.Load in tests; integrated GATE passed; exact-head CI run 33047209645 succeeded. The live Prometheus-only configuration produced a scrapeable sentinel without inherited OTLP export.
Final Summary
Grafana OTLP, Prometheus-only, and stdout starters are committed in 2cf46446d5c6a7a30ea6f7d0c54d61ec9889d522; parked pending CI and live proof.
Completion: verified by real config loading, full gate, exact-head CI, and live Prometheus use.