docs(plans): finish delivery-path correction in diagrams + overview

Two spots the prior citation pass missed still framed alert delivery as reused from automations. Align them with the committed correction: recurrence/audit reuse automations; alerts ride app/notifications; per-Tracker lock guards concurrency (gate is non-atomic). Also genericize the Maps actor as not-committed-for-MVP.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
DESKTOP-RTLN3BA\$punk 2026-06-30 21:58:12 -07:00
parent 05bbb64527
commit f964e59686
2 changed files with 14 additions and 9 deletions

View file

@ -84,15 +84,18 @@ data is out; *user uploads* still work (and gain a CI context-folder role).
per Tracker; materiality = code thresholds (numeric/clear) + agent on ambiguous; content-hash pre-check.
- Orchestration is a first-class deliverable: a **net-new CI-expert subagent** (`intelligence_agent`) on
the existing chat runtime, with registry-backed verb tools + Tracker/Timeline tools.
- **Recurrence + alert delivery = a CI *action* on the existing automations** (not a new scheduler, not a
new shape): reuses the hardened schedule selector, `AutomationRun` (audit + idempotency), and delivery.
CI core still runs with **zero** automations dependency (manual/agent/cron).
- **Recurrence = a CI *action* on the existing automations** (not a new scheduler, not a new shape):
reuses the hardened schedule selector + `AutomationRun` (audit). The PENDING-gate is **non-atomic**, so a
**per-Tracker lock** is the real concurrency guard. **Alert delivery is separate** — automations have no
delivery path (`run.output` unwritten); alerts ride `app/notifications/`. CI core still runs with **zero**
automations dependency (manual/agent/cron).
- **No new run table:** refresh audit/idempotency ride `AutomationRun` or the chat job record; billing
idempotency is per-capability-call + the content-hash pre-check. Only the Timeline is new state.
- **Billing is delegated to the billing service:** verbs declare a `billing_unit`; `03c` is the first
provider; `maps.*` / `web.discover` register their own units there.
- The **Google Maps actor is net-new** (not in shipped Phases 13) and is designed/built as a **separate
effort**; `maps.*` verbs are contracts against it and don't block this design.
- **Any platform actor** (e.g. a Maps actor — illustrative, **not committed for MVP**) is net-new (not in
shipped Phases 13) and would be designed/built as a **separate effort**; per-platform verbs (`<platform>.*`,
e.g. `maps.*`) are contracts against it and don't block this design.
- **CI context files:** files uploaded in a CI chat go into the **KB as normal** (indexed), routed to a
dedicated `Folder`, and may feed the materiality judge via KB retrieval. ("Don't index" applies only to
*crawled* data.)

View file

@ -153,15 +153,17 @@ flowchart LR
RF --> TLW[("writes Timeline · 05a")]
CA -. "schedule selector" .-> SEL["hardened cron selector"]
CA -. "run record + idempotency" .-> AR["AutomationRun (PENDING-gate)"]
CA -. "delivery" .-> DEL["alert / output to user"]
CA -. "run record + idempotency" .-> AR["AutomationRun (PENDING-gate, non-atomic → + per-Tracker lock)"]
RF -. "on material change" .-> DEL["alert via app/notifications (Zero-synced)"]
classDef opt fill:#3a2f1f,stroke:#bf975b,color:#f7efe6;
class CA,SEL,AR,DEL opt;
class CA,SEL,AR opt;
```
CI **core** (`refresh` + Timeline) has **zero** automations dependency — manual/agent/cron all work
standalone. The CI **action** is the *optional* adapter that buys recurrence + idempotency + delivery.
standalone. The CI **action** is the *optional* adapter that buys recurrence + audit. **Delivery is not
from automations** (no such path) — alerts on material change ride the separate `app/notifications/`
system; concurrency is guarded by a per-Tracker lock (the automation PENDING-gate is non-atomic).
## 6. The persisted state — Timeline data model (05a)