PRD 1.14: playground levels in REQ-LIB-2 (book, universe, draft) and the draft universe in REQ-LIB-3, from Gosalyn's approved ruling 51fdfb7e2 (webby-0089, mos-1233, mos-1241, Vikunja 464)
This commit is contained in:
1 parent
5d2437f899
commit
db1e7732aa
3 files changed
+78
-13
No files matched your search
+76
-11
@@ -1,6 +1,6 @@
|
||||
# PRD: Mosaic Stack
|
||||
|
||||
- Status: approved, version 1.13. Jason approved draft 0.4 unchanged as
|
||||
- Status: approved, version 1.14. Jason approved draft 0.4 unchanged as
|
||||
1.0 on 2026-10-05 (lead decision 61). They approved version 1.1, the
|
||||
Organization requirements, in decision 03130d08-ddce-480d-a601-e59f64744fc3
|
||||
on 2026-10-14. They approved version 1.2, the chief of staff, the
|
||||
@@ -38,7 +38,19 @@
|
||||
two stale lines. It takes the same path as 1.11 (mos-1229,
|
||||
vikunja:19/462). Version 1.13 adds the session requirements from the
|
||||
approved T1 item 7 design and replaces REQ-ROLE-2 and REQ-THREAD-2. It
|
||||
takes the same path as 1.11 (mos-1231, vikunja:19/463).
|
||||
takes the same path as 1.11 (mos-1231, vikunja:19/463). Version 1.14
|
||||
adds the playground levels to REQ-LIB-2 and a draft universe to
|
||||
REQ-LIB-3, from the approved playground ruling. It takes the same path
|
||||
as 1.11 (mos-1233, mos-1238, mos-1241, vikunja:19/464).
|
||||
- Version 1.14 source: Jason's Q176 lines TARGET.md:92 "Brainstorm ideas
|
||||
in a "playground" where new universes can be created", :93 "Brainstorm
|
||||
ideas in a "playground" for books in a universe" and :94 "This means
|
||||
universe-level and book-level playgrounds must be provided". Mos asked
|
||||
for a ruling (mos-1233). Mos ruled that the levels come in 1.14, after
|
||||
1.13, once Webby approves the ruling (mos-1238 A, mos-1241). The text
|
||||
is drafted from the playground ruling after r11 in the Case 2 design,
|
||||
51fdfb7e2 on `gosalyn/case2-design`, approved by Webby in webby-0089
|
||||
(7c00c8345 on `webby/reviews`).
|
||||
- Version 1.13 source, Mos's ruling Q1 in mos-1231 on 2026-10-21: "T1
|
||||
item 7 is v1." It quotes Jason's Q176 lines, TARGET.md:57 "Agents can
|
||||
have multiple independent sessions within a given project (thread)",
|
||||
@@ -1162,16 +1174,34 @@ library is the user's own writing repository.
|
||||
`universe.book.{character,place,...}` reads as universe, book folder,
|
||||
type folder. (Design 1.1 and M9. Q176 Case 2 "Data is stored in
|
||||
little-endian organizational scheme".)
|
||||
- **REQ-LIB-2.** Playgrounds are never confused with canon. A file's scope
|
||||
comes from its path alone: a Markdown file under a playground prefix is
|
||||
playground, any other Markdown file in a book folder is canon, and
|
||||
everything else is unmapped and never returned. Lookups return canon
|
||||
unless the caller asks for playground. An agent can't cite a playground
|
||||
file as a fact, a finding or a correction. The Console shows each
|
||||
cite's scope. (Design 1.2, 5.2 and 7.4. Q176 Case 2, the playground
|
||||
items.)
|
||||
- **REQ-LIB-2.** Playgrounds are never confused with canon. A playground
|
||||
has one of three levels, set by where its prefix sits. A book-level
|
||||
prefix lies inside one of its universe's book folders, and its files
|
||||
have that universe and that book. A universe-level prefix lies outside
|
||||
every book folder, and its files have the universe and no book. A
|
||||
draft universe is where a new universe starts: a universe entry with a
|
||||
name, one or more playground prefixes and no books. Every file under it
|
||||
is playground, with no book. When the draft is real, the human edits
|
||||
the organization file to make it a plain universe with books. The
|
||||
mapping is refused when a prefix lies inside or holds another
|
||||
universe's book folder, when a prefix equals or holds a book folder of
|
||||
its own universe, when two prefixes overlap, when a draft has books or
|
||||
no prefix, and when a hybrid names a draft as a source. A file's scope
|
||||
comes from its path alone, prefixes first: a Markdown file under a
|
||||
playground prefix at any level is playground, any other Markdown file
|
||||
in a book folder is canon, and everything else is unmapped and never
|
||||
returned. Lookups return canon unless the caller asks for playground.
|
||||
An agent can't cite a playground file as a fact, a finding or a
|
||||
correction. The Console shows each cite's scope. (Design 1.2, 5.2 and
|
||||
7.4, and the playground ruling, 51fdfb7e2. Q176 Case 2, the playground
|
||||
items, TARGET.md:92-94. Version 1.14: the levels and the draft.)
|
||||
- **REQ-LIB-3.** Universes stay separate. Every lookup names one universe,
|
||||
and its results never leave it. A crossover is a hybrid universe that
|
||||
and its results never leave it. A draft universe (REQ-LIB-2) counts as
|
||||
a universe here. It has no canon, so a lookup in a draft asks for
|
||||
playground, and a citation from another universe into a draft is
|
||||
cross-universe. A universe-level or draft file has no book: a lookup
|
||||
that names a book leaves it out, and the manuscript lookup doesn't read
|
||||
it. (Version 1.14.) A crossover is a hybrid universe that
|
||||
only a human creates, by editing the organization file. It names two or
|
||||
more source universes. Its lookups see its own files plus the sources'
|
||||
canon, minus the exclusions the human sets. Code checks two kinds of
|
||||
@@ -1613,6 +1643,41 @@ latest-by date and a hard target (Q176).
|
||||
history (design D9).
|
||||
- The build row is Sage's to file under Vikunja 463. This amendment
|
||||
adds the requirements only.
|
||||
- Version 1.14:
|
||||
- The 1.13 text of REQ-LIB-2 was: "Playgrounds are never confused with
|
||||
canon. A file's scope comes from its path alone: a Markdown file
|
||||
under a playground prefix is playground, any other Markdown file in a
|
||||
book folder is canon, and everything else is unmapped and never
|
||||
returned. Lookups return canon unless the caller asks for playground.
|
||||
An agent can't cite a playground file as a fact, a finding or a
|
||||
correction. The Console shows each cite's scope. (Design 1.2, 5.2
|
||||
and 7.4. Q176 Case 2, the playground items.)"
|
||||
- REQ-LIB-3 gains the two sentences on a draft universe and a file
|
||||
with no book. The rest of its text is unchanged.
|
||||
- This settles the Version 1.12 note's item that "REQ-LIB-2 doesn't
|
||||
name the level". That note is history and stays as written.
|
||||
- The ruling's refusal codes: `library-playground-other-universe`
|
||||
replaces `library-playground-outside-book`, for a prefix inside or
|
||||
holding another entry's book folder. `library-mapping-invalid` covers
|
||||
a prefix that holds its own entry's book folder, a draft with `books`
|
||||
or no `playground` prefix, a draft with keys other than `kind`,
|
||||
`name` and `playground`, and a `kind` other than absent, `"hybrid"`
|
||||
or `"draft"`. A prefix equal to a book folder, a prefix listed twice
|
||||
and a hybrid whose `sources` name a draft stay refused.
|
||||
- Lookup details from the ruling: a lookup in a draft passes
|
||||
`scope: "playground"`, since the canon default returns nothing there.
|
||||
A universe-level file returns `book: null`. `library_manuscript`
|
||||
needs a book. `citation-cross-universe` treats a draft as its own
|
||||
universe. R5 covers a canon file that refers into any playground, and
|
||||
R6 one that refers into a draft. `library_universe` on a draft
|
||||
returns its kind, name and prefixes.
|
||||
- The titles in `packages/tasks/requirements.json` don't change. The
|
||||
REQ-LIB-2 title still holds at every level.
|
||||
- The build is row C2-01c in `packages/library` (`mapping.mjs`,
|
||||
`scope.mjs`), before C2-05a and C2-06 read `classify`, or in their
|
||||
candidates if they have started. C2-12's setup sheet gets one line
|
||||
per level (design section 8). Sage files it under Vikunja 464. This
|
||||
amendment adds the requirements only.
|
||||
|
||||
## Risks and open questions
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"prd": "docs/prd/mosaic-stack.md",
|
||||
"version": "1.13",
|
||||
"version": "1.14",
|
||||
"requirements": [
|
||||
{ "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" },
|
||||
|
||||
@@ -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.deepEqual(list.requirements.map((r) => r.id), ids);
|
||||
assert.match(prd, new RegExp(`^- Status: approved, version ${list.version.replace('.', '\\.')}\\.`, 'm'));
|
||||
assert.deepEqual([list.prd, list.version], ['docs/prd/mosaic-stack.md', '1.13']);
|
||||
assert.deepEqual([list.prd, list.version], ['docs/prd/mosaic-stack.md', '1.14']);
|
||||
});
|
||||
|
||||
test('the committed list loads frozen', () => {
|
||||
|
||||
Reference in new issue
Block a user