Adn-602-rm-javhd.today01-55-27 Min May 2026

| # | Question | Options | Decision Needed By | |---|----------|---------|--------------------| | Q‑01 | Should the widget be optional for users (hide/show toggle)? | Yes / No | Product meeting (next sprint) | | Q‑02 | Should we log a warning when the user is in a timezone where the cut‑off falls on the previous day (e.g., UTC‑12)? | Adjust to local day / keep absolute UTC | Architecture review | | Q‑03 | What is the desired grace‑period length? | 0 s (hard lock) / 30 s / configurable | Admin UI design | | Q‑04 | Do we need a fallback server‑side timer for browsers that block setInterval (e.g., background tabs)? | Use Web Workers / rely on server push | Performance team |


| ID | Requirement | Acceptance Criteria | |----|--------------|---------------------| | FR‑01 | Display – The widget appears in the top‑right corner of the dashboard (or configurable location). | - Visible on all pages where the user has view_dashboard permission.
- Shows the label “Today 01:55‑27 Min” followed by a digital timer MM:SS. | | FR‑02 | Live Countdown – Timer updates every second. | - Timer counts down from the current time to the next occurrence of 00:55 + 27 min (i.e., 01:22).
- When the timer reaches 00:00, it briefly flashes and then resets to the next day’s value. | | FR‑03 | Configuration – Admin can set the cut‑off offset (default 27 min) and optional start hour (default midnight). | - Settings stored in app_settings.daily_cutoff.
- Changes take effect within 5 minutes (cache bust). | | FR‑04 | Timezone Awareness – Countdown respects the user’s selected timezone. | - If user is set to America/New_York, countdown is based on that zone.
- If user has no timezone, fallback to server timezone. | | FR‑05 | Accessibility – ARIA live region and high‑contrast colors. | - Screen readers announce “X minutes remaining until today 01:55‑27 Min”.
- Contrast ratio ≥ 4.5:1 (WCAG AA). | | FR‑06 | Event Hook – Fire a daily_cutoff_passed event when timer hits zero. | - Event payload includes userId, timestamp, and timezone.
- Event can be subscribed to via webhook or internal message bus. | | FR‑07 | Grace Period – Optional 30‑second grace period after zero before lockout. | - Configurable via admin UI (grace_seconds).
- During grace period, timer shows “00:30 (grace)”. | | FR‑08 | Responsive Design – Widget shrinks or moves on small screens. | - On screens < 600 px, the widget collapses into a top‑nav icon with tooltip. | adn-602-rm-javhd.today01-55-27 Min


| Category | Requirement | |----------|-------------| | Performance | < 50 ms UI update per second, negligible impact on page load. | | Scalability | Stateless component – can be rendered by any front‑end instance; no per‑user server polling required (use client‑side Date calculations). | | Reliability | Countdown must stay accurate within ±1 second even after browser tab is backgrounded. | | Security | No sensitive data transmitted; only reads user timezone from profile. | | Internationalisation | Label should be translatable (i18n key: widget.dailyCutoff.title). | | Analytics | Track widget_view, countdown_started, deadline_passed events (GA4 / internal telemetry). | | # | Question | Options | Decision


UP