Alerts Practical By Samson Tanimawo, PhD Published Nov 3, 2025 4 min read

Ack vs Resolve Discipline

Acknowledging stops paging; resolving closes the alert. Different.

The distinction

Acknowledging tells the paging system a human is engaged. Resolving tells the system the underlying problem is fixed. They are not interchangeable.

PagerDuty, Opsgenie, and incident.io all expose both states. The semantics matter for escalation, MTTA reporting, and post-incident analysis.

Confusing the two breaks every dashboard built on top. MTTR drifts upward when ack is treated as resolve; escalation paths fail when resolve is treated as ack.

Ack discipline

Ack within 5 minutes of being paged. After that the secondary on-call is paged automatically; the rotation depends on it.

Ack does not mean fixed. It means "I see this, I am working on it, no need to page anyone else". State this explicitly in the on-call onboarding doc.

An ack is not a triage. The on-call should still post in the incident channel with what they are seeing within 10 minutes.

Resolve discipline

Resolve only when the underlying signal has returned to normal for at least 5 minutes, or when you have confirmed the root cause is mitigated.

Auto-resolve should be off by default for high-severity alerts. A flapping signal that auto-resolves at the 4 minute mark masks an ongoing incident.

If you resolve and the alert refires within 30 minutes, treat it as the same incident in your post-incident review.

What to measure

MTTA: time from page to ack. Target under 5 minutes p95. Above that means rotations are too thin or coverage gaps exist.

MTTR: time from page to resolve. Track per-service, not globally; a noisy service drags the headline number.

Ack-to-resolve gap: median time engaged on the incident. Useful for spotting alerts that are easy to ack but hard to fix.

How to apply

Audit the last quarter of incidents. Look for any with multiple resolves; those are flapping and need tuning.

Add a 1-minute confirmation window before resolve becomes final. PagerDuty supports this through alert dependencies.

Train new on-call to ack first, post in channel second, debug third. The order matters more than the speed.