Skip to content

Add Tech Stack and Monetization sections to OpenPRD (0.3) - #144

Merged
ralyodio merged 1 commit into
masterfrom
worktree-openprd-stack-monetization
Sep 6, 2026
Merged

Add Tech Stack and Monetization sections to OpenPRD (0.3)#144
ralyodio merged 1 commit into
masterfrom
worktree-openprd-stack-monetization

Conversation

@ralyodio

@ralyodio ralyodio commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Adds two required body sections to the OpenPRD standard and bumps it to 0.3.

What's new

Between ## UX Notes and ## Success Metrics:

  • ## Tech Stack — languages, frameworks, datastores, third-party services, and anything the work must not depend on. It is what makes the requirements costable, and what stops the stack from being chosen silently in the first implementation PR.
  • ## 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 rather than by omission.

PRD 0006 in this repo had already grown a hand-rolled ## Business model section, and 0002 an ## Implementation Notes — the gap was real.

Backward compatibility

Adding required sections would normally invalidate every 0.2 document ever written. It doesn't, because a document is now held to the section list its own openprd: key fixes:

Version Sections
0.2 eight — unchanged, conforms forever
0.3 ten

Adoption is per document, not per collection. logicsrc prd validate --expect-version 0.3 (new flag, wiring up the expectedVersion option the validator already had) reports stragglers as OP-L-VERSION — a warning, an error under --strict.

The front-matter JSON Schema is untouched; both additions are body sections.

Conformance

The bundle proves both directions:

  • invalid/missing-monetization.md — a 0.3 document without Monetization fails with OP-C-SECTION-MISSING
  • valid/legacy-0-2.md — a 0.2 document with eight sections passes, unedited

This repo's PRDs 0001-0006 deliberately stay at 0.2 as standing evidence that the rule holds. PRD 0007 records the decision, written at 0.3.

Surfaces updated

Spec (docs/openprd.md, new Versioning section), template (docs/openprd/0000-template.md + prd/0000-template.md), @logicsrc/openprd (sectionsForVersion, exported), CLI, MCP draft_prd/review_prd prompts, conformance fixtures, and the logicsrc.com/openprd landing page.

Testing

  • packages/openprd — 79 passed, including three new tests for version-aware section lists
  • packages/logicsrc-mcp — 17 passed
  • tsc --noEmit clean on packages/openprd; no new errors in packages/cli or apps/logicsrc-web
  • Verified against the live prd/ collection: clean with no flag, six OP-L-VERSION warnings with --expect-version 0.3

🤖 Generated with Claude Code

https://claude.ai/code/session_017XRNNm6pK6nPi7rJ6bJNHu

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.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017XRNNm6pK6nPi7rJ6bJNHu
@github-actions

github-actions Bot commented Sep 6, 2026

Copy link
Copy Markdown

ThreatCrush Security Scan

21 finding(s)

HIGH/CRITICAL: 3 | MEDIUM: 9 | LOW: 9

Severity Rule Location
HIGH secret-private-key plugins/credential-sharing/src/providers/ssh.ts:129
HIGH js-host-header-trust apps/commandboard-web/server.js:27
HIGH js-ssrf-outbound-request apps/pwa/public/sw.js:45
MEDIUM js-unescaped-html-sink apps/commandboard-web/src/main.ts:19
MEDIUM js-unescaped-html-sink apps/logicsrc-web/src/app/[[...slug]]/page.tsx:73
MEDIUM js-unescaped-html-sink apps/logicsrc-web/src/app/layout.tsx:83
MEDIUM js-unescaped-html-sink apps/logicsrc-web/src/app/pricing/page.tsx:46
MEDIUM js-unescaped-html-sink apps/logicsrc-web/src/components/site-shell.tsx:49
MEDIUM redos-nested-quantifier packages/opencontext/src/ids.ts:10
MEDIUM redos-nested-quantifier packages/opencontext/src/ids.ts:11
MEDIUM js-timing-unsafe-mac-compare packages/opencontext/src/validate.ts:208
MEDIUM redos-nested-quantifier packages/openontology/src/ids.ts:20
LOW secret-generic-credential apps/pwa/test/appbar.test.mjs:10
LOW secret-aws-access-key packages/opencontext/src/permissions.test.ts:260
LOW secret-private-key packages/opencontext/src/permissions.test.ts:261
LOW secret-stripe-key packages/opencontext/src/permissions.test.ts:262
LOW secret-aws-access-key packages/opencontext/src/security.test.ts:228
LOW secret-private-key plugins/credential-sharing/src/providers/ssh.test.ts:7
LOW secret-database-url plugins/credential-sharing/src/rekey.test.ts:33
LOW secret-openai-key plugins/credential-sharing/src/vault-encryption.test.ts:21
LOW secret-generic-credential plugins/credential-sharing/src/vault-encryption.test.ts:21

Snippets are redacted; ThreatCrush never prints matched credential material.

@ralyodio
ralyodio merged commit 9183417 into master Sep 6, 2026
6 checks passed
@ralyodio
ralyodio deleted the worktree-openprd-stack-monetization branch September 6, 2026 23:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant