style(13-03): apply Prettier formatting across repo

Mechanical reformat — no logic changes. 398 files changed, 19125
insertions(+), 16457 deletions(-). Prettier 3.8.4 with .prettierrc
(singleQuote:true, semi:true, tabWidth:2, trailingComma:all,
printWidth:100). Isolated per D-13-08 for reviewability.
This commit is contained in:
Lucas Berger
2026-06-11 20:35:18 -04:00
parent 4bc0445173
commit 982438dc10
398 changed files with 19050 additions and 16382 deletions
@@ -16,29 +16,31 @@ discuss-phase and plan-phase.
- The Phase 4 **entry gate** (SSE-over-Pangolin smoke test, D-14 / issue #1034) is **CLEARED**
verified live this session and recorded in the gate docs. No infra precondition remains.
- No PLAN.md exists yet for Phase 4.
</current_state>
</current_state>
<completed_work>
This session:
- Ran `/gsd-discuss-phase 4``04-CONTEXT.md` + `04-DISCUSSION-LOG.md` (commit 05e1c9e).
- Executed the SSE-over-Pangolin smoke test live over `familysync-dev.bergerhouse.net`:
~6 min hold, 35 heartbeats (id 0→34) at ~10s, incremental delivery (buffering off), no cut → PASS.
- Recorded the PASS via quick task 260607-u8o: updated `01-HUMAN-UAT.md` item 4 and
`03-GATE2-RESULTS.md` Part C to PASS; struck the entry-gate blocker in STATE.md (commit 9ee5906).
- Saved project memory: design for N family members (not hard-coded two).
</completed_work>
</completed_work>
<remaining_work>
- **Next:** `/gsd-plan-phase 4` (consumes `04-CONTEXT.md`).
- Optional before/after planning: `/gsd-ui-phase 4` — lists UI design contract (ROADMAP UI hint: yes).
- Then execute Phase 4 plans.
</remaining_work>
</remaining_work>
<decisions_made>
All locked in `04-CONTEXT.md` (read it before planning). Highlights for the planner:
- **Sharing:** default-shared lists with a per-list private toggle; `list_shares` join table
(member-count-agnostic, N-member-ready); SSE fan-out **scoped to who can see a list** (private
lists must NOT broadcast to everyone).
@@ -53,25 +55,28 @@ All locked in `04-CONTEXT.md` (read it before planning). Highlights for the plan
- **Nav:** bottom tab bar + react-router (real URLs, for Phase 5 push deep-links). No router today.
- **Project principle:** design for N family members, not hard-coded two.
- **Deferred (out of scope):** anonymous public-URL list sharing; per-recipient picker UI.
</decisions_made>
</decisions_made>
<blockers>
- None. The entry gate that previously blocked the build is cleared.
</blockers>
## Required Reading (in order)
1. `.planning/phases/04-shared-lists-live-sync/04-CONTEXT.md` — locked implementation decisions; the contract for planning.
2. `apps/api/src/db/schema.ts` — Drizzle table conventions for the new `lists` / `list_items` / `list_shares` tables.
3. `apps/api/src/routes/sse.ts` — existing Hono `streamSSE` heartbeat pattern; the live-list stream extends it.
4. `.planning/phases/03-event-write-back-pwa-install/03-GATE2-RESULTS.md` Part C — recorded SSE smoke PASS evidence.
## Open Decisions for the Planner (intentionally NOT pre-decided)
- **Fan-out mechanism:** in-memory EventEmitter vs Redis pub/sub. API runs as a single Node process
today (no replicas); `ioredis` is NOT installed; `redis` IS in docker-compose. In-memory is the
YAGNI default — planner must justify the choice against the N-member future (D-18).
- Position-rank column type, SSE auth/middleware wiring, React Query cache-key structure.
## Infrastructure State
- Pangolin route already configured (buffering off, idle/read timeout ≥120s) and verified for SSE.
- `redis` service present in docker-compose; `ioredis` not yet a dependency.
- New DB tables MUST use `drizzle-kit generate` + `migrate`**never `push`** (unsafe on populated MariaDB).