--- gsd_state_version: '1.0' status: planning progress: total_phases: 5 completed_phases: 0 total_plans: 0 completed_plans: 0 percent: 0 --- # Project State ## Project Reference See: .planning/PROJECT.md (updated 2026-06-03) **Core value:** One color-coded family calendar (shared + personal) and shared lists from a single low-friction PWA — cross-ecosystem, no app store **Current focus:** Phase 1 — Foundation + Broker Spike ## Current Position Phase: 1 of 5 (Foundation + Broker Spike) Plan: 0 of ? in current phase Status: Ready to plan Last activity: 2026-06-03 — Roadmap created Progress: [░░░░░░░░░░] 0% ## Performance Metrics **Velocity:** - Total plans completed: 0 - Average duration: - - Total execution time: 0 hours **By Phase:** | Phase | Plans | Total | Avg/Plan | |-------|-------|-------|----------| | - | - | - | - | **Recent Trend:** - Last 5 plans: - - Trend: - *Updated after each plan completion* ## Accumulated Context ### Decisions Decisions are logged in PROJECT.md Key Decisions table. Recent decisions affecting current work: - Phase 1 gate: Personal-calendar CalDAV ACL must be spiked before calendar UI is built. Fallback is shared-family-only if spike fails. - CalDAV locked: Fastmail does not expose calendars over JMAP. CalDAV via tsdav is the only protocol. No reconsideration. - Identity: Use oidc_iss + oidc_sub as stable composite key. Never email. - Real-time transport: Prefer SSE over WebSocket (proxy-resilient through Pangolin). Verify Pangolin SSE pass-through in Phase 1 infra spike. - Recurring events: Create + display only in v1 (CALDAV:expand on server side). Single-occurrence edit deferred to v1.x. ### Pending Todos None yet. ### Blockers/Concerns - Phase 1: Personal-calendar CalDAV ACL behavior on Fastmail is LOW confidence (must spike). Failure degrades unified view to shared-family-only for v1. - Phase 1: Pangolin SSE/WebSocket pass-through is an open infra question (known issue #1034). Must smoke-test before Phase 4 real-time sync is built. - Phase 3: iOS install guide is load-bearing for the wife — she will never receive push notifications if she does not install the PWA. - Phase 5: iOS push subscriptions silently revoked after 3 silent pushes. Subscription health-check and event.waitUntil() are mandatory from day one. ## Deferred Items | Category | Item | Status | Deferred At | |----------|------|--------|-------------| | Calendar | Single-occurrence recurring edit (RECURRENCE-ID) | v1.x | Roadmap | | Calendar | "This and following" recurring edit | v1.x | Roadmap | | Calendar | Apple Calendar native subscribe URL docs | v1.x | Roadmap | | Calendar | Secondary timezone display toggle | v1.x | Roadmap | | Display | Wall-display / kiosk dashboard | v2 | PROJECT.md | ## Session Continuity Last session: 2026-06-03 Stopped at: Roadmap created, STATE.md initialized. Ready to plan Phase 1. Resume file: None