Build Plan / Milestones¶
- Telemetry stub — synthetic pipeline emitting OpenTelemetry to Grafana Cloud; confirm data lands in Mimir/Loki/Tempo. ✅ Built:
backend/app/simulate/otel_pipeline.pyemits real metrics/logs/traces (console exporter by default, OTLP export to Grafana Cloud onceOTEL_EXPORTER_OTLP_ENDPOINTis set — seedeployment.md). Landing the data in Mimir/Loki/Tempo specifically still needs a real Grafana Cloud OTLP endpoint to point it at. - MCP wiring — Sentinel agent calling
query_prometheusend-to-end through ADK; verify OAuth flow. ⚠️ Code-complete (app/adk_agents/mcp.py,agents.py) and verified against the installedgoogle-adkpackage's actual API, but never yet run against a live Grafana Cloud MCP server — this is the top item to close out before submission. - Detective + Producer — root-cause correlation and incident creation working against real data. ⚠️ Same caveat as #2: real against the mock crew's synthetic findings, unverified against a live Grafana stack.
- Responder + approval gate — implement
request_human_approval, wire the FastAPI approve/reject endpoints. ✅ Done and tested, including automated coverage inbackend/tests/test_incidents_api.py. - Control room UI — WebSocket feed, live map, approval modal. ✅ Done, plus a queued-approval variant for concurrent incidents and a
/historyanalytics page. - Wrap agent — postmortem generation. ✅ Done.
- Chaos script — a script that reliably injects a demo-able failure on cue for the recording. ✅
POST /api/simulate/chaosspikes a metric/region in the synthetic pipeline for real (as opposed to/api/simulate/inject-anomaly, which fabricates an already-detected incident for quick UI demos without touching telemetry at all). - Record the 3-minute demo video — real run against the injected failure, not a mockup. 📝 Script ready at
demo-video-script.md; not yet recorded.
Automated tests¶
backend/tests/ (pytest + httpx ASGITransport, run with pytest from backend/) covers the playbook table, per-incident agent-status tracking, and the full incident lifecycle over the REST API against the mock crew: high-risk approval, low-risk auto-execution, rejection, concurrent incidents, and analytics. 16 tests, isolated per-run SQLite database, no live credentials required.