diff --git a/docs/Engineering_Reference_Manual.md b/docs/Engineering_Reference_Manual.md index 66773ddf..9eafb07a 100644 --- a/docs/Engineering_Reference_Manual.md +++ b/docs/Engineering_Reference_Manual.md @@ -515,7 +515,7 @@ There is also `assignDailyQuestionCallable` for manual / on-demand assignment (u ### Server-authoritative mode-aware deterministic selection -The picker in `functions/src/questions/assignDailyQuestion.ts` mirrors the Android client's `DailyModeResolver` (DOW_DEFAULTS table: Monday `mode_soft_monday`, Tuesday `mode_snack_mission`, ..., Sunday `mode_tiny_date_night`). The same date -> the same couple -> the same question, with no randomness and no client/server split. This **kills the DQ-MISMATCH class** of bugs (one partner sees a different question than the other) and removes cross-timezone partner splits at the root. The frozen DOW -> mode map is unit-tested; if you add a weekday or change a mode tag, update both the client resolver and the server picker in the same change. The picker is also FROZEN against the daily question's `daily_fun_mc` content: `daily_fun_mc` rows are filtered out of the HowWell prediction pool and Desire Sync pool (server-side) to match the client-side guards shipped in R30. +The picker in `functions/src/questions/assignDailyQuestion.ts` mirrors the Android client's `DailyModeResolver` (DOW_DEFAULTS table, frozen in the function source as `WEEKDAY_MODE_TAGS`): Sunday `mode_tiny_date_night` (Slow Burn Sunday), Monday `mode_soft_monday` (Mood Check Monday), Tuesday `mode_snack_mission` (Tiny Win Tuesday), Wednesday `mode_no_phone_moment` (Real One Wednesday), Thursday `mode_laugh_reset` (Laugh It Off Thursday), Friday `mode_flirty_friday` (Flirty Friday), Saturday `mode_weekend_side_quest` (Side Quest Saturday). The same date -> the same couple -> the same question, with no randomness and no client/server split. This **kills the DQ-MISMATCH class** of bugs (one partner sees a different question than the other) and removes cross-timezone partner splits at the root. The frozen DOW -> mode map is unit-tested (`assignDailyQuestion.test.ts`); if you add a weekday or change a mode tag, update both the client resolver and the server picker in the same change. The picker is also FROZEN against the daily question's `daily_fun_mc` content: `daily_fun_mc` rows are filtered out of the HowWell prediction pool and Desire Sync pool (server-side) to match the client-side guards shipped in R30. ### Date math - known DST bug