gosalyn: PRD 1.16 routes library.write under REQ-LIB-6 (mos-1328, mos-1329, sage-2919, webby-0164 B2). REQ-WAIT-3 gains the routing paragraph with its bounds, creative roles only and within-role, Markdown under supporting folders a human marks, never a story file, the writing agent's live Gitea grant on the library project, one commit per write by its own account with the trailer, notice and revert. REQ-LIB-6 names the action. Status, the header, a 1.16 source line and a 1.16 note. requirements.json changes its version only, with the test pin

This commit is contained in:
jason.woltje committed 2026-10-23 11:15:49 -05:00
1 parent e909ef51a2
commit 4874d1e83a
3 files changed
+35 -6

No files matched your search

+33 -4
View File
@@ -1,6 +1,6 @@
# PRD: Mosaic Stack # PRD: Mosaic Stack
- Status: approved, version 1.15. Jason approved draft 0.4 unchanged as - Status: approved, version 1.16. Jason approved draft 0.4 unchanged as
1.0 on 2026-10-05 (lead decision 61). They approved version 1.1, the 1.0 on 2026-10-05 (lead decision 61). They approved version 1.1, the
Organization requirements, in decision 03130d08-ddce-480d-a601-e59f64744fc3 Organization requirements, in decision 03130d08-ddce-480d-a601-e59f64744fc3
on 2026-10-14. They approved version 1.2, the chief of staff, the on 2026-10-14. They approved version 1.2, the chief of staff, the
@@ -44,7 +44,17 @@
as 1.11 (mos-1233, mos-1238, mos-1241, vikunja:19/464). Version 1.15 as 1.11 (mos-1233, mos-1238, mos-1241, vikunja:19/464). Version 1.15
rewrites REQ-LIB-6 to Jason's Q223 and Q226 rulings and adds supporting rewrites REQ-LIB-6 to Jason's Q223 and Q226 rulings and adds supporting
folders to REQ-LIB-1 and REQ-LIB-2. Mos ordered it in mos-1320 item 8, folders to REQ-LIB-1 and REQ-LIB-2. Mos ordered it in mos-1320 item 8,
and Jason gets a report. and Jason gets a report. Version 1.16 routes the new action
`library.write` under REQ-LIB-6 (REQ-WAIT-3). A change to the hard waits
needs Jason's approval under REQ-WAIT-2, so Mos puts the text to him as
written, and it lands only after his yes (mos-1328, mos-1329).
- Version 1.16 source: Webby's review webby-0164 B2, from Scrooge's row
285. Version 1.15 lets creative agents write in supporting folders, but
the write action stayed a hard wait under REQ-WAIT-3, and REQ-WAIT-2
refuses every role file that grants one. Mos ruled in mos-1328 and
mos-1329 that the routing is its own version. The bounds come from
REQ-LIB-6 and the Case 2 design's ruling after r11, f6e3e7f20 on
`gosalyn/case2-design`.
- Version 1.15 source: Jason's Q223, answering Q29: "The agents are not - Version 1.15 source: Jason's Q223, answering Q29: "The agents are not
allowed to write the prose into the writing projects. Agents are allowed to write the prose into the writing projects. Agents are
allowed to CRUD character sheets, info summaries, cross-link info, and allowed to CRUD character sheets, info summaries, cross-link info, and
@@ -706,6 +716,14 @@ Added in version 1.5 (Q167).
`host.sudo` was added as a hard wait and routes under REQ-CRED-4 since `host.sudo` was added as a hard wait and routes under REQ-CRED-4 since
version 1.8. version 1.8.
`library.write` was added as a hard wait and routes under REQ-LIB-6
since version 1.16. It is granted within-role to the six creative roles
only, and only for Markdown files under the supporting folders a human
marks. It never writes a story file. A write also needs the writing
agent's own live Gitea grant on the library project. Each write is one
commit by that agent's own Gitea account with a trailer naming the
agent, and the user sees a notice for it and can revert it.
### Messages ### Messages
- **REQ-MSG-1.** Messages are addressed to a role. They are append-only - **REQ-MSG-1.** Messages are addressed to a role. They are append-only
@@ -1259,8 +1277,10 @@ library is the user's own writing repository.
write is one commit by that agent's own Gitea account, with a trailer write is one commit by that agent's own Gitea account, with a trailer
naming the agent. The user sees a notice for it and can revert it. Its naming the agent. The user sees a notice for it and can revert it. Its
tools are the lookups, a message to the human and the two write tools, tools are the lookups, a message to the human and the two write tools,
and research and companion also fetch web pages through the broker. and research and companion also fetch web pages through the broker. The
Agents talk with the user in free text. A reply may cite lines of the write tools need the action `library.write`, which routes under this
requirement within the bounds REQ-WAIT-3 names (version 1.16). Agents
talk with the user in free text. A reply may cite lines of the
repository at a commit or pages the agent fetched, and the broker repository at a commit or pages the agent fetched, and the broker
checks every citation before it stores the message. A setting, checks every citation before it stores the message. A setting,
`requireCitation`, makes every reply carry a citation, except the `requireCitation`, makes every reply carry a citation, except the
@@ -1750,6 +1770,15 @@ latest-by date and a hard target (Q176).
ruling after r11 and in the Q226 briefs of ruling after r11 and in the Q226 briefs of
`docs/plans/2026-10-20_case2-rows.md`. Sage files the rows under `docs/plans/2026-10-20_case2-rows.md`. Sage files the rows under
Vikunja 416. This amendment adds the requirements only. Vikunja 416. This amendment adds the requirements only.
- Version 1.16:
- REQ-WAIT-3 gains one paragraph, the `library.write` routing and its
bounds. REQ-LIB-6 gains one sentence naming the action. No other
requirement text changes.
- `packages/tasks/requirements.json` changes its version to 1.16 and
nothing else. The titles stay and the id count stays 85.
- The commit that adds `library.write` to `ROUTED` in the business
vocabulary and the broker is C2-08b, row 285. It lands only after this
version.
## Risks and open questions ## Risks and open questions
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"prd": "docs/prd/mosaic-stack.md", "prd": "docs/prd/mosaic-stack.md",
"version": "1.15", "version": "1.16",
"requirements": [ "requirements": [
{ "id": "REQ-ROLE-1", "title": "Each role is a reviewed roles/<name>.json: contract, authority map, credentials" }, { "id": "REQ-ROLE-1", "title": "Each role is a reviewed roles/<name>.json: contract, authority map, credentials" },
{ "id": "REQ-ROLE-2", "title": "One holder per role instance, one per assistant session; the chief of staff may end a run, others need a decision" }, { "id": "REQ-ROLE-2", "title": "One holder per role instance, one per assistant session; the chief of staff may end a run, others need a decision" },
+1 -1
View File
@@ -21,7 +21,7 @@ test("the list holds the PRD's requirement ids, in its order, at its version", (
assert.equal(ids.length, 85); assert.equal(ids.length, 85);
assert.deepEqual(list.requirements.map((r) => r.id), ids); assert.deepEqual(list.requirements.map((r) => r.id), ids);
assert.match(prd, new RegExp(`^- Status: approved, version ${list.version.replace('.', '\\.')}\\.`, 'm')); assert.match(prd, new RegExp(`^- Status: approved, version ${list.version.replace('.', '\\.')}\\.`, 'm'));
assert.deepEqual([list.prd, list.version], ['docs/prd/mosaic-stack.md', '1.15']); assert.deepEqual([list.prd, list.version], ['docs/prd/mosaic-stack.md', '1.16']);
}); });
test('the committed list loads frozen', () => { test('the committed list loads frozen', () => {