FEAT-012 deferred task — tracking issue (filed per constitution Development Workflow / CLAUDE.md; closes analyze Round 11 F2).
What
Push-based live updates (FR-064): live surfaces (Events, Queue, attention queue, notifications, master-summary "last activity") should reflect a new daemon-side event within the 2-second budget via a real subscription instead of polling.
Why deferred / blocked
True push needs the daemon to expose a streaming subscription method — app.events.subscribe(params: { since_cursor?, classes? }) returning SSE-style frames { ok, app_contract_version, stream: { class, payload } } inside the existing Unix-socket framing. That method does not exist in FEAT-011 (0 matches in main).
Upstream status — not yet created
Pre-specced in specs/012-flutter-control-panel/upstream-feat011-extension-draft.md §(c); to be built in the proposed FEAT-015 daemon feature (alongside app.handoff.draft).
Unblock steps
- From root on
main, /speckit.specify FEAT-015 adding app.events.subscribe (seed from draft §c); plan → tasks → implement (must preserve FEAT-011 FR-003a/b framing + caps).
- FEAT-012 client side: replace the
ref.invalidate(...) polling Provider with the streaming subscription across the Phase 4-8 list providers; flip T154(c) to measure push propagation.
Ships today (interim, conformant)
Per-surface polling at research-R-32 cadence (1 s foreground / 5 s background / paused when minimized) — already meets the FR-064 2 s budget at foreground cadence.
Refs: FEAT-012 task T167, FR-064, swarm-review M-11, analyze C3.
FEAT-012 deferred task — tracking issue (filed per constitution Development Workflow / CLAUDE.md; closes analyze Round 11 F2).
What
Push-based live updates (FR-064): live surfaces (Events, Queue, attention queue, notifications, master-summary "last activity") should reflect a new daemon-side event within the 2-second budget via a real subscription instead of polling.
Why deferred / blocked
True push needs the daemon to expose a streaming subscription method —
app.events.subscribe(params: { since_cursor?, classes? })returning SSE-style frames{ ok, app_contract_version, stream: { class, payload } }inside the existing Unix-socket framing. That method does not exist in FEAT-011 (0 matches inmain).Upstream status — not yet created
Pre-specced in
specs/012-flutter-control-panel/upstream-feat011-extension-draft.md§(c); to be built in the proposed FEAT-015 daemon feature (alongsideapp.handoff.draft).Unblock steps
main,/speckit.specifyFEAT-015 addingapp.events.subscribe(seed from draft §c); plan → tasks → implement (must preserve FEAT-011 FR-003a/b framing + caps).ref.invalidate(...)polling Provider with the streaming subscription across the Phase 4-8 list providers; flipT154(c)to measure push propagation.Ships today (interim, conformant)
Per-surface polling at research-R-32 cadence (1 s foreground / 5 s background / paused when minimized) — already meets the FR-064 2 s budget at foreground cadence.
Refs: FEAT-012 task T167, FR-064, swarm-review M-11, analyze C3.