Compare commits

...
3 changed files with 18 additions and 6 deletions

No files matched your search

+16 -4
View File
@@ -1,6 +1,6 @@
# PRD: Mosaic Stack # PRD: Mosaic Stack
- Status: approved, version 1.17. Jason approved draft 0.4 unchanged as - Status: approved, version 1.18. 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
@@ -54,7 +54,17 @@
adds REQ-LIB-9, the Console's DOCX editor, from Jason's rulings Q195, adds REQ-LIB-9, the Console's DOCX editor, from Jason's rulings Q195,
Q226 and Q234. It changes what Case 2 requirements allow, so Mos puts Q226 and Q234. It changes what Case 2 requirements allow, so Mos puts
the text to Jason as written, and it lands only after his yes (mos-1366, the text to Jason as written, and it lands only after his yes (mos-1366,
Vikunja 570). Vikunja 570). Version 1.18 corrects Mos's reading in REQ-INST-2 to match
the approved row 255 design. The stack prints the providers entry and
never writes config.json. What the requirement allows or forbids is
unchanged (mos-1671, sage-4418). Doc-only, so it takes the 1.11 path:
one seat drafts, a second reviews, Sage lands.
- Version 1.18 source: Mos's ruling mos-1671 on 2026-10-25, answering
sage-4418. REQ-INST-2's second bullet said the stack installs the
bundled Pocket ID "and writes it as the Console's one providers entry."
It now says the stack "prints the Console's one providers entry for the
user to add to config.json. The stack never writes config.json (canon
invariant 2)."
- Version 1.17 source: Jason's Q235, answering Q36: 'How about we see a - Version 1.17 source: Jason's Q235, answering Q36: 'How about we see a
markdown file, we convert the markdown file to docx, then archive or markdown file, we convert the markdown file to docx, then archive or
mark the markdown file as converted. The new standard for files in the mark the markdown file as converted. The new standard for files in the
@@ -1517,8 +1527,10 @@ Added in version 1.4 (decision 1ea053cc).
- The installer offers two choices: point the Console at one or more - The installer offers two choices: point the Console at one or more
existing OIDC providers, or deploy a bundled Pocket ID. existing OIDC providers, or deploy a bundled Pocket ID.
- The stack installs that Pocket ID as an install component under - The stack installs that Pocket ID as an install component under
REQ-INST-1 and writes it as the Console's one providers entry. No REQ-INST-1 and prints the Console's one providers entry for the user
Pocket ID source goes in the repository, and the Console gets no to add to config.json. The stack never writes config.json (canon
invariant 2). No Pocket ID source goes in the repository, and the
Console gets no
sign-in path apart from its own OIDC sign-in (REQ-WEB-2). sign-in path apart from its own OIDC sign-in (REQ-WEB-2).
- Pocket ID is passkey-only for people. Agents keep per-role service - Pocket ID is passkey-only for people. Agents keep per-role service
tokens. tokens.
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"prd": "docs/prd/mosaic-stack.md", "prd": "docs/prd/mosaic-stack.md",
"version": "1.17", "version": "1.18",
"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, 87); assert.equal(ids.length, 87);
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.17']); assert.deepEqual([list.prd, list.version], ['docs/prd/mosaic-stack.md', '1.18']);
}); });
test('the committed list loads frozen', () => { test('the committed list loads frozen', () => {