openplanr 2.4.0 → 2.6.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 (150) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/dashboard/.vite/manifest.json +1 -1
  3. package/dist/dashboard/assets/{index-B74ddyXA.js → index-BaARCc1f.js} +2 -2
  4. package/dist/dashboard/assets/{index-B74ddyXA.js.map → index-BaARCc1f.js.map} +1 -1
  5. package/dist/dashboard/dashboard-manifest.json +8 -8
  6. package/dist/dashboard/index.html +1 -1
  7. package/lib/host-packages/adapter-registry.json +5 -5
  8. package/lib/host-packages/capability-map.json +1 -1
  9. package/lib/host-packages/claude/.claude-plugin/marketplace.json +2 -2
  10. package/lib/host-packages/claude/openplanr/.claude-plugin/plugin.json +1 -1
  11. package/lib/host-packages/claude/openplanr/.openplanr-content.json +114 -26
  12. package/lib/host-packages/claude/openplanr/skills/design/SKILL.md +3 -0
  13. package/lib/host-packages/claude/openplanr/skills/design/openplanr.skill.json +56 -1
  14. package/lib/host-packages/claude/openplanr/skills/design/references/handoff.md +35 -0
  15. package/lib/host-packages/claude/openplanr/skills/design/scripts/design.mjs +2285 -341
  16. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  17. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  18. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  19. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/package.json +5 -1
  20. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-handoff-readiness.schema.json +398 -0
  21. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-implementation-handoff.schema.json +518 -0
  22. package/lib/host-packages/claude/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-planning-lineage.schema.json +106 -0
  23. package/lib/host-packages/claude/openplanr/skills/design-loop/openplanr.skill.json +55 -0
  24. package/lib/host-packages/claude/openplanr/skills/design-loop/references/handoff.md +35 -0
  25. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/design.mjs +2285 -341
  26. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  27. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  28. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  29. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/package.json +5 -1
  30. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.11.0/design-handoff-readiness.schema.json +398 -0
  31. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.11.0/design-implementation-handoff.schema.json +518 -0
  32. package/lib/host-packages/claude/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.11.0/design-planning-lineage.schema.json +106 -0
  33. package/lib/host-packages/claude/openplanr/skills/design-review/SKILL.md +3 -0
  34. package/lib/host-packages/claude/openplanr/skills/design-review/openplanr.skill.json +56 -1
  35. package/lib/host-packages/claude/openplanr/skills/design-review/references/handoff.md +35 -0
  36. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/design.mjs +2285 -341
  37. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  38. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  39. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  40. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/package.json +5 -1
  41. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.11.0/design-handoff-readiness.schema.json +398 -0
  42. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.11.0/design-implementation-handoff.schema.json +518 -0
  43. package/lib/host-packages/claude/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.11.0/design-planning-lineage.schema.json +106 -0
  44. package/lib/host-packages/claude/openplanr/skills/plan/SKILL.md +12 -0
  45. package/lib/host-packages/claude/openplanr/skills/plan/openplanr.skill.json +67 -1
  46. package/lib/host-packages/claude/openplanr/skills/plan/references/design-handoff.md +33 -0
  47. package/lib/host-packages/claude/openplanr/skills/plan/scripts/design.mjs +2285 -341
  48. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  49. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  50. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  51. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/package.json +5 -1
  52. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.11.0/design-handoff-readiness.schema.json +398 -0
  53. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.11.0/design-implementation-handoff.schema.json +518 -0
  54. package/lib/host-packages/claude/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.11.0/design-planning-lineage.schema.json +106 -0
  55. package/lib/host-packages/claude/openplanr/skills/ship/SKILL.md +9 -0
  56. package/lib/host-packages/claude/openplanr/skills/ship/openplanr.skill.json +12 -1
  57. package/lib/host-packages/claude/openplanr/skills/ship/references/design-lineage.md +26 -0
  58. package/lib/host-packages/cursor/openplanr/.openplanr-content.json +109 -21
  59. package/lib/host-packages/cursor/openplanr/manifest.json +1 -1
  60. package/lib/host-packages/cursor/openplanr/rules/planr-design/references/handoff.md +35 -0
  61. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/design.mjs +2285 -341
  62. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  63. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  64. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  65. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/package.json +5 -1
  66. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-handoff-readiness.schema.json +398 -0
  67. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-implementation-handoff.schema.json +518 -0
  68. package/lib/host-packages/cursor/openplanr/rules/planr-design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-planning-lineage.schema.json +106 -0
  69. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/references/handoff.md +35 -0
  70. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/design.mjs +2285 -341
  71. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  72. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  73. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  74. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/package.json +5 -1
  75. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.11.0/design-handoff-readiness.schema.json +398 -0
  76. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.11.0/design-implementation-handoff.schema.json +518 -0
  77. package/lib/host-packages/cursor/openplanr/rules/planr-design-loop/scripts/runtime/packages/protocol/schemas/v1.11.0/design-planning-lineage.schema.json +106 -0
  78. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/references/handoff.md +35 -0
  79. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/design.mjs +2285 -341
  80. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  81. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  82. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  83. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/package.json +5 -1
  84. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.11.0/design-handoff-readiness.schema.json +398 -0
  85. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.11.0/design-implementation-handoff.schema.json +518 -0
  86. package/lib/host-packages/cursor/openplanr/rules/planr-design-review/scripts/runtime/packages/protocol/schemas/v1.11.0/design-planning-lineage.schema.json +106 -0
  87. package/lib/host-packages/cursor/openplanr/rules/planr-design-review.mdc +3 -0
  88. package/lib/host-packages/cursor/openplanr/rules/planr-design.mdc +3 -0
  89. package/lib/host-packages/cursor/openplanr/rules/planr-plan/references/design-handoff.md +33 -0
  90. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/design.mjs +2285 -341
  91. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  92. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  93. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  94. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/package.json +5 -1
  95. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.11.0/design-handoff-readiness.schema.json +398 -0
  96. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.11.0/design-implementation-handoff.schema.json +518 -0
  97. package/lib/host-packages/cursor/openplanr/rules/planr-plan/scripts/runtime/packages/protocol/schemas/v1.11.0/design-planning-lineage.schema.json +106 -0
  98. package/lib/host-packages/cursor/openplanr/rules/planr-plan.mdc +12 -0
  99. package/lib/host-packages/cursor/openplanr/rules/planr-ship/references/design-lineage.md +26 -0
  100. package/lib/host-packages/cursor/openplanr/rules/planr-ship.mdc +9 -0
  101. package/lib/host-packages/openai/.claude-plugin/marketplace.json +2 -2
  102. package/lib/host-packages/openai/openplanr/.codex-plugin/plugin.json +1 -1
  103. package/lib/host-packages/openai/openplanr/.openplanr-content.json +114 -26
  104. package/lib/host-packages/openai/openplanr/skills/design/SKILL.md +3 -0
  105. package/lib/host-packages/openai/openplanr/skills/design/openplanr.skill.json +56 -1
  106. package/lib/host-packages/openai/openplanr/skills/design/references/handoff.md +35 -0
  107. package/lib/host-packages/openai/openplanr/skills/design/scripts/design.mjs +2285 -341
  108. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  109. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  110. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  111. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/package.json +5 -1
  112. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-handoff-readiness.schema.json +398 -0
  113. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-implementation-handoff.schema.json +518 -0
  114. package/lib/host-packages/openai/openplanr/skills/design/scripts/runtime/packages/protocol/schemas/v1.11.0/design-planning-lineage.schema.json +106 -0
  115. package/lib/host-packages/openai/openplanr/skills/design-loop/openplanr.skill.json +55 -0
  116. package/lib/host-packages/openai/openplanr/skills/design-loop/references/handoff.md +35 -0
  117. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/design.mjs +2285 -341
  118. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  119. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  120. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  121. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/package.json +5 -1
  122. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.11.0/design-handoff-readiness.schema.json +398 -0
  123. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.11.0/design-implementation-handoff.schema.json +518 -0
  124. package/lib/host-packages/openai/openplanr/skills/design-loop/scripts/runtime/packages/protocol/schemas/v1.11.0/design-planning-lineage.schema.json +106 -0
  125. package/lib/host-packages/openai/openplanr/skills/design-review/SKILL.md +3 -0
  126. package/lib/host-packages/openai/openplanr/skills/design-review/openplanr.skill.json +56 -1
  127. package/lib/host-packages/openai/openplanr/skills/design-review/references/handoff.md +35 -0
  128. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/design.mjs +2285 -341
  129. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  130. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  131. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  132. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/package.json +5 -1
  133. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.11.0/design-handoff-readiness.schema.json +398 -0
  134. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.11.0/design-implementation-handoff.schema.json +518 -0
  135. package/lib/host-packages/openai/openplanr/skills/design-review/scripts/runtime/packages/protocol/schemas/v1.11.0/design-planning-lineage.schema.json +106 -0
  136. package/lib/host-packages/openai/openplanr/skills/plan/SKILL.md +12 -0
  137. package/lib/host-packages/openai/openplanr/skills/plan/openplanr.skill.json +67 -1
  138. package/lib/host-packages/openai/openplanr/skills/plan/references/design-handoff.md +33 -0
  139. package/lib/host-packages/openai/openplanr/skills/plan/scripts/design.mjs +2285 -341
  140. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/enhancements.js +19 -2
  141. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/handoff-center.css +81 -0
  142. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/design/templates/studio/handoff-center.js +400 -0
  143. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/package.json +5 -1
  144. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.11.0/design-handoff-readiness.schema.json +398 -0
  145. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.11.0/design-implementation-handoff.schema.json +518 -0
  146. package/lib/host-packages/openai/openplanr/skills/plan/scripts/runtime/packages/protocol/schemas/v1.11.0/design-planning-lineage.schema.json +106 -0
  147. package/lib/host-packages/openai/openplanr/skills/ship/SKILL.md +9 -0
  148. package/lib/host-packages/openai/openplanr/skills/ship/openplanr.skill.json +12 -1
  149. package/lib/host-packages/openai/openplanr/skills/ship/references/design-lineage.md +26 -0
  150. package/package.json +2 -2
