@logicsrc/schemas 0.1.0

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.
Files changed (194) hide show
  1. package/README.md +34 -0
  2. package/fixtures/agent.yaml +20 -0
  3. package/fixtures/agentad-ad.yaml +33 -0
  4. package/fixtures/agentad-placement.yaml +21 -0
  5. package/fixtures/opencontext/conformance.json +279 -0
  6. package/fixtures/opencontext/invalid/audit-event-missing-actor.json +5 -0
  7. package/fixtures/opencontext/invalid/audit-event-unknown-event.json +9 -0
  8. package/fixtures/opencontext/invalid/bundle-bad-digest.json +11 -0
  9. package/fixtures/opencontext/invalid/bundle-bad-id.json +11 -0
  10. package/fixtures/opencontext/invalid/bundle-missing-digest.json +10 -0
  11. package/fixtures/opencontext/invalid/bundle-unknown-exclusion-reason.json +17 -0
  12. package/fixtures/opencontext/invalid/decision-bad-status.json +7 -0
  13. package/fixtures/opencontext/invalid/decision-missing-decision.json +5 -0
  14. package/fixtures/opencontext/invalid/decision-wrong-type.json +6 -0
  15. package/fixtures/opencontext/invalid/diagnostic-missing-ok.json +4 -0
  16. package/fixtures/opencontext/invalid/diagnostic-unknown-code.json +11 -0
  17. package/fixtures/opencontext/invalid/manifest-bad-authority.json +10 -0
  18. package/fixtures/opencontext/invalid/manifest-bad-extension.json +9 -0
  19. package/fixtures/opencontext/invalid/manifest-bad-id.json +4 -0
  20. package/fixtures/opencontext/invalid/manifest-bad-ttl.json +7 -0
  21. package/fixtures/opencontext/invalid/manifest-missing-version.json +3 -0
  22. package/fixtures/opencontext/invalid/manifest-role-bad-pattern.json +11 -0
  23. package/fixtures/opencontext/invalid/manifest-unknown-key.json +5 -0
  24. package/fixtures/opencontext/invalid/object-bad-digest.json +10 -0
  25. package/fixtures/opencontext/invalid/object-bad-id.json +4 -0
  26. package/fixtures/opencontext/invalid/object-bad-layer.json +5 -0
  27. package/fixtures/opencontext/invalid/object-bad-redaction-mode.json +10 -0
  28. package/fixtures/opencontext/invalid/object-bad-supersedes.json +7 -0
  29. package/fixtures/opencontext/invalid/object-confidence-out-of-range.json +5 -0
  30. package/fixtures/opencontext/invalid/object-extra-property.json +5 -0
  31. package/fixtures/opencontext/invalid/object-missing-id.json +3 -0
  32. package/fixtures/opencontext/invalid/object-missing-type.json +3 -0
  33. package/fixtures/opencontext/invalid/object-source-without-uri.json +9 -0
  34. package/fixtures/opencontext/invalid/object-unknown-authority.json +5 -0
  35. package/fixtures/opencontext/invalid/object-unknown-classification.json +5 -0
  36. package/fixtures/opencontext/invalid/object-unknown-trust.json +5 -0
  37. package/fixtures/opencontext/invalid/provenance-canonical-false.json +4 -0
  38. package/fixtures/opencontext/invalid/provenance-no-source.json +3 -0
  39. package/fixtures/opencontext/invalid/role-bad-classification.json +4 -0
  40. package/fixtures/opencontext/invalid/role-bad-include.json +6 -0
  41. package/fixtures/opencontext/invalid-manifest.json +177 -0
  42. package/fixtures/opencontext/resolution/authority-conflict/context/policies/refunds-observed.md +10 -0
  43. package/fixtures/opencontext/resolution/authority-conflict/context/policies/refunds.md +12 -0
  44. package/fixtures/opencontext/resolution/authority-conflict/expected.json +21 -0
  45. package/fixtures/opencontext/resolution/authority-conflict/opencontext.yaml +11 -0
  46. package/fixtures/opencontext/resolution/classification-ceiling/context/docs/handbook.md +11 -0
  47. package/fixtures/opencontext/resolution/classification-ceiling/context/docs/litigation.md +11 -0
  48. package/fixtures/opencontext/resolution/classification-ceiling/expected.json +32 -0
  49. package/fixtures/opencontext/resolution/classification-ceiling/opencontext.yaml +16 -0
  50. package/fixtures/opencontext/resolution/deny-overrides-allow/context/mission.md +10 -0
  51. package/fixtures/opencontext/resolution/deny-overrides-allow/context/policies/internal/margins.md +10 -0
  52. package/fixtures/opencontext/resolution/deny-overrides-allow/context/policies/refunds.md +10 -0
  53. package/fixtures/opencontext/resolution/deny-overrides-allow/expected.json +19 -0
  54. package/fixtures/opencontext/resolution/deny-overrides-allow/opencontext.yaml +17 -0
  55. package/fixtures/opencontext/resolution/duplicate-canonical/context/policies/refunds-rewrite.md +12 -0
  56. package/fixtures/opencontext/resolution/duplicate-canonical/context/policies/refunds.md +12 -0
  57. package/fixtures/opencontext/resolution/duplicate-canonical/expected.json +10 -0
  58. package/fixtures/opencontext/resolution/duplicate-canonical/opencontext.yaml +11 -0
  59. package/fixtures/opencontext/resolution/lifecycle/context/notes/current.md +11 -0
  60. package/fixtures/opencontext/resolution/lifecycle/context/notes/expired.md +12 -0
  61. package/fixtures/opencontext/resolution/lifecycle/context/notes/future.md +12 -0
  62. package/fixtures/opencontext/resolution/lifecycle/context/notes/stale.md +11 -0
  63. package/fixtures/opencontext/resolution/lifecycle/expected.json +30 -0
  64. package/fixtures/opencontext/resolution/lifecycle/opencontext.yaml +14 -0
  65. package/fixtures/opencontext/resolution/object-permissions/context/policies/payroll.md +12 -0
  66. package/fixtures/opencontext/resolution/object-permissions/context/policies/refunds.md +10 -0
  67. package/fixtures/opencontext/resolution/object-permissions/expected.json +32 -0
  68. package/fixtures/opencontext/resolution/object-permissions/opencontext.yaml +14 -0
  69. package/fixtures/opencontext/resolution/redaction/context/customers/acme.json +21 -0
  70. package/fixtures/opencontext/resolution/redaction/expected.json +28 -0
  71. package/fixtures/opencontext/resolution/redaction/opencontext.yaml +19 -0
  72. package/fixtures/opencontext/resolution/supersession/context/pricing/enterprise.v1.md +12 -0
  73. package/fixtures/opencontext/resolution/supersession/context/pricing/enterprise.v2.md +14 -0
  74. package/fixtures/opencontext/resolution/supersession/expected.json +33 -0
  75. package/fixtures/opencontext/resolution/supersession/opencontext.yaml +11 -0
  76. package/fixtures/opencontext/valid/audit-event.json +26 -0
  77. package/fixtures/opencontext/valid/bundle.json +67 -0
  78. package/fixtures/opencontext/valid/decision.json +51 -0
  79. package/fixtures/opencontext/valid/diagnostic.json +37 -0
  80. package/fixtures/opencontext/valid/manifest-minimal.json +4 -0
  81. package/fixtures/opencontext/valid/manifest.json +134 -0
  82. package/fixtures/opencontext/valid/object-minimal.json +4 -0
  83. package/fixtures/opencontext/valid/object-policy.json +75 -0
  84. package/fixtures/opencontext/valid/object-structured.json +34 -0
  85. package/fixtures/opencontext/valid/object-untrusted.json +19 -0
  86. package/fixtures/opencontext/valid/provenance-canonical.json +4 -0
  87. package/fixtures/opencontext/valid/provenance.json +14 -0
  88. package/fixtures/opencontext/valid/role.json +38 -0
  89. package/fixtures/openontology/conformance.json +158 -0
  90. package/fixtures/openontology/invalid/action-no-permissions.json +13 -0
  91. package/fixtures/openontology/invalid/changeset-empty-operations.json +10 -0
  92. package/fixtures/openontology/invalid/changeset-unknown-op.json +15 -0
  93. package/fixtures/openontology/invalid/claim-both-objects.json +14 -0
  94. package/fixtures/openontology/invalid/claim-confidence-out-of-range.json +14 -0
  95. package/fixtures/openontology/invalid/claim-extra-property.json +14 -0
  96. package/fixtures/openontology/invalid/claim-unknown-status.json +13 -0
  97. package/fixtures/openontology/invalid/entity-missing-canonical-name.json +8 -0
  98. package/fixtures/openontology/invalid/evidence-unknown-selector.json +10 -0
  99. package/fixtures/openontology/invalid/manifest-bad-id.json +15 -0
  100. package/fixtures/openontology/invalid/manifest-bad-version.json +15 -0
  101. package/fixtures/openontology/invalid/manifest-no-maintainer.json +11 -0
  102. package/fixtures/openontology/invalid/relationship-no-range.json +11 -0
  103. package/fixtures/openontology/valid/action.json +29 -0
  104. package/fixtures/openontology/valid/approval.json +12 -0
  105. package/fixtures/openontology/valid/changeset.json +34 -0
  106. package/fixtures/openontology/valid/claim-relationship.json +23 -0
  107. package/fixtures/openontology/valid/claim-value.json +15 -0
  108. package/fixtures/openontology/valid/constraint.json +12 -0
  109. package/fixtures/openontology/valid/entity-type.json +16 -0
  110. package/fixtures/openontology/valid/entity.json +16 -0
  111. package/fixtures/openontology/valid/event.json +17 -0
  112. package/fixtures/openontology/valid/evidence.json +12 -0
  113. package/fixtures/openontology/valid/manifest.json +21 -0
  114. package/fixtures/openontology/valid/namespace.json +7 -0
  115. package/fixtures/openontology/valid/property.json +8 -0
  116. package/fixtures/openontology/valid/query-adhoc.json +16 -0
  117. package/fixtures/openontology/valid/query.json +24 -0
  118. package/fixtures/openontology/valid/relationship-type.json +16 -0
  119. package/fixtures/openontology/valid/review.json +17 -0
  120. package/fixtures/openontology/valid/source.json +13 -0
  121. package/fixtures/openprd/conformance.json +104 -0
  122. package/fixtures/openprd/invalid/bad-filename.md +41 -0
  123. package/fixtures/openprd/invalid/bad-id-format.md +41 -0
  124. package/fixtures/openprd/invalid/bad-status.md +41 -0
  125. package/fixtures/openprd/invalid/dates-backwards.md +43 -0
  126. package/fixtures/openprd/invalid/duplicate-requirement.md +42 -0
  127. package/fixtures/openprd/invalid/id-mismatch.md +41 -0
  128. package/fixtures/openprd/invalid/missing-section.md +37 -0
  129. package/fixtures/openprd/invalid/missing-title.md +40 -0
  130. package/fixtures/openprd/invalid/no-front-matter.md +33 -0
  131. package/fixtures/openprd/invalid/out-of-order.md +41 -0
  132. package/fixtures/openprd/invalid/superseded-without-replacement.md +41 -0
  133. package/fixtures/openprd/invalid/unknown-key.md +42 -0
  134. package/fixtures/openprd/valid/bold-requirements.md +41 -0
  135. package/fixtures/openprd/valid/full.md +48 -0
  136. package/fixtures/openprd/valid/minimal.md +41 -0
  137. package/fixtures/openprd/valid/none-sections.md +41 -0
  138. package/fixtures/openprd/valid/subsections.md +47 -0
  139. package/fixtures/openprd/valid/superseded.md +42 -0
  140. package/fixtures/openprd-prd.yaml +12 -0
  141. package/fixtures/pull-request.yaml +24 -0
  142. package/fixtures/repo.yaml +27 -0
  143. package/fixtures/task.yaml +26 -0
  144. package/package.json +91 -0
  145. package/schemas/agentad-ad-request.schema.json +32 -0
  146. package/schemas/agentad-ad-response.schema.json +31 -0
  147. package/schemas/agentad-ad.schema.json +79 -0
  148. package/schemas/agentad-campaign.schema.json +40 -0
  149. package/schemas/agentad-click.schema.json +23 -0
  150. package/schemas/agentad-impression.schema.json +18 -0
  151. package/schemas/agentad-placement.schema.json +46 -0
  152. package/schemas/logicsrc-account-audit-event.schema.json +31 -0
  153. package/schemas/logicsrc-account-grant.schema.json +48 -0
  154. package/schemas/logicsrc-account-provider.schema.json +31 -0
  155. package/schemas/logicsrc-agent.schema.json +51 -0
  156. package/schemas/logicsrc-connected-account.schema.json +39 -0
  157. package/schemas/logicsrc-credential-audit-event.schema.json +32 -0
  158. package/schemas/logicsrc-credential-provider.schema.json +28 -0
  159. package/schemas/logicsrc-credential-sync-plan.schema.json +56 -0
  160. package/schemas/logicsrc-credential-sync-run.schema.json +35 -0
  161. package/schemas/logicsrc-email-message.schema.json +22 -0
  162. package/schemas/logicsrc-event.schema.json +25 -0
  163. package/schemas/logicsrc-opencontext-audit-event.schema.json +69 -0
  164. package/schemas/logicsrc-opencontext-bundle.schema.json +210 -0
  165. package/schemas/logicsrc-opencontext-decision.schema.json +229 -0
  166. package/schemas/logicsrc-opencontext-diagnostic.schema.json +123 -0
  167. package/schemas/logicsrc-opencontext-manifest.schema.json +337 -0
  168. package/schemas/logicsrc-opencontext-object.schema.json +311 -0
  169. package/schemas/logicsrc-opencontext-provenance.schema.json +76 -0
  170. package/schemas/logicsrc-opencontext-role.schema.json +93 -0
  171. package/schemas/logicsrc-openontology-action.schema.json +90 -0
  172. package/schemas/logicsrc-openontology-approval.schema.json +39 -0
  173. package/schemas/logicsrc-openontology-changeset.schema.json +168 -0
  174. package/schemas/logicsrc-openontology-claim.schema.json +148 -0
  175. package/schemas/logicsrc-openontology-constraint.schema.json +104 -0
  176. package/schemas/logicsrc-openontology-entity-type.schema.json +107 -0
  177. package/schemas/logicsrc-openontology-entity.schema.json +59 -0
  178. package/schemas/logicsrc-openontology-event.schema.json +60 -0
  179. package/schemas/logicsrc-openontology-evidence.schema.json +121 -0
  180. package/schemas/logicsrc-openontology-manifest.schema.json +148 -0
  181. package/schemas/logicsrc-openontology-namespace.schema.json +21 -0
  182. package/schemas/logicsrc-openontology-package.schema.json +73 -0
  183. package/schemas/logicsrc-openontology-property.schema.json +83 -0
  184. package/schemas/logicsrc-openontology-query.schema.json +207 -0
  185. package/schemas/logicsrc-openontology-relationship-type.schema.json +57 -0
  186. package/schemas/logicsrc-openontology-review.schema.json +37 -0
  187. package/schemas/logicsrc-openontology-source.schema.json +43 -0
  188. package/schemas/logicsrc-plugin.schema.json +35 -0
  189. package/schemas/logicsrc-pull-request.schema.json +73 -0
  190. package/schemas/logicsrc-repo.schema.json +73 -0
  191. package/schemas/logicsrc-run.schema.json +69 -0
  192. package/schemas/logicsrc-social-post.schema.json +26 -0
  193. package/schemas/logicsrc-task.schema.json +114 -0
  194. package/schemas/openprd-prd.schema.json +79 -0
