- No same-day C-SSRS repeat: a risk screen completed within cssrs_cooldown_hours is not queued again
after PHQ-9 item 9 >= 1 (scale crisis path, rule schedule_scale, scale_due); crisis script and alerts stay.
- Scale intro registry: register_scale_intro(scale_id, text_or_fn); start_scale(intro=None) uses it.
veteran_daily migrated from per-scale on_enter hooks.
- Prefix triggers "button:<prefix>:*" with trigger_payload(event); medication buttons carry the dose
(med:taken:<dose_id>, ...), med_pending dropped; payload-less legacy buttons answer as stale.
- Abandoned-step timeout: settings.abandon_after_hours (default 6 h) returns abandonable states
(daily.*, meds.*, scale.* not in onboarding) to idle before the next event; never in crisis or with intake on.
Refs #56
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>