mirror of
https://github.com/profullstack/logicsrc.git
synced 2026-09-10 19:26:00 +00:00
Add Tech Stack and Monetization sections to OpenPRD (0.3) (#144)
OpenPRD 0.2 fixed eight body sections, none of which asked what the thing is
built on or how it earns. The stack got chosen in the first implementation PR
instead of at review, and a PRD could be filled out completely without anyone
writing down who pays. PRD 0006 had already grown a hand-rolled
`## Business model` section, which is the gap showing.
0.3 adds two required sections between `UX Notes` and `Success Metrics`:
- Tech Stack — languages, frameworks, datastores, third-party services, and
anything the work must not depend on. It makes the requirements costable.
- Monetization — the revenue model: who pays, for what, how much, and when.
`_None._` stays a valid answer, but it now has to be said out loud.
Adding required sections would normally invalidate every document already
written, so a document is now held to the section list its own `openprd:` key
fixes. A 0.2 document keeps conforming with eight sections, forever; a 0.3
document needs ten. Adoption is per document, and `logicsrc prd validate
--expect-version 0.3` (new flag, wiring up the validator option that already
existed) reports the stragglers as OP-L-VERSION.
The front-matter schema is untouched — both additions are body sections.
Conformance bundle proves both directions: invalid/missing-monetization.md
fails with OP-C-SECTION-MISSING, and valid/legacy-0-2.md passes unedited.
This repo's own PRDs 0001-0006 stay at 0.2 as standing evidence that the
compatibility rule holds. PRD 0007 records the decision at 0.3.
Claude-Session: https://claude.ai/code/session_017XRNNm6pK6nPi7rJ6bJNHu
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
ca0283caa9
commit
91834179b7
36 changed files with 679 additions and 80 deletions
|
|
@ -51,7 +51,7 @@ Every PRD opens with a YAML front-matter block validated by
|
|||
|
||||
```yaml
|
||||
---
|
||||
openprd: "0.2" # standard version (required)
|
||||
openprd: "0.3" # standard version (required)
|
||||
id: "0001" # 4-digit number == filename prefix (required)
|
||||
title: Expand the parked-domain service # imperative title (required)
|
||||
status: Draft # Draft|Review|Accepted|Final|Rejected|Withdrawn|Superseded (required)
|
||||
|
|
@ -70,7 +70,7 @@ superseded-by: # optional 4-digit id that replaces this PRD
|
|||
|
||||
## Body sections
|
||||
|
||||
The body is Markdown with a fixed, ordered set of `##` sections. All are required (a section MAY be a single line such as `_None._`), which keeps every PRD skimmable and diffable:
|
||||
The body is Markdown with a fixed, ordered set of `##` sections. All are required (a section MAY be a single line such as `_None._`), which keeps every PRD skimmable and diffable. OpenPRD `0.3` fixes ten:
|
||||
|
||||
1. `## Problem` — the user/business problem, and why it matters now.
|
||||
2. `## Goals` — what success looks like, as outcomes (not features).
|
||||
|
|
@ -78,8 +78,10 @@ The body is Markdown with a fixed, ordered set of `##` sections. All are require
|
|||
4. `## Users` — who this is for; personas or segments.
|
||||
5. `## Requirements` — numbered `R1`, `R2`, … each prefixed with a priority tag `[P0]`/`[P1]`/`[P2]`. One capability per line.
|
||||
6. `## UX Notes` — flows, states, and constraints that shape the experience.
|
||||
7. `## Success Metrics` — how the goals will be measured.
|
||||
8. `## Risks & Open Questions` — known risks and decisions still owed.
|
||||
7. `## Tech Stack` — languages, frameworks, datastores, and third-party services the work will be built on, plus anything it must not depend on. Naming the stack in the PRD is what makes the requirements costable, and what stops the choice from being made silently in the first PR.
|
||||
8. `## Monetization` — the revenue model: who pays, for what, how much, and when. Free, internal, or loss-leading work says so here (`_None._` is a valid answer, and a deliberate one); the section exists so that "how does this earn?" is answered before the code, not after the launch.
|
||||
9. `## Success Metrics` — how the goals will be measured.
|
||||
10. `## Risks & Open Questions` — known risks and decisions still owed.
|
||||
|
||||
See [`0000-template.md`](./openprd/0000-template.md) for the copy-paste template.
|
||||
|
||||
|
|
@ -94,10 +96,11 @@ still just a file: nothing below is required for a document to conform.
|
|||
|
||||
```bash
|
||||
logicsrc prd init # create prd/ with the template and an index
|
||||
logicsrc prd new "Expand the service" # next free number, filled front-matter, eight stub sections
|
||||
logicsrc prd new "Expand the service" # next free number, filled front-matter, ten stub sections
|
||||
logicsrc prd list # id, title, status, tags, requirement count
|
||||
logicsrc prd show 0001 # front-matter, sections, and parsed requirements
|
||||
logicsrc prd validate --strict # conformance + lint, exit 1 on error
|
||||
logicsrc prd validate --expect-version 0.3 # flag PRDs still declaring an older version
|
||||
logicsrc prd index --write # regenerate prd/README.md from what is on disk
|
||||
logicsrc prd status 0001 Review # lifecycle move, refusing illegal transitions
|
||||
logicsrc prd tasks 0001 # the optional LogicSRC task bridge
|
||||
|
|
@ -137,9 +140,29 @@ name it must be validated as.
|
|||
|
||||
## Conformance
|
||||
|
||||
A document conforms to OpenPRD `0.2` when:
|
||||
A document conforms to OpenPRD `0.3` when:
|
||||
|
||||
- it lives at `prd/<id>-<slug>.md` with a four-digit `<id>`,
|
||||
- its front-matter validates against `openprd-prd.schema.json`,
|
||||
- `id` equals the filename's numeric prefix, and
|
||||
- all eight body sections are present in order.
|
||||
- all ten body sections are present in order.
|
||||
|
||||
## Versioning
|
||||
|
||||
A document is judged against the version it declares in its own `openprd:`
|
||||
key, not against the newest one. That is what makes it safe to add a section:
|
||||
|
||||
| Version | Sections | Change |
|
||||
| --- | --- | --- |
|
||||
| `0.2` | eight | Problem … Risks & Open Questions |
|
||||
| `0.3` | ten | adds `Tech Stack` and `Monetization` after `UX Notes` |
|
||||
|
||||
So a `0.2` document keeps conforming forever, and validators MUST hold it to
|
||||
the eight sections `0.2` fixed. Adopting `0.3` in an existing collection is a
|
||||
per-document edit: bump `openprd` to `"0.3"` and add the two sections, using
|
||||
`_None._` where they do not apply. Nothing forces a whole collection to move at
|
||||
once; a collection that wants uniformity asks for it with
|
||||
`logicsrc prd validate --expect-version 0.3`, which reports every document
|
||||
declaring something else as `OP-L-VERSION` (a warning, or an error under
|
||||
`--strict`). Each document is still validated against the sections its own
|
||||
version fixes.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
---
|
||||
openprd: "0.2"
|
||||
openprd: "0.3"
|
||||
id: "0000"
|
||||
title: "Short imperative title — start with a verb if possible"
|
||||
status: Draft
|
||||
|
|
@ -41,6 +41,16 @@ Who this is for; personas or segments.
|
|||
|
||||
Flows, states, and constraints that shape the experience.
|
||||
|
||||
## Tech Stack
|
||||
|
||||
Languages, frameworks, datastores, and third-party services this will be built
|
||||
on, and anything it must not depend on.
|
||||
|
||||
## Monetization
|
||||
|
||||
The revenue model: who pays, for what, how much, and when. None, when the
|
||||
change does not earn on its own.
|
||||
|
||||
## Success Metrics
|
||||
|
||||
How the goals will be measured.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue