wake-alarm/phone_app/lib/services
Krzysztof kuhy Rudnicki 34037e55c1 phone: sick days — picker, silent ring, stick stand-down, pre-alarm sync
- Sick days screen (own name, sick icon, cat-2 fill): tap today or a later
  day to mark it sick, tap again to clear; past days inert. Writes the
  sickdays wire format (state sick/cleared + actor, one HLC per write) to
  sickdays-sync/devices via crdt_sync syncLog.
- Mutual exclusion in both pickers: each syncs the other pool on open and
  refuses a date it holds, naming the pool; an unreadable pool refuses all.
- Native SickDays cache (fail closed via DayCache); AlarmReceiver skips the
  ring with reason "sick_day" (no markFired, no ring_started); StickCheck
  verdict sick_day, streak skips sick days; stakes card says so.
- Pre-alarm pool sync: allow-while-idle alarm at 21:00 and A-30 (request
  code 1006) runs a headless engine (poolSyncMain) that pulls both pools
  from RTDB and rewrites both native caches, so a PC mark arrives with the
  app closed. The ring decision stays a cache read.
- JVM unit tests (JUnit 4.13.2) for DayCache, RingDecision,
  PoolSyncSchedule, StickCheck; Dart tests; Dart->Python interop check.

pylint hook skipped: verify.py imports sickdays, not in the hook env until
the sickdays-v0.1.0 tag exists; run by hand in a sickdays venv (10.00/10).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xfj1sxKH9VBPqpcAni8Jry
2026-10-16 13:22:40 +02:00
..
alarm_arming.dart Bring the two files this change grew back under the 250-line gate 2026-08-27 21:43:16 +02:00
alarm_policy.dart Earned ramp: a dismissed Mon/Fri/Sat/Sun morning earns the minute; workdays hold, misses and free days earn nothing; workdays from freedays 0.3.0 2026-09-27 20:13:22 +02:00
alarm_publisher.dart Sync the NFC tags and home location so a reinstall gets them back 2026-09-11 12:34:50 +02:00
alarm_ramp.dart Earned ramp: a dismissed Mon/Fri/Sat/Sun morning earns the minute; workdays hold, misses and free days earn nothing; workdays from freedays 0.3.0 2026-09-27 20:13:22 +02:00
alarm_scheduler.dart phone: sick days — picker, silent ring, stick stand-down, pre-alarm sync 2026-10-16 13:22:40 +02:00
alarm_sync_service.dart Sync the NFC tags and home location so a reinstall gets them back 2026-09-11 12:34:50 +02:00
challenge.dart Require two tags, the walk, and three answers to dismiss 2026-08-30 15:09:00 +02:00
day_pool_refresh.dart phone: sick days — picker, silent ring, stick stand-down, pre-alarm sync 2026-10-16 13:22:40 +02:00
day_pool_sync.dart phone: sick days — picker, silent ring, stick stand-down, pre-alarm sync 2026-10-16 13:22:40 +02:00
dismiss_gate.dart Ring the away profile when the phone is not at home 2026-08-31 11:45:11 +02:00
enforcement_bridge.dart Wake enforcement v2: PC fallback ring + RTC self-wake, stacking Tue-Thu phone lockdown, escape hatch until 2026-10-15, stakes in the app, daily incident audit 2026-10-01 12:17:06 +02:00
enforcement_state.dart phone: sick days — picker, silent ring, stick stand-down, pre-alarm sync 2026-10-16 13:22:40 +02:00
enforcement_sync.dart Wake enforcement v2: PC fallback ring + RTC self-wake, stacking Tue-Thu phone lockdown, escape hatch until 2026-10-15, stakes in the app, daily incident audit 2026-10-01 12:17:06 +02:00
escape_hatch.dart Wake enforcement v2: PC fallback ring + RTC self-wake, stacking Tue-Thu phone lockdown, escape hatch until 2026-10-15, stakes in the app, daily incident audit 2026-10-01 12:17:06 +02:00
escape_log.dart Wake enforcement v2: PC fallback ring + RTC self-wake, stacking Tue-Thu phone lockdown, escape hatch until 2026-10-15, stakes in the app, daily incident audit 2026-10-01 12:17:06 +02:00
firebase_backend.dart Bring the phone app's analyzer up to latest stable 2026-09-07 15:30:00 +02:00
free_day_pool.dart Re-point paths for the ~ reorganisation (home-tidy) 2026-09-11 18:46:34 +02:00
free_day_sync.dart phone: sick days — picker, silent ring, stick stand-down, pre-alarm sync 2026-10-16 13:22:40 +02:00
google_platform_io.dart phone_app: add Google sign-in support for the Firebase sync account 2026-08-14 11:26:33 +02:00
google_platform_web.dart phone_app: add Google sign-in support for the Firebase sync account 2026-08-14 11:26:33 +02:00
google_platform.dart phone_app: add Google sign-in support for the Firebase sync account 2026-08-14 11:26:33 +02:00
google_sign_in_backend.dart Bring the phone app's analyzer up to latest stable 2026-09-07 15:30:00 +02:00
headless_ring_start.dart Wake enforcement v2: PC fallback ring + RTC self-wake, stacking Tue-Thu phone lockdown, escape hatch until 2026-10-15, stakes in the app, daily incident audit 2026-10-01 12:17:06 +02:00
home_location_settings.dart Sync the NFC tags and home location so a reinstall gets them back 2026-09-11 12:34:50 +02:00
home_presence.dart Ring the away profile when the phone is not at home 2026-08-31 11:45:11 +02:00
iso_time.dart Wake enforcement v2: PC fallback ring + RTC self-wake, stacking Tue-Thu phone lockdown, escape hatch until 2026-10-15, stakes in the app, daily incident audit 2026-10-01 12:17:06 +02:00
morning_session.dart Make the morning session the carrot: earn 11:00 by finishing it in time 2026-09-19 16:40:51 +02:00
ramp_progress.dart Earned ramp: a dismissed Mon/Fri/Sat/Sun morning earns the minute; workdays hold, misses and free days earn nothing; workdays from freedays 0.3.0 2026-09-27 20:13:22 +02:00
ring_start_recorder.dart Wake enforcement v2: PC fallback ring + RTC self-wake, stacking Tue-Thu phone lockdown, escape hatch until 2026-10-15, stakes in the app, daily incident audit 2026-10-01 12:17:06 +02:00
ring_started_store.dart Wake enforcement v2: PC fallback ring + RTC self-wake, stacking Tue-Thu phone lockdown, escape hatch until 2026-10-15, stakes in the app, daily incident audit 2026-10-01 12:17:06 +02:00
ring_startup.dart Ring the away profile when the phone is not at home 2026-08-31 11:45:11 +02:00
room_proof_settings.dart Sync the NFC tags and home location so a reinstall gets them back 2026-09-11 12:34:50 +02:00
room_proof.dart Keep the morning going after the ring: weigh-in, shower, dress, desk, or it rings again 2026-09-16 22:35:40 +02:00
session_handoff.dart Add the Tue/Wed/Thu workday stick: signal focus-owner and write tomorrow's penalty 2026-09-23 21:20:58 +02:00
session_json.dart Make the morning session the carrot: earn 11:00 by finishing it in time 2026-09-19 16:40:51 +02:00
session_notice.dart Keep the morning session reachable after leaving the app; drop the still-phone watch 2026-09-17 09:01:22 +02:00
session_publisher.dart Keep the morning going after the ring: weigh-in, shower, dress, desk, or it rings again 2026-09-16 22:35:40 +02:00
session_rules.dart Make the morning session the carrot: earn 11:00 by finishing it in time 2026-09-19 16:40:51 +02:00
session_store.dart Keep the morning going after the ring: weigh-in, shower, dress, desk, or it rings again 2026-09-16 22:35:40 +02:00
session_sync.dart Make the morning session the carrot: earn 11:00 by finishing it in time 2026-09-19 16:40:51 +02:00
session_tag_settings.dart Keep the morning going after the ring: weigh-in, shower, dress, desk, or it rings again 2026-09-16 22:35:40 +02:00
settings_sync.dart Wake enforcement v2: PC fallback ring + RTC self-wake, stacking Tue-Thu phone lockdown, escape hatch until 2026-10-15, stakes in the app, daily incident audit 2026-10-01 12:17:06 +02:00
sick_day_pool.dart phone: sick days — picker, silent ring, stick stand-down, pre-alarm sync 2026-10-16 13:22:40 +02:00
sick_day_sync.dart phone: sick days — picker, silent ring, stick stand-down, pre-alarm sync 2026-10-16 13:22:40 +02:00
stakes.dart Wake enforcement v2: PC fallback ring + RTC self-wake, stacking Tue-Thu phone lockdown, escape hatch until 2026-10-15, stakes in the app, daily incident audit 2026-10-01 12:17:06 +02:00
sync_settings.dart Migrate phone_app alarm sync from GitHub Gist to crdt_sync 2026-07-11 22:45:14 +02:00
today_stakes.dart phone: sick days — picker, silent ring, stick stand-down, pre-alarm sync 2026-10-16 13:22:40 +02:00
weight_entry.dart Make the morning session the carrot: earn 11:00 by finishing it in time 2026-09-19 16:40:51 +02:00