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:
@@ -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).
|
||||
|
||||
Reference in New Issue
Block a user