| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(macos): route all proactive notifications through the JIT ambient lane with derived intent and a paced budget (#12549) * feat(macos): route all proactive notifications through the JIT ambient lane with derived intent and a paced budget A JIT-admitted account with no standing trigger produced zero Insight/Task notifications since #12452 made an empty watchlist suppress, while the legacy director was bypassed on every context visit. The ambient lane's eight nano triages per day were also consumed within about a minute of the first activity after local midnight, leaving the lane dead for the rest of the day (owner account, 2026-08-30/31). - Empty complete watchlist falls through to the ambient lane. - Derived, expiring standing intent (open tasks, active goals, calendar presence) is compiled locally, matched deterministically, prioritised by the pacing policy, and grounds the full turn. Never a ledger row, never sent to the server. - JITAmbientPacingPolicy spreads the daily nano budget (burst of two, then active-day/budget spacing, two reserved for intent matches) at the same server-authoritative totals. - The legacy focus-nudge assistant yields while the JIT lane is active; the ambient full turn may answer focus_nudge under the Focus badge. - Every admission and delivery-phase outcome is named in telemetry (empty_watchlist, ambient_paced, delivery_* reasons were 'other'/silent). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * feat(macos): address independent review of the JIT ambient lane - Back off 30 minutes per local budget day after the server denies a nano reservation instead of re-reserving on every qualifying visit. - Scope the legacy/JIT focus handoff to the admitted owner and publish it at startup snapshot sync, so the two producers never overlap and a later owner never inherits it. - Emit one undeduped, content-free jit_proactivity_delivery event per terminal outcome with a bounded decision kind. - Require two discriminating keywords per derived entry and treat generic workflow words as stopwords. - Register the Windows empty-watchlist divergence in the parity register. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> | 20 小时前 |