Skip to content

Service Level Objectives

Version: 1.0 · Effective: 2026-06-06
Owner: Dev Tools team → Platform/SRE (handoff target: Phase 4 completion)


Overview

These SLOs define the measurable reliability targets for the ai-agents-observability platform. They are tracked for 30-day rolling windows. Error budgets gate Phase 4 ops handoff.


Services

apps/ingest — Telemetry Ingestion

SLI Target Measurement
Availability 99.5% 1 - (5xx_count / total_requests) on /v1/events and /v1/transcripts
Latency (p99) < 200ms POST /v1/events response time at p99
Latency (p50) < 50ms POST /v1/events response time at p50
Event loss 0% Events written to DB within 5 min of receipt (hook retry covers transient failures)

Error budget (30 days): 3.6 hours of < 99.5% availability.
Note: Hook clients buffer locally (SQLite queue) and retry, so brief outages do not cause event loss. Availability SLO is for client experience, not data integrity.


apps/web — Dashboard & API

SLI Target Measurement
Availability 99% 1 - (5xx_count / total_requests) across all authenticated routes
Latency p95 < 1s /me, /me/sessions, /team/[slug] response time
/me p50 < 500ms Specifically the /me overview page (PLAN.md Phase 1 exit criterion)

Error budget (30 days): 7.2 hours of < 99% availability.


apps/github-app — GitHub Webhooks

SLI Target Measurement
Delivery success 99% 1 - (error_count / total_deliveries) in webhook_deliveries table
Processing latency < 5s From webhook receipt to PR row upserted

Note: GitHub retries failed deliveries for 72 hours; a brief outage is recoverable without permanent data loss.


Scheduled Jobs

Job Schedule Target completion Alert threshold
sync-teams Hourly < 60s > 5 min or 2 consecutive failures
sweep-abandoned Every 10 min < 30s > 2 min or 3 consecutive failures
sweep-scratch Hourly < 30s > 5 min or 2 consecutive failures
run-deletions Every 6h < 2 min Any failure (GDPR obligation)
sweep-retention Configurable in job_config (default 02:00 UTC) < 10 min > 30 min or any failure
index-transcripts Configurable in job_config (default 03:30 UTC) < 30 min > 1h
compute-effectiveness Configurable in job_config (default 05:00 UTC) < 15 min > 45 min
compute-trajectory-scores Configurable in job_config (default 05:30 UTC) < 20 min > 1h. Must not overlap compute-effectiveness — it buckets step-efficiency by the shape label that job writes, and a session scored before its shape exists correctly gets no step-efficiency row
compute-subject-scores Configurable in job_config (default 06:00 UTC) < 10 min > 30 min
evaluate-alerts Configurable in job_config (default 01:00 UTC) < 5 min Any failure or missed run
judge-sessions Configurable in job_config, seeded disabled (default 06:30 UTC) < 30 min Any failure while enabled; also alert on spend — this is the only job with a per-run model cost
sync-jira Every 6h when Jira is configured < 5 min > 15 min or 2 consecutive failures. No-ops with a warning when unconfigured
reconcile-cost Daily when BILLING_RECONCILIATION_ENABLED=true < 15 min Any failure when enabled
backfill-redaction Operator-triggered only (POST /admin/jobs/backfill-redaction/run) one trigger drains the whole backlog Any failure
reprice-events Operator-triggered only, report-only — never writes < 5 min Any failure
reprice-events-apply Operator-triggered only, writes historical cost < 30 min Any failure. A run that fails partway leaves history partly repriced — re-run it rather than leaving it, since IS DISTINCT FROM makes the rewrite idempotent. Do not run a report against a table mid-apply: it will describe a half-repriced state

Three more jobs — compute-effectiveness-backfill, rescore-effectiveness, rescore-trajectory — are one-shot and dispatchable only from in-process operator scripts, not over HTTP. They have no schedule and therefore no SLO.


Error Budget Policy

  • > 50% budget consumed in first 15 days: engage Platform/SRE for review.
  • 100% budget exhausted: freeze non-critical deploys; incident post-mortem required within 3 business days.
  • GDPR run-deletions failures: always P1 regardless of budget state — 30-day legal obligation.

Measurement Notes

  • Latency measured from access logs (pino structured logs, parsed by Grafana / your preferred log pipeline).
  • Availability calculated from /health checks + 5xx error rates.
  • SLI data retained for 12 months.
  • SLO review cadence: quarterly, or after any incident that burns > 20% of budget.

Additional SLIs

  • Org dashboard page p95 < 2s
  • Transcript FTS query < 500ms
  • Continuous aggregate refresh lag < 2h