agents: Dewey row 139 round 2, Mos's REQ-ROLE-2 sentences (#1633)
PRD 1.6 REQ-ROLE-2 gains Mos's two sentences (sage-0545): the chief ends the assistant with no decision, and any revoke of it is a hard wait. Checked against broker.mjs; the code already does both. New candidate: patch a5f21ead, manifest a4c5657f. Both PRD-reading tests pass; repro OK. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -12,8 +12,13 @@ superseded by Q169.
|
||||
Round 2 follows Jason's ruling Q169 (sage-0528), which replaces Mos's sage-0523 ruling that the
|
||||
first round 2 build followed. See "Round 2" below. Round 1's gate and mutant outputs stay in gate/
|
||||
and mutants/. Round 2's are in r2/. Round 1's candidate is build.patch and
|
||||
candidate-manifest.sha256 at commit 62f354746. The ones at the packet root are round 2's.
|
||||
PRD-1.6.md holds the 1.6 text for Sage to send to Mos.
|
||||
candidate-manifest.sha256 at commit 62f354746. The ones at the packet root are round 2's, with
|
||||
Mos's REQ-ROLE-2 sentences (sage-0545): build.patch sha256
|
||||
a5f21ead8195382fbf21da0ee8f66b794329c4b7f8737fa942ccd6c219524e3f, candidate-manifest.sha256
|
||||
sha256 a4c5657ff69ef0665285e4c2095858346f2d325d454c6fa99edd999633dcd0f0. The round 2 candidate
|
||||
before those sentences (patch 7a29d911…, manifest 7a1fcae1…) is at commit c740f56ee and differs
|
||||
only in docs/prd/mosaic-stack.md. PRD-1.6.md holds the 1.6 text. Mos accepted it with the added
|
||||
sentences, and readings 1 to 4 (sage-0545). See "PRD sentence (sage-0545)" below.
|
||||
|
||||
Base: 5661bd233bbe3e1f03a64a76ad7edcd9f6e41e89 (base.txt, origin/refactor after row 135). The
|
||||
candidate is build.patch on that base. candidate-manifest.sha256 lists every changed path with its
|
||||
@@ -209,6 +214,40 @@ It's stale, and row 155 owns the fix (sage-0539).
|
||||
- **The harness raise_decision description** (packages/harness/src/tools.mjs:195) doesn't mention
|
||||
that a spec citation changes the route. Harness text isn't in row 139's files.
|
||||
|
||||
## PRD sentence (sage-0545)
|
||||
|
||||
Mos approved the 1.6 text with two sentences added to REQ-ROLE-2 after "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."
|
||||
They went in verbatim, because the candidate's broker.mjs already does both:
|
||||
|
||||
- **The chief's end needs no decision.** A `role.revoke` with `reason` (line 1168) consumes
|
||||
`role.end` (line 1171). `role.end` is in ROUTED (line 55), so it isn't in HARD_WAITS or GATED
|
||||
(lines 62-63), and `#hardWait` only adds `role.revoke` (line 494). For a chief granted `role.end`
|
||||
within-role (REQ-COS-1), #checkAuthority returns with no decision (line 659). `#protectedEnd`
|
||||
(line 1173) passes for the chief's definition (line 502). Past that, the end refuses `not-held`
|
||||
until row 155.
|
||||
- **The chief's revoke is a hard wait.** `#hardWait` (line 494) reads the target's definition, not
|
||||
the raiser, so `#classification` returns `gated` for anyone's raise (line 508). Line 1232 keeps
|
||||
a hard wait from the arbiter, cited or not, and line 1233 routes it to the human.
|
||||
- **A nuance, not a mismatch.** In #checkAuthority (line 681), `#protectedEnd` passes the chief
|
||||
whatever recorded the resolution. A revoke decision the chief raised while the target's
|
||||
definition wasn't protected, and an arbiter resolved, would pass the protection for the chief
|
||||
after the definition changed. Another role's would be refused (Q169 test 2). Changing a
|
||||
definition is configuration, which is row 155's.
|
||||
- **Not tested directly.** No test raises a revoke of the assistant as the chief. Q169 tests 2 and
|
||||
5 raise it as coder, lead and boss, and the path has no raiser check to differ on. Sage scoped
|
||||
this round to the PRD (sage-0545), so no test was added.
|
||||
|
||||
Reruns on the edited candidate, each file singly, 2026-10-16T19:15:11Z, outputs in r2/prd/:
|
||||
|
||||
- packages/bus/tests/requirements.test.mjs: 3 pass, 0 fail.
|
||||
- packages/tasks/tests/requirements.test.mjs: 3 pass, 0 fail.
|
||||
- The candidate's new tests (both hard-waits files) don't read docs/prd/mosaic-stack.md, so there
|
||||
was nothing else to rerun. A grep of packages/*/tests and scripts/test-*.sh found only those two.
|
||||
|
||||
repro.sh on the new patch, in a fresh worktree at base.txt: DIGESTS_OK. The worktree was removed.
|
||||
|
||||
## Gate, round 2 (Q169)
|
||||
|
||||
Run under Sage's slot (sage-0533, sage-0539; the slot was Dewey's from 19:06Z), from the worktree at the
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
# 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 7a1fcae1…, base 5661bd233) carries this text in docs/prd/mosaic-stack.md.
|
||||
Row 139 doesn't move to in-review until Mos answers on it.
|
||||
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
|
||||
@@ -26,9 +28,17 @@ after the Q167 sentence and before "It is never edited in place":
|
||||
**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. 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.
|
||||
> 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.":
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/docs/prd/mosaic-stack.md b/docs/prd/mosaic-stack.md
|
||||
index bb4ddcd20..48c6ed79d 100644
|
||||
index bb4ddcd20..794a39bbb 100644
|
||||
--- a/docs/prd/mosaic-stack.md
|
||||
+++ b/docs/prd/mosaic-stack.md
|
||||
@@ -1,6 +1,6 @@
|
||||
@@ -27,20 +27,23 @@ index bb4ddcd20..48c6ed79d 100644
|
||||
- Version 1.5 source, Jason's words relayed by Mos on 2026-10-15:
|
||||
- Q167: "Me having to approve every decision within the Stack is not
|
||||
working for me. I gave a directive, I want it to be done." and "Use
|
||||
@@ -175,7 +181,11 @@ parent requirement is refused.
|
||||
@@ -175,7 +181,14 @@ parent requirement is refused.
|
||||
claim takes a lock and logs it, and releasing the role or ending the run
|
||||
frees it. The chief of staff may end another role's run, and that act is
|
||||
logged with its reason. Anyone else who revokes a stuck holder needs a
|
||||
- resolved decision, and the revoke cites it.
|
||||
+ resolved decision, 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. 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.
|
||||
+ 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.
|
||||
- **REQ-ROLE-3.** An organization file declares the role instances,
|
||||
the arbiters and the credential references. The user and the chief of
|
||||
staff write it. The chief of staff's writes go through a broker verb
|
||||
@@ -193,7 +203,11 @@ parent requirement is refused.
|
||||
@@ -193,7 +206,11 @@ parent requirement is refused.
|
||||
|
||||
The schema can also declare CEO, CFO and the other C-suite roles. The
|
||||
assistant's name is set in the organization file. Jason's may be named
|
||||
@@ -53,7 +56,7 @@ index bb4ddcd20..48c6ed79d 100644
|
||||
|
||||
Added in version 1.5 (Q167):
|
||||
|
||||
@@ -342,6 +356,9 @@ Added in version 1.5 (Q167).
|
||||
@@ -342,6 +359,9 @@ Added in version 1.5 (Q167).
|
||||
exactly these actions. `git.merge.protected`, `policy.change`,
|
||||
`prd.approve` and `role.revoke` leave those lists and route by
|
||||
REQ-DEC-2. REQ-ROLE-2 still requires a resolved decision for a revoke.
|
||||
@@ -63,7 +66,7 @@ index bb4ddcd20..48c6ed79d 100644
|
||||
- **REQ-WAIT-2.** No role file may grant a hard-wait action, at any
|
||||
class, and the validator refuses a file that does. A change to the
|
||||
hard-waits list, or a grant of a hard-wait action to a role, is itself
|
||||
@@ -859,6 +876,26 @@ only hard waits in his inbox.
|
||||
@@ -859,6 +879,26 @@ only hard waits in his inbox.
|
||||
made with git outside the Console is a later row.
|
||||
- REQ-LAND-1's refusal of a gated merge decision is pinned in rows 137
|
||||
and 139. Row 139 carries it, or row 137 if 139 lands first.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
5f150904571ab63bf7a0a86c3a6f0ac465634044fdb766fbdefb0889a6371c52 docs/prd/mosaic-stack.md
|
||||
a173b6d92f0eaace16a11a37aa383640235948bf02e473c0364a13ed92077ff2 docs/prd/mosaic-stack.md
|
||||
c42d44227fcae7398bfc3773f726c0fddb978bad68bf274b6bc8092ebb338337 packages/bus/README.md
|
||||
ba4c455a858786c0d16a38dd11acb3ab37cf0ea3e6f77f4e1326f1898b1471a2 packages/bus/src/broker.mjs
|
||||
56a719657be0cf7fe1c9da52a60ce151af6ef59ccce5c64d761e4d49a6af911e packages/bus/tests/chief-of-staff.test.mjs
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
✔ requirements returns the committed list to a holding role session, and no one else (96.261378ms)
|
||||
✔ the PM's prd.approve with no task, when no id fits, reaches the human's Inbox (68.428264ms)
|
||||
✔ the PM's non-blocking role.revoke with no task reaches the human's Inbox (68.827439ms)
|
||||
ℹ tests 3
|
||||
ℹ suites 0
|
||||
ℹ pass 3
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 293.962341
|
||||
@@ -0,0 +1,11 @@
|
||||
✔ the list holds the PRD's requirement ids, in its order, at its version (1.240958ms)
|
||||
✔ the committed list loads frozen (0.610572ms)
|
||||
✔ the schema refuses any other shape (2.23219ms)
|
||||
ℹ tests 3
|
||||
ℹ suites 0
|
||||
ℹ pass 3
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 48.266464
|
||||
Reference in New Issue
Block a user