@@ -0,0 +1,518 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://openplanr.dev/schemas/v1.11.0/design-implementation-handoff.schema.json",
4
+ "x-openplanr-contract": {
5
+ "id": "design-implementation-handoff",
6
+ "version": "1.11.0"
7
+ },
8
+ "type": "object",
9
+ "additionalProperties": false,
10
+ "properties": {
11
+ "kind": {
12
+ "const": "openplanr-design-implementation-handoff"
13
+ },
14
+ "schemaVersion": {
15
+ "const": "1.0.0"
16
+ },
17
+ "id": {
18
+ "type": "string",
19
+ "minLength": 1,
20
+ "maxLength": 160,
21
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
22
+ },
23
+ "version": {
24
+ "type": "integer",
25
+ "minimum": 1
26
+ },
27
+ "status": {
28
+ "enum": [
29
+ "draft",
30
+ "approved",
31
+ "superseded",
32
+ "revoked"
33
+ ]
34
+ },
35
+ "authority": {
36
+ "const": "prepare-plan"
37
+ },
38
+ "title": {
39
+ "type": "string",
40
+ "minLength": 1,
41
+ "maxLength": 240
42
+ },
43
+ "basis": {
44
+ "type": "object",
45
+ "additionalProperties": false,
46
+ "properties": {
47
+ "designId": {
48
+ "type": "string",
49
+ "minLength": 1,
50
+ "maxLength": 160,
51
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
52
+ },
53
+ "sourceRevision": {
54
+ "type": "string",
55
+ "pattern": "^sha256:[a-f0-9]{64}$"
56
+ },
57
+ "selectedVariant": {
58
+ "type": "string",
59
+ "minLength": 1,
60
+ "maxLength": 160,
61
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
62
+ },
63
+ "readiness": {
64
+ "type": "object",
65
+ "additionalProperties": false,
66
+ "properties": {
67
+ "status": {
68
+ "enum": [
69
+ "ready",
70
+ "attention",
71
+ "blocked",
72
+ "stale"
73
+ ]
74
+ },
75
+ "digest": {
76
+ "type": "string",
77
+ "pattern": "^sha256:[a-f0-9]{64}$"
78
+ }
79
+ },
80
+ "required": [
81
+ "status",
82
+ "digest"
83
+ ]
84
+ },
85
+ "reviewHandoff": {
86
+ "type": "object",
87
+ "additionalProperties": false,
88
+ "properties": {
89
+ "version": {
90
+ "type": "integer",
91
+ "minimum": 1
92
+ },
93
+ "contentDigest": {
94
+ "type": "string",
95
+ "pattern": "^sha256:[a-f0-9]{64}$"
96
+ }
97
+ },
98
+ "required": [
99
+ "version",
100
+ "contentDigest"
101
+ ]
102
+ }
103
+ },
104
+ "required": [
105
+ "designId",
106
+ "sourceRevision",
107
+ "selectedVariant",
108
+ "readiness",
109
+ "reviewHandoff"
110
+ ]
111
+ },
112
+ "sources": {
113
+ "type": "array",
114
+ "items": {
115
+ "type": "object",
116
+ "additionalProperties": false,
117
+ "properties": {
118
+ "id": {
119
+ "type": "string",
120
+ "minLength": 1,
121
+ "maxLength": 160,
122
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
123
+ },
124
+ "kind": {
125
+ "enum": [
126
+ "design-revision",
127
+ "selected-direction",
128
+ "design-specification",
129
+ "rendered-verification",
130
+ "review-context",
131
+ "review-feedback",
132
+ "review-metadata",
133
+ "review-handoff",
134
+ "screen",
135
+ "frame",
136
+ "component",
137
+ "state",
138
+ "flow",
139
+ "token",
140
+ "review-decision",
141
+ "element-anchor"
142
+ ]
143
+ },
144
+ "path": {
145
+ "type": "string",
146
+ "minLength": 1,
147
+ "maxLength": 4096
148
+ },
149
+ "revision": {
150
+ "type": "string",
151
+ "pattern": "^sha256:[a-f0-9]{64}$"
152
+ },
153
+ "digest": {
154
+ "type": "string",
155
+ "pattern": "^sha256:[a-f0-9]{64}$"
156
+ },
157
+ "anchor": {
158
+ "oneOf": [
159
+ {
160
+ "type": "object",
161
+ "additionalProperties": false,
162
+ "properties": {
163
+ "section": {
164
+ "type": "string",
165
+ "minLength": 1,
166
+ "maxLength": 160,
167
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
168
+ }
169
+ },
170
+ "required": [
171
+ "section"
172
+ ]
173
+ },
174
+ {
175
+ "type": "object",
176
+ "additionalProperties": false,
177
+ "properties": {
178
+ "screenId": {
179
+ "type": "string",
180
+ "minLength": 1,
181
+ "maxLength": 160,
182
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
183
+ }
184
+ },
185
+ "required": [
186
+ "screenId"
187
+ ]
188
+ },
189
+ {
190
+ "type": "object",
191
+ "additionalProperties": false,
192
+ "properties": {
193
+ "screenId": {
194
+ "type": "string",
195
+ "minLength": 1,
196
+ "maxLength": 160,
197
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
198
+ },
199
+ "elementId": {
200
+ "type": "string",
201
+ "minLength": 1,
202
+ "maxLength": 160,
203
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
204
+ }
205
+ },
206
+ "required": [
207
+ "screenId",
208
+ "elementId"
209
+ ]
210
+ },
211
+ {
212
+ "type": "object",
213
+ "additionalProperties": false,
214
+ "properties": {
215
+ "reviewId": {
216
+ "type": "string",
217
+ "minLength": 1,
218
+ "maxLength": 160,
219
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
220
+ },
221
+ "pinId": {
222
+ "type": "string",
223
+ "minLength": 1,
224
+ "maxLength": 160,
225
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
226
+ }
227
+ },
228
+ "required": [
229
+ "reviewId",
230
+ "pinId"
231
+ ]
232
+ }
233
+ ]
234
+ }
235
+ },
236
+ "required": [
237
+ "id",
238
+ "kind",
239
+ "path"
240
+ ]
241
+ },
242
+ "maxItems": 10000
243
+ },
244
+ "requirements": {
245
+ "type": "array",
246
+ "items": {
247
+ "type": "object",
248
+ "additionalProperties": false,
249
+ "properties": {
250
+ "id": {
251
+ "type": "string",
252
+ "pattern": "^REQ-[0-9]{3,}$"
253
+ },
254
+ "kind": {
255
+ "enum": [
256
+ "behavior",
257
+ "visual-state",
258
+ "responsive",
259
+ "accessibility",
260
+ "content-data-assumption",
261
+ "constraint",
262
+ "verification-intent"
263
+ ]
264
+ },
265
+ "statement": {
266
+ "type": "string",
267
+ "minLength": 1,
268
+ "maxLength": 16384
269
+ },
270
+ "sourceRefs": {
271
+ "type": "array",
272
+ "items": {
273
+ "type": "string",
274
+ "minLength": 1,
275
+ "maxLength": 160,
276
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
277
+ },
278
+ "maxItems": 256,
279
+ "minItems": 1
280
+ },
281
+ "verification": {
282
+ "type": "array",
283
+ "items": {
284
+ "type": "string",
285
+ "minLength": 1,
286
+ "maxLength": 16384
287
+ },
288
+ "maxItems": 256,
289
+ "minItems": 1
290
+ }
291
+ },
292
+ "required": [
293
+ "id",
294
+ "kind",
295
+ "statement",
296
+ "sourceRefs",
297
+ "verification"
298
+ ]
299
+ },
300
+ "maxItems": 10000,
301
+ "minItems": 1
302
+ },
303
+ "contentDigest": {
304
+ "type": "string",
305
+ "pattern": "^sha256:[a-f0-9]{64}$"
306
+ },
307
+ "markdown": {
308
+ "type": "string",
309
+ "maxLength": 2097152
310
+ },
311
+ "approval": {
312
+ "type": "object",
313
+ "additionalProperties": false,
314
+ "properties": {
315
+ "actorId": {
316
+ "type": "string",
317
+ "minLength": 1,
318
+ "maxLength": 160,
319
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
320
+ },
321
+ "approvedAt": {
322
+ "type": "string",
323
+ "format": "date-time"
324
+ },
325
+ "contentDigest": {
326
+ "type": "string",
327
+ "pattern": "^sha256:[a-f0-9]{64}$"
328
+ },
329
+ "authority": {
330
+ "const": "prepare-plan"
331
+ }
332
+ },
333
+ "required": [
334
+ "actorId",
335
+ "approvedAt",
336
+ "contentDigest",
337
+ "authority"
338
+ ]
339
+ },
340
+ "supersededBy": {
341
+ "type": "object",
342
+ "additionalProperties": false,
343
+ "properties": {
344
+ "id": {
345
+ "type": "string",
346
+ "minLength": 1,
347
+ "maxLength": 160,
348
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
349
+ },
350
+ "version": {
351
+ "type": "integer",
352
+ "minimum": 1
353
+ },
354
+ "contentDigest": {
355
+ "type": "string",
356
+ "pattern": "^sha256:[a-f0-9]{64}$"
357
+ }
358
+ },
359
+ "required": [
360
+ "id",
361
+ "version",
362
+ "contentDigest"
363
+ ]
364
+ },
365
+ "revocation": {
366
+ "type": "object",
367
+ "additionalProperties": false,
368
+ "properties": {
369
+ "actorId": {
370
+ "type": "string",
371
+ "minLength": 1,
372
+ "maxLength": 160,
373
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
374
+ },
375
+ "revokedAt": {
376
+ "type": "string",
377
+ "format": "date-time"
378
+ },
379
+ "reason": {
380
+ "type": "string",
381
+ "minLength": 1,
382
+ "maxLength": 16384
383
+ }
384
+ },
385
+ "required": [
386
+ "actorId",
387
+ "revokedAt",
388
+ "reason"
389
+ ]
390
+ }
391
+ },
392
+ "required": [
393
+ "kind",
394
+ "schemaVersion",
395
+ "id",
396
+ "version",
397
+ "status",
398
+ "authority",
399
+ "title",
400
+ "basis",
401
+ "sources",
402
+ "requirements",
403
+ "contentDigest",
404
+ "markdown"
405
+ ],
406
+ "allOf": [
407
+ {
408
+ "if": {
409
+ "properties": {
410
+ "status": {
411
+ "const": "approved"
412
+ }
413
+ },
414
+ "required": [
415
+ "status"
416
+ ]
417
+ },
418
+ "then": {
419
+ "required": [
420
+ "approval"
421
+ ],
422
+ "not": {
423
+ "anyOf": [
424
+ {
425
+ "required": [
426
+ "supersededBy"
427
+ ]
428
+ },
429
+ {
430
+ "required": [
431
+ "revocation"
432
+ ]
433
+ }
434
+ ]
435
+ }
436
+ }
437
+ },
438
+ {
439
+ "if": {
440
+ "properties": {
441
+ "status": {
442
+ "const": "superseded"
443
+ }
444
+ },
445
+ "required": [
446
+ "status"
447
+ ]
448
+ },
449
+ "then": {
450
+ "required": [
451
+ "approval",
452
+ "supersededBy"
453
+ ],
454
+ "not": {
455
+ "required": [
456
+ "revocation"
457
+ ]
458
+ }
459
+ }
460
+ },
461
+ {
462
+ "if": {
463
+ "properties": {
464
+ "status": {
465
+ "const": "revoked"
466
+ }
467
+ },
468
+ "required": [
469
+ "status"
470
+ ]
471
+ },
472
+ "then": {
473
+ "required": [
474
+ "approval",
475
+ "revocation"
476
+ ],
477
+ "not": {
478
+ "required": [
479
+ "supersededBy"
480
+ ]
481
+ }
482
+ }
483
+ },
484
+ {
485
+ "if": {
486
+ "properties": {
487
+ "status": {
488
+ "const": "draft"
489
+ }
490
+ },
491
+ "required": [
492
+ "status"
493
+ ]
494
+ },
495
+ "then": {
496
+ "not": {
497
+ "anyOf": [
498
+ {
499
+ "required": [
500
+ "approval"
501
+ ]
502
+ },
503
+ {
504
+ "required": [
505
+ "supersededBy"
506
+ ]
507
+ },
508
+ {
509
+ "required": [
510
+ "revocation"
511
+ ]
512
+ }
513
+ ]
514
+ }
515
+ }
516
+ }
517
+ ]
518
+ }
@@ -0,0 +1,106 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://openplanr.dev/schemas/v1.11.0/design-planning-lineage.schema.json",
4
+ "x-openplanr-contract": {
5
+ "id": "design-planning-lineage",
6
+ "version": "1.11.0"
7
+ },
8
+ "type": "object",
9
+ "additionalProperties": false,
10
+ "properties": {
11
+ "kind": {
12
+ "const": "openplanr-design-planning-lineage"
13
+ },
14
+ "schemaVersion": {
15
+ "const": "1.0.0"
16
+ },
17
+ "handoff": {
18
+ "type": "object",
19
+ "additionalProperties": false,
20
+ "properties": {
21
+ "id": {
22
+ "type": "string",
23
+ "minLength": 1,
24
+ "maxLength": 160,
25
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
26
+ },
27
+ "version": {
28
+ "type": "integer",
29
+ "minimum": 1
30
+ },
31
+ "contentDigest": {
32
+ "type": "string",
33
+ "pattern": "^sha256:[a-f0-9]{64}$"
34
+ }
35
+ },
36
+ "required": [
37
+ "id",
38
+ "version",
39
+ "contentDigest"
40
+ ]
41
+ },
42
+ "specId": {
43
+ "type": "string",
44
+ "pattern": "^SPEC-[0-9]{3,}$"
45
+ },
46
+ "mappings": {
47
+ "type": "array",
48
+ "items": {
49
+ "type": "object",
50
+ "additionalProperties": false,
51
+ "properties": {
52
+ "requirementId": {
53
+ "type": "string",
54
+ "pattern": "^REQ-[0-9]{3,}$"
55
+ },
56
+ "acceptanceRefs": {
57
+ "type": "array",
58
+ "items": {
59
+ "type": "object",
60
+ "additionalProperties": false,
61
+ "properties": {
62
+ "storyId": {
63
+ "type": "string",
64
+ "pattern": "^US-[0-9]{3,}$"
65
+ },
66
+ "acceptanceId": {
67
+ "type": "string",
68
+ "pattern": "^AC-[0-9]{3,}$"
69
+ }
70
+ },
71
+ "required": [
72
+ "storyId",
73
+ "acceptanceId"
74
+ ]
75
+ },
76
+ "maxItems": 256,
77
+ "minItems": 1
78
+ },
79
+ "taskIds": {
80
+ "type": "array",
81
+ "items": {
82
+ "type": "string",
83
+ "pattern": "^T-[0-9]{3,}$"
84
+ },
85
+ "maxItems": 256,
86
+ "minItems": 1
87
+ }
88
+ },
89
+ "required": [
90
+ "requirementId",
91
+ "acceptanceRefs",
92
+ "taskIds"
93
+ ]
94
+ },
95
+ "maxItems": 10000,
96
+ "minItems": 1
97
+ }
98
+ },
99
+ "required": [
100
+ "kind",
101
+ "schemaVersion",
102
+ "handoff",
103
+ "specId",
104
+ "mappings"
105
+ ]
106
+ }
@@ -49,6 +49,11 @@ report the changed inputs and obtain the missing decision only when it affects t
49
49
  requested plan. Never silently substitute a newer draft for an approved snapshot.
