history Last updated

Everything a handover needs is already somewhere — in dashboards, tickets, incident channels. The point of writing it down is that the incoming engineer should not have to reconstruct it from six places at the start of a shift, and definitely not at 02:00.

When to use it

  • Every rotation change, even a quiet one — “nothing outstanding” is useful information.
  • At the start and end of a shift spanning an active incident.
  • Before planned absence, when a service’s only informed person will be unavailable.

What it must answer

  • What is currently broken or degraded?
  • What is expected to happen during your shift?
  • What is fragile right now, and what do I do if it moves?
  • What did I try that did not work, so you do not repeat it?

Template

On-call handover: <rotation> — YYYY-MM-DD HH:MM UTC

Outgoing: name Incoming: name

Active incidents

IDSevStateWhat is needed nextChannel

Degraded or on a workaround

ServiceStateWorkaround in placeExpires / needs attention

Expected during your shift

WhenWhatWhoseWhat to do if it goes wrong

Watch list

Things not yet broken but trending badly, with the threshold that matters.

Known noise

Alerts that will fire and are expected — with the reason and the ticket.

Tried and did not work

So the next person does not repeat it.

Access and escalation notes

Anything unusual about who is reachable.

  # On-call handover: <rotation> — YYYY-MM-DD HH:MM UTC

**Outgoing:** name    **Incoming:** name

## Active incidents
| ID | Sev | State | What is needed next | Channel |
|---|---|---|---|---|


## Degraded or on a workaround
| Service | State | Workaround in place | Expires / needs attention |
|---|---|---|---|


## Expected during your shift
| When | What | Whose | What to do if it goes wrong |
|---|---|---|---|


## Watch list
Things not yet broken but trending badly, with the threshold that matters.

## Known noise
Alerts that will fire and are expected — with the reason and the ticket.

## Tried and did not work
So the next person does not repeat it.

## Access and escalation notes
Anything unusual about who is reachable.
  

Worked example

On-call handover: platform-primary — 2026-12-03 18:00 UTC

Outgoing: J. Marek Incoming: P. Nowak

Active incidents

IDSevStateWhat is needed nextChannel
INC-2026-0207Sev-2Resolved 11:40, monitoringNothing unless the poller backlog rises again. Postmortem is Friday; do not start analysis in the channel#inc-2026-0207

Degraded or on a workaround

ServiceStateWorkaroundExpires / needs attention
ProvisioningBundle clean-up admin action disabled since 2026-11-04Manual, by config flagStays until v1.14.0 ships (2026-11-12 — already shipped; flag can now be re-enabled, ticket OPS-878 open, not urgent)
Provisioning pollerRunning normally, but no heartbeat alert yet (OPS-882 in progress)Backlog alert only, now routed correctlyIf the backlog alert fires, check leader identity first — it is on the pipeline dashboard as of today
Node pool upgradesPaused on 3 remaining nodes since 08:05Manual pauseSecurity wants them completed by 2026-12-06. Do not resume during your shift; A. Vogel is coordinating with the lease handover fix

Expected during your shift

WhenWhatWhoseWhat to do if it goes wrong
22:00 UTCHR nightly batch, ~40 eventsHR platformExpect a brief backlog; it should clear within 15 min. If not, check adapters before assuming the poller
23:30 UTCLegacy ERP nightly provisioning batchERP teamFailures show as PARTIAL requests plus tickets. Not a page — the daily exception report catches it. ERP on-call is #erp-oncall but they do not staff overnight
02:00 UTCCertificate renewal on the admin ingress (automated)PlatformRunbook section 7. Manual renewal command is there; takes 4 minutes

Watch list

  • Postgres primary disk at 71%, rising ~1.5pp/week. Alert threshold 85%. Not
      your problem this shift, but if it jumps more than 3pp overnight, something
      is writing more than it should — check the audit table partition size first.
  • One adapter (the HR-adjacent directory) has been at a 3–4% error rate all
      week, well below the 20% alert. Retries absorb it. Ticket OPS-879.

Known noise

  • PROV_ADAPTER_ERROR_RATE for the ERP target will fire around 23:35 and clear
      by 23:50. Expected — the batch closes its connection abruptly. Ticket
      OPS-860, fix scheduled but not started. Do not escalate.

