docs(09): create phase plan

This commit is contained in:
Lucas Berger
2026-06-12 14:28:09 -04:00
parent b22c92ae92
commit 5fdbd11475
2 changed files with 5 additions and 3 deletions
+3 -3
View File
@@ -4,8 +4,8 @@ milestone: v1.1
milestone_name: Operability & Polish
status: completed
stopped_at: Phase 9 context gathered
last_updated: "2026-06-12T18:02:28.162Z"
last_activity: 2026-06-12
last_updated: "2026-06-12T18:28:01.547Z"
last_activity: 2026-06-12 -- Phase 09 planning complete
progress:
total_phases: 18
completed_phases: 5
@@ -28,7 +28,7 @@ See: .planning/PROJECT.md (updated 2026-06-10)
Phase: 999.1
Plan: Not started
Status: Plans 15-01 + 15-02 complete; 15-03 Task 1 (publish.yml comment) committed (da623ac); 15-03 Task 2 awaiting operator after branch merges to main
Last activity: 2026-06-12
Last activity: 2026-06-12 -- Phase 09 planning complete
### Deferred Checkpoint — Phase 15 Plan 15-03 Task 2 (human-action)
@@ -18,6 +18,8 @@ must_haves:
- "Concurrent scheduleOutboxDrain() calls dispatch each pending row exactly once — no duplicate CalDAV PUT (D-07)"
- "runOutboxDrain's body and the isDraining guard are behaviorally unchanged — its existing 15 tests still pass"
- "scheduleOutboxDrain catches drain errors so a listener error never escapes the wrapper (D-02)"
- "No debounce/coalesce window and no rejection of mid-drain signals: drainRequested is a plain boolean that collapses every mid-drain signal into exactly one trailing drain — never rate-limited or dropped (D-06)"
- "Verification is fully automated by the trigger-wiring Vitest tests; no operator-stopwatch human checkpoint is required and the CI-guarded test is the durable latency evidence (D-10)"
artifacts:
- path: "apps/api/src/lib/outboxTrigger.ts"
provides: "Zero-dependency in-process EventEmitter drain signal (signalOutboxDrain, onOutboxDrain)"