docs(11): sequence plan 11-02 behind 11-01, cite D-09; record planning completion
This commit is contained in:
@@ -213,11 +213,18 @@ Plans:
|
|||||||
- Hard constraints: `setInterval` only; scheduler reads `reminder_lead_minutes` from the DB (ground truth), not the outbox payload; drop the `isShared`-only reminder restriction (a user who set an alarm wants it regardless of calendar).
|
- Hard constraints: `setInterval` only; scheduler reads `reminder_lead_minutes` from the DB (ground truth), not the outbox payload; drop the `isShared`-only reminder restriction (a user who set an alarm wants it regardless of calendar).
|
||||||
|
|
||||||
**Plans**: 4 plans (3 waves)
|
**Plans**: 4 plans (3 waves)
|
||||||
|
|
||||||
Plans:
|
Plans:
|
||||||
|
**Wave 1**
|
||||||
|
|
||||||
- [ ] 11-01-PLAN.md — VALARM builders + classifier + extractor + computeAlertInstantUtc (vevent.ts, TDD)
|
- [ ] 11-01-PLAN.md — VALARM builders + classifier + extractor + computeAlertInstantUtc (vevent.ts, TDD)
|
||||||
|
|
||||||
|
**Wave 2** *(blocked on Wave 1 completion)*
|
||||||
|
|
||||||
- [ ] 11-02-PLAN.md — Variable-lead scheduler: uid:dtstartMs dedup, drop isShared, all-day 9 AM, humanized body (TDD)
|
- [ ] 11-02-PLAN.md — Variable-lead scheduler: uid:dtstartMs dedup, drop isShared, all-day 9 AM, humanized body (TDD)
|
||||||
- [ ] 11-03-PLAN.md — Backend plumbing: schema field, outbox preserve-on-edit, sync upsert, occurrence surfacing
|
- [ ] 11-03-PLAN.md — Backend plumbing: schema field, outbox preserve-on-edit, sync upsert, occurrence surfacing
|
||||||
|
|
||||||
|
**Wave 3** *(blocked on Wave 2 completion)*
|
||||||
|
|
||||||
- [ ] 11-04-PLAN.md — EventForm reminder picker (allDay swap, edit pre-population) + client types + Playwright smoke
|
- [ ] 11-04-PLAN.md — EventForm reminder picker (allDay swap, edit pre-population) + client types + Playwright smoke
|
||||||
|
|
||||||
**UI hint**: yes
|
**UI hint**: yes
|
||||||
|
|||||||
+3
-3
@@ -2,9 +2,9 @@
|
|||||||
gsd_state_version: 1.0
|
gsd_state_version: 1.0
|
||||||
milestone: v1.1
|
milestone: v1.1
|
||||||
milestone_name: Operability & Polish
|
milestone_name: Operability & Polish
|
||||||
status: verifying
|
status: executing
|
||||||
stopped_at: Phase 11 UI-SPEC approved
|
stopped_at: Phase 11 UI-SPEC approved
|
||||||
last_updated: "2026-06-14T00:53:26.431Z"
|
last_updated: "2026-06-14T01:26:07.775Z"
|
||||||
last_activity: "2026-06-13 - Completed quick task 260613-ndv: isolated local apps/api tests to familysync_test (dev DB no longer polluted)"
|
last_activity: "2026-06-13 - Completed quick task 260613-ndv: isolated local apps/api tests to familysync_test (dev DB no longer polluted)"
|
||||||
progress:
|
progress:
|
||||||
total_phases: 21
|
total_phases: 21
|
||||||
@@ -27,7 +27,7 @@ See: .planning/PROJECT.md (updated 2026-06-10)
|
|||||||
|
|
||||||
Phase: 13
|
Phase: 13
|
||||||
Plan: Not started
|
Plan: Not started
|
||||||
Status: Phase complete — ready for verification
|
Status: Ready to execute
|
||||||
Last activity: 2026-06-13 - Completed quick task 260613-ndv: isolated local apps/api tests to familysync_test (dev DB no longer polluted)
|
Last activity: 2026-06-13 - Completed quick task 260613-ndv: isolated local apps/api tests to familysync_test (dev DB no longer polluted)
|
||||||
|
|
||||||
### ✅ Resolved Checkpoint — Phase 15 Plan 15-03 Task 2 (human-action)
|
### ✅ Resolved Checkpoint — Phase 15 Plan 15-03 Task 2 (human-action)
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
phase: 11-per-event-reminders
|
phase: 11-per-event-reminders
|
||||||
plan: 02
|
plan: 02
|
||||||
type: tdd
|
type: tdd
|
||||||
wave: 1
|
wave: 2
|
||||||
depends_on: []
|
depends_on: [11-01]
|
||||||
files_modified:
|
files_modified:
|
||||||
- apps/api/src/broker/reminderScheduler.ts
|
- apps/api/src/broker/reminderScheduler.ts
|
||||||
- apps/api/tests/broker/reminderScheduler.test.ts
|
- apps/api/tests/broker/reminderScheduler.test.ts
|
||||||
@@ -16,7 +16,7 @@ must_haves:
|
|||||||
- "A timed event with reminderLeadMinutes=0 produces no push; an all-day event with 0 fires at 9 AM on the event date"
|
- "A timed event with reminderLeadMinutes=0 produces no push; an all-day event with 0 fires at 9 AM on the event date"
|
||||||
- "Reminders fire on personal calendars too (the isShared-only restriction is dropped)"
|
- "Reminders fire on personal calendars too (the isShared-only restriction is dropped)"
|
||||||
- "The same event fires exactly once across consecutive ticks; a rescheduled event (new dtstart) re-fires — dedup key is uid:dtstartMs"
|
- "The same event fires exactly once across consecutive ticks; a rescheduled event (new dtstart) re-fires — dedup key is uid:dtstartMs"
|
||||||
- "Push body is humanized to the largest sensible unit (30 min / 1 hour / 1 day / 7 days)"
|
- "Push body is humanized to the largest sensible unit (30 min / 1 hour / 1 day / 7 days) (D-09)"
|
||||||
artifacts:
|
artifacts:
|
||||||
- path: "apps/api/src/broker/reminderScheduler.ts"
|
- path: "apps/api/src/broker/reminderScheduler.ts"
|
||||||
provides: "humanizeLeadMinutes, variable-lead query, uid:dtstartMs dedup, all-day 9 AM branch, NULL-vs-0 guard, dropped isShared restriction"
|
provides: "humanizeLeadMinutes, variable-lead query, uid:dtstartMs dedup, all-day 9 AM branch, NULL-vs-0 guard, dropped isShared restriction"
|
||||||
@@ -66,7 +66,7 @@ NOTE: `computeAlertInstantUtc` is created by Plan 11-01 in vevent.ts and importe
|
|||||||
</artifacts_this_phase_produces>
|
</artifacts_this_phase_produces>
|
||||||
|
|
||||||
<context_note>
|
<context_note>
|
||||||
This plan imports `computeAlertInstantUtc` from `../broker/vevent.js` (created in Plan 11-01). Until Plan 11-01 merges, the all-day-9AM test (Wave 0 gap) cannot pass — this plan is wave 1 alongside 11-01 but the all-day task's automated verify depends on 11-01's symbol. Sequence the all-day task LAST within this plan; if 11-01 has not yet landed in the shared tree, the executor imports the symbol signature as specified in 11-01's artifacts list and the test goes RED until both merge. Do not redefine computeAlertInstantUtc here.
|
This plan imports `computeAlertInstantUtc` from `../broker/vevent.js` (created in Plan 11-01). This plan is **wave 2, `depends_on: [11-01]`** — 11-01 lands before this plan runs, so the symbol is available and the all-day-9AM test can go GREEN within this plan. Sequence the all-day task LAST within this plan. Do not redefine computeAlertInstantUtc here — import it from 11-01.
|
||||||
</context_note>
|
</context_note>
|
||||||
|
|
||||||
<tasks>
|
<tasks>
|
||||||
|
|||||||
Reference in New Issue
Block a user