openplanr 3.0.1 → 3.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 (223) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/cli/commands/init-deterministic.d.ts.map +1 -1
  3. package/dist/cli/commands/init-deterministic.js +49 -6
  4. package/dist/cli/commands/init-deterministic.js.map +1 -1
  5. package/dist/dashboard/.vite/manifest.json +2 -2
  6. package/dist/dashboard/assets/{index-Bk8DyO_2.css → index-BU5fzjyz.css} +1 -1
  7. package/dist/dashboard/assets/index-G7ygVDGg.js +572 -0
  8. package/dist/dashboard/assets/index-G7ygVDGg.js.map +1 -0
  9. package/dist/dashboard/dashboard-manifest.json +14 -14
  10. package/dist/dashboard/index.html +2 -2
  11. package/dist/models/types.d.ts +0 -46
  12. package/dist/models/types.d.ts.map +1 -1
  13. package/dist/services/capability-map-service.d.ts +4 -0
  14. package/dist/services/capability-map-service.d.ts.map +1 -1
  15. package/dist/services/capability-map-service.js +7 -1
  16. package/dist/services/capability-map-service.js.map +1 -1
  17. package/dist/services/claude-plugin-service.d.ts +6 -1
  18. package/dist/services/claude-plugin-service.d.ts.map +1 -1
  19. package/dist/services/claude-plugin-service.js +54 -15
  20. package/dist/services/claude-plugin-service.js.map +1 -1
  21. package/dist/services/config-service.d.ts +24 -1
  22. package/dist/services/config-service.d.ts.map +1 -1
  23. package/dist/services/config-service.js +69 -2
  24. package/dist/services/config-service.js.map +1 -1
  25. package/dist/services/git-service.d.ts +5 -0
  26. package/dist/services/git-service.d.ts.map +1 -1
  27. package/dist/services/git-service.js +27 -0
  28. package/dist/services/git-service.js.map +1 -1
  29. package/dist/services/linear-pull-service.d.ts.map +1 -1
  30. package/dist/services/linear-pull-service.js +1 -2
  31. package/dist/services/linear-pull-service.js.map +1 -1
  32. package/dist/services/pipeline-package-service.d.ts +2 -0
  33. package/dist/services/pipeline-package-service.d.ts.map +1 -1
  34. package/dist/services/pipeline-package-service.js +2 -1
  35. package/dist/services/pipeline-package-service.js.map +1 -1
  36. package/dist/services/runtime-change-summary.d.ts.map +1 -1
  37. package/dist/services/runtime-change-summary.js +4 -0
  38. package/dist/services/runtime-change-summary.js.map +1 -1
  39. package/dist/services/runtime-manager-service.d.ts.map +1 -1
  40. package/dist/services/runtime-manager-service.js +14 -3
  41. package/dist/services/runtime-manager-service.js.map +1 -1
  42. package/dist/services/spec-service.d.ts.map +1 -1
  43. package/dist/services/spec-service.js +11 -22
  44. package/dist/services/spec-service.js.map +1 -1
  45. package/dist/services/upgrade-service.d.ts.map +1 -1
  46. package/dist/services/upgrade-service.js +3 -1
  47. package/dist/services/upgrade-service.js.map +1 -1
  48. package/dist/templates/rules/shared/capability-map.md.hbs +2 -2
  49. package/lib/host-packages/adapter-registry.json +5 -5
  50. package/lib/host-packages/capability-map.json +89 -29
  51. package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
  52. package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
  53. package/lib/host-packages/claude/openplanr/.openplanr-content.json +69 -37
  54. package/lib/host-packages/claude/openplanr/CONNECTORS.md +62 -0
  55. package/lib/host-packages/claude/openplanr/README.md +1 -1
  56. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-share.mjs +1 -1
  57. package/lib/host-packages/claude/openplanr/runtime/design/scripts/design-shared-protocol-contracts-31a760fc.mjs +259 -36
  58. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +54 -54
  59. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
  60. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +259 -36
  61. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
  62. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
  63. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +43 -24
  64. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/03-react-dom-client-fiber-foundations.js +279 -58
  65. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/04-react-dom-client-reconciliation-hooks.js +50 -42
  66. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/05-react-dom-client-render-phases.js +282 -146
  67. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/06-react-dom-client-commit-effects.js +949 -316
  68. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/07-react-dom-client-work-loop-scheduling.js +143 -87
  69. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/08-react-dom-client-dom-events-properties-hydration.js +930 -183
  70. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +17 -15
  71. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-interface-primitives.js +375 -191
  72. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-interface-primitives.js +140 -105
  73. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +23 -23
  74. package/lib/host-packages/claude/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +4 -4
  75. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +259 -36
  76. package/lib/host-packages/claude/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +4 -4
  77. package/lib/host-packages/claude/openplanr/skills/connect/SKILL.md +60 -0
  78. package/lib/host-packages/claude/openplanr/skills/connect/references/connectors.md +62 -0
  79. package/lib/host-packages/claude/openplanr/skills/openplanr/SKILL.md +4 -0
  80. package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +4 -1
  81. package/lib/host-packages/claude/openplanr/skills/plan/scripts/planning-ids.mjs +49 -3
  82. package/lib/host-packages/claude/openplanr/skills/share/SKILL.md +87 -0
  83. package/lib/host-packages/claude/openplanr/skills/share/references/connectors.md +62 -0
  84. package/lib/host-packages/claude/openplanr/skills/ship/SKILL.md +6 -3
  85. package/lib/host-packages/claude/openplanr/skills/ship/scripts/discover-verification.mjs +2 -1
  86. package/lib/host-packages/claude/openplanr/skills/sprint/SKILL.md +15 -6
  87. package/lib/host-packages/claude/openplanr/skills/sprint/references/connectors.md +62 -0
  88. package/lib/host-packages/claude/openplanr/skills/sprint/references/tracker-connections.md +9 -13
  89. package/lib/host-packages/claude/openplanr/skills/status/SKILL.md +14 -3
  90. package/lib/host-packages/claude/openplanr/skills/status/references/connectors.md +62 -0
  91. package/lib/host-packages/claude/openplanr/skills/status/references/tracker-connections.md +9 -13
  92. package/lib/host-packages/claude/openplanr/skills/sync/SKILL.md +25 -10
  93. package/lib/host-packages/claude/openplanr/skills/sync/references/connectors.md +62 -0
  94. package/lib/host-packages/claude/openplanr/skills/sync/references/tracker-connections.md +9 -13
  95. package/lib/host-packages/cursor/openplanr/.openplanr-content.json +68 -36
  96. package/lib/host-packages/cursor/openplanr/CONNECTORS.md +62 -0
  97. package/lib/host-packages/cursor/openplanr/manifest.json +4 -2
  98. package/lib/host-packages/cursor/openplanr/rules/planr-connect/references/connectors.md +62 -0
  99. package/lib/host-packages/cursor/openplanr/rules/planr-connect.mdc +58 -0
  100. package/lib/host-packages/cursor/openplanr/rules/planr-openplanr.mdc +4 -0
  101. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/planning-ids.mjs +49 -3
  102. package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +4 -1
  103. package/lib/host-packages/cursor/openplanr/rules/planr-share/references/connectors.md +62 -0
  104. package/lib/host-packages/cursor/openplanr/rules/planr-share.mdc +85 -0
  105. package/lib/host-packages/cursor/openplanr/rules/planr-ship/scripts/discover-verification.mjs +2 -1
  106. package/lib/host-packages/cursor/openplanr/rules/planr-ship.mdc +6 -3
  107. package/lib/host-packages/cursor/openplanr/rules/planr-sprint/references/connectors.md +62 -0
  108. package/lib/host-packages/cursor/openplanr/rules/planr-sprint/references/tracker-connections.md +9 -13
  109. package/lib/host-packages/cursor/openplanr/rules/planr-sprint.mdc +15 -6
  110. package/lib/host-packages/cursor/openplanr/rules/planr-status/references/connectors.md +62 -0
  111. package/lib/host-packages/cursor/openplanr/rules/planr-status/references/tracker-connections.md +9 -13
  112. package/lib/host-packages/cursor/openplanr/rules/planr-status.mdc +14 -3
  113. package/lib/host-packages/cursor/openplanr/rules/planr-sync/references/connectors.md +62 -0
  114. package/lib/host-packages/cursor/openplanr/rules/planr-sync/references/tracker-connections.md +9 -13
  115. package/lib/host-packages/cursor/openplanr/rules/planr-sync.mdc +25 -10
  116. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-share.mjs +1 -1
  117. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/design-shared-protocol-contracts-31a760fc.mjs +259 -36
  118. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +54 -54
  119. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
  120. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +259 -36
  121. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
  122. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
  123. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +43 -24
  124. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/03-react-dom-client-fiber-foundations.js +279 -58
  125. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/04-react-dom-client-reconciliation-hooks.js +50 -42
  126. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/05-react-dom-client-render-phases.js +282 -146
  127. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/06-react-dom-client-commit-effects.js +949 -316
  128. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/07-react-dom-client-work-loop-scheduling.js +143 -87
  129. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/08-react-dom-client-dom-events-properties-hydration.js +930 -183
  130. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +17 -15
  131. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-interface-primitives.js +375 -191
  132. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-interface-primitives.js +140 -105
  133. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +23 -23
  134. package/lib/host-packages/cursor/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +4 -4
  135. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +259 -36
  136. package/lib/host-packages/cursor/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +4 -4
  137. package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
  138. package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
  139. package/lib/host-packages/openai/openplanr/.openplanr-content.json +87 -39
  140. package/lib/host-packages/openai/openplanr/CONNECTORS.md +62 -0
  141. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-share.mjs +1 -1
  142. package/lib/host-packages/openai/openplanr/runtime/design/scripts/design-shared-protocol-contracts-31a760fc.mjs +259 -36
  143. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/notices/THIRD_PARTY_NOTICES.txt +54 -54
  144. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/lib/artifact/ui/studio-shell.css +1 -1
  145. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources/03-protocol-contracts.js +259 -36
  146. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/artifact/templates/artifact-review-stage.js.sources.json +4 -4
  147. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/package.json +3 -3
  148. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/02-react.js +43 -24
  149. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/03-react-dom-client-fiber-foundations.js +279 -58
  150. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/04-react-dom-client-reconciliation-hooks.js +50 -42
  151. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/05-react-dom-client-render-phases.js +282 -146
  152. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/06-react-dom-client-commit-effects.js +949 -316
  153. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/07-react-dom-client-work-loop-scheduling.js +143 -87
  154. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/08-react-dom-client-dom-events-properties-hydration.js +930 -183
  155. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/09-react-dom-client-public-roots.js +17 -15
  156. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/14-interface-primitives.js +375 -191
  157. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources/15-interface-primitives.js +140 -105
  158. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/design/templates/studio/studio.js.sources.json +23 -23
  159. package/lib/host-packages/openai/openplanr/runtime/design/scripts/runtime/packages/protocol/package.json +4 -4
  160. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/design-protocol-contracts.mjs +259 -36
  161. package/lib/host-packages/openai/openplanr/runtime/plan/scripts/runtime/packages/protocol/package.json +4 -4
  162. package/lib/host-packages/openai/openplanr/skills/connect/SKILL.md +59 -0
  163. package/lib/host-packages/openai/openplanr/skills/connect/agents/openai.yaml +6 -0
  164. package/lib/host-packages/openai/openplanr/skills/connect/openplanr.skill.json +37 -0
  165. package/lib/host-packages/openai/openplanr/skills/connect/references/connectors.md +62 -0
  166. package/lib/host-packages/openai/openplanr/skills/openplanr/SKILL.md +4 -0
  167. package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +4 -1
  168. package/lib/host-packages/openai/openplanr/skills/plan/scripts/planning-ids.mjs +49 -3
  169. package/lib/host-packages/openai/openplanr/skills/share/SKILL.md +86 -0
  170. package/lib/host-packages/openai/openplanr/skills/share/agents/openai.yaml +6 -0
  171. package/lib/host-packages/openai/openplanr/skills/share/openplanr.skill.json +37 -0
  172. package/lib/host-packages/openai/openplanr/skills/share/references/connectors.md +62 -0
  173. package/lib/host-packages/openai/openplanr/skills/ship/SKILL.md +6 -3
  174. package/lib/host-packages/openai/openplanr/skills/ship/scripts/discover-verification.mjs +2 -1
  175. package/lib/host-packages/openai/openplanr/skills/sprint/SKILL.md +15 -6
  176. package/lib/host-packages/openai/openplanr/skills/sprint/openplanr.skill.json +11 -0
  177. package/lib/host-packages/openai/openplanr/skills/sprint/references/connectors.md +62 -0
  178. package/lib/host-packages/openai/openplanr/skills/sprint/references/tracker-connections.md +9 -13
  179. package/lib/host-packages/openai/openplanr/skills/status/SKILL.md +14 -3
  180. package/lib/host-packages/openai/openplanr/skills/status/openplanr.skill.json +11 -0
  181. package/lib/host-packages/openai/openplanr/skills/status/references/connectors.md +62 -0
  182. package/lib/host-packages/openai/openplanr/skills/status/references/tracker-connections.md +9 -13
  183. package/lib/host-packages/openai/openplanr/skills/sync/SKILL.md +25 -10
  184. package/lib/host-packages/openai/openplanr/skills/sync/openplanr.skill.json +11 -0
  185. package/lib/host-packages/openai/openplanr/skills/sync/references/connectors.md +62 -0
  186. package/lib/host-packages/openai/openplanr/skills/sync/references/tracker-connections.md +9 -13
  187. package/lib/json-schema.mjs +313 -36
  188. package/lib/schemas/v1.0.0/spec.schema.json +120 -0
  189. package/lib/schemas/v1.0.0/story.schema.json +95 -0
  190. package/lib/schemas/v1.0.0/task.schema.json +171 -0
  191. package/lib/schemas/v1.7.0/spec.schema.json +117 -0
  192. package/lib/schemas/v1.7.0/story.schema.json +107 -0
  193. package/lib/schemas/v1.7.0/task.schema.json +217 -0
  194. package/package.json +31 -31
  195. package/dist/dashboard/assets/index-n08LJ6bK.js +0 -557
  196. package/dist/dashboard/assets/index-n08LJ6bK.js.map +0 -1
  197. package/dist/services/audit-log-service.d.ts +0 -47
  198. package/dist/services/audit-log-service.d.ts.map +0 -1
  199. package/dist/services/audit-log-service.js +0 -211
  200. package/dist/services/audit-log-service.js.map +0 -1
  201. package/dist/services/delta-apply-service.d.ts +0 -16
  202. package/dist/services/delta-apply-service.d.ts.map +0 -1
  203. package/dist/services/delta-apply-service.js +0 -74
  204. package/dist/services/delta-apply-service.js.map +0 -1
  205. package/dist/services/evidence-verifier.d.ts +0 -71
  206. package/dist/services/evidence-verifier.d.ts.map +0 -1
  207. package/dist/services/evidence-verifier.js +0 -174
  208. package/dist/services/evidence-verifier.js.map +0 -1
  209. package/dist/services/revise-apply-service.d.ts +0 -55
  210. package/dist/services/revise-apply-service.d.ts.map +0 -1
  211. package/dist/services/revise-apply-service.js +0 -265
  212. package/dist/services/revise-apply-service.js.map +0 -1
  213. package/dist/services/revise-cache-service.d.ts +0 -46
  214. package/dist/services/revise-cache-service.d.ts.map +0 -1
  215. package/dist/services/revise-cache-service.js +0 -89
  216. package/dist/services/revise-cache-service.js.map +0 -1
  217. package/dist/services/revise-plan-service.d.ts +0 -38
  218. package/dist/services/revise-plan-service.d.ts.map +0 -1
  219. package/dist/services/revise-plan-service.js +0 -153
  220. package/dist/services/revise-plan-service.js.map +0 -1
  221. /package/lib/host-packages/claude/openplanr/runtime/design/scripts/{design-runtime-support-336900df0d39.mjs → design-runtime-support-e34c388a8e59.mjs} +0 -0
  222. /package/lib/host-packages/cursor/openplanr/runtime/design/scripts/{design-runtime-support-336900df0d39.mjs → design-runtime-support-e34c388a8e59.mjs} +0 -0
  223. /package/lib/host-packages/openai/openplanr/runtime/design/scripts/{design-runtime-support-336900df0d39.mjs → design-runtime-support-e34c388a8e59.mjs} +0 -0
