Index: src/services/PushService.js
===================================================================
--- src/services/PushService.js	(revision 96c714f68f23cf079e786ef6c33248d540533ab2)
+++ src/services/PushService.js	(revision e61c289a40c106afec8f8271727dce91faf8c645)
@@ -68,5 +68,7 @@
 // ── Subscriptions ───────────────────────────────────────────────────
 
-export const DEFAULT_ALERTS = { follow: 1, reply: 1, like: 0, boost: 0, dm: 1 };
+// help (a ward's call for help) and guardian (adoption handshake) serve the
+// Guardian PWA and default ON: a guardian must never miss a call for help.
+export const DEFAULT_ALERTS = { follow: 1, reply: 1, like: 0, boost: 0, dm: 1, help: 1, guardian: 1 };
 
 export function saveSubscription({ endpoint, userId, p256dh, auth, alertTypes, uaLabel }) {
@@ -122,5 +124,5 @@
 // (the events themselves are still in Berichten — only the ping is deduped).
 // In-memory is fine: one process, and a restart just means one extra ping.
-const THROTTLE_SECONDS = { follow: 60, reply: 30, dm: 30, like: 300, boost: 300, test: 0 };
+const THROTTLE_SECONDS = { follow: 60, reply: 30, dm: 30, like: 300, boost: 300, test: 0, help: 0, guardian: 30 };
 const _lastPush = new Map();
 export function throttled(userId, type, nowSeconds = Math.floor(Date.now() / 1000)) {
@@ -135,5 +137,5 @@
 
 // Notify one user on all their devices, honouring per-type preferences.
-// type ∈ {follow, reply, like, boost, dm, test}. Fire-and-forget at call sites.
+// type ∈ {follow, reply, like, boost, dm, help, guardian, test}. Fire-and-forget at call sites.
 export async function notifyUser(userId, { type, title, body, url }) {
   if (!(await pushReady())) return 0;