Tried and did not work

  • During INC-2026-0207 I tried provctl poller restart before forcing an
      election. It did not help, because the stale lease had not expired; the pod
      restarted and waited. provctl poller elect --force is the command that
      works. The runbook now says so.

Access and escalation notes

A. Vogel is on a flight 20:00–23:30 UTC and unreachable. Secondary escalation
for anything provisioning-related is H. Ito, who ran the test cycle and knows
the system well. DBA on-call rotation changed on Monday: it is now
#dba-oncall-eu, not the old channel, which still exists and is unmonitored.

  # On-call handover: platform-primary — 2026-12-03 18:00 UTC

**Outgoing:** J. Marek    **Incoming:** P. Nowak

## Active incidents
| ID | Sev | State | What is needed next | Channel |
|---|---|---|---|---|
| INC-2026-0207 | Sev-2 | Resolved 11:40, monitoring | Nothing unless the poller backlog rises again. Postmortem is Friday; do not start analysis in the channel | #inc-2026-0207 |


## Degraded or on a workaround
| Service | State | Workaround | Expires / needs attention |
|---|---|---|---|
| Provisioning | Bundle clean-up admin action disabled since 2026-11-04 | Manual, by config flag | Stays until v1.14.0 ships (2026-11-12 — already shipped; flag can now be re-enabled, ticket OPS-878 open, not urgent) |
| Provisioning poller | Running normally, but no heartbeat alert yet (OPS-882 in progress) | Backlog alert only, now routed correctly | If the backlog alert fires, check leader identity first — it is on the pipeline dashboard as of today |
| Node pool upgrades | Paused on 3 remaining nodes since 08:05 | Manual pause | Security wants them completed by 2026-12-06. Do not resume during your shift; A. Vogel is coordinating with the lease handover fix |


## Expected during your shift
| When | What | Whose | What to do if it goes wrong |
|---|---|---|---|
| 22:00 UTC | HR nightly batch, ~40 events | HR platform | Expect a brief backlog; it should clear within 15 min. If not, check adapters before assuming the poller |
| 23:30 UTC | Legacy ERP nightly provisioning batch | ERP team | Failures show as PARTIAL requests plus tickets. Not a page — the daily exception report catches it. ERP on-call is #erp-oncall but they do not staff overnight |
| 02:00 UTC | Certificate renewal on the admin ingress (automated) | Platform | Runbook section 7. Manual renewal command is there; takes 4 minutes |


## Watch list
- Postgres primary disk at 71%, rising ~1.5pp/week. Alert threshold 85%. Not
  your problem this shift, but if it jumps more than 3pp overnight, something
  is writing more than it should — check the audit table partition size first.
- One adapter (the HR-adjacent directory) has been at a 3–4% error rate all
  week, well below the 20% alert. Retries absorb it. Ticket OPS-879.

## Known noise
- `PROV_ADAPTER_ERROR_RATE` for the ERP target will fire around 23:35 and clear
  by 23:50. Expected — the batch closes its connection abruptly. Ticket
  OPS-860, fix scheduled but not started. Do not escalate.

## Tried and did not work
- During INC-2026-0207 I tried `provctl poller restart` before forcing an
  election. It did not help, because the stale lease had not expired; the pod
  restarted and waited. `provctl poller elect --force` is the command that
  works. The runbook now says so.

## Access and escalation notes
A. Vogel is on a flight 20:00–23:30 UTC and unreachable. Secondary escalation
for anything provisioning-related is H. Ito, who ran the test cycle and knows
the system well. DBA on-call rotation changed on Monday: it is now
#dba-oncall-eu, not the old channel, which still exists and is unmonitored.
  

Common mistakes

  • “All quiet” when it is not. The watch list is exactly what the incoming engineer cannot see for themselves.
  • Omitting known noise. An engineer paged by an expected alert wastes twenty minutes and loses trust in the alert set.
  • No “tried and did not work”. This is the highest-value section per line and is almost always left out.
  • Handover only in chat. A written artefact survives the shift; a chat thread scrolls away and cannot be read at the start of the next handover.
  • Escalation contacts assumed current. Rotations and channels change. The one time it matters is at 02:00.

Last updated 23 Aug 2026, 17:44 -0500. history