From 15cbc1027850fd54a9b6583ed7c5b927e7f4bbca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Sat, 16 May 2026 13:11:26 +0200 Subject: [PATCH] docs(brief): decouple Coach SSE from the v1.5 ship gate per iOS-team pivot MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit §5b "Coach SSE" and §6 "Coach SSE drawer iOS implementation" both reframed per `.planning/RESPONSE-TO-IOS-TEAM-2026-05-16.md` §3 R6. The server endpoint `GET /api/insights/chat` stays live indefinitely for PWA users, future iOS reevaluation post-MDR, and any other client that adopts the SSE protocol. v1.5.0 iOS ships Apple Foundation Models on-device Daily Briefing + Trend Observations as the primary assistant surface; a native server-Coach drawer is deferred pending MDR Class-IIa pre-review. --- .planning/ios-contributor-current-brief.md | 34 +++++++++++++++------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/.planning/ios-contributor-current-brief.md b/.planning/ios-contributor-current-brief.md index 2ffef13ad..e9d293af5 100644 --- a/.planning/ios-contributor-current-brief.md +++ b/.planning/ios-contributor-current-brief.md @@ -493,11 +493,18 @@ Mode-switching is iOS-local; the server has no concept of "this user is in standalone mode". The server just answers whatever the iOS app asks. -### Coach SSE — the v1.5 differentiator +### Coach SSE — server endpoint stays live; iOS native drawer deferred -By v1.5.0 the iOS Coach drawer is the native implementation of -`GET /api/insights/chat`. Reference web implementation in -`src/components/insights/coach-panel/`. Contract specifics: +Coach SSE remains live as a server endpoint. iOS native server-Coach +drawer is deferred pending MDR Class-IIa pre-review. v1.5.0 ships +iOS with Apple Foundation Models on-device Daily Briefing + Trend +Observations as the primary assistant surface. The server's +`GET /api/insights/chat` SSE endpoint stays live for: PWA users on +non-AFM-capable devices, future iOS reevaluation post-MDR, any other +client that adopts the SSE protocol. + +Contract for any future iOS adoption (or for the PWA + non-iOS +consumers today): - Server-Sent Events stream - Token-by-token streaming text @@ -506,6 +513,8 @@ By v1.5.0 the iOS Coach drawer is the native implementation of - 429 `coach.budget.exceeded` on rate-limited paths - 403 `assistant.disabled.coach` if the operator-side flag is off +Reference web implementation: `src/components/insights/coach-panel/`. + ### Push notifications (post-APNs `.p8` paste) The APNs scaffolding exists server-side. After the operator pastes @@ -545,12 +554,18 @@ pasting the `.p8` into the deployment environment. This blocks push notifications only; everything else functions without it. -### Coach SSE drawer iOS implementation +### Coach SSE drawer iOS implementation — deferred past v1.5 Per R-E C-1, the iOS Coach drawer has zero native code today. The -server-side SSE endpoint at `/api/insights/chat` is live and tested. -The v1.5 differentiator is the native Coach drawer. The iOS side is -the implementation: +server-side SSE endpoint at `/api/insights/chat` stays live and +tested. v1.5.0 ships iOS with Apple Foundation Models on-device +Daily Briefing + Trend Observations as the primary assistant +surface; a native server-Coach drawer is deferred pending the MDR +Class-IIa pre-review. No server-side coordination needed for the +deferral — the SSE endpoint is already shaped for the PWA + any +future client that re-enters this work. + +If a future iOS revisit lands post-MDR, the contract is: - `CoachService` actor over `URLSession.bytes` - `CoachStreamEvent` AsyncThrowingStream @@ -561,8 +576,7 @@ the implementation: - `coach.budget.exceeded` 429 surface Pattern reference: `src/components/insights/coach-panel/` (web -implementation) is the model. The iOS implementation should mirror -the user experience while consuming the same SSE stream. +implementation) stays the model whenever iOS reopens the work. ### Source-priority editor