docs/prd: address independent review findings 1-10 (fidelity, A1 record class + carve-out, roadmap completeness)
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
This commit is contained in:
+30
-7
@@ -139,8 +139,10 @@ custody rule in §7.
|
|||||||
and similar) live in the **user's own brain ONLY**. PostgreSQL holds
|
and similar) live in the **user's own brain ONLY**. PostgreSQL holds
|
||||||
structural data, consent records, and pointers — never the content. "User
|
structural data, consent records, and pointers — never the content. "User
|
||||||
data does not leak" is enforced by architecture, not policy (D14).
|
data does not leak" is enforced by architecture, not policy (D14).
|
||||||
- Standalone (one user, one brain) keeps the same split for
|
- Standalone (one user, one brain) **may** keep the same split — D14 makes it
|
||||||
forward-compatibility with the one-way Enterprise conversion (D3).
|
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
|
- Estate brains hold operational records. Only product-relevant material
|
||||||
migrates into this repository's docs; operational records stay in their
|
migrates into this repository's docs; operational records stay in their
|
||||||
brains and are linked (D6).
|
brains and are linked (D6).
|
||||||
@@ -155,8 +157,9 @@ directly.
|
|||||||
|
|
||||||
Consequence for planning: when a desired webUI operation has no backing tool,
|
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
|
the gap is scored **"blocked on tooling"** and the tool is built first. The
|
||||||
product baseline therefore always includes the tool inventory and the
|
product baseline therefore always includes all three D8 inputs: the tool
|
||||||
webUI→tool mapping.
|
inventory (what exists and what is missing), the webUI→tool mapping, and the
|
||||||
|
measured current state of the `next` branch.
|
||||||
|
|
||||||
### 9. v1 slice (D11)
|
### 9. v1 slice (D11)
|
||||||
|
|
||||||
@@ -181,8 +184,11 @@ 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
|
workstreams A–L). This PRD is the **product** north star. They are not
|
||||||
competitors: the fleet north star is subordinate product-wise — its workstream
|
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
|
J ("Web control plane") is one consumer of this PRD's D8/D12 gate — and this
|
||||||
PRD does not redefine fleet invariants. A change that would put the two in
|
PRD does not redefine fleet invariants. The subordination rule is ratified in
|
||||||
conflict must amend one of them explicitly, never fork a third document.
|
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
|
### 11. Explicit non-goals
|
||||||
|
|
||||||
@@ -201,7 +207,7 @@ conflict must amend one of them explicitly, never fork a third document.
|
|||||||
| D4 | Re-runnable, extensible, per-mode onboarding wizards |
|
| D4 | Re-runnable, extensible, per-mode onboarding wizards |
|
||||||
| D5 | North star = this rewrite of docs/PRD.md; stack docs/ = product SSOT |
|
| D5 | North star = this rewrite of docs/PRD.md; stack docs/ = product SSOT |
|
||||||
| D6 | Only product-relevant material migrates from brains; operational records stay and link |
|
| D6 | Only product-relevant material migrates from brains; operational records stay and link |
|
||||||
| D7 | Spec-inventory sweep launched immediately (executed; frozen INPUTS baseline in the audit lane) |
|
| D7 | Spec-inventory sweep launched immediately (executed; INPUTS baseline frozen by operator ruling T2, 2026-08-25) |
|
||||||
| D8 | webUI sits over official framework tooling; CLI primary |
|
| D8 | webUI sits over official framework tooling; CLI primary |
|
||||||
| D9 | Not a hosted business; company = organizational separation for one operator |
|
| D9 | Not a hosted business; company = organizational separation for one operator |
|
||||||
| D10 | better-auth is the account system of record; external IdPs via OIDC |
|
| D10 | better-auth is the account system of record; external IdPs via OIDC |
|
||||||
@@ -213,6 +219,23 @@ conflict must amend one of them explicitly, never fork a third document.
|
|||||||
The full decision texts are recorded in the operator decision log (USC estate
|
The full decision texts are recorded in the operator decision log (USC estate
|
||||||
brain, webui-audit lane, `GRILL.md`).
|
brain, webui-audit lane, `GRILL.md`).
|
||||||
|
|
||||||
|
### 12.1 Drafting additions beyond D1–D14
|
||||||
|
|
||||||
|
Independent review of this rewrite identified rules in this document that are
|
||||||
|
not present in the D1–D14 record or the frozen T2 baseline. They are listed
|
||||||
|
here so their ratification is explicit: approval of the PR that introduces
|
||||||
|
this document, by the decision owner, ratifies them. If any is rejected it is
|
||||||
|
removed, not silently kept.
|
||||||
|
|
||||||
|
1. **Federation forward-compatibility gate:** "nothing in v1 may foreclose
|
||||||
|
federation" (§3), and scoping federation later requires its own PRD plus
|
||||||
|
threat model ([ROADMAP](./ROADMAP.md) P5). D3 defers federation; these
|
||||||
|
protective gates are additions.
|
||||||
|
2. **North-star amendment rule:** a product/fleet north-star conflict must be
|
||||||
|
resolved by amending one of the two documents explicitly, never by forking
|
||||||
|
a third (§10). The subordination itself is T2-ratified; this amendment
|
||||||
|
procedure is an addition.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Part II — Active workstream contracts (preserved unchanged)
|
## Part II — Active workstream contracts (preserved unchanged)
|
||||||
|
|||||||
+11
-5
@@ -20,7 +20,7 @@ and are prerequisites where noted.
|
|||||||
| ----- | ------------------------------------------------------------------------------ | ----------------------------------------- |
|
| ----- | ------------------------------------------------------------------------------ | ----------------------------------------- |
|
||||||
| P0 | Current state on `next`: read-only dashboard, chat, auth/SSO login, admin tabs | shipped, evolving |
|
| P0 | Current state on `next`: read-only dashboard, chat, auth/SSO login, admin tabs | shipped, evolving |
|
||||||
| P1 | **v1 slice** (PRD Part I §9) | next up |
|
| P1 | **v1 slice** (PRD Part I §9) | next up |
|
||||||
| P2 | Connectors + comms | placeholder |
|
| P2 | Connectors + comms + wizard expansion | placeholder |
|
||||||
| P3 | Full onboarding profile + M365 | placeholder |
|
| P3 | Full onboarding profile + M365 | placeholder |
|
||||||
| P4 | Enterprise mode + one-way conversion | placeholder |
|
| P4 | Enterprise mode + one-way conversion | placeholder |
|
||||||
| P5 | Federation | placeholder (deliberately undesigned, D3) |
|
| P5 | Federation | placeholder (deliberately undesigned, D3) |
|
||||||
@@ -45,17 +45,23 @@ P1.
|
|||||||
Prerequisites: KBN-100/101 schema foundation; the D8 tool inventory and
|
Prerequisites: KBN-100/101 schema foundation; the D8 tool inventory and
|
||||||
webUI→tool mapping (any missing tool is built first, D12).
|
webUI→tool mapping (any missing tool is built first, D12).
|
||||||
|
|
||||||
## P2 — connectors + comms (placeholder)
|
## P2 — connectors + comms + wizard expansion (placeholder)
|
||||||
|
|
||||||
Email and drive connectors (Gmail/IMAP, Google Drive/OneDrive/Dropbox) with
|
Email and drive connectors (Gmail/IMAP, Google Drive/OneDrive/Dropbox) with
|
||||||
granular agentic-access consent; comms integrations (Matrix/Discord/Slack)
|
granular agentic-access consent; comms integrations (Matrix/Discord/Slack)
|
||||||
including agent auto-enroll. Wizard gains the corresponding tabs (D4).
|
including agent auto-enroll. Wizard gains the corresponding tabs (D4), plus
|
||||||
|
the D4 capabilities deferred out of P1's minimal slice: expanded agent
|
||||||
|
enrollment (OAuth login, multi-account, model choice with recommendation,
|
||||||
|
account assignment, comms auto-enroll) and the Standalone SSO/OIDC
|
||||||
|
configuration tab.
|
||||||
|
|
||||||
## P3 — full onboarding profile + M365 (placeholder)
|
## P3 — full onboarding profile + M365 (placeholder)
|
||||||
|
|
||||||
Complete user onboarding profile (communication-style capture, optional
|
Complete user onboarding profile (communication-style capture, optional
|
||||||
voice-matching interview) under the D14 custody rule; M365 integration for
|
voice-matching interview) under the D14 custody rule; M365 connectors,
|
||||||
Enterprise-leaning deployments.
|
available to both deployment modes as ordinary connectors (same consent model
|
||||||
|
as the P2 connector class). The Enterprise install flow's M365 prominence
|
||||||
|
(D4) arrives with the Enterprise phase, P4.
|
||||||
|
|
||||||
## P4 — Enterprise mode + conversion (placeholder)
|
## P4 — Enterprise mode + conversion (placeholder)
|
||||||
|
|
||||||
|
|||||||
@@ -377,9 +377,10 @@ P0–P3 may close only when requirements traceability maps every requirement abo
|
|||||||
|
|
||||||
**Status:** amendment to the ratified canon, added by reviewed PR under
|
**Status:** amendment to the ratified canon, added by reviewed PR under
|
||||||
decision D13 (operator ruling, 2026-08-25; decision owner Jason). It adds
|
decision D13 (operator ruling, 2026-08-25; decision owner Jason). It adds
|
||||||
parent structure ABOVE workspaces. It weakens nothing below this line:
|
parent structure ABOVE workspaces. Sections 1–7, every invariant in §3, and
|
||||||
sections 1–7, every invariant in §3, and every REQ above remain binding
|
every REQ above remain binding verbatim, with exactly one express modification:
|
||||||
verbatim.
|
the narrow portfolio-analytics carve-out stated in §8.2.4. Nothing else below
|
||||||
|
this line is weakened.
|
||||||
|
|
||||||
### 8.1 What is added
|
### 8.1 What is added
|
||||||
|
|
||||||
@@ -387,7 +388,22 @@ verbatim.
|
|||||||
**company/organization → estate → platform-project → workspace**. Each
|
**company/organization → estate → platform-project → workspace**. Each
|
||||||
workspace belongs to exactly one platform-project, each platform-project to
|
workspace belongs to exactly one platform-project, each platform-project to
|
||||||
exactly one estate, each estate to exactly one company.
|
exactly one estate, each estate to exactly one company.
|
||||||
2. The hierarchy is used for exactly two things:
|
2. **Record class.** Hierarchy records (company, estate, platform-project,
|
||||||
|
their parentage edges, and hierarchy-level access grants) are a new,
|
||||||
|
explicitly named record class: **tenancy/authorization structure records**.
|
||||||
|
They are not business or orchestration records, so §3 invariant 10 and
|
||||||
|
REQ-TEN-001 do not apply to them and are not weakened by them — those two
|
||||||
|
requirements bind business/orchestration rows exactly as before.
|
||||||
|
Constraints on the new class:
|
||||||
|
- Hierarchy tables MUST NOT carry task, plan, or any other
|
||||||
|
business/orchestration payload — parentage, naming, and grant data only.
|
||||||
|
- A hierarchy record can never be the subject of work: it cannot be
|
||||||
|
claimed, ordered, gated, or referenced as a dependency by any
|
||||||
|
business/orchestration row.
|
||||||
|
- Hierarchy mutations flow through the same sole-writable-SOT, fail-closed,
|
||||||
|
audited mutation path as everything else (§8.2.3).
|
||||||
|
3. The hierarchy serves exactly two runtime functions, plus audited
|
||||||
|
maintenance of its own structure:
|
||||||
- **RBAC evaluation:** access grants are declared per company, estate, or
|
- **RBAC evaluation:** access grants are declared per company, estate, or
|
||||||
platform-project and evaluate down the chain to workspace-scoped
|
platform-project and evaluate down the chain to workspace-scoped
|
||||||
authorization. Tenant context continues to be derived from authenticated
|
authorization. Tenant context continues to be derived from authenticated
|
||||||
@@ -395,7 +411,14 @@ verbatim.
|
|||||||
not a bypass of workspace authorization.
|
not a bypass of workspace authorization.
|
||||||
- **Read-only roll-ups:** task and status visualization bubbles up the
|
- **Read-only roll-ups:** task and status visualization bubbles up the
|
||||||
hierarchy as aggregation over workspaces the reader is authorized on.
|
hierarchy as aggregation over workspaces the reader is authorized on.
|
||||||
3. Naming: this amendment says **platform-project** for the hierarchy level
|
- **Chain maintenance (not a third runtime function):** re-parenting an
|
||||||
|
asset — moving a workspace to another platform-project, a
|
||||||
|
platform-project to another estate, and so on ("assets are transferable
|
||||||
|
subject to the structure", PRD Part I §4) — is an audited edit of the
|
||||||
|
hierarchy records themselves under §8.3. It never modifies
|
||||||
|
business/orchestration rows and never crosses a workspace boundary for
|
||||||
|
them; the workspace's contents move with the workspace untouched.
|
||||||
|
4. Naming: this amendment says **platform-project** for the hierarchy level
|
||||||
above workspaces, because §5 REQ-PLAN-001 already defines `projects` as
|
above workspaces, because §5 REQ-PLAN-001 already defines `projects` as
|
||||||
planning entities INSIDE a workspace. The two are different objects. Final
|
planning entities INSIDE a workspace. The two are different objects. Final
|
||||||
terminology (rename of one or the other) is an implementation-PR decision
|
terminology (rename of one or the other) is an implementation-PR decision
|
||||||
@@ -413,7 +436,15 @@ verbatim.
|
|||||||
3. Fail-closed mutation health (§3 invariants 3–4), sole writable PostgreSQL
|
3. Fail-closed mutation health (§3 invariants 3–4), sole writable PostgreSQL
|
||||||
SOT, fencing, audit, and the Coordinator/Certifier authority rules are
|
SOT, fencing, audit, and the Coordinator/Certifier authority rules are
|
||||||
untouched.
|
untouched.
|
||||||
4. Nothing here authorizes the §6 non-goals.
|
4. No §6 non-goal is authorized, with one express, narrow carve-out that this
|
||||||
|
amendment makes to the "portfolio analytics" non-goal: the read-only
|
||||||
|
roll-up of §8.1 — per-workspace task counts and statuses aggregated up the
|
||||||
|
parent chain, over workspaces the reader is authorized on — is in scope.
|
||||||
|
Everything beyond that boundary (metrics, trends, forecasting, scoring,
|
||||||
|
dashboards computed across workspaces, any derived analytic that is not a
|
||||||
|
direct count/status aggregation) remains a non-goal. This is an explicit
|
||||||
|
narrowing by amendment, not a claim that §6 is unchanged; every other §6
|
||||||
|
non-goal is untouched.
|
||||||
|
|
||||||
### 8.3 Acceptance (binding on the implementing PRs)
|
### 8.3 Acceptance (binding on the implementing PRs)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user