diff --git a/docs/agent-lifecycle/approvals.md b/docs/agent-lifecycle/approvals.md index 07dd6db0..5daaa0d1 100644 --- a/docs/agent-lifecycle/approvals.md +++ b/docs/agent-lifecycle/approvals.md @@ -216,15 +216,15 @@ target drives `push_todo`'s own upsert-by-key dedup: a re-fire of the *same schedule* against a target that hasn't reviewed the last one collapses into that one todo instead of stacking up. -**`operator` is the one exception** — it's a valid schedule target but -has no in-container todo inbox, so it keeps the original broker -`Message` path (the dashboard mirrors `to == operator` into its own -pane, same as before). +`operator` is not a valid schedule target — she isn't a container with +a todo inbox to push a wake into, and this mechanism is for fanning a +prompt out to agents, not scheduling something at her. Rejected at +submit/edit time (`ScheduledPrompts::submit`/`update`). ### Missing-target failure When a target name doesn't resolve to a known agent (container -destroyed, operator typo, etc.) the worker: +destroyed, typo, etc.) the worker: 1. Records `last_result = "no such agent: "` on the per-target row. diff --git a/frontend/packages/dashboard/src/schedules.js b/frontend/packages/dashboard/src/schedules.js index a0b6edca..611133a1 100644 --- a/frontend/packages/dashboard/src/schedules.js +++ b/frontend/packages/dashboard/src/schedules.js @@ -238,22 +238,23 @@ function intervalSecondsFromFormData(fd, namePrefix) { // Targets multi-select chip box — shared between the new-schedule // form and the edit-schedule form. Same DOM shape, same candidate -// list (containers + operator + root); only the chip element id +// list (containers + root); only the chip element id // prefix and checkbox field name vary. Used to be inlined twice in // near-identical 18-line blocks; consolidated here so a future // change (new chip kind, candidate-list source swap, etc.) lives in // one place. Returns the wrapping `