plans: row 90 covers PM fault 10, asking for a stop with no task (#1584)

A non-blocking role.revoke routes to the human without a task; the
tool description and session text say so, and how a run is stopped.
The broker's blocking-needs-a-task rule stays (Mos sage-0107, #228
c91).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
2026-10-12 14:53:20 -05:00
co-authored by Claude Opus 5.5
parent 6d0f3701fb
commit 4d095b773e
+20 -1
View File
@@ -119,6 +119,13 @@ Two more gaps from #228 c78 are words, not missing paths:
non-blocking decision needs none. `prd.approve` is gated
(`broker.mjs:29`), so it routes to the human. Nothing tells the PM
this.
- The same rule stopped the PM asking Jason to stop the coder and
reviewer (PM fault 10, #228 c91, Mos sage-0107). It raised a blocking
`role.revoke` with no task and got `task-required`. A non-blocking one
routes to the human, since `role.revoke` is gated too
(`broker.mjs:38`). Stopping a run is the human's own verb
(`mosaic stop`; `launch.revoke` is human-only, `broker.mjs:815-823`),
and nothing in the session text says so.
### Owner and reviewer
@@ -135,6 +142,8 @@ Filbert.
`task_create`'s `request` description only
- `roles/pm.md`, the paragraphs on creating tasks and raising decisions
only
- `packages/harness/src/bundle.mjs`, one session-text line on stopping
a run, and `tools.mjs`'s `raise_decision` `blocking` description
- `packages/tasks/README.md`, `packages/bus/README.md`
- tests under `packages/tasks/tests/`, `packages/bus/tests/` and
`packages/harness/tests/`
@@ -161,10 +170,20 @@ Filbert.
a RESULT.
- `task_create`'s `request` says it is the `request` field of the human
message being answered, not the message id. `pm.md` says the same.
- `raise_decision`'s `blocking` (`tools.mjs:100`, today "True when you
can't continue without the answer") says a blocking decision holds a
task and needs `task_ref`; a request with no task is non-blocking. The
broker's rule stays: a blocking decision with no task still refuses
`task-required`.
- The session text says a run is stopped by the human with `mosaic
stop`; a session that thinks a run should stop raises `role.revoke`
with `blocking` false, naming the run, and says why. `pm.md` says the
same.
- Tests: the PM's role session raises that `prd.approve` decision with
no task and it routes to the human; `task.create` with a message id
still refuses `request-not-found`, and with that message's `request`
it passes the request check.
it passes the request check; a non-blocking `role.revoke` with no
task from the PM routes to the human's Inbox.
Suites: the tasks, bus, harness, webui and cli node suites, and every
`scripts/test-*.sh`.