Request-Based and Window-Based SLI
Two ways of computing the same reliability target — counting good events, or counting good time windows — which produce materially different numbers.
Request-based: good events divided by valid events over the period. Every request counts equally, so a burst of failures affecting a small share of traffic barely moves the number.
Window-based: divide the period into fixed windows (say one minute), mark each window good or bad by a within-window criterion, then compute the proportion of good windows.
They disagree, and the disagreement is the point. A ten-minute total outage at 03:00 for a service whose traffic is concentrated during the day may cost almost nothing request-based, and 10 bad windows window-based. Conversely a 0.5% error rate sustained for a month may fail a request-based SLO while every window still passes its threshold.
Choose by what the users experience. For a high-volume API where each request is an independent user action, request-based is right. For a system where any downtime is disruptive regardless of traffic — a batch pipeline, an internal platform, a service with periodic usage — window-based reflects reality better.
Stating which one an SLO uses is part of defining it. An unqualified "99.9%" is ambiguous, and the two readings can differ by an order of magnitude in permitted impact.