On-Call Handoff Checklist for Go Platforms
Outgoing on-call engineers document platform state so incoming on-call starts with context, not a blank pager.
Use this checklist at every shift change for Go microservices, workers, and gRPC tiers.
How to Use This Checklist
- Complete within 30 minutes of shift end; incoming engineer acknowledges in writing.
- Link dashboards and tickets; do not rely on verbal-only transfer.
- Mark N/A for quiet shifts but still confirm alert routing and deploy freeze status.
- Store the handoff note in the team channel or ticket template for searchability.
- Escalate open SEV-1/2 incidents with a live bridge, not only async notes.
Platform Health Summary
- Active incidents: List SEV, status, current mitigation, next check time.
- Open: link incident channel and commander.
- None: state "no active SEV-1/2" explicitly.
- Recent deploys (last 24h): Service, SHA, canary status, known regressions.
- Include Go image tag and any
GOMEMLIMIT/GOGCenv changes.
- Include Go image tag and any
- Error budget / SLO burn: Which services are yellow or red.
- Note if latency-only burn without error spike (GC/pool suspects).
- Dependency status: DB failover, cache instability, upstream outages.
- Separate shared-platform issues from single-service noise.
Go Runtime & Capacity
- Memory and OOM: Any OOMKilled pods in last shift; limits vs
GOMEMLIMIT.- Link heap/goroutine dashboards.
- GC / latency anomalies: Unexplained p99 bumps; GC pause charts.
- Note Go 1.26 upgrade canaries if applicable.
- Goroutine trends: Services with climbing goroutine baselines.
- Link open tickets for leak investigations.
- Connection pools:
sql.DBwait metrics elevated on any tier.- Document
MaxOpenConnsexperiments in flight.
- Document
- HPA / replica changes: Autoscale events during peak or incident.
- Warn if replica doubling affects DB connection math.
Tooling Access
- pprof / admin access: Token rotation dates, port-forward runbook links.
- Confirm incoming has VPN/k8s access to admin ports.
- Log and trace systems: Saved queries for top services.
- Include
request_idsearch examples.
- Include
- Rollback levers: Who can approve prod rollback; last successful SHA per service.
- Feature flag console link for kill switches.
- Escalation paths: Secondary, EM, vendor contacts for DB/cloud.
- Time zones for upstream maintainers.
Open Work & Risks
- In-progress mitigations: Canary GC tuning, pool resize, flag at 50%.
- Expected completion and success criteria.
- Scheduled maintenance: Migrations, cert renewals, game days.
- Conflict with on-call coverage?
- Flaky alerts: Alerts muted or threshold-adjusted temporarily.
- Expiry time for mute; owner to fix root alert.
- Known tech debt: Services without
GOMEMLIMIT, public pprof risk, missingWaitCountexport.- Risk rank for incoming awareness.
- Post-mortem actions due: Open P0/P1 from prior incidents.
- Owner if overdue.
Incoming Acknowledgment
- Incoming engineer name and start time:
<name, UTC>. - Questions clarified: List any ambiguities resolved live.
- Bridge status: Stay on bridge if SEV-1 active; else async OK.
Applying the Checklist in Order
- Items 1-4: Customer and SLO picture first - incoming needs impact context.
- Items 5-9: Go-specific signals that generic infra handoffs omit.
- Items 10-13: Access and levers - verify before outgoing logs off.
- Items 14-18: Forward-looking risk so the next shift is not surprised.
- Items 19-21: Close the loop with explicit acknowledgment.
FAQs
How detailed should a quiet shift handoff be?
Still complete tooling and deploy sections.
"No incidents" takes one line; access verification remains mandatory.
Should handoff include non-Go services?
Yes for dependencies and shared platforms.
Mark which items are Go-specific vs org-wide.
Where should handoff notes live?
Durable: ticket, Confluence, or pinned Slack with date.
Ephemeral chat alone fails next-week searches.
What if outgoing is paged during handoff?
Extend overlap or assign backup outgoing until SEV stabilizes.
Never hand off mid-mitigation without bridge.
How do we hand off profile capture duty?
Document in-progress profile jobs, pod names, and S3 upload paths.
Incoming continues collection if window is open.
Should we list every microservice?
Cover tier-1 revenue paths and any service yellow on SLO.
Others link to fleet health dashboard.
How often rotate pprof tokens?
Team policy; handoff must note expiry within the incoming shift.
Broken tokens waste SEV-1 minutes.
What about weekend coverage?
Friday handoff includes Monday deploy freeze, scheduled jobs, and reduced staffing escalation.
Do contractors get the same checklist?
Yes.
Access section confirms their kubectl/VPN scope.
How does this relate to post-mortems?
Handoff links open post-mortem actions.
Closed incidents still note lessons learned affecting alerts.
Related
- Incident Response for Go Services - triage overview
- Post-Mortem Template for Go Incidents - RCA structure
- Production Troubleshooting Basics - first-step tooling
- Production Troubleshooting Best Practices - prevention habits
- Health, Readiness & Liveness Probes - probe behavior
- Prometheus Metrics & RED-USE Dashboards - dashboards
Stack versions: This page was written for Go 1.26.x (Green Tea GC default, go fix modernizers - verify patch at build), chi (latest - verify at build), gin (latest - verify at build), echo (latest - verify at build), google.golang.org/grpc (latest - verify at build), sigs.k8s.io/controller-runtime (latest - verify at build), kubebuilder (latest - verify at build), tinygo (latest - verify board targets at build), wazero (latest - verify at build), and golangci-lint (latest - verify linter set at build).