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
@@ -11,20 +11,20 @@ autonomous: true
requirements: []
must_haves:
truths:
- "Each expanded occurrence exposes hasRrule, true for occurrences of a recurring series and false otherwise (D-08)"
- "A bounded RRULE (e.g. COUNT=3) expands to exactly the bounded number of occurrences within a wide window, each with start→end duration (D-06 verify)"
- 'Each expanded occurrence exposes hasRrule, true for occurrences of a recurring series and false otherwise (D-08)'
- 'A bounded RRULE (e.g. COUNT=3) expands to exactly the bounded number of occurrences within a wide window, each with start→end duration (D-06 verify)'
artifacts:
- path: "apps/api/src/broker/expand.ts"
provides: "hasRrule:boolean field on CalendarOccurrence, populated from event.isRecurring()"
contains: "hasRrule"
- path: "apps/api/tests/broker/expand.test.ts"
provides: "hasRrule true/false assertions + bounded-RRULE occurrence-count assertion"
contains: "hasRrule"
- path: 'apps/api/src/broker/expand.ts'
provides: 'hasRrule:boolean field on CalendarOccurrence, populated from event.isRecurring()'
contains: 'hasRrule'
- path: 'apps/api/tests/broker/expand.test.ts'
provides: 'hasRrule true/false assertions + bounded-RRULE occurrence-count assertion'
contains: 'hasRrule'
key_links:
- from: "apps/api/src/broker/expand.ts"
to: "apps/pwa/src/api/client.ts (mirror, added in Plan 05)"
via: "CalendarOccurrence.hasRrule is the source-of-truth field the client mirrors"
pattern: "hasRrule"
- from: 'apps/api/src/broker/expand.ts'
to: 'apps/pwa/src/api/client.ts (mirror, added in Plan 05)'
via: 'CalendarOccurrence.hasRrule is the source-of-truth field the client mirrors'
pattern: 'hasRrule'
---
<objective>
@@ -53,9 +53,10 @@ Output: `hasRrule` on `CalendarOccurrence` + population in `expandOccurrences`,
<artifacts_this_plan_produces>
NEW symbols introduced here (exclude from drift/convergence checks):
- `hasRrule: boolean` field added to the `CalendarOccurrence` interface in `apps/api/src/broker/expand.ts`
- New assertions in `apps/api/tests/broker/expand.test.ts` (hasRrule true on recurring, false on non-recurring, bounded-RRULE count)
</artifacts_this_plan_produces>
</artifacts_this_plan_produces>
<tasks>
@@ -113,17 +114,19 @@ NEW symbols introduced here (exclude from drift/convergence checks):
</tasks>
<threat_model>
## Trust Boundaries
| Boundary | Description |
|----------|-------------|
| Boundary | Description |
| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| (none new) | Read-side transform of already-cached, already-trusted calendar data. No new input crosses a boundary; `hasRrule` is derived from a parsed VEVENT the server already holds. |
## STRIDE Threat Register
| Threat ID | Category | Component | Disposition | Mitigation Plan |
|-----------|----------|-----------|-------------|-----------------|
| T-06-03 | Information Disclosure | hasRrule on CalendarOccurrence | accept | `hasRrule` is a boolean derived from data already returned to the authenticated, access-scoped caller (existing `/api/events` ownership filter unchanged). It reveals no new information beyond "this event recurs", which is already visible from rendered occurrences. No new trust boundary. |
| Threat ID | Category | Component | Disposition | Mitigation Plan |
| --------- | ---------------------- | ------------------------------ | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| T-06-03 | Information Disclosure | hasRrule on CalendarOccurrence | accept | `hasRrule` is a boolean derived from data already returned to the authenticated, access-scoped caller (existing `/api/events` ownership filter unchanged). It reveals no new information beyond "this event recurs", which is already visible from rendered occurrences. No new trust boundary. |
</threat_model>
<verification>
@@ -133,10 +136,11 @@ NEW symbols introduced here (exclude from drift/convergence checks):
</verification>
<success_criteria>
- D-08: the recurring-series detection signal exists server-side.
- D-06 expansion invariant (bounded count, start→end duration) is locked by test.
- Clean file ownership: only `expand.ts` + its test touched.
</success_criteria>
</success_criteria>
<output>
Create `.planning/phases/06-ux-polish/06-03-SUMMARY.md` when done (RED/GREEN notes + commits).