Engineers App
Getting Paged
What happens on your phone when an incident hits — from the FCM arriving to your finger on the ACKNOWLEDGE button.
Anatomy of a page#
When the paging engine decides you should be alerted, the backend sends a high-priority FCM data message with severity, source, title, and incident UID. The app then:
- Wakes the device — high-priority FCM bypasses Doze on Android and the phone screen turns on.
- Shows a full-screen takeover — even if the phone is locked, even if you're inside another app. The notification has
fullScreenIntent: true+category: call, which is the same plumbing incoming-call apps use. - Plays a 30-second alarm — the
reliable-page-v2channel usesimportance.max, so it sounds even when the phone is on vibrate (DND override depends on per-device settings). - Vibrates aggressively — strong default Android pattern.
- Stays sticky — the notification can't be swiped away. You either ACK or DISMISS; the system won't silently drop it.
It's intentionally hard to miss
The Incident Page screen#
Tapping the notification (or being pulled in by the full-screen intent) takes you to the Incident Page screen. Everything you need to decide is one screen:
- Background colour = severity (red for critical, orange for high, amber for medium, slate for low).
- Severity pill + source label at the top.
- Title — the incident's human-readable description, as it appears on the dashboard.
- Occurrence count — how many times this fingerprint has fired (so you can tell a flap from a one-off).
- Big white ACKNOWLEDGE button at the bottom.
- Dismiss (will escalate) link — see below.
Acknowledge#
Tapping ACKNOWLEDGE hits POST /api/v1/mobile/incidents/:uid/ack. The backend marks the incident as acknowledged, records your response time, cancels any in-flight escalation pages, and writes an engineer_acknowledged event to the activity trail. The screen closes with a toast confirming the ack.
If you ACK a second time (e.g. someone else already ack'd while you were unlocking your phone), you'll get back already_acknowledged: true and the toast says "Already acknowledged" — no error.
Dismiss (will escalate)#
Sometimes you really can't respond — you're driving, in a meeting, asleep through your alarm. Tapping Dismiss closes the screen without acking. The incident keeps its open status, the escalation timer keeps running, and after the timeout the paging engine escalates to the next step / tier and pages the next engineer.
Dismiss is honest
Severity-change notifications#
The AI severity classifier runs asynchronously after every new incident. If it decides the severity should change, you get a quiet banner, not another page. Loud alarm only fires on the original page; reclassifications are informational.
- Channel:
reliable-info-v1— default importance, no full-screen intent. - Title: "Severity upgraded to CRITICAL" / "Severity downgraded to MEDIUM".
- Tap action: opens the incident detail screen (not the full-screen page screen — you already responded).
- Color: red header for upgrades, green for downgrades.
Why no re-page on upgrade?
Multiple pages at once#
If two incidents arrive within seconds of each other, you get two separate notifications stacked in the tray. Each has its own incident UID — the local-notification IDs are derived from the UID, so they don't collide. Tapping either opens the corresponding incident.
If the same incident pages you twice (e.g. you ignored step 1 and step 2 fired), the second page replaces the first in the tray (same notification ID), so you don't end up with five copies of the same alert.