@geraldmaron/construct 1.2.1 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/bin/construct +41 -67
- package/commands/plan/decide.md +1 -1
- package/commands/remember/runbook.md +1 -1
- package/examples/README.md +1 -1
- package/examples/distribution/README.md +1 -1
- package/examples/distribution/sources/adr.md +2 -2
- package/examples/distribution/sources/deck-one-pager.md +1 -1
- package/examples/distribution/sources/prd-platform.md +1 -1
- package/examples/distribution/sources/research-brief.md +2 -2
- package/examples/distribution/sources/rfc-platform.md +1 -1
- package/examples/distribution/sources/runbook.md +2 -2
- package/examples/distribution/sources/strategy.md +1 -1
- package/lib/agent-instructions/inject.mjs +1 -1
- package/lib/artifact-type-from-path.mjs +9 -5
- package/lib/audit-specialists.mjs +1 -1
- package/lib/audit-trail.mjs +3 -3
- package/lib/auto-docs.mjs +10 -10
- package/lib/bootstrap/built-ins.mjs +3 -3
- package/lib/boundary.mjs +3 -2
- package/lib/brand-prose.mjs +1 -1
- package/lib/cache-governor.js +4 -4
- package/lib/certification/document-io-fixtures.mjs +1 -1
- package/lib/chat/config.mjs +2 -2
- package/lib/chat/desktop-binary.mjs +5 -3
- package/lib/cli-commands.mjs +3 -3
- package/lib/cli-service-inventory.mjs +1 -1
- package/lib/comment-lint.mjs +9 -5
- package/lib/config/alias.mjs +3 -2
- package/lib/config/intake-policy.mjs +8 -78
- package/lib/config/project-config.mjs +95 -5
- package/lib/config/schema.mjs +9 -19
- package/lib/config/xdg.mjs +63 -0
- package/lib/contracts/violation-log.mjs +2 -2
- package/lib/cost-ledger.mjs +4 -3
- package/lib/cost.mjs +3 -2
- package/lib/decisions/registry.mjs +3 -3
- package/lib/distill.mjs +2 -2
- package/lib/docs-verify.mjs +2 -0
- package/lib/doctor/audit.mjs +4 -3
- package/lib/doctor/cli.mjs +0 -1
- package/lib/doctor/index.mjs +4 -4
- package/lib/doctor/report.mjs +3 -3
- package/lib/doctor/watchers/bd-watch.mjs +5 -5
- package/lib/doctor/watchers/cost.mjs +4 -4
- package/lib/doctor/watchers/disk.mjs +4 -3
- package/lib/doctor/watchers/service-health.mjs +5 -5
- package/lib/document-export.mjs +1 -1
- package/lib/document-extract.mjs +3 -3
- package/lib/document-ingest.mjs +13 -3
- package/lib/efficiency.mjs +2 -1
- package/lib/embed/approval-queue.mjs +3 -2
- package/lib/embed/cli.mjs +7 -5
- package/lib/embed/config.mjs +6 -5
- package/lib/embed/daemon.mjs +6 -5
- package/lib/embed/inbox-live-watcher.mjs +1 -1
- package/lib/embed/inbox.mjs +52 -37
- package/lib/embed/intake-metrics.mjs +3 -2
- package/lib/embed/reconcile.mjs +1 -1
- package/lib/embed/semantic.mjs +3 -2
- package/lib/embed/supervision.mjs +4 -2
- package/lib/engine/registry.mjs +3 -3
- package/lib/env-config.mjs +34 -12
- package/lib/features.mjs +4 -3
- package/lib/health-check.mjs +7 -6
- package/lib/hook-health.mjs +5 -4
- package/lib/hooks/_lib/log.mjs +4 -3
- package/lib/hooks/_lib/output-mode.mjs +2 -1
- package/lib/hooks/agent-tracker.mjs +3 -4
- package/lib/hooks/audit-reads.mjs +2 -2
- package/lib/hooks/audit-trail.mjs +2 -2
- package/lib/hooks/bash-output-logger.mjs +3 -3
- package/lib/hooks/brand-prose-lint.mjs +1 -1
- package/lib/hooks/ci-status-check.mjs +3 -2
- package/lib/hooks/context-watch.mjs +2 -2
- package/lib/hooks/context-window-recovery.mjs +5 -5
- package/lib/hooks/dep-audit.mjs +2 -2
- package/lib/hooks/doc-coupling-check.mjs +3 -2
- package/lib/hooks/edit-accumulator.mjs +3 -2
- package/lib/hooks/edit-guard.mjs +3 -3
- package/lib/hooks/guard-bash.mjs +2 -2
- package/lib/hooks/model-fallback.mjs +2 -1
- package/lib/hooks/policy-engine.mjs +4 -3
- package/lib/hooks/pre-compact.mjs +7 -7
- package/lib/hooks/readme-age-check.mjs +2 -2
- package/lib/hooks/session-optimize.mjs +4 -3
- package/lib/hooks/session-start.mjs +6 -5
- package/lib/hooks/stop-notify.mjs +9 -8
- package/lib/hooks/stop-typecheck.mjs +4 -3
- package/lib/hooks/test-watch.mjs +2 -2
- package/lib/host-disposition.mjs +1 -1
- package/lib/ingest/provider-extract.mjs +2 -1
- package/lib/init/detect-existing-structure.mjs +2 -2
- package/lib/init/doc-lanes.mjs +3 -10
- package/lib/init-docs.mjs +12 -54
- package/lib/init-unified.mjs +35 -81
- package/lib/init.mjs +7 -5
- package/lib/install/desktop-binary-download.mjs +5 -2
- package/lib/intake/daemon.mjs +31 -8
- package/lib/intake/intake-config.mjs +5 -32
- package/lib/integrations/intake-integrations.mjs +8 -7
- package/lib/knowledge/rag.mjs +2 -2
- package/lib/knowledge/search.mjs +15 -15
- package/lib/maintenance/cleanup.mjs +14 -10
- package/lib/mcp/server.mjs +1 -1
- package/lib/mcp/tools/project.mjs +2 -1
- package/lib/model-cheapest-provider.mjs +4 -3
- package/lib/model-pricing.mjs +3 -2
- package/lib/model-router.mjs +4 -3
- package/lib/models/catalog.mjs +2 -1
- package/lib/models/execution-capability-profile.mjs +2 -1
- package/lib/models/provider-poll.mjs +2 -1
- package/lib/ollama-manager.mjs +0 -1
- package/lib/op-log.mjs +2 -1
- package/lib/opencode-runtime-plugin.mjs +3 -2
- package/lib/oracle/artifact-gate.mjs +3 -0
- package/lib/oracle/cli.mjs +2 -1
- package/lib/oracle/execute.mjs +3 -2
- package/lib/oracle/index.mjs +2 -1
- package/lib/oracle/read-model.mjs +3 -2
- package/lib/performance/generate.mjs +4 -3
- package/lib/platforms/capabilities.mjs +1 -1
- package/lib/plugin-registry.mjs +2 -1
- package/lib/profiles/lifecycle.mjs +3 -3
- package/lib/project-profile.mjs +2 -1
- package/lib/project-root.mjs +9 -7
- package/lib/provider-capabilities.js +4 -3
- package/lib/providers/auth-manager.mjs +2 -1
- package/lib/providers/copilot-auth.mjs +3 -2
- package/lib/providers/creds.mjs +3 -2
- package/lib/providers/registry.mjs +3 -3
- package/lib/providers/secret-resolver.mjs +3 -2
- package/lib/read-tracker-store.mjs +2 -1
- package/lib/reconcile/mcp-entry-reconcile.mjs +2 -2
- package/lib/reflect.mjs +2 -1
- package/lib/registry/generate-docs.mjs +2 -2
- package/lib/roles/approval-surface.mjs +5 -4
- package/lib/roles/event-bus.mjs +0 -1
- package/lib/roles/gateway.mjs +6 -2
- package/lib/rules-delivery.mjs +1 -1
- package/lib/runtime-pressure.mjs +5 -3
- package/lib/sandbox.mjs +3 -2
- package/lib/scheduler/solo.mjs +6 -4
- package/lib/server/auth.mjs +4 -3
- package/lib/server/index.mjs +24 -26
- package/lib/server/insights.mjs +5 -4
- package/lib/server/webhook.mjs +2 -1
- package/lib/service-manager.mjs +5 -3
- package/lib/setup.mjs +9 -8
- package/lib/status.mjs +6 -5
- package/lib/storage/embeddings-local.mjs +3 -2
- package/lib/storage/sync.mjs +2 -2
- package/lib/telemetry/client.mjs +0 -1
- package/lib/telemetry/intent-verifications.mjs +6 -6
- package/lib/telemetry/model-pricing-catalog.mjs +4 -3
- package/lib/telemetry/rule-calls.mjs +3 -3
- package/lib/telemetry/skill-calls.mjs +3 -3
- package/lib/template-registry.mjs +1 -0
- package/lib/templates/visual-requirements.mjs +1 -1
- package/lib/test-corpus-inventory.mjs +1 -1
- package/lib/uninstall/uninstall.mjs +12 -10
- package/package.json +3 -3
- package/platforms/claude/settings.template.json +43 -43
- package/rules/common/no-fabrication.md +1 -1
- package/rules/common/release-gates.md +1 -1
- package/rules/common/research.md +1 -1
- package/rules/common/review-before-change.md +1 -1
- package/scripts/sync-specialists.mjs +11 -8
- package/skills/docs/adr-workflow.md +3 -3
- package/skills/docs/init-docs.md +9 -9
- package/skills/docs/prd-workflow.md +5 -5
- package/skills/docs/product-intelligence-review.md +1 -1
- package/skills/docs/product-intelligence-workflow.md +2 -2
- package/skills/docs/product-signal-workflow.md +1 -1
- package/skills/docs/runbook-workflow.md +4 -4
- package/skills/exploration/unknown-codebase-onboarding.md +1 -1
- package/skills/operating/orchestration-reference.md +1 -1
- package/skills/routing.md +3 -3
- package/specialists/prompts/cx-architect.md +1 -1
- package/specialists/prompts/cx-docs-keeper.md +1 -1
- package/specialists/prompts/cx-researcher.md +1 -1
- package/specialists/prompts/cx-sre.md +1 -1
- package/specialists/role-manifests.json +6 -6
- package/templates/docs/README.md +125 -0
- package/templates/docs/construct_guide.md +3 -4
- package/templates/docs/persona-artifact.md +1 -1
- package/templates/docs/prds/README.md +25 -0
- package/templates/docs/prds/templates/_template.md +206 -0
- package/templates/docs/prds/templates/meta-prd.template.md +177 -0
- package/templates/docs/prds/templates/prd-business.template.md +61 -0
- package/templates/docs/prds/templates/prd-platform.template.md +81 -0
- package/templates/docs/prds/templates/prfaq.template.md +38 -0
- package/templates/docs/rfcs/README.md +22 -0
- package/templates/docs/rfcs/templates/_template.md +58 -0
- package/templates/docs/rfcs/templates/rfc-platform.template.md +72 -0
- package/templates/homebrew/construct.rb +1 -1
- package/templates/workflows/new-feature.yml +8 -8
- package/lib/intake/legacy-paths.mjs +0 -5
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
# PRD: {title}
|
|
2
|
+
|
|
3
|
+
- **Date**: {YYYY-MM-DD}
|
|
4
|
+
- **Owner**: {name}
|
|
5
|
+
- **Status**: draft | in-review | approved | shipped | deprecated
|
|
6
|
+
|
|
7
|
+
<!--
|
|
8
|
+
Use this for a product capability, user workflow, or customer-facing requirement set.
|
|
9
|
+
Use meta-prd.md instead when defining the requirements for a product system, agent,
|
|
10
|
+
process, template, evaluation loop, or operating model.
|
|
11
|
+
|
|
12
|
+
Before drafting, read rules/common/framing.md.
|
|
13
|
+
|
|
14
|
+
Owning specialist: cx-product-manager (see rules/common/doc-ownership.md).
|
|
15
|
+
Construct must route PRD authoring to cx-product-manager rather than drafting directly.
|
|
16
|
+
doing so is how requirements traceability, user grounding, and external research fire.
|
|
17
|
+
|
|
18
|
+
Write with a balance of short paragraphs, tables, and bullets. Bullets are for scans,
|
|
19
|
+
not the whole document. Keep em dashes rare; prefer commas, periods, or parentheses.
|
|
20
|
+
-->
|
|
21
|
+
|
|
22
|
+
## Summary
|
|
23
|
+
<!--
|
|
24
|
+
One paragraph (3-5 sentences) that a busy reader can use as the whole PRD.
|
|
25
|
+
What the change is, who it's for, why now, and what changes when it ships.
|
|
26
|
+
No solutions in this section that aren't decided. No ticket IDs. No team names.
|
|
27
|
+
-->
|
|
28
|
+
|
|
29
|
+
## Background
|
|
30
|
+
<!--
|
|
31
|
+
Context the reader needs to evaluate this PRD without asking around.
|
|
32
|
+
Include relevant prior work (linked PRDs, ADRs, RFCs), observed signals, and
|
|
33
|
+
the current state of the user experience or system. State what is already
|
|
34
|
+
true today so the reader can compare against the proposed change.
|
|
35
|
+
|
|
36
|
+
Cite evidence: support tickets, interviews, telemetry, sales calls, research.
|
|
37
|
+
Avoid roadmap-speak ("this is a Q3 priority"); state what is happening to users.
|
|
38
|
+
-->
|
|
39
|
+
|
|
40
|
+
## Problem
|
|
41
|
+
<!--
|
|
42
|
+
The specific user or business outcome that is currently blocked. One or two
|
|
43
|
+
paragraphs. State the pain, not the solution.
|
|
44
|
+
|
|
45
|
+
Must NOT reference:
|
|
46
|
+
- Jira / Linear ticket IDs or "this came from ticket X"
|
|
47
|
+
- Roadmap items, OKR line items, or quarterly goals
|
|
48
|
+
- "The team decided we should build this"
|
|
49
|
+
|
|
50
|
+
Must reference:
|
|
51
|
+
- Observed user behavior, quantitative signals, or qualitative evidence
|
|
52
|
+
- The specific outcome that is not currently achievable
|
|
53
|
+
- The constraint that makes this non-trivial today
|
|
54
|
+
-->
|
|
55
|
+
|
|
56
|
+
## Goals
|
|
57
|
+
<!--
|
|
58
|
+
What success looks like, in outcome terms. Three to five goals max. Each
|
|
59
|
+
goal is the *change* you want, not the activity. Order by importance.
|
|
60
|
+
|
|
61
|
+
Examples:
|
|
62
|
+
- Reduce p95 onboarding time from 12m to under 4m for new accounts.
|
|
63
|
+
- Eliminate the manual reconciliation step our top 20 customers do every Monday.
|
|
64
|
+
- Halve the support volume for "where is my data" questions.
|
|
65
|
+
-->
|
|
66
|
+
|
|
67
|
+
## Outcome
|
|
68
|
+
<!--
|
|
69
|
+
What is concretely different for users, the business, or the system once this
|
|
70
|
+
ships and is adopted. This is the observable end state: written from the
|
|
71
|
+
user's perspective when possible. The acceptance criteria below should be the
|
|
72
|
+
falsifiable evidence that this outcome was achieved.
|
|
73
|
+
|
|
74
|
+
A reader should be able to compare the current state (Background) to this
|
|
75
|
+
section and see the delta in plain language.
|
|
76
|
+
-->
|
|
77
|
+
|
|
78
|
+
## User flow
|
|
79
|
+
|
|
80
|
+
```mermaid
|
|
81
|
+
flowchart TD
|
|
82
|
+
A[User starts] --> B{Current friction?}
|
|
83
|
+
B -->|Yes| C[Proposed path]
|
|
84
|
+
B -->|No| D[Existing path]
|
|
85
|
+
C --> E[Success outcome]
|
|
86
|
+
D --> E
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## In scope and out of scope
|
|
90
|
+
|
|
91
|
+
| | Description |
|
|
92
|
+
|---|---|
|
|
93
|
+
| **In scope** | <what this PRD covers and commits to ship> |
|
|
94
|
+
| **Out of scope** | <related work explicitly deferred: name the reason> |
|
|
95
|
+
| **Adjacent (deferred)** | <work that's a natural follow-up but not in this PRD> |
|
|
96
|
+
|
|
97
|
+
<!--
|
|
98
|
+
Be specific. "Authentication" is too vague; "OAuth login for the web dashboard,
|
|
99
|
+
not for the CLI" is right. The Out of scope list is a tool for protecting
|
|
100
|
+
schedule and reviewer attention: use it.
|
|
101
|
+
-->
|
|
102
|
+
|
|
103
|
+
## Phases
|
|
104
|
+
|
|
105
|
+
<!--
|
|
106
|
+
Phases are how this work ships, not how it's organized internally. Each phase
|
|
107
|
+
is independently shippable and provides observable user value (or a clearly
|
|
108
|
+
defined platform capability). Avoid "phase 1: backend, phase 2: frontend".
|
|
109
|
+
that's a task list, not a phasing.
|
|
110
|
+
|
|
111
|
+
Each phase below holds its own goal, status, functional requirements (FR),
|
|
112
|
+
and non-functional requirements (NFR), with acceptance criteria written
|
|
113
|
+
inline next to each requirement. Use `FR-<phase>.<n>` and `NFR-<phase>.<n>`
|
|
114
|
+
so requirements can be referenced from reviews and tests.
|
|
115
|
+
|
|
116
|
+
Status values: not started | in progress | shipped | deferred.
|
|
117
|
+
|
|
118
|
+
NFR categories to consider: performance, reliability, security, privacy,
|
|
119
|
+
accessibility, observability, compliance, cost. Numeric targets where possible.
|
|
120
|
+
-->
|
|
121
|
+
|
|
122
|
+
### Phase 1: <name>
|
|
123
|
+
|
|
124
|
+
- **Goal**: <what this phase delivers>
|
|
125
|
+
- **Status**: not started
|
|
126
|
+
|
|
127
|
+
**Functional**
|
|
128
|
+
|
|
129
|
+
- **FR-1.1**: <imperative statement of what the system must do>
|
|
130
|
+
- *Acceptance*: <observable, falsifiable condition a reviewer can check without asking the author>
|
|
131
|
+
- **FR-1.2**: <...>
|
|
132
|
+
- *Acceptance*: <...>
|
|
133
|
+
|
|
134
|
+
**Non-functional**
|
|
135
|
+
|
|
136
|
+
- **NFR-1.1**: <category>: <target with number>
|
|
137
|
+
- *Acceptance*: <how this is measured and what counts as pass>
|
|
138
|
+
|
|
139
|
+
### Phase 2: <name>
|
|
140
|
+
|
|
141
|
+
- **Goal**: <what this phase delivers>
|
|
142
|
+
- **Status**: not started
|
|
143
|
+
|
|
144
|
+
**Functional**
|
|
145
|
+
|
|
146
|
+
- **FR-2.1**: <...>
|
|
147
|
+
- *Acceptance*: <...>
|
|
148
|
+
- **FR-2.2**: <...>
|
|
149
|
+
- *Acceptance*: <...>
|
|
150
|
+
|
|
151
|
+
**Non-functional**
|
|
152
|
+
|
|
153
|
+
- **NFR-2.1**: <category>: <target>
|
|
154
|
+
- *Acceptance*: <...>
|
|
155
|
+
|
|
156
|
+
### Phase 3: <name>
|
|
157
|
+
|
|
158
|
+
- **Goal**: <what this phase delivers>
|
|
159
|
+
- **Status**: not started
|
|
160
|
+
|
|
161
|
+
**Functional**
|
|
162
|
+
|
|
163
|
+
- **FR-3.1**: <...>
|
|
164
|
+
- *Acceptance*: <...>
|
|
165
|
+
|
|
166
|
+
**Non-functional**
|
|
167
|
+
|
|
168
|
+
- **NFR-3.1**: <category>: <target>
|
|
169
|
+
- *Acceptance*: <...>
|
|
170
|
+
|
|
171
|
+
## Success metrics
|
|
172
|
+
<!--
|
|
173
|
+
How we will know this worked in production over time, beyond the per-requirement
|
|
174
|
+
acceptance criteria. Leading vs. lagging. Avoid vanity metrics.
|
|
175
|
+
-->
|
|
176
|
+
|
|
177
|
+
| Metric | Baseline | Target |
|
|
178
|
+
|---|---|---|
|
|
179
|
+
| {name} | {current} | {goal} |
|
|
180
|
+
|
|
181
|
+
## Constraints
|
|
182
|
+
<!--
|
|
183
|
+
Budget, timeline, platform, team, legal, technical debt: anything that shapes
|
|
184
|
+
the solution and isn't a requirement.
|
|
185
|
+
-->
|
|
186
|
+
|
|
187
|
+
## Dependencies
|
|
188
|
+
<!--
|
|
189
|
+
Teams, services, contracts, data sources, vendor timelines. Each dependency
|
|
190
|
+
should name an owner and the date it must be ready by.
|
|
191
|
+
-->
|
|
192
|
+
|
|
193
|
+
## Risks and mitigations
|
|
194
|
+
|
|
195
|
+
| Risk | Likelihood | Impact | Mitigation |
|
|
196
|
+
|---|---|---|---|
|
|
197
|
+
| <risk> | low / med / high | low / med / high | <how this is reduced or what we accept> |
|
|
198
|
+
|
|
199
|
+
## Open questions
|
|
200
|
+
|
|
201
|
+
| Question | Owner | Decision needed by |
|
|
202
|
+
|---|---|---|
|
|
203
|
+
| <unknown> | <name> | <YYYY-MM-DD> |
|
|
204
|
+
|
|
205
|
+
## References
|
|
206
|
+
<!-- Linked research, prior PRDs, ADRs, tickets, designs. -->
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# Meta PRD: {title}
|
|
2
|
+
|
|
3
|
+
- **Date**: {YYYY-MM-DD}
|
|
4
|
+
- **Owner**: {name}
|
|
5
|
+
- **Status**: draft | in-review | approved | shipped | deprecated
|
|
6
|
+
|
|
7
|
+
<!--
|
|
8
|
+
Use this when the subject is the product operating system itself: an agent workflow,
|
|
9
|
+
document standard, evidence pipeline, evaluation loop, template family, governance
|
|
10
|
+
process, or internal product intelligence capability.
|
|
11
|
+
|
|
12
|
+
A normal PRD defines what a product capability must do for users. A Meta PRD defines
|
|
13
|
+
how the organization decides, documents, validates, and improves the product work.
|
|
14
|
+
|
|
15
|
+
Write with a balance of structured paragraphs, compact tables, and selective bullets.
|
|
16
|
+
Avoid a wall of bullets. Keep em dashes rare; prefer commas, periods, or parentheses.
|
|
17
|
+
-->
|
|
18
|
+
|
|
19
|
+
## Summary
|
|
20
|
+
<!--
|
|
21
|
+
One paragraph (3-5 sentences). What product practice or operating system is
|
|
22
|
+
being defined or changed, who runs it, and what becomes different about how
|
|
23
|
+
the org decides, documents, or evaluates work once this ships.
|
|
24
|
+
-->
|
|
25
|
+
|
|
26
|
+
## Background
|
|
27
|
+
<!--
|
|
28
|
+
The current state of the operating system: which workflow, template, eval
|
|
29
|
+
loop, or governance process is in play today, and what's actually happening
|
|
30
|
+
when teams or agents use it. Cite real examples: recent PRDs, prior decisions,
|
|
31
|
+
trace evidence, support tickets: not hypotheticals.
|
|
32
|
+
-->
|
|
33
|
+
|
|
34
|
+
## Problem
|
|
35
|
+
<!--
|
|
36
|
+
The failure mode in the current process. Name who feels it, how often, and
|
|
37
|
+
what breaks downstream. Keep solutions out of this section.
|
|
38
|
+
|
|
39
|
+
Examples of the right shape:
|
|
40
|
+
- "PRDs ship without rejected alternatives, so reviewers re-litigate decisions
|
|
41
|
+
three weeks in. Happens on ~40% of PRDs in the last quarter."
|
|
42
|
+
- "Postmortems are written by the on-call who shipped the bug, so the action
|
|
43
|
+
items reflect their proposals: not independent review."
|
|
44
|
+
-->
|
|
45
|
+
|
|
46
|
+
## Goals
|
|
47
|
+
<!--
|
|
48
|
+
What success looks like for the operating system. Three to five outcomes max.
|
|
49
|
+
Examples: "PRDs cite primary sources by default", "Postmortems get peer
|
|
50
|
+
review before publish", "ADR rejection rate drops from 60% to under 20%".
|
|
51
|
+
-->
|
|
52
|
+
|
|
53
|
+
## Outcome
|
|
54
|
+
<!--
|
|
55
|
+
What is concretely different about how work moves through the org once this
|
|
56
|
+
operating model is adopted. Written from the practitioner's perspective:
|
|
57
|
+
"When I open a PRD, I'm prompted to record rejected alternatives before
|
|
58
|
+
the doc enters review."
|
|
59
|
+
-->
|
|
60
|
+
|
|
61
|
+
## In scope and out of scope
|
|
62
|
+
|
|
63
|
+
| | Description |
|
|
64
|
+
|---|---|
|
|
65
|
+
| **In scope** | <which templates, workflows, agents, gates, or evals are touched> |
|
|
66
|
+
| **Out of scope** | <related operating systems explicitly deferred: name the reason> |
|
|
67
|
+
| **Adjacent (deferred)** | <natural follow-up changes not in this Meta PRD> |
|
|
68
|
+
|
|
69
|
+
## Principles
|
|
70
|
+
<!--
|
|
71
|
+
Durable rules this operating system must preserve across phases. Each
|
|
72
|
+
principle should be testable enough to guide tradeoffs when phases conflict.
|
|
73
|
+
-->
|
|
74
|
+
|
|
75
|
+
## Inputs and evidence
|
|
76
|
+
<!--
|
|
77
|
+
What evidence the system consumes: customer notes, interviews, traces, Jira
|
|
78
|
+
issues, PRDs, research, analytics, support tickets, prior decisions. State
|
|
79
|
+
minimum evidence thresholds where useful (e.g. "two independent customer
|
|
80
|
+
interviews before a PRD enters review").
|
|
81
|
+
-->
|
|
82
|
+
|
|
83
|
+
## Phases
|
|
84
|
+
|
|
85
|
+
<!--
|
|
86
|
+
Each phase below holds its own goal, status, workflow requirements (MR),
|
|
87
|
+
and document + evaluation requirements (DR), with acceptance criteria
|
|
88
|
+
inline next to each. Use `MR-<phase>.<n>` and `DR-<phase>.<n>` so
|
|
89
|
+
requirements can be referenced from reviews, traces, and evals.
|
|
90
|
+
|
|
91
|
+
MR = Workflow requirement: how the process or agent workflow must behave;
|
|
92
|
+
observable in generated artifacts, workflow state, or tool behavior.
|
|
93
|
+
|
|
94
|
+
DR = Document + evaluation requirement: how outputs are shaped, reviewed,
|
|
95
|
+
and scored; required sections, evidence rules, citation rules, formatting
|
|
96
|
+
constraints, anti-patterns, rubric dimensions, pass/fail checks.
|
|
97
|
+
|
|
98
|
+
Status values: not started | in progress | shipped | deferred.
|
|
99
|
+
-->
|
|
100
|
+
|
|
101
|
+
### Phase 1: <name>
|
|
102
|
+
|
|
103
|
+
- **Goal**: <what this phase delivers>
|
|
104
|
+
- **Status**: not started
|
|
105
|
+
|
|
106
|
+
**Workflow**
|
|
107
|
+
|
|
108
|
+
- **MR-1.1**: <imperative statement of how the workflow must behave>
|
|
109
|
+
- *Acceptance*: <how a reviewer or trace verifies this without asking the author>
|
|
110
|
+
- **MR-1.2**: <...>
|
|
111
|
+
- *Acceptance*: <...>
|
|
112
|
+
|
|
113
|
+
**Document + evaluation**
|
|
114
|
+
|
|
115
|
+
- **DR-1.1**: <required section, evidence rule, citation rule, formatting constraint, or anti-pattern>
|
|
116
|
+
- *Acceptance*: <rubric dimension, pass/fail check, or trace signal that proves it>
|
|
117
|
+
|
|
118
|
+
### Phase 2: <name>
|
|
119
|
+
|
|
120
|
+
- **Goal**: <what this phase delivers>
|
|
121
|
+
- **Status**: not started
|
|
122
|
+
|
|
123
|
+
**Workflow**
|
|
124
|
+
|
|
125
|
+
- **MR-2.1**: <...>
|
|
126
|
+
- *Acceptance*: <...>
|
|
127
|
+
- **MR-2.2**: <...>
|
|
128
|
+
- *Acceptance*: <...>
|
|
129
|
+
|
|
130
|
+
**Document + evaluation**
|
|
131
|
+
|
|
132
|
+
- **DR-2.1**: <...>
|
|
133
|
+
- *Acceptance*: <...>
|
|
134
|
+
|
|
135
|
+
### Phase 3: <name>
|
|
136
|
+
|
|
137
|
+
- **Goal**: <what this phase delivers>
|
|
138
|
+
- **Status**: not started
|
|
139
|
+
|
|
140
|
+
**Workflow**
|
|
141
|
+
|
|
142
|
+
- **MR-3.1**: <...>
|
|
143
|
+
- *Acceptance*: <...>
|
|
144
|
+
|
|
145
|
+
**Document + evaluation**
|
|
146
|
+
|
|
147
|
+
- **DR-3.1**: <...>
|
|
148
|
+
- *Acceptance*: <...>
|
|
149
|
+
|
|
150
|
+
## Human approval gates
|
|
151
|
+
<!--
|
|
152
|
+
Where a person must review, approve, reject, or supply missing context before
|
|
153
|
+
the system writes externally or treats a document as approved. Name the gate,
|
|
154
|
+
the reviewer role, and the timeout policy if no reviewer responds.
|
|
155
|
+
-->
|
|
156
|
+
|
|
157
|
+
## Failure modes and mitigations
|
|
158
|
+
|
|
159
|
+
| Failure mode | Likelihood | Impact | Mitigation |
|
|
160
|
+
|---|---|---|---|
|
|
161
|
+
| <how this could go wrong if followed too literally, over-automated, or used with weak evidence> | low / med / high | low / med / high | <guardrail or escape hatch> |
|
|
162
|
+
|
|
163
|
+
## Rollout
|
|
164
|
+
<!--
|
|
165
|
+
How this operating model becomes the default. Migration steps, owners,
|
|
166
|
+
training, deprecation date for the older template or workflow. Name what
|
|
167
|
+
happens to in-flight work (grandfathered or migrated).
|
|
168
|
+
-->
|
|
169
|
+
|
|
170
|
+
## Open questions
|
|
171
|
+
|
|
172
|
+
| Question | Owner | Decision needed by |
|
|
173
|
+
|---|---|---|
|
|
174
|
+
| <unknown that could change the operating model> | <name> | <YYYY-MM-DD> |
|
|
175
|
+
|
|
176
|
+
## References
|
|
177
|
+
<!-- Linked examples, prior PRDs, Meta PRDs, research, tickets, traces, or decisions. -->
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Business PRD: {title}
|
|
2
|
+
|
|
3
|
+
- **Date**: {YYYY-MM-DD}
|
|
4
|
+
- **Owner**: {name}
|
|
5
|
+
- **Status**: draft | in-review | approved | shipped | deprecated
|
|
6
|
+
|
|
7
|
+
<!--
|
|
8
|
+
Use this for strategic bets, market positioning decisions, business model changes,
|
|
9
|
+
partnership structures, pricing strategy, and make-vs-buy decisions.
|
|
10
|
+
|
|
11
|
+
This is not a feature spec. It defines the bet, the market thesis, the alternatives
|
|
12
|
+
rejected, and what would have to be true for this to work.
|
|
13
|
+
|
|
14
|
+
Use prd.md for customer-facing product capabilities.
|
|
15
|
+
Use prd-platform.md for internal platform and developer-facing capabilities.
|
|
16
|
+
-->
|
|
17
|
+
|
|
18
|
+
## The bet
|
|
19
|
+
<!-- One or two sentences: what we are committing to and why now. This should be falsifiable. -->
|
|
20
|
+
|
|
21
|
+
## Market thesis
|
|
22
|
+
<!-- The one-paragraph view of market shape, buyer behavior, and where value accrues. Every decision in this document links back here or challenges it. -->
|
|
23
|
+
|
|
24
|
+
## Problem and opportunity
|
|
25
|
+
<!-- What is broken in the market or business today? What does the opportunity look like at full scale? State the pain and the size of the prize: with evidence. -->
|
|
26
|
+
|
|
27
|
+
## Strategic goals
|
|
28
|
+
<!-- What this decision achieves at the business level: position, revenue, defensibility, optionality. Tie to company objectives. -->
|
|
29
|
+
|
|
30
|
+
## Alternatives rejected
|
|
31
|
+
<!-- The other credible paths that were considered. For each: what it is, why it was rejected, and what would have to change to reconsider it. No strawmen. -->
|
|
32
|
+
|
|
33
|
+
## What must be true
|
|
34
|
+
<!-- The conditions that have to hold for this bet to pay off. Make them explicit so they can be monitored. -->
|
|
35
|
+
|
|
36
|
+
## Competitive analysis
|
|
37
|
+
<!-- For each relevant competitor: business model (unit economics, distribution, defensibility), not just feature surface. Avoid feature parity tables that ignore economics. -->
|
|
38
|
+
|
|
39
|
+
## Make vs. buy vs. partner
|
|
40
|
+
<!-- If applicable: the build/buy/partner tradeoffs with rationale. Include cost, control, speed, and strategic leverage. -->
|
|
41
|
+
|
|
42
|
+
## Go-to-market implications
|
|
43
|
+
<!-- Pricing, packaging, channels, positioning changes. What motion this requires from sales, marketing, or customer success. -->
|
|
44
|
+
|
|
45
|
+
## Financial frame
|
|
46
|
+
<!-- Revenue model, cost structure, expected unit economics. Include the range of outcomes, not just the upside case. -->
|
|
47
|
+
|
|
48
|
+
## Kill criteria
|
|
49
|
+
<!-- The leading indicator and the threshold at which this strategy is revisited or abandoned. Without this, bad bets survive longer than they should. -->
|
|
50
|
+
|
|
51
|
+
## Risks
|
|
52
|
+
<!-- Market, execution, regulatory, competitive, and technical risks. Rate each by likelihood and impact. State the mitigation or acceptance rationale. -->
|
|
53
|
+
|
|
54
|
+
## Constraints
|
|
55
|
+
<!-- Budget, timeline, team, regulatory, or partner dependencies that shape the scope of this decision. -->
|
|
56
|
+
|
|
57
|
+
## Open questions
|
|
58
|
+
<!-- Genuine unknowns. Each names an owner and a decision deadline. -->
|
|
59
|
+
|
|
60
|
+
## References
|
|
61
|
+
<!-- Market research, customer interviews, financial models, prior decisions, analyst reports, competitor filings. -->
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Platform PRD: {title}
|
|
2
|
+
|
|
3
|
+
- **Date**: {YYYY-MM-DD}
|
|
4
|
+
- **Owner**: {name}
|
|
5
|
+
- **Status**: draft | in-review | approved | shipped | deprecated
|
|
6
|
+
|
|
7
|
+
<!--
|
|
8
|
+
Use this for capabilities consumed by internal systems, developers, operators, or other
|
|
9
|
+
services: not directly by end users. Covers APIs, SDKs, admin surfaces, data contracts,
|
|
10
|
+
shared infrastructure, and operational tooling.
|
|
11
|
+
|
|
12
|
+
Use prd.md instead for customer-facing product capabilities.
|
|
13
|
+
Use meta-prd.md for requirements about the product operating system itself.
|
|
14
|
+
|
|
15
|
+
Name the platform actor precisely: platform builder, application developer, security admin,
|
|
16
|
+
operator. "Developer" is too broad.
|
|
17
|
+
-->
|
|
18
|
+
|
|
19
|
+
## Problem
|
|
20
|
+
<!-- What is broken, missing, or blocking a platform actor or downstream system? One paragraph. State the operational or integration pain, not the solution. -->
|
|
21
|
+
|
|
22
|
+
## Platform actors
|
|
23
|
+
<!-- Who consumes this capability? Name roles precisely (app developer, ops engineer, data analyst, etc.). Include scale and current workaround. Cite evidence: tickets, incidents, support load. -->
|
|
24
|
+
|
|
25
|
+
## Goals and non-goals
|
|
26
|
+
<!-- Goals: what success looks like for the consumers. Non-goals: explicitly scoped out. -->
|
|
27
|
+
|
|
28
|
+
## Platform flow
|
|
29
|
+
|
|
30
|
+
```mermaid
|
|
31
|
+
flowchart TD
|
|
32
|
+
A[Consumer] --> B[Platform API]
|
|
33
|
+
B --> C[Core service]
|
|
34
|
+
C --> D[Response / event]
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## API and interface contract
|
|
38
|
+
<!-- The surface being defined: endpoints, schemas, SDK methods, event payloads, config shapes, permission models. Number each contract item (C-1, C-2, …). -->
|
|
39
|
+
|
|
40
|
+
## Functional requirements
|
|
41
|
+
<!-- What the system must do. Number them (FR-1, FR-2, …). -->
|
|
42
|
+
|
|
43
|
+
## Non-functional requirements
|
|
44
|
+
<!-- Performance SLOs, reliability targets, security, compliance, scalability limits. Include numeric targets. -->
|
|
45
|
+
|
|
46
|
+
## Backwards compatibility and versioning
|
|
47
|
+
<!-- Is this a new contract or a change to an existing one? If a change: breaking vs. non-breaking, versioning strategy, and how existing consumers are supported. -->
|
|
48
|
+
|
|
49
|
+
## Migration and rollout
|
|
50
|
+
<!-- How consumers move to the new contract. Include migration steps, tooling, timeline, and who is responsible. Flag any coordination with downstream teams. -->
|
|
51
|
+
|
|
52
|
+
## Operational requirements
|
|
53
|
+
<!-- Observability (metrics, logs, traces), auditability, rate limits, failure modes, fallback behavior, support diagnostics, admin controls. These are product requirements, not afterthoughts. -->
|
|
54
|
+
|
|
55
|
+
## Acceptance criteria
|
|
56
|
+
<!-- Observable, falsifiable conditions a reviewer can check. Include integration and contract tests where relevant. -->
|
|
57
|
+
|
|
58
|
+
## Success metrics
|
|
59
|
+
<!-- How we know this worked: adoption, error rate, latency, support ticket reduction. Leading vs. lagging. -->
|
|
60
|
+
|
|
61
|
+
| Metric | Baseline | Target |
|
|
62
|
+
|---|---|---|
|
|
63
|
+
| {name} | {current} | {goal} |
|
|
64
|
+
|
|
65
|
+
## Risks and mitigations
|
|
66
|
+
|
|
67
|
+
| Risk | Likelihood | Impact | Mitigation |
|
|
68
|
+
|---|---|---|---|
|
|
69
|
+
| {risk} | low / med / high | low / med / high | {mitigation} |
|
|
70
|
+
|
|
71
|
+
## Consumer impact
|
|
72
|
+
<!-- What changes for existing consumers. What breaks, what degrades, what stays the same. Link to migration guide if needed. -->
|
|
73
|
+
|
|
74
|
+
## Dependencies
|
|
75
|
+
<!-- Upstream services, data contracts, team availability, vendor timelines. -->
|
|
76
|
+
|
|
77
|
+
## Open questions
|
|
78
|
+
<!-- Genuine unknowns. Each question names an owner and a decision deadline. -->
|
|
79
|
+
|
|
80
|
+
## References
|
|
81
|
+
<!-- Linked designs, prior PRDs, ADRs, incidents, runbooks, tickets. -->
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# PRFAQ: {title}
|
|
2
|
+
|
|
3
|
+
- **Date**: {YYYY-MM-DD}
|
|
4
|
+
- **Owner**: {name}
|
|
5
|
+
- **Status**: draft | in-review | approved
|
|
6
|
+
|
|
7
|
+
<!--
|
|
8
|
+
Use for working-backwards product thinking. A PRFAQ can be generated from a PRD
|
|
9
|
+
or directly from evidence, but it must not invent customer demand.
|
|
10
|
+
-->
|
|
11
|
+
|
|
12
|
+
## One-sentence summary
|
|
13
|
+
<!-- One sentence for an executive reader. Name the audience and outcome. -->
|
|
14
|
+
|
|
15
|
+
## Problem statement
|
|
16
|
+
<!-- Two or three paragraphs grounded in evidence. Explain the customer problem, why now, and what is missing today. -->
|
|
17
|
+
|
|
18
|
+
```mermaid
|
|
19
|
+
flowchart LR
|
|
20
|
+
A[Customer need] --> B[Current workaround]
|
|
21
|
+
B --> C[Proposed capability]
|
|
22
|
+
C --> D[Outcome after launch]
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Press release
|
|
26
|
+
<!-- Write as if the capability has shipped. Focus on customer outcome, not implementation. Include a spokesperson quote and a customer quote — mark a hypothetical quote as such; never invent an attributed one (rules/common/no-fabrication.md). -->
|
|
27
|
+
|
|
28
|
+
## External FAQ
|
|
29
|
+
<!-- Customer-facing questions and answers. Keep answers concrete and honest about limits. -->
|
|
30
|
+
|
|
31
|
+
## Internal FAQ
|
|
32
|
+
<!-- Questions from engineering, sales, support, security, finance, and leadership. Include unknowns as TBD with what would resolve them. Cover the launch/success metrics: what target defines success and by when. -->
|
|
33
|
+
|
|
34
|
+
## Evidence appendix
|
|
35
|
+
<!-- Source links, customer quotes, related issues, research, and PRDs. -->
|
|
36
|
+
|
|
37
|
+
## Review tracking
|
|
38
|
+
<!-- Reviewer, function, decision, date, and required follow-up. -->
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
cx_doc_id: 019ddb68-5aed-7dcf-829c-e5e0bea4e511
|
|
3
|
+
created_at: "2026-04-29T22:42:22.573Z"
|
|
4
|
+
updated_at: "2026-04-29T22:42:22.573Z"
|
|
5
|
+
generator: construct/init-docs
|
|
6
|
+
body_hash: "sha256:ce40ad549fb8706ceb73055550c09928256233e3a074acbee4e5ce38126fce2d"
|
|
7
|
+
---
|
|
8
|
+
<!--
|
|
9
|
+
templates/docs/rfcs/README.md: lane guide for RFCs.
|
|
10
|
+
|
|
11
|
+
Generated from the Construct documentation lane templates. Keep this lane focused on one document
|
|
12
|
+
family. If it no longer has a distinct purpose, prune it or merge it elsewhere.
|
|
13
|
+
-->
|
|
14
|
+
|
|
15
|
+
# RFCs
|
|
16
|
+
|
|
17
|
+
Architecture and implementation proposals that need review before a decision.
|
|
18
|
+
|
|
19
|
+
## Starter templates
|
|
20
|
+
|
|
21
|
+
- [_template.md](./templates/_template.md)
|
|
22
|
+
- [rfc-platform.template.md](./templates/rfc-platform.template.md)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# RFC: {title}
|
|
2
|
+
|
|
3
|
+
- **Date**: {YYYY-MM-DD}
|
|
4
|
+
- **Author**: {name}
|
|
5
|
+
- **Status**: draft | in-review | accepted | rejected | superseded
|
|
6
|
+
- **Supersedes**: {RFC title or N/A}
|
|
7
|
+
- **Superseded by**: {RFC title or N/A}
|
|
8
|
+
|
|
9
|
+
<!--
|
|
10
|
+
Use this for significant technical or architectural proposals that need structured
|
|
11
|
+
review before implementation begins. An RFC is not an ADR (which records a decision
|
|
12
|
+
already made): it is the proposal that leads to one.
|
|
13
|
+
|
|
14
|
+
Use rfc-platform.md instead when the proposal introduces breaking changes to a
|
|
15
|
+
contract, API, schema, or protocol consumed by other systems.
|
|
16
|
+
-->
|
|
17
|
+
|
|
18
|
+
## Summary
|
|
19
|
+
<!-- One paragraph. What is being proposed and why. Someone who reads only this should understand the intent. -->
|
|
20
|
+
|
|
21
|
+
## Motivation
|
|
22
|
+
<!-- What problem or limitation drives this proposal? Include evidence: incidents, performance data, support tickets, developer friction. Explain why the status quo is not acceptable. -->
|
|
23
|
+
|
|
24
|
+
## Proposed design
|
|
25
|
+
<!-- The concrete proposal. Enough detail for reviewers to evaluate feasibility and tradeoffs. The sequence below shows the proposed behavior in context — include the happy path and at least one error path. -->
|
|
26
|
+
|
|
27
|
+
```mermaid
|
|
28
|
+
sequenceDiagram
|
|
29
|
+
participant Client
|
|
30
|
+
participant Service
|
|
31
|
+
participant Store
|
|
32
|
+
Client->>Service: request
|
|
33
|
+
Service->>Store: read or write
|
|
34
|
+
Store-->>Service: result
|
|
35
|
+
Service-->>Client: response
|
|
36
|
+
Note over Service,Store: error path — Store unavailable → Service returns degraded response
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Tradeoffs and alternatives
|
|
40
|
+
<!-- The other credible designs considered. For each: what it is, why it was not chosen, and under what conditions it would be preferred. No strawmen. -->
|
|
41
|
+
|
|
42
|
+
## Drawbacks
|
|
43
|
+
<!-- What this proposal makes harder, slower, or more expensive. Include technical debt, operational complexity, and team burden. -->
|
|
44
|
+
|
|
45
|
+
## Risks
|
|
46
|
+
<!-- What could go wrong during implementation or in production. For each: likelihood, impact, and mitigation. -->
|
|
47
|
+
|
|
48
|
+
## Rollout
|
|
49
|
+
<!-- How this change ships. Phased rollout, feature flags, dark launch, migration path, deprecation timeline. -->
|
|
50
|
+
|
|
51
|
+
## Verification
|
|
52
|
+
<!-- How we confirm the proposal achieved its goals. Tests, metrics, observable evidence. -->
|
|
53
|
+
|
|
54
|
+
## Unresolved questions
|
|
55
|
+
<!-- Genuine unknowns that remain. Each names an owner and a decision deadline. These should be resolved before the RFC is accepted. -->
|
|
56
|
+
|
|
57
|
+
## References
|
|
58
|
+
<!-- Related ADRs, prior RFCs, design docs, tickets, research, external standards. -->
|