50
50
  A missing review handoff does not block ordinary planning from a clear specification.
51
51
 
52
+ When the request carries an approved implementation package, read
53
+ [the design handoff contract](references/design-handoff.md). Validate that the
54
+ package is still the current approved version before treating its numbered
55
+ requirements as scope. A missing package leaves ordinary Plan unchanged.
56
+
52
57
  For a consequential unresolved choice, use the host's structured question
53
58
  interface. Ask at most three short, mutually exclusive questions at once. If the
54
59
  host has no structured question interface, ask one concise chat question.
@@ -88,6 +93,13 @@ Validate all frontmatter and acceptance coverage before finishing. If a helper
88
93
  is unavailable, inspect existing IDs and validate the same invariants directly;
89
94
  do not route semantic work to a CLI fallback.
90
95
 
96
+ For approved design input, author the complete story and task bytes before
97
+ touching target paths, then commit those bytes and the sibling
98
+ `design-lineage.json` through the public atomic planning-lineage helper described
99
+ in the reference. A failed requirement-to-acceptance-to-task mapping writes
100
+ nothing. This deterministic commit validates content; it does not generate the
101
+ plan or invoke another phase.
102
+
91
103
  ## Return
92
104
 
93
105
  - **Outcome:** what is implementation-ready.
@@ -0,0 +1,26 @@
1
+ # Use design lineage during Ship
2
+
3
+ `design-lineage.json` is optional. Its absence is normal and must not change an
4
+ ordinary Ship run.
5
+
6
+ When present, validate the sidecar and compare its package identity with the exact
7
+ approved implementation handoff. Load only mappings whose `taskIds` include the
8
+ selected task. From that subset, load only the referenced `REQ-NNN` requirements
9
+ and their source records. Do not ingest unrelated screens, requirements, package
10
+ versions, or complete design documents.
11
+
12
+ Treat the context as **current** when lineage, immutable package history, and the
13
+ current approved pointer identify the same package; **stale** when the exact
14
+ package is missing, changed, superseded, revoked, or disagrees with the sidecar;
15
+ and **absent** when there is no sidecar.
16
+
17
+ Carry current requirement statements, verification intents, accessibility and
18
+ responsive expectations into the implementation and checks. For stale context,
19
+ name the mismatch and use the evidence only as historical context; never silently
20
+ upgrade it to approved scope. The selected task, parents, and repository rules
21
+ remain authoritative.
22
+
23
+ Ship is a later, separate user invocation. Reading lineage never starts Plan,
24
+ another task, release, publication, deployment, or a Git operation. Delivery
25
+ status is a read-only projection of the approved package, lineage, task state, and
26
+ Ship closure. Never write delivery state back into an approved package.
@@ -18,6 +18,11 @@ when present, and specification. Also read repository instructions, ADRs,
18
18
  planning rules, applicable stack guidance, relevant design/database context,
19
19
  implementation code, tests, and interfaces produced by declared dependencies.
20
20
 
21
+ Read [the design lineage contract](references/design-lineage.md). If the selected
22
+ planning root contains `design-lineage.json`, load only the selected task's mapped
23
+ requirements and source references, and report whether the exact approved package
24
+ is current or stale. Its absence leaves the ordinary task context unchanged.
25
+
21
26
  Only `dependsOn` defines semantic ordering. When a dependency has not produced
22
27
  the interface this task consumes, report that concrete gap. Never infer a
23
28
  dependency from order or overlapping paths. Isolate independent executions when
@@ -62,6 +67,10 @@ Run the strongest applicable focused checks while working, then the relevant
62
67
  regression checks. Fix failures caused by the change and rerun affected checks.
63
68
  Read [the result contract](references/result-contract.md) before reporting.
64
69
 
70
+ Do not write progress into an approved design package. The studio derives
71
+ approved, planned, implementing, and verified state from canonical planning and
72
+ Ship artifacts after this separate invocation.
73
+
65
74
  ## Return
66
75
 
67
76
  Return the existing five fields: