Owner: platform team Last reviewed: 2026-05-28
How on-call works for Oshun V1. This is the master rotation doc; per-domain rotation specifics (lilith, iris, etc.) live in their domain runbook directories and reference this doc as the policy source.
Rotation shape#
Platform on-call is a weekly rotation, primary + secondary.
| Tier | Shift length | Handoff | Expected response |
|---|---|---|---|
| Primary | Monday 09:00 → following Monday 09:00 (local) | Monday standup | <15 min for SEV-1, <30 min for SEV-2 |
| Secondary | Same week | Monday standup | Backstop the primary; takes over if primary unreachable >15 min |
Per-domain rotations (lilith, iris, isis, aphrodite, etc.) follow the same shape but only page on alerts routed to their PagerDuty service (see alert-routing.md for the domain map). If a domain rotation goes unanswered for 30 min, the alert escalates to the platform primary.
What on-call does#
- Acknowledge — Within 15 min of page for SEV-1, 30 min for SEV-2. Use the
PagerDuty mobile app or the Slack
/pagerduty ackcommand. - Triage — Open the linked runbook from the alert payload. Most runbooks have a "First 5 minutes" section; do that first.
- Communicate — Post to
#incidentswith the status, the service affected, the runbook being followed, and the expected next update time. Update every 30 min until resolved. - Resolve or escalate — If the runbook doesn't fix it within the SLO breach window, escalate to the secondary; if both are blocked, escalate to the domain lead.
- Postmortem — Every SEV-1 gets a postmortem within 5 business days; SEV-2 gets one only if it exceeded the SLO budget for the period.
Handoff checklist#
Mondays 09:00 local, the primary hands off to the next week's primary. The handoff covers:
- Any open incident (with ticket link).
- Any deploys in flight or scheduled this week.
- Any maintenance windows on the calendar.
- Anything noisy that you snoozed during your shift (so the next person doesn't get caught off-guard).
- Anything you'd want fixed before you'd take this shift again.
The handoff is logged in #oncall-handoff Slack channel for audit.
Escalation ladder#
- Primary — acknowledges and triages.
- Secondary — paged at the 15-min ack-failure boundary.
- Domain lead — paged by the secondary when the runbook doesn't apply or doesn't fix it within the SLO budget.
- Engineering lead — paged at the 60-min mark on SEV-1, or when leadership communication is needed.
- CTO / SVP eng — paged on extended SEV-1 (>2h), customer data exposure, or compliance escalation (PCI / GDPR Article 33-72h breach notification clock).
Tools#
- PagerDuty — the source of truth for who's on-call and the paging contract.
- Slack
#incidents— incident comms (separate channel per active incident if the discussion is heavy). - Slack
#alerts-prod— passive alert feed; the on-call primary should keep eyes on this. - GrafanaCloud — dashboards. The "On-Call" folder has the cross-domain overview dashboards.
- Linear
On-Call— capture follow-up tasks during the shift so they don't fall through the cracks.
When the on-call schedule needs to change#
- Mid-shift swap: post in
#oncall-handoff, update PagerDuty, done. No approval needed. - Permanent rotation change (new joiner, departure): open a PR against the rotation config in this doc + PagerDuty, get the team to ack.
Compensation / time off#
- On-call shifts are compensated per the engineering compensation policy (separate doc, owned by people-ops).
- Each on-call week earns a comp day to be taken within 90 days.
- If you're on PTO or sick during your shift, swap with the secondary or another
willing primary; document the swap in
#oncall-handoff.
New-joiner shadow rotations#
- New joiners shadow two full rotations as the secondary before taking primary.
- The shadow week's primary writes a short retro in
#oncall-handoffcovering what the joiner did well and what to practice next time.