@@ -0,0 +1,13 @@
1
+ {
2
+ "openontology": "0.1",
3
+ "kind": "Source",
4
+ "id": "ex:source:repo",
5
+ "sourceType": "git-commit",
6
+ "uri": "https://example.org/repo/commit/abc123",
7
+ "title": "Repository commit",
8
+ "publisher": "example.org",
9
+ "retrievedAt": "2026-07-26T00:00:00Z",
10
+ "contentHash": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
11
+ "mediaType": "text/plain",
12
+ "license": "MIT"
13
+ }
@@ -0,0 +1,104 @@
1
+ {
2
+ "openprdConformance": "0.2",
3
+ "description": "Conformance fixtures for OpenPRD 0.2. Every valid fixture must parse and validate with no errors; every invalid fixture must fail with the stated code. `file` is the filename the fixture must be validated as, since the standard's rules depend on it.",
4
+ "valid": [
5
+ {
6
+ "fixture": "valid/minimal.md",
7
+ "file": "0001-expand-the-parked-domain-service.md"
8
+ },
9
+ {
10
+ "fixture": "valid/full.md",
11
+ "file": "0001-expand-the-parked-domain-service.md"
12
+ },
13
+ {
14
+ "fixture": "valid/bold-requirements.md",
15
+ "file": "0002-use-bold-requirement-markers.md"
16
+ },
17
+ {
18
+ "fixture": "valid/subsections.md",
19
+ "file": "0003-organize-a-long-requirements-section.md"
20
+ },
21
+ {
22
+ "fixture": "valid/superseded.md",
23
+ "file": "0004-retire-the-old-flow.md"
24
+ },
25
+ {
26
+ "fixture": "valid/none-sections.md",
27
+ "file": "0005-keep-every-section-even-when-empty.md"
28
+ }
29
+ ],
30
+ "invalid": [
31
+ {
32
+ "fixture": "invalid/missing-section.md",
33
+ "file": "0001-missing-a-section.md",
34
+ "code": "OP-C-SECTION-MISSING",
35
+ "reason": "The eight body sections are all required; Users is absent."
36
+ },
37
+ {
38
+ "fixture": "invalid/out-of-order.md",
39
+ "file": "0001-sections-out-of-order.md",
40
+ "code": "OP-C-SECTION-ORDER",
41
+ "reason": "Sections must appear in the order the standard fixes."
42
+ },
43
+ {
44
+ "fixture": "invalid/id-mismatch.md",
45
+ "file": "0001-id-does-not-match.md",
46
+ "code": "OP-C-ID-MISMATCH",
47
+ "reason": "front-matter id must equal the filename's numeric prefix."
48
+ },
49
+ {
50
+ "fixture": "invalid/bad-status.md",
51
+ "file": "0001-unknown-status.md",
52
+ "code": "OP-C-FRONTMATTER",
53
+ "reason": "status must be one of the seven lifecycle values."
54
+ },
55
+ {
56
+ "fixture": "invalid/missing-title.md",
57
+ "file": "0001-no-title.md",
58
+ "code": "OP-C-FRONTMATTER",
59
+ "reason": "title is required."
60
+ },
61
+ {
62
+ "fixture": "invalid/bad-id-format.md",
63
+ "file": "0001-two-digit-id.md",
64
+ "code": "OP-C-FRONTMATTER",
65
+ "reason": "id must be four digits, zero-padded."
66
+ },
67
+ {
68
+ "fixture": "invalid/unknown-key.md",
69
+ "file": "0001-unknown-front-matter-key.md",
70
+ "code": "OP-C-FRONTMATTER",
71
+ "reason": "Unknown front-matter keys are rejected."
72
+ },
73
+ {
74
+ "fixture": "invalid/superseded-without-replacement.md",
75
+ "file": "0001-superseded-with-no-replacement.md",
76
+ "code": "OP-L-SUPERSEDED-BY",
77
+ "reason": "Superseded must name the PRD that replaces it."
78
+ },
79
+ {
80
+ "fixture": "invalid/duplicate-requirement.md",
81
+ "file": "0001-duplicate-requirement-id.md",
82
+ "code": "OP-L-REQ-DUPLICATE",
83
+ "reason": "Requirement ids must be unique within a PRD."
84
+ },
85
+ {
86
+ "fixture": "invalid/dates-backwards.md",
87
+ "file": "0001-updated-before-created.md",
88
+ "code": "OP-L-DATE-ORDER",
89
+ "reason": "updated cannot precede created."
90
+ },
91
+ {
92
+ "fixture": "invalid/no-front-matter.md",
93
+ "file": "0001-no-front-matter.md",
94
+ "code": "OP-P-PARSE",
95
+ "reason": "A PRD must open with a YAML front-matter block."
96
+ },
97
+ {
98
+ "fixture": "invalid/bad-filename.md",
99
+ "file": "notes.md",
100
+ "code": "OP-C-FILENAME",
101
+ "reason": "A PRD lives at prd/<id>-<slug>.md with a four-digit id."
102
+ }
103
+ ]
104
+ }
@@ -0,0 +1,41 @@
1
+ ---
2
+ openprd: "0.2"
3
+ id: "0001"
4
+ title: Bad filename
5
+ status: Draft
6
+ authors:
7
+ - a@example.com
8
+ ---
9
+
10
+ ## Problem
11
+
12
+ The thing is broken and it costs us money every week.
13
+
14
+ ## Goals
15
+
16
+ _None._
17
+
18
+ ## Non-Goals
19
+
20
+ _None._
21
+
22
+ ## Users
23
+
24
+ _None._
25
+
26
+ ## Requirements
27
+
28
+ - R1 [P0] First required capability.
29
+
30
+ ## UX Notes
31
+
32
+ _None._
33
+
34
+ ## Success Metrics
35
+
36
+ _None._
37
+
38
+ ## Risks & Open Questions
39
+
40
+ _None._
41
+
@@ -0,0 +1,41 @@
1
+ ---
2
+ openprd: "0.2"
3
+ id: "1"
4
+ title: Two digit id
5
+ status: Draft
6
+ authors:
7
+ - a@example.com
8
+ ---
9
+
10
+ ## Problem
11
+
12
+ The thing is broken and it costs us money every week.
13
+
14
+ ## Goals
15
+
16
+ _None._
17
+
18
+ ## Non-Goals
19
+
20
+ _None._
21
+
22
+ ## Users
23
+
24
+ _None._
25
+
26
+ ## Requirements
27
+
28
+ - R1 [P0] First required capability.
29
+
30
+ ## UX Notes
31
+
32
+ _None._
33
+
34
+ ## Success Metrics
35
+
36
+ _None._
37
+
38
+ ## Risks & Open Questions
39
+
40
+ _None._
41
+
@@ -0,0 +1,41 @@
1
+ ---
2
+ openprd: "0.2"
3
+ id: "0001"
4
+ title: Unknown status
5
+ status: Shipped
6
+ authors:
7
+ - a@example.com
8
+ ---
9
+
10
+ ## Problem
11
+
12
+ The thing is broken and it costs us money every week.
13
+
14
+ ## Goals
15
+
16
+ _None._
17
+
18
+ ## Non-Goals
19
+
20
+ _None._
21
+
22
+ ## Users
23
+
24
+ _None._
25
+
26
+ ## Requirements
27
+
28
+ - R1 [P0] First required capability.
29
+
30
+ ## UX Notes
31
+
32
+ _None._
33
+
34
+ ## Success Metrics
35
+
36
+ _None._
37
+
38
+ ## Risks & Open Questions
39
+
40
+ _None._
41
+
@@ -0,0 +1,43 @@
1
+ ---
2
+ openprd: "0.2"
3
+ id: "0001"
4
+ title: Updated before created
5
+ status: Draft
6
+ authors:
7
+ - a@example.com
8
+ created: 2026-07-20
9
+ updated: 2026-07-01
10
+ ---
11
+
12
+ ## Problem
13
+
14
+ The thing is broken and it costs us money every week.
15
+
16
+ ## Goals
17
+
18
+ _None._
19
+
20
+ ## Non-Goals
21
+
22
+ _None._
23
+
24
+ ## Users
25
+
26
+ _None._
27
+
28
+ ## Requirements
29
+
30
+ - R1 [P0] First required capability.
31
+
32
+ ## UX Notes
33
+
34
+ _None._
35
+
36
+ ## Success Metrics
37
+
38
+ _None._
39
+
40
+ ## Risks & Open Questions
41
+
42
+ _None._
43
+
@@ -0,0 +1,42 @@
1
+ ---
2
+ openprd: "0.2"
3
+ id: "0001"
4
+ title: Duplicate requirement id
5
+ status: Draft
6
+ authors:
7
+ - a@example.com
8
+ ---
9
+
10
+ ## Problem
11
+
12
+ The thing is broken and it costs us money every week.
13
+
14
+ ## Goals
15
+
16
+ _None._
17
+
18
+ ## Non-Goals
19
+
20
+ _None._
21
+
22
+ ## Users
23
+
24
+ _None._
25
+
26
+ ## Requirements
27
+
28
+ - R1 [P0] First.
29
+ - R1 [P1] First again.
30
+
31
+ ## UX Notes
32
+
33
+ _None._
34
+
35
+ ## Success Metrics
36
+
37
+ _None._
38
+
39
+ ## Risks & Open Questions
40
+
41
+ _None._
42
+
@@ -0,0 +1,41 @@
1
+ ---
2
+ openprd: "0.2"
3
+ id: "0042"
4
+ title: Id does not match
5
+ status: Draft
6
+ authors:
7
+ - a@example.com
8
+ ---
9
+
10
+ ## Problem
11
+
12
+ The thing is broken and it costs us money every week.
13
+
14
+ ## Goals
15
+
16
+ _None._
17
+
18
+ ## Non-Goals
19
+
20
+ _None._
21
+
22
+ ## Users
23
+
24
+ _None._
25
+
26
+ ## Requirements
27
+
28
+ - R1 [P0] First required capability.
29
+
30
+ ## UX Notes
31
+
32
+ _None._
33
+
34
+ ## Success Metrics
35
+
36
+ _None._
37
+
38
+ ## Risks & Open Questions
39
+
40
+ _None._
41
+
@@ -0,0 +1,37 @@
1
+ ---
2
+ openprd: "0.2"
3
+ id: "0001"
4
+ title: Missing a section
5
+ status: Draft
6
+ authors:
7
+ - a@example.com
8
+ ---
9
+
10
+ ## Problem
11
+
12
+ The thing is broken and it costs us money every week.
13
+
14
+ ## Goals
15
+
16
+ _None._
17
+
18
+ ## Non-Goals
19
+
20
+ _None._
21
+
22
+ ## Requirements
23
+
24
+ - R1 [P0] First required capability.
25
+
26
+ ## UX Notes
27
+
28
+ _None._
29
+
30
+ ## Success Metrics
31
+
32
+ _None._
33
+
34
+ ## Risks & Open Questions
35
+
36
+ _None._
37
+
@@ -0,0 +1,40 @@
1
+ ---
2
+ openprd: "0.2"
3
+ id: "0001"
4
+ status: Draft
5
+ authors:
6
+ - a@example.com
7
+ ---
8
+
9
+ ## Problem
10
+
11
+ The thing is broken and it costs us money every week.
12
+
13
+ ## Goals
14
+
15
+ _None._
16
+
17
+ ## Non-Goals
18
+
19
+ _None._
20
+
21
+ ## Users
22
+
23
+ _None._
24
+
25
+ ## Requirements
26
+
27
+ - R1 [P0] First required capability.
28
+
29
+ ## UX Notes
30
+
31
+ _None._
32
+
33
+ ## Success Metrics
34
+
35
+ _None._
36
+
37
+ ## Risks & Open Questions
38
+
39
+ _None._
40
+
@@ -0,0 +1,33 @@
1
+ # No front matter
2
+
3
+ ## Problem
4
+
5
+ The thing is broken and it costs us money every week.
6
+
7
+ ## Goals
8
+
9
+ _None._
10
+
11
+ ## Non-Goals
12
+
13
+ _None._
14
+
15
+ ## Users
16
+
17
+ _None._
18
+
19
+ ## Requirements
20
+
21
+ - R1 [P0] First required capability.
22
+
23
+ ## UX Notes
24
+
25
+ _None._
26
+
27
+ ## Success Metrics
28
+
29
+ _None._
30
+
31
+ ## Risks & Open Questions
32
+
33
+ _None._
@@ -0,0 +1,41 @@
1
+ ---
2
+ openprd: "0.2"
3
+ id: "0001"
4
+ title: Sections out of order
5
+ status: Draft
6
+ authors:
7
+ - a@example.com
8
+ ---
9
+
10
+ ## Goals
11
+
12
+ _None._
13
+
14
+ ## Problem
15
+
16
+ The thing is broken and it costs us money every week.
17
+
18
+ ## Non-Goals
19
+
20
+ _None._
21
+
22
+ ## Users
23
+
24
+ _None._
25
+
26
+ ## Requirements
27
+
28
+ - R1 [P0] First required capability.
29
+
30
+ ## UX Notes
31
+
32
+ _None._
33
+
34
+ ## Success Metrics
35
+
36
+ _None._
37
+
38
+ ## Risks & Open Questions
39
+
40
+ _None._
41
+
@@ -0,0 +1,41 @@
1
+ ---
2
+ openprd: "0.2"
3
+ id: "0001"
4
+ title: Superseded with no replacement
5
+ status: Superseded
6
+ authors:
7
+ - a@example.com
8
+ ---
9
+
10
+ ## Problem
11
+
12
+ The thing is broken and it costs us money every week.
13
+
14
+ ## Goals
15
+
16
+ _None._
17
+
18
+ ## Non-Goals
19
+
20
+ _None._
21
+
22
+ ## Users
23
+
24
+ _None._
25
+
26
+ ## Requirements
27
+
28
+ - R1 [P0] First required capability.
29
+
30
+ ## UX Notes
31
+
32
+ _None._
33
+
34
+ ## Success Metrics
35
+
36
+ _None._
37
+
38
+ ## Risks & Open Questions
39
+
40
+ _None._
41
+
@@ -0,0 +1,42 @@
1
+ ---
2
+ openprd: "0.2"
3
+ id: "0001"
4
+ title: Unknown front matter key
5
+ status: Draft
6
+ authors:
7
+ - a@example.com
8
+ priority: high
9
+ ---
10
+
11
+ ## Problem
12
+
13
+ The thing is broken and it costs us money every week.
14
+
15
+ ## Goals
16
+
17
+ _None._
18
+
19
+ ## Non-Goals
20
+
21
+ _None._
22
+
23
+ ## Users
24
+
25
+ _None._
26
+
27
+ ## Requirements
28
+
29
+ - R1 [P0] First required capability.
30
+
31
+ ## UX Notes
32
+
33
+ _None._
34
+
35
+ ## Success Metrics
36
+
37
+ _None._
38
+
39
+ ## Risks & Open Questions
40
+
41
+ _None._
42
+
@@ -0,0 +1,41 @@
1
+ ---
2
+ openprd: "0.2"
3
+ id: "0002"
4
+ title: Use bold requirement markers
5
+ status: Review
6
+ authors:
7
+ - a@example.com
8
+ ---
9
+
10
+ ## Problem
11
+
12
+ The thing is broken and it costs us money every week.
13
+
14
+ ## Goals
15
+
16
+ _None._
17
+
18
+ ## Non-Goals
19
+
20
+ _None._
21
+
22
+ ## Users
23
+
24
+ _None._
25
+
26
+ ## Requirements
27
+
28
+ - **R1 [P0]** Bold markers parse the same as plain ones.
29
+
30
+ ## UX Notes
31
+
32
+ _None._
33
+
34
+ ## Success Metrics
35
+
36
+ _None._
37
+
38
+ ## Risks & Open Questions
39
+
40
+ _None._
41
+
@@ -0,0 +1,48 @@
1
+ ---
2
+ openprd: "0.2"
3
+ id: "0001"
4
+ title: Expand the parked-domain service
5
+ status: Draft
6
+ authors:
7
+ - anthony@profullstack.com
8
+ created: 2026-07-12
9
+ updated: 2026-07-12
10
+ repo: profullstack/logicsrc
11
+ tags:
12
+ - growth
13
+ ---
14
+
15
+ ## Problem
16
+
17
+ The thing is broken and it costs us money every week.
18
+
19
+ ## Goals
20
+
21
+ _None._
22
+
23
+ ## Non-Goals
24
+
25
+ _None._
26
+
27
+ ## Users
28
+
29
+ _None._
30
+
31
+ ## Requirements
32
+
33
+ - R1 [P0] The service MUST resolve a parked domain within 200 ms at p95.
34
+ - R2 [P1] The service SHOULD report per-domain hit counts.
35
+ - R3 [P2] The service MAY expose a JSON feed of recent lookups.
36
+
37
+ ## UX Notes
38
+
39
+ _None._
40
+
41
+ ## Success Metrics
42
+
43
+ _None._
44
+
45
+ ## Risks & Open Questions
46
+
47
+ _None._
48
+