groups:
  - name: checkout-slo-demo
    interval: 30s
    rules:
      - record: service:request_error_ratio:rate5m
        expr: |
          sum by (service, environment) (rate(demo_request_bad_total[5m]))
          /
          sum by (service, environment) (rate(demo_request_total[5m]))
      - record: service:request_error_ratio:rate1h
        expr: |
          sum by (service, environment) (rate(demo_request_bad_total[1h]))
          /
          sum by (service, environment) (rate(demo_request_total[1h]))
      - record: service:request_error_ratio:rate30m
        expr: |
          sum by (service, environment) (rate(demo_request_bad_total[30m]))
          /
          sum by (service, environment) (rate(demo_request_total[30m]))
      - record: service:request_error_ratio:rate6h
        expr: |
          sum by (service, environment) (rate(demo_request_bad_total[6h]))
          /
          sum by (service, environment) (rate(demo_request_total[6h]))
      - alert: ErrorBudgetBurn
        expr: |
          (
            (service:request_error_ratio:rate1h > 14.4 * 0.001)
            and
            (service:request_error_ratio:rate5m > 14.4 * 0.001)
          )
          or
          (
            (service:request_error_ratio:rate6h > 6 * 0.001)
            and
            (service:request_error_ratio:rate30m > 6 * 0.001)
          )
        labels:
          severity: critical
          team: checkout
        annotations:
          summary: 'Error budget is burning for {{ $labels.service }}'
          description: 'Check customer errors and recent deployments. Confirm affected routes before mitigation.'
