mirror of
https://github.com/profullstack/logicsrc.git
synced 2026-08-13 22:37:29 +00:00
feat(openprd): implement the OpenPRD standard — engine, CLI, conformance bundle (#100)
OpenPRD has existed as a document (docs/openprd.md), a front-matter schema, a
template, and this repo's prd/ collection. Nothing enforced it. This adds the
reference implementation.
@logicsrc/openprd
- parser: front-matter + the eight `##` sections + numbered requirements.
`###` stays content so a long Requirements section can be organized, and
headings or R#-shaped lines inside code fences are ignored
- validation splits the standard's four conformance rules (filename,
front-matter schema, id-matches-prefix, eight sections in order) from
lint (empty section, missing priority tag, numbering gaps, duplicate R#,
date order, one-sided supersession, stale index). Conformance failures are
errors; --strict promotes the rest. Stable codes, file, line, hint
- collection rules the per-file view cannot see: unique ids, monotonic
numbering with no gaps, 0000 reserved for the template, cross-references
that resolve
- lifecycle enforced rather than advisory: Draft cannot jump to Final,
terminal statuses do not resume, Superseded must name its replacement
- deterministic index generation, so `prd index` is idempotent and CI can
diff it
- front-matter rewriting that leaves the body byte-identical
- the optional LogicSRC task bridge the standard describes: each R# becomes
one logicsrc.task, validated against logicsrc-task.schema.json before it
is emitted; creator DID derived from the author email
CLI: logicsrc prd init|new|list|show|validate|lint|index|status|next|tasks|
export. Exit codes stable for CI (0 ok, 1 invalid, 2 usage, 3 not found).
Conformance bundle: packages/schemas/fixtures/openprd/ — 6 documents that must
validate and 12 that must fail, each naming the error code it must produce.
Several rules depend on the filename, so every fixture records the name it is
validated as.
Docs: an Implementation section in docs/openprd.md (CLI, validation model,
task bridge, conformance bundle), the spec added to the site's docs surface,
nav and sitemap entries, and a README section.
Verification: 76 new tests; full monorepo build and all 451 workspace tests
pass. The suite dogfoods this repo — prd/ validates with zero errors and zero
warnings, the embedded template is byte-identical to docs/openprd/0000-
template.md, and all 210 requirements in PRD 0001 map to schema-valid tasks.
prd/README.md is regenerated by the tool it now ships.
Refs: docs/openprd.md
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
58c942c67f
commit
296775e003
45 changed files with 3605 additions and 5 deletions
41
packages/schemas/fixtures/openprd/valid/none-sections.md
Normal file
41
packages/schemas/fixtures/openprd/valid/none-sections.md
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
---
|
||||
openprd: "0.2"
|
||||
id: "0005"
|
||||
title: Keep every section even when empty
|
||||
status: Accepted
|
||||
authors:
|
||||
- a@example.com
|
||||
---
|
||||
|
||||
## Problem
|
||||
|
||||
The thing is broken and it costs us money every week.
|
||||
|
||||
## Goals
|
||||
|
||||
_None._
|
||||
|
||||
## Non-Goals
|
||||
|
||||
_None._
|
||||
|
||||
## Users
|
||||
|
||||
_None._
|
||||
|
||||
## Requirements
|
||||
|
||||
- R1 [P0] First required capability.
|
||||
|
||||
## UX Notes
|
||||
|
||||
_None._
|
||||
|
||||
## Success Metrics
|
||||
|
||||
_None._
|
||||
|
||||
## Risks & Open Questions
|
||||
|
||||
_None._
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue