Ratifies the Mosaic Stack PRD rev1 (Jason Woltje, 2026-09-01) as project source of truth and installs the GOV.1 lifecycle model: - docs/PRD.md becomes a permanent shim (kind: shim, current_rev -> docs/PRDs/2026-08-31_PRD_rev1/). Its path never changes again. - docs/PRDs/2026-08-26_PRD_rev0/PRD.md archives the 2026-08-26 North Star verbatim (sha256 60cc2f98...36afdf unchanged). Archive, never delete. - docs/PRDs/2026-08-31_PRD_rev1/ is the frozen rev1 bundle: 18 sectioned documents (VIS, DATA, AUTHN, AUTHZ, SEAT, ROLE, HARN, PROV, SESS, UI, CLI, GOV.1-5) consolidating rev0 D1-D15, the fleet north star, the agent-runtime L1/L2 contracts and the control-plane-surfaces lane findings, with a single decision map (GOV.3) and a closed open-questions frontier (GOV.5, grill rounds 1-8). Drafting inputs (_source-* snapshots) are not shipped. Consequences of the ratified rulings carried in the same change: - Q-T1 (ruling B, "shipped but frozen"): D3 amended in GOV.3/VIS.1; federation M1-M3 acknowledged as shipped behind tier === 'federated', excluded from the v1 bar and frozen, with a security re-audit gate before any resumption. docs/MISSION-MANIFEST.md, docs/federation/MISSION-MANIFEST.md and docs/scratchpads/mvp-20260312.md get status: superseded + banners (content preserved verbatim); docs/guides/deployment.md gains a "Relationship to the PRD (D15)" section. NORTH_STAR.yaml adds dormant workstream M (projects no goals by design); NORTH_STAR.md regenerated. - Q-G2 (distinct registry prefixes): every citation of the operator DECISION-REGISTER in the bundle reads OD-nn; the stack registry stays D1-D15; L1-Dnn/L2-Dnn untouched. Prefix rule recorded in GOV.1. Follow-ups (not in this PR): CI parity drift-gate witness (Q-C1); brain-side DECISION-REGISTER rename to OD- with redirect table on its next touch.
11 KiB
id, status, ratified
| id | status | ratified |
|---|---|---|
| VIS.1 | ratified | 2026-09-01 (Jason Woltje; PRD rev1 ratification PR) |
VIS.1 — Product north star
Successor text to rev0 Part I (rev0 PRD lines 33–215, preserved there verbatim). Base text unchanged except marked rev1 annotations; the decision registry moves to GOV.3-decision-map.
1. What Mosaic Stack is (D1)
Mosaic Stack is an open-source, AI-first platform for people who want a self-hosted environment for agentic management and a life operating system. It serves personal, business, and employee needs from one deployment, and the work is offered freely.
"AI-first" means agents are first-class operators of the system, not a bolted-on chat box: the platform exists to let humans direct fleets of agents over their projects, tasks, communications, and infrastructure, with the same tools and the same guarantees whether a human or an agent is acting.
2. Who it is for (D1, D9)
The operator of a deployment is its user. Mosaic Stack is not a hosted business: running the system as a service for external customers is outside the north star. Multi-tenancy exists WITHIN a deployment so that one operator can separate their world — for example, several LLCs plus a personal domain — while every deployment is self-hosted by its own operator.
"Company" in the hierarchy is organizational separation for one operator's world, not a customer account.
3. Deployment modes (D3)
Two modes, chosen at install time:
| Standalone / personal | Enterprise | |
|---|---|---|
| Brains | one mosaic-brain (system + user files) | system brain for config + one brain per user |
| User-data isolation | single user | no user-data leakage between users; sharing is opt-in |
| Secrets | OpenBao/Vault or flat files | OpenBao/Vault REQUIRED |
| Conversion | Standalone → Enterprise, one-way | terminal state |
Brains are configurable as external git repositories (recommended, not required); git tracking is always on locally.
Federation (connecting deployments: system-level config, assigned users,
rights and data-access control, trusts with boundaries, exfiltration
monitoring) is intentionally not fully designed. It is deferred, appears on the
roadmap as a placeholder phase per D11, and nothing in v1 may foreclose it.
D3 as amended 2026-09-01 (Q-T1 ruling B): federation milestones M1–M3
(Step-CA, enrollment, grants, mTLS auth guard, ScopeService, list/get/
capabilities verbs) are shipped but frozen — present in code behind the
tier === 'federated' gate, dormant since 2026-06-25, absent from the canonical
compose topology (D15), excluded from the v1 bar, tracked as a dormant
workstream in docs/fleet/NORTH_STAR.yaml, and gated on a security re-audit
before any resumption. See GOV.5-open-questions Q-T1.
4. Structure and tenancy (D2, D9, D13)
The hierarchy:
company/organization (N per deployment)
└─ estate (each in exactly one company)
└─ project (each in exactly one estate)
└─ workspace (project-specific; carries the Kanban)
Rules:
- Users can create N companies, N estates, N projects.
- Tasks bubble UP the hierarchy so whole-system status is visible at every level. Bubble-up is read-only aggregation, never a cross-workspace write.
- Granular RBAC: admins restrict access per company, estate, and project; grants are evaluated down the chain. Assets are transferable subject to the structure.
workspace_idremains the hard mechanical isolation unit exactly as ratified in docs/requirements/native-kanban-sot.md (#751): PostgreSQL sole writable SOT, cross-workspace relationships rejected, fail-closed mutations. The hierarchy is parent structure ABOVE workspaces, used for RBAC evaluation and read-only roll-ups. The kanban SOT carries this as Amendment A1, added by reviewed PR — an amendment, not a rewrite (D13).
5. Identity (D10)
Built-in auth (better-auth) is the account system of record. Authentik and other external IdPs federate in via OIDC as login methods; they never become the system of record. Perimeter shims (forward-auth in front of a web host) are deployment workarounds, not the design.
6. Onboarding (D4)
Onboarding is a wizard that differs by mode, is re-runnable (no lock-in), and is extensible — new wizards attach as tabs.
Standalone flow captures: system and company name; component choices (Mosaic Comms/Matrix vs external; Mosaic SSO/Authentik vs external; Mosaic DB/PostgreSQL vs external; vector DB); the initial user (email/password/name/SSO); comms setup (Matrix/Discord/Slack); agent enrollment (harness choice and install, OAuth or API-key login, multi-account, model choice with recommendation, agent name and persona, account assignment, optional comms auto-enroll); a user onboarding profile (disabilities including ADHD/autism/PDA/vision, professional background, education, desired agent communication style, optional voice-matching interview, family/pets/friends/ hobbies/likes-dislikes); email and drive connectors (Gmail/IMAP, Google Drive/OneDrive/Dropbox) with granular agentic-access consent; SSO/OIDC configuration; an initial estate, an initial project, and seeded example data.
Enterprise uses the same skeleton with personal data optional; the focus moves to business structure, org chart, RBAC, M365 and external systems, immediate OIDC, SSO prominent.
Profile answers feed USER.md and/or the user's data store subject to the
custody rule in §7.
7. Data custody (D6, D14)
- Sensitive profile categories (disabilities, family, communication style, and similar) live in the user's own brain ONLY. PostgreSQL holds structural data, consent records, and pointers — never the content. "User data does not leak" is enforced by architecture, not policy (D14).
- Standalone (one user, one brain) may keep the same split — D14 makes it optional in Standalone, not required. Keeping it is the recommended default because it preserves forward-compatibility with the one-way Enterprise conversion (D3).
- Estate brains hold operational records. Only product-relevant material migrates into this repository's docs; operational records stay in their brains and are linked (D6).
8. Architecture gate — the webUI sits OVER official tooling (D8, D12)
HARD RULE: every webUI operation goes through the Gateway API backed by the same official framework tooling the CLI uses. The CLI remains the primary execution method; the webUI uses the tools to operate and configure the system. The webUI never bypasses tooling to reach the database or filesystem directly.
Consequence for planning: when a desired webUI operation has no backing tool,
the gap is scored "blocked on tooling" and the tool is built first. The
product baseline therefore always includes all three D8 inputs: the tool
inventory (what exists and what is missing), the webUI→tool mapping, and the
measured current state of the next branch.
9. v1 slice (D11)
v1 is deliberately small:
- Standalone onboarding wizard — system/company name, component choices, initial user, initial estate + project, seeded examples, re-runnable.
- Hierarchy core — company → estate → project → workspace → kanban, with read-only task bubble-up.
- Basic RBAC on the hierarchy.
- Minimal agent enrollment — one harness, API key, name/persona.
Deferred beyond v1: connectors, comms integrations, voice-matching, M365, Enterprise conversion, federation. Every deferred item appears in docs/ROADMAP.md per the D11 rule: nothing exists only in heads.
10. Relationship to the fleet north star
docs/fleet/NORTH_STAR.md (generated from
docs/fleet/NORTH_STAR.yaml) is the delivery-fleet north star: how the
agent fleet that builds and operates the system should run (NS-1..NS-10,
workstreams A–L). This PRD is the product north star. They are not
competitors: the fleet north star is subordinate product-wise — its workstream
J ("Web control plane") is one consumer of this PRD's D8/D12 gate — and this
PRD does not redefine fleet invariants. The subordination rule is ratified in
the frozen audit-input baseline (T2 operator freeze, 2026-08-25: "the PRD must
cite and subordinate it, never fork it"). A change that would put the two in
conflict must amend one of them explicitly, never fork a third document
(drafting addition — see §12.1).
11. Explicit non-goals
- Hosted/SaaS operation for external customers (D9).
- A webUI that writes to the database or filesystem around the tooling (D12).
- A second writable task store beside PostgreSQL (native-kanban-sot invariants).
- Fully-designed federation in v1 (D3 — roadmap placeholder only; the shipped M1–M3 code is frozen, not a v1 feature).
D15 — Tiered containerized deployment (2026-08-30, containerization lane)
The stack ships a tiered deployment target, additive to the architecture gate (D8): (1) Standalone tier — docker compose is the canonical single-host deployment: postgres, valkey, openbao, gateway, appservice and the served webUI in one composition, with migrations, health checks, and a documented install/upgrade path; the registry (CI-published images) is the only deployment source. (2) Enterprise tier — Kubernetes manifests for the same service set, phase-gated on the standalone tier holding its acceptance bar. The v1 acceptance bar for the standalone tier: compose-up healthy; webUI hosts agent chat; an in-stack agent can open a PR to this repo; CI validates it; the running deployment adopts the merged change (pull + restart). Federation (D3 clause) remains deferred and unforeclosed. Implementation plan: docs/plans/2026-08-30_containerization.md.
rev1 annotations (2026-08-31)
- §8's architecture gate (webUI over official tooling, CLI primary) is elaborated for the control plane by UI.1-webui-surfaces and CLI.1-parity; register decision OD-53 confirms all interfaces share one CLI-backed engine.
- §4's RBAC and §5's identity are joined by the agent-side authority model
in AUTHZ.1-capability-authority: role capability ceilings enforced at the
harness by
mosaic-core, composed by pure intersection. - The fleet north star subordination (§10) gains a control-plane consequence: the WebUI workstream consumes this PRD's surface specifications (UI.1-webui-surfaces) rather than defining its own.