# PRD version 1.6 text, row 139 (#1633), for Mos Written by Dewey for Sage to send to Mos (sage-0528, sage-0539). It records Jason's ruling Q169. The candidate (manifest a4c5657f…, base 5661bd233) carries this text in docs/prd/mosaic-stack.md. Mos answered in sage-0545: readings 1 to 4 are accepted, and the text is approved with the two REQ-ROLE-2 sentences Mos added (below). The version Mos checked was sha256 e5226044…, before that addition. Q169, verbatim: "The only agent that should be able to remove the assistant role is the chief of staff. The COS and the user should have the ability to (re)configure the assistant role and seat name. The user via WebUI or CLI, the COS via the proper tooling." ## The changed text **Status line.** "approved, version 1.5" becomes "approved, version 1.6". This sentence goes in after the Q167 sentence and before "It is never edited in place": > Version 1.6 records Jason's ruling Q169 of 2026-10-16, on who removes and who configures the > assistant. **New source block**, before the version 1.5 source: > - Version 1.6 source, Jason's ruling Q169 (DECISIONS, brain repo, 2026-10-16): "The only agent > that should be able to remove the assistant role is the chief of staff. The COS and the user > should have the ability to (re)configure the assistant role and seat name. The user via WebUI > or CLI, the COS via the proper tooling." **REQ-ROLE-2.** These sentences are added after "and the revoke cites it.": > The assistant is the exception here too (version 1.6, Q169): the chief of staff is the only > agent that removes it. The chief of staff removes it by ending its runs, and that end needs no > decision. A revoke of the assistant, the chief's included, is a hard wait under REQ-WAIT-1. > Anyone else's revoke of the assistant must cite a decision the human resolved through the CLI. > A decision an arbiter resolved doesn't count, and that revoke is refused. > > The second and third sentences are Mos's addition (sage-0545), checked against broker.mjs: a > chief's `role.revoke` with a reason consumes `role.end` (line 1171), which is routed, not a hard > wait (lines 55, 62-63), and within-role for the chief, so it returns with no decision (line 659), > and `#protectedEnd` exempts the chief (line 502, called at 1173). A raise to revoke the assistant > is classified `gated` by `#hardWait` (lines 494, 508) whoever raises it, `#hardWait` doesn't read > the raiser, and line 1232 keeps it from the arbiter, so it goes to the human (line 1233). **REQ-ROLE-4.** These sentences are added after "Jason's may be named Mos.": > Since version 1.6 (Q169), the user and the chief of staff can configure the assistant's role > entry and its seat name: the user through the WebUI or the CLI, the chief of staff through its > broker tools, which log each change. No other role can, and a change can't remove the > assistant's protection under REQ-ROLE-2. **REQ-WAIT-1.** These sentences are added after "REQ-ROLE-2 still requires a resolved decision for a revoke.": > Since version 1.6 (Q169), a `role.revoke` of the assistant is a hard wait: its raise goes to the > human, cited or not, and no arbiter resolves it. Every other cited revoke routes by REQ-DEC-2. **Notes, a new "Version 1.6" item:** > - Version 1.6: > - The 1.5 text of REQ-ROLE-2 ended at "and the revoke cites it." The 1.5 text of REQ-ROLE-4 > ended at "Jason's may be named Mos." The 1.5 text of REQ-WAIT-1 ended at "REQ-ROLE-2 still > requires a resolved decision for a revoke." > - Removing the assistant, in this version, means ending or revoking its runs. Deleting the > instance from the organization file is not covered. The protected definitions are > `END_PROTECTED` in `packages/bus/src/broker.mjs`, which holds `assistant`. > - Configuring the assistant covers its organization entry's `vars` and `tracker`, and its > `definition` among those the broker treats as the assistant. `holder` and `credentials` are > not covered. > - Where each part is built: the refusal and the hard wait are row 139 (#1633). Configuring the > assistant and its seat name, and making the chief of staff's end or a human-approved revoke > stop an assistant run, are row 155 (#1649), using row 141's (#1635) instance names. Until > row 155 lands, the assistant's runs hold thread claims that the end and revoke paths don't > read, so neither can stop one. The human stops one with `mosaic stop `. ## Readings Mos should confirm Q169 doesn't settle these points. The text above takes one reading of each. 1. **A human-approved revoke by another role.** Q169 says the chief of staff is the only agent that removes the assistant. The text still lets another role revoke it when the revoke cites a decision the human resolved. That is sage-0528's item 1: the human decides, and the agent only carries the decision out. The stricter reading refuses every revoke of the assistant by a role other than the chief, approved or not. 2. **"Through the CLI".** The broker records `via 'cli'` for every human session's resolve (broker.mjs, decision.resolve). The WebUI has no resolve path in packages/webui/src today, so the CLI is the only way a human resolves now. If the WebUI gains one through the human session, it records `cli` too. "Through the CLI" therefore means "by the human", not "not the WebUI". 3. **Scope of "configure".** The text covers vars, tracker, the definition among assistant definitions, and the seat name. It leaves out holder and credentials. Q169 says "(re)configure the assistant role and seat name" and doesn't list fields. Row 155 builds against this list. 4. **Scope of "remove".** The text means ending or revoking the assistant's runs. It doesn't cover deleting the instance from the organization file. REQ-ROLE-3 already limits writes to that file to the user and the chief.