mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-08 20:42:43 +00:00
An appointment reminder rides the same MEASUREMENT_REMINDER event type as a checkup — one engine, deliberately — so every channel attached its Done / Later affordance to it: the Telegram inline keyboard and the APNs category whose actions the iOS app registers. Both resolve the reminder by id, and every by-id reminder surface refuses an ENCOUNTER-origin row, so each button could only answer "not found". The producer knows the origin, so it says the dispatch carries no action and each channel drops its own affordance rather than re-deriving the rule. The reminder id still rides the metadata: it identifies the nudge for the client-managed suppression tag, and what is withheld is the offer to act. - suppressActions on the notification payload, documented where it is declared - Telegram builds no measurement keyboard for a suppressed dispatch - APNs withholds the category and strips the reminder id from the iOS payload - a negative control keeps a checkup nudge actionable