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
|
milestone_name: Operability & Polish
|
||||||
status: completed
|
status: completed
|
||||||
stopped_at: Phase 9 context gathered
|
stopped_at: Phase 9 context gathered
|
||||||
last_updated: "2026-06-12T18:02:28.162Z"
|
last_updated: "2026-06-12T18:28:01.547Z"
|
||||||
last_activity: 2026-06-12
|
last_activity: 2026-06-12 -- Phase 09 planning complete
|
||||||
progress:
|
progress:
|
||||||
total_phases: 18
|
total_phases: 18
|
||||||
completed_phases: 5
|
completed_phases: 5
|
||||||
@@ -28,7 +28,7 @@ See: .planning/PROJECT.md (updated 2026-06-10)
|
|||||||
Phase: 999.1
|
Phase: 999.1
|
||||||
Plan: Not started
|
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
|
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)
|
### 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)"
|
- "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"
|
- "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)"
|
- "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:
|
artifacts:
|
||||||
- path: "apps/api/src/lib/outboxTrigger.ts"
|
- path: "apps/api/src/lib/outboxTrigger.ts"
|
||||||
provides: "Zero-dependency in-process EventEmitter drain signal (signalOutboxDrain, onOutboxDrain)"
|
provides: "Zero-dependency in-process EventEmitter drain signal (signalOutboxDrain, onOutboxDrain)"
|
||||||
|
|||||||
Reference in New Issue
Block a user