@@ -0,0 +1,120 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://openplanr.dev/schemas/v1.0.0/spec.schema.json",
4
+ "title": "OpenPlanr SPEC frontmatter (v1.0.0)",
5
+ "description": "JSON Schema for the YAML frontmatter of a SPEC-NNN-{slug}.md artifact in spec-driven mode. Validates the canonical shape produced by `planr spec shape` / `planr spec decompose` and the planr-pipeline specification-agent.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "id",
10
+ "title",
11
+ "slug",
12
+ "schemaVersion",
13
+ "status",
14
+ "priority",
15
+ "created",
16
+ "updated",
17
+ "ui_files",
18
+ "tech_dependencies"
19
+ ],
20
+ "properties": {
21
+ "id": {
22
+ "type": "string",
23
+ "pattern": "^(SPEC|FEAT)-\\d{3}$",
24
+ "description": "Feature/Spec identifier. SPEC-NNN in spec-driven mode (e.g. SPEC-001), FEAT-NNN in default mode (e.g. FEAT-001). Scoped to the parent project."
25
+ },
26
+ "title": {
27
+ "type": "string",
28
+ "minLength": 1,
29
+ "description": "Human-readable spec title."
30
+ },
31
+ "slug": {
32
+ "type": "string",
33
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
34
+ "minLength": 1,
35
+ "description": "URL-safe lowercase slug used in the spec directory path."
36
+ },
37
+ "schemaVersion": {
38
+ "const": "1.0.0",
39
+ "description": "Pinned to the OpenPlanr Protocol reader version."
40
+ },
41
+ "status": {
42
+ "type": "string",
43
+ "enum": [
44
+ "pending",
45
+ "shaping",
46
+ "shaped",
47
+ "decomposing",
48
+ "decomposed",
49
+ "ready-for-pipeline",
50
+ "in-pipeline",
51
+ "done"
52
+ ],
53
+ "description": "Current lifecycle state of the spec."
54
+ },
55
+ "priority": {
56
+ "type": "string",
57
+ "enum": ["P0", "P1", "P2", "P3"],
58
+ "description": "Priority tier."
59
+ },
60
+ "milestone": {
61
+ "type": "string",
62
+ "description": "Optional milestone label (e.g. v1.0)."
63
+ },
64
+ "po": {
65
+ "type": "string",
66
+ "description": "Optional spec owner identifier (typically an email)."
67
+ },
68
+ "created": {
69
+ "type": "string",
70
+ "format": "date",
71
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
72
+ "description": "ISO date (YYYY-MM-DD) of spec creation."
73
+ },
74
+ "updated": {
75
+ "type": "string",
76
+ "format": "date",
77
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
78
+ "description": "ISO date (YYYY-MM-DD) bumped on every edit."
79
+ },
80
+ "ui_files": {
81
+ "type": "array",
82
+ "description": "Array of PNG paths under design/ for UI-bearing specs. Empty array when the spec has no UI surface.",
83
+ "items": {
84
+ "type": "string"
85
+ }
86
+ },
87
+ "tech_dependencies": {
88
+ "type": "array",
89
+ "description": "Informational list of upstream technical dependencies. Empty array when none.",
90
+ "items": {
91
+ "type": "string"
92
+ }
93
+ },
94
+ "specificationContract": {
95
+ "const": "professional-specification@1.0.0",
96
+ "description": "Optional marker for a decision-complete professional specification. Legacy specifications omit it and remain readable."
97
+ },
98
+ "review_specialists": {
99
+ "type": "array",
100
+ "maxItems": 5,
101
+ "uniqueItems": true,
102
+ "items": {
103
+ "type": "string",
104
+ "enum": ["security-reviewer", "performance-reviewer", "migration-reviewer", "api-contract-reviewer", "data-integrity-reviewer"]
105
+ },
106
+ "description": "Optional explicitly declared planning-review specialists in canonical registry order."
107
+ },
108
+ "kanbanosId": {
109
+ "type": "string",
110
+ "minLength": 8,
111
+ "pattern": "^[A-Za-z0-9_-]{8,128}$",
112
+ "description": "Optional opaque entity id on the kanbanos hosted board, written back by the sync tool after a successful push (the linearId precedent from the OpenPlanr CLI Linear integration). Sync-tool-owned: humans and planning agents never author or edit it by hand. Absent until the artifact is first pushed. See ADR-012."
113
+ },
114
+ "contentHash": {
115
+ "type": "string",
116
+ "pattern": "^sha256:[a-f0-9]{64}$",
117
+ "description": "Optional digest of the artifact content at the last successful board sync, written back by the sync tool alongside kanbanosId so drift between file and board is detectable. Same sha256:<hex> shape as operating-evidence-index-item@1.3.0. Sync-tool-owned: humans and planning agents never author or edit it by hand. See ADR-012."
118
+ }
119
+ }
120
+ }
@@ -0,0 +1,95 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://openplanr.dev/schemas/v1.0.0/story.schema.json",
4
+ "title": "OpenPlanr User Story frontmatter (v1.0.0)",
5
+ "description": "JSON Schema for the YAML frontmatter of a user story artifact. Accepts both planr-pipeline modes via a top-level `oneOf` over the parent reference: spec-driven user stories (US-NNN-{slug}.md under <SPEC_DIR>/stories/) carry `specId: \"SPEC-NNN\"` and live scoped to a parent SPEC; default-mode user stories (output/feats/feat-{slug}/us-N/us-N.md) carry `featureSlug: \"<slug>\"` and live scoped to a parent feature folder. Exactly one of the two parent-reference fields must be present per story; the other must be absent.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "id",
10
+ "title",
11
+ "slug",
12
+ "schemaVersion",
13
+ "status",
14
+ "created",
15
+ "updated"
16
+ ],
17
+ "properties": {
18
+ "id": {
19
+ "type": "string",
20
+ "pattern": "^US-\\d{3}$",
21
+ "description": "User Story identifier (e.g. US-001). Scoped to the parent SPEC (spec-driven) or parent feature (default mode)."
22
+ },
23
+ "title": {
24
+ "type": "string",
25
+ "minLength": 1,
26
+ "description": "Human-readable story title."
27
+ },
28
+ "specId": {
29
+ "type": "string",
30
+ "pattern": "^SPEC-\\d{3}$",
31
+ "description": "ID of the parent spec this story belongs to. Spec-driven mode only — must be absent in default mode."
32
+ },
33
+ "featureSlug": {
34
+ "type": "string",
35
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
36
+ "minLength": 1,
37
+ "description": "Slug of the parent feature folder this story belongs to. Default mode only — must be absent in spec-driven mode."
38
+ },
39
+ "slug": {
40
+ "type": "string",
41
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
42
+ "minLength": 1,
43
+ "description": "URL-safe lowercase slug used in the story file name."
44
+ },
45
+ "schemaVersion": {
46
+ "const": "1.0.0",
47
+ "description": "Pinned to the OpenPlanr Protocol reader version."
48
+ },
49
+ "status": {
50
+ "type": "string",
51
+ "enum": ["pending", "implementing", "done", "blocked"],
52
+ "description": "Current lifecycle state of the story."
53
+ },
54
+ "priority": {
55
+ "type": "string",
56
+ "enum": ["P0", "P1", "P2", "P3"],
57
+ "description": "Optional priority tier (inherits from parent spec when absent)."
58
+ },
59
+ "created": {
60
+ "type": "string",
61
+ "format": "date",
62
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
63
+ "description": "ISO date (YYYY-MM-DD) of story creation."
64
+ },
65
+ "updated": {
66
+ "type": "string",
67
+ "format": "date",
68
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
69
+ "description": "ISO date (YYYY-MM-DD) bumped on every edit."
70
+ },
71
+ "kanbanosId": {
72
+ "type": "string",
73
+ "minLength": 8,
74
+ "pattern": "^[A-Za-z0-9_-]{8,128}$",
75
+ "description": "Optional opaque entity id on the kanbanos hosted board, written back by the sync tool after a successful push (the linearId precedent from the OpenPlanr CLI Linear integration). Sync-tool-owned: humans and planning agents never author or edit it by hand. Absent until the artifact is first pushed. See ADR-012."
76
+ },
77
+ "contentHash": {
78
+ "type": "string",
79
+ "pattern": "^sha256:[a-f0-9]{64}$",
80
+ "description": "Optional digest of the artifact content at the last successful board sync, written back by the sync tool alongside kanbanosId so drift between file and board is detectable. Same sha256:<hex> shape as operating-evidence-index-item@1.3.0. Sync-tool-owned: humans and planning agents never author or edit it by hand. See ADR-012."
81
+ }
82
+ },
83
+ "oneOf": [
84
+ {
85
+ "title": "spec-driven story → requires specId, forbids featureSlug",
86
+ "required": ["specId"],
87
+ "not": { "required": ["featureSlug"] }
88
+ },
89
+ {
90
+ "title": "default-mode story → requires featureSlug, forbids specId",
91
+ "required": ["featureSlug"],
92
+ "not": { "required": ["specId"] }
93
+ }
94
+ ]
95
+ }
@@ -0,0 +1,171 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://openplanr.dev/schemas/v1.0.0/task.schema.json",
4
+ "title": "OpenPlanr Task frontmatter (v1.0.0)",
5
+ "description": "JSON Schema for the YAML frontmatter of a task artifact. Encodes two orthogonal correlations via `allOf`: (1) type-to-agent — UI tasks use frontend-agent, Tech tasks use backend-agent or db-agent; (2) parent reference — spec-driven tasks (T-NNN-{slug}.md under <SPEC_DIR>/tasks/) carry `specId: \"SPEC-NNN\"` (with a `storyId` pointing at a US-NNN within that SPEC), default-mode tasks (output/feats/feat-{slug}/us-N/tasks/task-N.md) carry `featureSlug: \"<slug>\"` instead of specId. Exactly one of the two parent-reference fields must be present per task; the other must be absent.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "id",
10
+ "title",
11
+ "storyId",
12
+ "slug",
13
+ "schemaVersion",
14
+ "type",
15
+ "agent",
16
+ "status",
17
+ "created",
18
+ "updated"
19
+ ],
20
+ "properties": {
21
+ "id": {
22
+ "type": "string",
23
+ "pattern": "^T-\\d{3}$",
24
+ "description": "Task identifier (e.g. T-001). Scoped to the parent SPEC (spec-driven) or parent User Story (default mode)."
25
+ },
26
+ "title": {
27
+ "type": "string",
28
+ "minLength": 1,
29
+ "description": "Human-readable task title."
30
+ },
31
+ "storyId": {
32
+ "type": "string",
33
+ "pattern": "^US-\\d{3}$",
34
+ "description": "ID of the parent User Story this task belongs to."
35
+ },
36
+ "specId": {
37
+ "type": "string",
38
+ "pattern": "^SPEC-\\d{3}$",
39
+ "description": "ID of the grandparent spec this task ultimately belongs to. Spec-driven mode only — must be absent in default mode."
40
+ },
41
+ "featureSlug": {
42
+ "type": "string",
43
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
44
+ "minLength": 1,
45
+ "description": "Slug of the parent feature folder this task ultimately belongs to. Default mode only — must be absent in spec-driven mode."
46
+ },
47
+ "slug": {
48
+ "type": "string",
49
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
50
+ "minLength": 1,
51
+ "description": "URL-safe lowercase slug used in the task file name."
52
+ },
53
+ "schemaVersion": {
54
+ "const": "1.0.0",
55
+ "description": "Pinned to the OpenPlanr Protocol reader version."
56
+ },
57
+ "type": {
58
+ "type": "string",
59
+ "enum": ["UI", "Tech"],
60
+ "description": "UI = frontend-bearing task; Tech = backend / data / infra task."
61
+ },
62
+ "agent": {
63
+ "type": "string",
64
+ "enum": ["frontend-agent", "backend-agent", "db-agent"],
65
+ "description": "DEV agent responsible for executing this task. Must correlate with `type` (see allOf type/agent branch)."
66
+ },
67
+ "status": {
68
+ "type": "string",
69
+ "enum": ["pending", "in-progress", "done", "blocked"],
70
+ "description": "Current lifecycle state of the task."
71
+ },
72
+ "created": {
73
+ "type": "string",
74
+ "format": "date",
75
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
76
+ "description": "ISO date (YYYY-MM-DD) of task creation."
77
+ },
78
+ "updated": {
79
+ "type": "string",
80
+ "format": "date",
81
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
82
+ "description": "ISO date (YYYY-MM-DD) bumped on every edit."
83
+ },
84
+ "rationale": {
85
+ "type": "string",
86
+ "description": "1-3 sentence explanation of why this task exists and why these specific files were chosen. Populated by the specification-agent during decomposition. Read by qa-agent to check implementation drift."
87
+ },
88
+ "dependsOn": {
89
+ "type": "array",
90
+ "items": { "type": "string", "pattern": "^T-\\d{3}$" },
91
+ "uniqueItems": true,
92
+ "default": [],
93
+ "description": "Task IDs (within the same parent) that must reach status done before this task is dispatched. Optional; absent/empty means no declared dependency."
94
+ },
95
+ "preserve": {
96
+ "type": "array",
97
+ "items": {
98
+ "type": "object",
99
+ "additionalProperties": false,
100
+ "required": ["repositoryKey", "path"],
101
+ "properties": {
102
+ "repositoryKey": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
103
+ "path": { "type": "string", "minLength": 1 }
104
+ }
105
+ },
106
+ "uniqueItems": true,
107
+ "description": "Optional machine-enforceable repository-relative Preserve boundaries. New SHIP closure runs require this property to be explicitly present (an empty array is valid); legacy body prose remains human guidance only."
108
+ },
109
+ "review_risks": {
110
+ "type": "array",
111
+ "items": { "type": "string", "enum": ["security", "performance", "migration", "api-contract", "data-integrity"] },
112
+ "uniqueItems": true,
113
+ "description": "Optional reviewed specialist risk declarations. The deterministic SHIP classifier, not the caller, maps these IDs into the frozen consolidated roster."
114
+ },
115
+ "browser_surfaces": {
116
+ "type": "array",
117
+ "items": { "type": "string", "enum": ["ui", "authentication", "session", "navigation", "network"] },
118
+ "uniqueItems": true,
119
+ "description": "Optional reviewed browser-sensitive surfaces. Any declared entry makes browser QA mandatory for the SHIP candidate."
120
+ },
121
+ "kanbanosId": {
122
+ "type": "string",
123
+ "minLength": 8,
124
+ "pattern": "^[A-Za-z0-9_-]{8,128}$",
125
+ "description": "Optional opaque entity id on the kanbanos hosted board, written back by the sync tool after a successful push (the linearId precedent from the OpenPlanr CLI Linear integration). Sync-tool-owned: humans and planning agents never author or edit it by hand. Absent until the artifact is first pushed. See ADR-012."
126
+ },
127
+ "contentHash": {
128
+ "type": "string",
129
+ "pattern": "^sha256:[a-f0-9]{64}$",
130
+ "description": "Optional digest of the artifact content at the last successful board sync, written back by the sync tool alongside kanbanosId so drift between file and board is detectable. Same sha256:<hex> shape as operating-evidence-index-item@1.3.0. Sync-tool-owned: humans and planning agents never author or edit it by hand. See ADR-012."
131
+ }
132
+ },
133
+ "allOf": [
134
+ {
135
+ "title": "type-to-agent correlation",
136
+ "oneOf": [
137
+ {
138
+ "title": "UI task → frontend-agent",
139
+ "properties": {
140
+ "type": { "const": "UI" },
141
+ "agent": { "const": "frontend-agent" }
142
+ },
143
+ "required": ["type", "agent"]
144
+ },
145
+ {
146
+ "title": "Tech task → backend-agent or db-agent",
147
+ "properties": {
148
+ "type": { "const": "Tech" },
149
+ "agent": { "enum": ["backend-agent", "db-agent"] }
150
+ },
151
+ "required": ["type", "agent"]
152
+ }
153
+ ]
154
+ },
155
+ {
156
+ "title": "parent-reference correlation (mode-dependent)",
157
+ "oneOf": [
158
+ {
159
+ "title": "spec-driven task → requires specId, forbids featureSlug",
160
+ "required": ["specId"],
161
+ "not": { "required": ["featureSlug"] }
162
+ },
163
+ {
164
+ "title": "default-mode task → requires featureSlug, forbids specId",
165
+ "required": ["featureSlug"],
166
+ "not": { "required": ["specId"] }
167
+ }
168
+ ]
169
+ }
170
+ ]
171
+ }
@@ -0,0 +1,117 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://openplanr.dev/schemas/v1.7.0/spec.schema.json",
4
+ "x-openplanr-contract": {
5
+ "id": "spec",
6
+ "version": "1.7.0"
7
+ },
8
+ "type": "object",
9
+ "additionalProperties": false,
10
+ "required": [
11
+ "id",
12
+ "title",
13
+ "slug",
14
+ "schemaVersion",
15
+ "status",
16
+ "priority",
17
+ "created",
18
+ "updated",
19
+ "ui_files",
20
+ "tech_dependencies"
21
+ ],
22
+ "properties": {
23
+ "id": {
24
+ "type": "string",
25
+ "pattern": "^(?:SPEC|FEAT)-\\d{3,}$"
26
+ },
27
+ "title": {
28
+ "type": "string",
29
+ "minLength": 1
30
+ },
31
+ "slug": {
32
+ "type": "string",
33
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
34
+ },
35
+ "schemaVersion": {
36
+ "const": "1.7.0"
37
+ },
38
+ "status": {
39
+ "enum": [
40
+ "pending",
41
+ "shaping",
42
+ "shaped",
43
+ "decomposing",
44
+ "decomposed",
45
+ "ready-for-pipeline",
46
+ "in-pipeline",
47
+ "done"
48
+ ]
49
+ },
50
+ "created": {
51
+ "type": "string",
52
+ "format": "date",
53
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
54
+ },
55
+ "updated": {
56
+ "type": "string",
57
+ "format": "date",
58
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
59
+ },
60
+ "priority": {
61
+ "enum": [
62
+ "P0",
63
+ "P1",
64
+ "P2",
65
+ "P3"
66
+ ]
67
+ },
68
+ "milestone": {
69
+ "type": "string"
70
+ },
71
+ "po": {
72
+ "type": "string"
73
+ },
74
+ "ui_files": {
75
+ "type": "array",
76
+ "items": {
77
+ "type": "string",
78
+ "minLength": 1
79
+ },
80
+ "uniqueItems": true
81
+ },
82
+ "tech_dependencies": {
83
+ "type": "array",
84
+ "items": {
85
+ "type": "string",
86
+ "minLength": 1
87
+ },
88
+ "uniqueItems": true
89
+ },
90
+ "specificationContract": {
91
+ "const": "professional-specification@1.0.0"
92
+ },
93
+ "review_specialists": {
94
+ "type": "array",
95
+ "maxItems": 5,
96
+ "uniqueItems": true,
97
+ "items": {
98
+ "enum": [
99
+ "security-reviewer",
100
+ "performance-reviewer",
101
+ "migration-reviewer",
102
+ "api-contract-reviewer",
103
+ "data-integrity-reviewer"
104
+ ]
105
+ }
106
+ },
107
+ "kanbanosId": {
108
+ "type": "string",
109
+ "minLength": 8,
110
+ "pattern": "^[A-Za-z0-9_-]{8,128}$"
111
+ },
112
+ "contentHash": {
113
+ "type": "string",
114
+ "pattern": "^sha256:[a-f0-9]{64}$"
115
+ }
116
+ }
117
+ }
@@ -0,0 +1,107 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://openplanr.dev/schemas/v1.7.0/story.schema.json",
4
+ "x-openplanr-contract": {
5
+ "id": "story",
6
+ "version": "1.7.0"
7
+ },
8
+ "type": "object",
9
+ "additionalProperties": false,
10
+ "required": [
11
+ "id",
12
+ "title",
13
+ "slug",
14
+ "schemaVersion",
15
+ "status",
16
+ "created",
17
+ "updated",
18
+ "acceptanceCriteria"
19
+ ],
20
+ "properties": {
21
+ "id": {
22
+ "type": "string",
23
+ "pattern": "^US-\\d{3,}$"
24
+ },
25
+ "title": {
26
+ "type": "string",
27
+ "minLength": 1
28
+ },
29
+ "slug": {
30
+ "type": "string",
31
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
32
+ },
33
+ "schemaVersion": {
34
+ "const": "1.7.0"
35
+ },
36
+ "status": {
37
+ "enum": [
38
+ "pending",
39
+ "implementing",
40
+ "in-progress",
41
+ "done",
42
+ "blocked"
43
+ ]
44
+ },
45
+ "created": {
46
+ "type": "string",
47
+ "format": "date",
48
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
49
+ },
50
+ "updated": {
51
+ "type": "string",
52
+ "format": "date",
53
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
54
+ },
55
+ "specId": {
56
+ "type": "string",
57
+ "pattern": "^SPEC-\\d{3,}$"
58
+ },
59
+ "featureSlug": {
60
+ "type": "string",
61
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
62
+ },
63
+ "acceptanceCriteria": {
64
+ "type": "array",
65
+ "items": {
66
+ "type": "object",
67
+ "additionalProperties": false,
68
+ "required": [
69
+ "id",
70
+ "statement"
71
+ ],
72
+ "properties": {
73
+ "id": {
74
+ "type": "string",
75
+ "pattern": "^AC-\\d{3,}$"
76
+ },
77
+ "statement": {
78
+ "type": "string",
79
+ "minLength": 1
80
+ }
81
+ }
82
+ }
83
+ }
84
+ },
85
+ "oneOf": [
86
+ {
87
+ "required": [
88
+ "specId"
89
+ ],
90
+ "not": {
91
+ "required": [
92
+ "featureSlug"
93
+ ]
94
+ }
95
+ },
96
+ {
97
+ "required": [
98
+ "featureSlug"
99
+ ],
100
+ "not": {
101
+ "required": [
102
+ "specId"
103
+ ]
104
+ }
105
+ }
106
+ ]
107
+ }