Phase 9: Faster Write-Back (CAL-15) — event-driven outbox drain #14
+3
-3
@@ -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)"
|
||||
|
||||
Reference in New Issue
Block a user