create-yss-spec 3.3.4 → 3.3.7

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 (171) hide show
  1. package/README.md +2 -2
  2. package/package.json +1 -1
  3. package/src/template/instance-runtime.js +8 -2
  4. package/src/validation/snapshot.js +7 -0
  5. package/template/.agents/skills/.strategic-design-skills-manifest.json +7 -5
  6. package/template/.agents/skills/archify/SKILL.md +1 -1
  7. package/template/.agents/skills/code-review/SKILL.md +6 -0
  8. package/template/.agents/skills/i-have-adhd/LICENSE +21 -0
  9. package/template/.agents/skills/i-have-adhd/SKILL.md +26 -0
  10. package/template/.agents/skills/i-have-adhd/agents/openai.yaml +6 -0
  11. package/template/.agents/skills/i-have-adhd/references/yss-adaptation.md +21 -0
  12. package/template/.agents/skills/i-have-adhd/tests/verify-integration.mjs +63 -0
  13. package/template/.agents/skills/prototype-review/SKILL.md +2 -0
  14. package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +6 -0
  15. package/template/.agents/skills/yss-implementation-contract-compiler/references/boundaries.md +10 -0
  16. package/template/.agents/skills/yss-openapi-governance/SKILL.md +6 -0
  17. package/template/.agents/skills/yss-product-lifecycle/SKILL.md +3 -1
  18. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +12 -0
  19. package/template/.agents/skills/yss-prototype-stage/SKILL.md +6 -0
  20. package/template/.agents/skills/yss-research/SKILL.md +6 -0
  21. package/template/.agents/skills/yss-stage-decision/SKILL.md +19 -4
  22. package/template/.agents/skills/yss-stage-decision/references/domain-strategy-contract.md +4 -3
  23. package/template/.agents/skills/yss-stage-decision/references/domain-strategy-v2.schema.json +8 -0
  24. package/template/.agents/skills/yss-stage-decision/references/domain-strategy-v3.schema.json +8 -0
  25. package/template/.agents/skills/yss-stage-decision/references/domain-strategy.schema.json +75 -5
  26. package/template/.agents/skills/yss-stage-decision/references/stage-decision-package-contract.md +4 -4
  27. package/template/.agents/skills/yss-stage-decision/references/stage-decision-package-v2.schema.json +8 -0
  28. package/template/.agents/skills/yss-stage-decision/references/stage-decision-package-v3.schema.json +8 -0
  29. package/template/.agents/skills/yss-stage-decision/references/stage-decision-package.schema.json +59 -9
  30. package/template/.agents/skills/yss-stage-decision/references/validation-rules.md +2 -2
  31. package/template/.agents/skills/yss-stage-decision/scripts/migrate-contract-v3.mjs +143 -0
  32. package/template/.agents/skills/yss-stage-decision/scripts/validate-domain-strategy.mjs +46 -4
  33. package/template/.agents/skills/yss-stage-decision/scripts/validate-stage-decision-package.mjs +48 -4
  34. package/template/.agents/skills/yss-stage-decision/tests/fixtures/valid-stage-decision-package.yaml +42 -13
  35. package/template/.agents/skills/yss-stage-decision/tests/fixtures/valid-supplier-domain.yaml +37 -5
  36. package/template/.agents/skills/yss-stage-decision/tests/run-scenarios.mjs +116 -23
  37. package/template/.agents/skills/yss-technical-design/SKILL.md +6 -0
  38. package/template/.codex/skills/archify/SKILL.md +1 -1
  39. package/template/.codex/skills/code-review/SKILL.md +6 -0
  40. package/template/.codex/skills/i-have-adhd/LICENSE +21 -0
  41. package/template/.codex/skills/i-have-adhd/SKILL.md +26 -0
  42. package/template/.codex/skills/i-have-adhd/agents/openai.yaml +6 -0
  43. package/template/.codex/skills/i-have-adhd/references/yss-adaptation.md +21 -0
  44. package/template/.codex/skills/i-have-adhd/tests/verify-integration.mjs +63 -0
  45. package/template/.codex/skills/prototype-review/SKILL.md +2 -0
  46. package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +6 -0
  47. package/template/.codex/skills/yss-implementation-contract-compiler/references/boundaries.md +10 -0
  48. package/template/.codex/skills/yss-openapi-governance/SKILL.md +6 -0
  49. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +3 -1
  50. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +12 -0
  51. package/template/.codex/skills/yss-prototype-stage/SKILL.md +6 -0
  52. package/template/.codex/skills/yss-research/SKILL.md +6 -0
  53. package/template/.codex/skills/yss-stage-decision/SKILL.md +19 -4
  54. package/template/.codex/skills/yss-stage-decision/references/domain-strategy-contract.md +4 -3
  55. package/template/.codex/skills/yss-stage-decision/references/domain-strategy-v2.schema.json +8 -0
  56. package/template/.codex/skills/yss-stage-decision/references/domain-strategy-v3.schema.json +8 -0
  57. package/template/.codex/skills/yss-stage-decision/references/domain-strategy.schema.json +75 -5
  58. package/template/.codex/skills/yss-stage-decision/references/stage-decision-package-contract.md +4 -4
  59. package/template/.codex/skills/yss-stage-decision/references/stage-decision-package-v2.schema.json +8 -0
  60. package/template/.codex/skills/yss-stage-decision/references/stage-decision-package-v3.schema.json +8 -0
  61. package/template/.codex/skills/yss-stage-decision/references/stage-decision-package.schema.json +59 -9
  62. package/template/.codex/skills/yss-stage-decision/references/validation-rules.md +2 -2
  63. package/template/.codex/skills/yss-stage-decision/scripts/migrate-contract-v3.mjs +143 -0
  64. package/template/.codex/skills/yss-stage-decision/scripts/validate-domain-strategy.mjs +46 -4
  65. package/template/.codex/skills/yss-stage-decision/scripts/validate-stage-decision-package.mjs +48 -4
  66. package/template/.codex/skills/yss-stage-decision/tests/fixtures/valid-stage-decision-package.yaml +42 -13
  67. package/template/.codex/skills/yss-stage-decision/tests/fixtures/valid-supplier-domain.yaml +37 -5
  68. package/template/.codex/skills/yss-stage-decision/tests/run-scenarios.mjs +116 -23
  69. package/template/.codex/skills/yss-technical-design/SKILL.md +6 -0
  70. package/template/.cursor/skills/archify/SKILL.md +1 -1
  71. package/template/.cursor/skills/code-review/SKILL.md +6 -0
  72. package/template/.cursor/skills/i-have-adhd/LICENSE +21 -0
  73. package/template/.cursor/skills/i-have-adhd/SKILL.md +26 -0
  74. package/template/.cursor/skills/i-have-adhd/agents/openai.yaml +6 -0
  75. package/template/.cursor/skills/i-have-adhd/references/yss-adaptation.md +21 -0
  76. package/template/.cursor/skills/i-have-adhd/tests/verify-integration.mjs +63 -0
  77. package/template/.cursor/skills/prototype-review/SKILL.md +2 -0
  78. package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +6 -0
  79. package/template/.cursor/skills/yss-implementation-contract-compiler/references/boundaries.md +10 -0
  80. package/template/.cursor/skills/yss-openapi-governance/SKILL.md +6 -0
  81. package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +3 -1
  82. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +12 -0
  83. package/template/.cursor/skills/yss-prototype-stage/SKILL.md +6 -0
  84. package/template/.cursor/skills/yss-research/SKILL.md +6 -0
  85. package/template/.cursor/skills/yss-stage-decision/SKILL.md +19 -4
  86. package/template/.cursor/skills/yss-stage-decision/references/domain-strategy-contract.md +4 -3
  87. package/template/.cursor/skills/yss-stage-decision/references/domain-strategy-v2.schema.json +8 -0
  88. package/template/.cursor/skills/yss-stage-decision/references/domain-strategy-v3.schema.json +8 -0
  89. package/template/.cursor/skills/yss-stage-decision/references/domain-strategy.schema.json +75 -5
  90. package/template/.cursor/skills/yss-stage-decision/references/stage-decision-package-contract.md +4 -4
  91. package/template/.cursor/skills/yss-stage-decision/references/stage-decision-package-v2.schema.json +8 -0
  92. package/template/.cursor/skills/yss-stage-decision/references/stage-decision-package-v3.schema.json +8 -0
  93. package/template/.cursor/skills/yss-stage-decision/references/stage-decision-package.schema.json +59 -9
  94. package/template/.cursor/skills/yss-stage-decision/references/validation-rules.md +2 -2
  95. package/template/.cursor/skills/yss-stage-decision/scripts/migrate-contract-v3.mjs +143 -0
  96. package/template/.cursor/skills/yss-stage-decision/scripts/validate-domain-strategy.mjs +46 -4
  97. package/template/.cursor/skills/yss-stage-decision/scripts/validate-stage-decision-package.mjs +48 -4
  98. package/template/.cursor/skills/yss-stage-decision/tests/fixtures/valid-stage-decision-package.yaml +42 -13
  99. package/template/.cursor/skills/yss-stage-decision/tests/fixtures/valid-supplier-domain.yaml +37 -5
  100. package/template/.cursor/skills/yss-stage-decision/tests/run-scenarios.mjs +116 -23
  101. package/template/.cursor/skills/yss-technical-design/SKILL.md +6 -0
  102. package/template/.pi/skills/archify/SKILL.md +1 -1
  103. package/template/.pi/skills/code-review/SKILL.md +6 -0
  104. package/template/.pi/skills/i-have-adhd/LICENSE +21 -0
  105. package/template/.pi/skills/i-have-adhd/SKILL.md +26 -0
  106. package/template/.pi/skills/i-have-adhd/agents/openai.yaml +6 -0
  107. package/template/.pi/skills/i-have-adhd/references/yss-adaptation.md +21 -0
  108. package/template/.pi/skills/i-have-adhd/tests/verify-integration.mjs +63 -0
  109. package/template/.pi/skills/prototype-review/SKILL.md +2 -0
  110. package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +6 -0
  111. package/template/.pi/skills/yss-implementation-contract-compiler/references/boundaries.md +10 -0
  112. package/template/.pi/skills/yss-openapi-governance/SKILL.md +6 -0
  113. package/template/.pi/skills/yss-product-lifecycle/SKILL.md +3 -1
  114. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +12 -0
  115. package/template/.pi/skills/yss-prototype-stage/SKILL.md +6 -0
  116. package/template/.pi/skills/yss-research/SKILL.md +6 -0
  117. package/template/.pi/skills/yss-stage-decision/SKILL.md +19 -4
  118. package/template/.pi/skills/yss-stage-decision/references/domain-strategy-contract.md +4 -3
  119. package/template/.pi/skills/yss-stage-decision/references/domain-strategy-v2.schema.json +8 -0
  120. package/template/.pi/skills/yss-stage-decision/references/domain-strategy-v3.schema.json +8 -0
  121. package/template/.pi/skills/yss-stage-decision/references/domain-strategy.schema.json +75 -5
  122. package/template/.pi/skills/yss-stage-decision/references/stage-decision-package-contract.md +4 -4
  123. package/template/.pi/skills/yss-stage-decision/references/stage-decision-package-v2.schema.json +8 -0
  124. package/template/.pi/skills/yss-stage-decision/references/stage-decision-package-v3.schema.json +8 -0
  125. package/template/.pi/skills/yss-stage-decision/references/stage-decision-package.schema.json +59 -9
  126. package/template/.pi/skills/yss-stage-decision/references/validation-rules.md +2 -2
  127. package/template/.pi/skills/yss-stage-decision/scripts/migrate-contract-v3.mjs +143 -0
  128. package/template/.pi/skills/yss-stage-decision/scripts/validate-domain-strategy.mjs +46 -4
  129. package/template/.pi/skills/yss-stage-decision/scripts/validate-stage-decision-package.mjs +48 -4
  130. package/template/.pi/skills/yss-stage-decision/tests/fixtures/valid-stage-decision-package.yaml +42 -13
  131. package/template/.pi/skills/yss-stage-decision/tests/fixtures/valid-supplier-domain.yaml +37 -5
  132. package/template/.pi/skills/yss-stage-decision/tests/run-scenarios.mjs +116 -23
  133. package/template/.pi/skills/yss-technical-design/SKILL.md +6 -0
  134. package/template/docs/agents/yss-skill-registry.yaml +22 -0
  135. package/template/docs/plan/templates/plan-template.md +8 -4
  136. package/template/docs/process/document-writing.md +77 -0
  137. package/template/docs/process/frontend-backend-delivery.md +7 -4
  138. package/template/docs/process/schemas/backend-delivery.schema.json +4 -0
  139. package/template/docs/process/schemas/frontend-delivery-acceptance-v1.schema.json +200 -0
  140. package/template/docs/process/schemas/frontend-delivery-acceptance.schema.json +37 -3
  141. package/template/docs/process/schemas/frontend-strategic-preflight.schema.json +32 -0
  142. package/template/docs/process/schemas/lifecycle-checkpoint.schema.json +2 -1
  143. package/template/docs/process/schemas/strategic-consumer-feedback.schema.json +40 -0
  144. package/template/docs/process/schemas/strategic-design-handoff-v3.schema.json +743 -0
  145. package/template/docs/process/schemas/strategic-design-handoff-v4.schema.json +712 -0
  146. package/template/docs/process/schemas/strategic-feedback-adjudication.schema.json +42 -0
  147. package/template/docs/process/schemas/strategic-handoff-domain-strategy-v3.schema.json +216 -0
  148. package/template/docs/process/schemas/strategic-handoff-import-receipt.schema.json +39 -0
  149. package/template/docs/process/schemas/strategic-handoff-stage-decision-package-v3.schema.json +148 -0
  150. package/template/docs/process/strategic-handoff-package.md +37 -4
  151. package/template/docs/process/templates/lifecycle-checkpoint-template.yaml +1 -0
  152. package/template/docs/process/templates/stage-checkpoint-template.md +1 -0
  153. package/template/docs/templates/examples/lifecycle-writing-examples.md +138 -0
  154. package/template/docs/templates/spec-template.md +16 -3
  155. package/template/docs/templates/vertical-slice-ticket-template.md +8 -4
  156. package/template/scripts/lib/approval-record.mjs +2 -1
  157. package/template/scripts/lib/backend-delivery.mjs +15 -3
  158. package/template/scripts/lib/frontend-delivery-boundary.mjs +20 -4
  159. package/template/scripts/lib/frontend-delivery.mjs +66 -2
  160. package/template/scripts/lib/profile-skill-sync.mjs +336 -0
  161. package/template/scripts/lib/strategic-feedback.mjs +33 -0
  162. package/template/scripts/lib/strategic-handoff-consumption.mjs +5 -0
  163. package/template/scripts/lib/strategic-handoff-io.mjs +1 -0
  164. package/template/scripts/lib/strategic-handoff.mjs +101 -10
  165. package/template/scripts/lib/user-decision-reuse.mjs +38 -0
  166. package/template/scripts/strategic-feedback +10 -0
  167. package/template/scripts/sync-profile-skills +43 -0
  168. package/template/scripts/verify-frontend-strategic-preflight +12 -0
  169. package/template/skills-lock.json +38 -20
  170. package/template.manifest.json +1 -0
  171. package/template.snapshot.json +6 -5
@@ -0,0 +1,200 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "additionalProperties": false,
5
+ "properties": {
6
+ "schema_version": {
7
+ "const": 1
8
+ },
9
+ "status": {
10
+ "const": "accepted"
11
+ },
12
+ "slice_id": {
13
+ "type": "string",
14
+ "minLength": 1
15
+ },
16
+ "backend_delivery": {
17
+ "type": "object",
18
+ "additionalProperties": false,
19
+ "properties": {
20
+ "import_receipt_ref": {
21
+ "type": "string",
22
+ "minLength": 1
23
+ },
24
+ "bundle_digest": {
25
+ "type": "string",
26
+ "pattern": "^sha256:[0-9a-f]{64}$"
27
+ }
28
+ },
29
+ "required": [
30
+ "import_receipt_ref",
31
+ "bundle_digest"
32
+ ]
33
+ },
34
+ "strategic_handoff": {
35
+ "type": "object",
36
+ "additionalProperties": false,
37
+ "properties": {
38
+ "import_receipt_ref": {
39
+ "type": "string",
40
+ "minLength": 1
41
+ },
42
+ "bundle_digest": {
43
+ "type": "string",
44
+ "pattern": "^sha256:[0-9a-f]{64}$"
45
+ },
46
+ "context_reconciliation_ref": {
47
+ "type": "string",
48
+ "minLength": 1
49
+ },
50
+ "rows": {
51
+ "type": "array",
52
+ "items": {
53
+ "type": "object",
54
+ "required": [
55
+ "source_id",
56
+ "source_digest",
57
+ "disposition",
58
+ "dependency_status",
59
+ "dependent_slice_refs",
60
+ "evidence_refs"
61
+ ],
62
+ "properties": {
63
+ "source_id": {
64
+ "type": "string",
65
+ "minLength": 1
66
+ },
67
+ "source_digest": {
68
+ "type": "string",
69
+ "pattern": "^sha256:[0-9a-f]{64}$"
70
+ },
71
+ "disposition": {
72
+ "enum": [
73
+ "mapped",
74
+ "pending",
75
+ "conflict",
76
+ "deferred",
77
+ "not-applicable"
78
+ ]
79
+ },
80
+ "dependency_status": {
81
+ "enum": [
82
+ "known",
83
+ "unknown"
84
+ ]
85
+ },
86
+ "dependent_slice_refs": {
87
+ "type": "array",
88
+ "items": {
89
+ "type": "string",
90
+ "minLength": 1
91
+ },
92
+ "minItems": 0,
93
+ "uniqueItems": true
94
+ },
95
+ "evidence_refs": {
96
+ "type": "array",
97
+ "items": {
98
+ "type": "string",
99
+ "minLength": 1
100
+ },
101
+ "minItems": 0,
102
+ "uniqueItems": true
103
+ },
104
+ "frontend_case_refs": {
105
+ "type": "array",
106
+ "items": {
107
+ "type": "string",
108
+ "minLength": 1
109
+ },
110
+ "minItems": 0,
111
+ "uniqueItems": true
112
+ }
113
+ }
114
+ },
115
+ "minItems": 1,
116
+ "uniqueItems": true
117
+ }
118
+ },
119
+ "required": [
120
+ "import_receipt_ref",
121
+ "bundle_digest",
122
+ "context_reconciliation_ref",
123
+ "rows"
124
+ ]
125
+ },
126
+ "frontend_cases": {
127
+ "type": "array",
128
+ "items": {
129
+ "type": "object",
130
+ "additionalProperties": false,
131
+ "properties": {
132
+ "case_id": {
133
+ "type": "string",
134
+ "minLength": 1
135
+ },
136
+ "source_ids": {
137
+ "type": "array",
138
+ "items": {
139
+ "type": "string",
140
+ "minLength": 1
141
+ },
142
+ "minItems": 1,
143
+ "uniqueItems": true
144
+ },
145
+ "outcome": {
146
+ "enum": [
147
+ "success",
148
+ "failure"
149
+ ]
150
+ },
151
+ "operation_ids": {
152
+ "type": "array",
153
+ "items": {
154
+ "type": "string",
155
+ "minLength": 1
156
+ },
157
+ "minItems": 1,
158
+ "uniqueItems": true
159
+ },
160
+ "visual_case_ids": {
161
+ "type": "array",
162
+ "items": {
163
+ "type": "string",
164
+ "minLength": 1
165
+ },
166
+ "minItems": 1,
167
+ "uniqueItems": true
168
+ },
169
+ "evidence_ref": {
170
+ "type": "string",
171
+ "minLength": 1
172
+ },
173
+ "evidence_digest": {
174
+ "type": "string",
175
+ "pattern": "^sha256:[a-f0-9]{64}$"
176
+ }
177
+ },
178
+ "required": [
179
+ "case_id",
180
+ "source_ids",
181
+ "outcome",
182
+ "operation_ids",
183
+ "visual_case_ids",
184
+ "evidence_ref",
185
+ "evidence_digest"
186
+ ]
187
+ },
188
+ "minItems": 1,
189
+ "uniqueItems": true
190
+ }
191
+ },
192
+ "required": [
193
+ "schema_version",
194
+ "status",
195
+ "slice_id",
196
+ "backend_delivery",
197
+ "strategic_handoff",
198
+ "frontend_cases"
199
+ ]
200
+ }
@@ -4,7 +4,7 @@
4
4
  "additionalProperties": false,
5
5
  "properties": {
6
6
  "schema_version": {
7
- "const": 1
7
+ "const": 2
8
8
  },
9
9
  "status": {
10
10
  "const": "accepted"
@@ -31,6 +31,27 @@
31
31
  "bundle_digest"
32
32
  ]
33
33
  },
34
+ "strategic_preflight": {
35
+ "type": "object",
36
+ "additionalProperties": false,
37
+ "required": ["ref", "digest"],
38
+ "properties": {
39
+ "ref": {"type": "string", "minLength": 1},
40
+ "digest": {"type": "string", "pattern": "^sha256:[0-9a-f]{64}$"}
41
+ }
42
+ },
43
+ "backend_dependency": {
44
+ "type": "object",
45
+ "additionalProperties": false,
46
+ "required": ["mode", "route_id"],
47
+ "properties": {
48
+ "mode": {"enum": ["required", "not-applicable"]},
49
+ "route_id": {"const": "route.backend"},
50
+ "impact_refs": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "minLength": 1}},
51
+ "reason": {"type": "string", "minLength": 1},
52
+ "evidence_refs": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "minLength": 1}}
53
+ }
54
+ },
34
55
  "strategic_handoff": {
35
56
  "type": "object",
36
57
  "additionalProperties": false,
@@ -43,6 +64,10 @@
43
64
  "type": "string",
44
65
  "pattern": "^sha256:[0-9a-f]{64}$"
45
66
  },
67
+ "route_id": {
68
+ "type": "string",
69
+ "pattern": "^route\\.[a-z0-9][a-z0-9-]*$"
70
+ },
46
71
  "context_reconciliation_ref": {
47
72
  "type": "string",
48
73
  "minLength": 1
@@ -119,6 +144,7 @@
119
144
  "required": [
120
145
  "import_receipt_ref",
121
146
  "bundle_digest",
147
+ "route_id",
122
148
  "context_reconciliation_ref",
123
149
  "rows"
124
150
  ]
@@ -154,7 +180,7 @@
154
180
  "type": "string",
155
181
  "minLength": 1
156
182
  },
157
- "minItems": 1,
183
+ "minItems": 0,
158
184
  "uniqueItems": true
159
185
  },
160
186
  "visual_case_ids": {
@@ -193,8 +219,16 @@
193
219
  "schema_version",
194
220
  "status",
195
221
  "slice_id",
196
- "backend_delivery",
222
+ "strategic_preflight",
223
+ "backend_dependency",
197
224
  "strategic_handoff",
198
225
  "frontend_cases"
226
+ ],
227
+ "allOf": [
228
+ {
229
+ "if": {"properties": {"backend_dependency": {"properties": {"mode": {"const": "required"}}}}, "required": ["backend_dependency"]},
230
+ "then": {"required": ["backend_delivery"]},
231
+ "else": {"properties": {"backend_dependency": {"required": ["reason", "impact_refs", "evidence_refs"]}}}
232
+ }
199
233
  ]
200
234
  }
@@ -0,0 +1,32 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://yss.local/schemas/frontend-strategic-preflight-v1.json",
4
+ "title": "YSS Frontend Strategic Preflight v1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schema_version", "status", "route_id", "capability", "import_receipt_ref", "bundle_digest", "context_reconciliation_ref", "visual_baseline_ref", "source_rule_refs", "backend_dependency", "ready_for_agent"],
8
+ "properties": {
9
+ "schema_version": {"const": 1},
10
+ "status": {"enum": ["draft", "verified", "blocked", "stale"]},
11
+ "route_id": {"type": "string", "pattern": "^route\\.[a-z0-9][a-z0-9-]*$"},
12
+ "capability": {"const": "frontend-engineering-design"},
13
+ "import_receipt_ref": {"type": "string", "minLength": 1},
14
+ "bundle_digest": {"type": "string", "pattern": "^sha256:[a-f0-9]{64}$"},
15
+ "context_reconciliation_ref": {"type": "string"},
16
+ "visual_baseline_ref": {"type": "string", "minLength": 1},
17
+ "source_rule_refs": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "pattern": "^(rule|scenario|invariant)\\.[a-z0-9][a-z0-9-]*$"}},
18
+ "backend_dependency": {
19
+ "type": "object",
20
+ "additionalProperties": false,
21
+ "required": ["mode", "route_id"],
22
+ "properties": {
23
+ "mode": {"enum": ["required", "not-applicable"]},
24
+ "route_id": {"const": "route.backend"},
25
+ "reason": {"type": "string", "minLength": 1},
26
+ "impact_refs": {"type": "array", "uniqueItems": true, "items": {"type": "string", "minLength": 1}},
27
+ "evidence_refs": {"type": "array", "uniqueItems": true, "items": {"type": "string", "minLength": 1}}
28
+ }
29
+ },
30
+ "ready_for_agent": {"const": false}
31
+ }
32
+ }
@@ -221,7 +221,8 @@
221
221
  "type": "object"
222
222
  },
223
223
  "ticket_sync": {
224
- "type": "object"
224
+ "type": "object",
225
+ "description": "Ticket 仅保存追踪同步状态;refs 关联消费者 Import Receipt、Consumer Feedback、Feedback Adjudication 与 Delivery Acceptance 等权威资产,不复制其机器状态。"
225
226
  },
226
227
  "verification": {
227
228
  "type": "object"
@@ -0,0 +1,40 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://yss.local/schemas/strategic-consumer-feedback-v1.json",
4
+ "title": "YSS Strategic Consumer Feedback v1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schema_version", "feedback_id", "status", "import_receipt_ref", "bundle", "route_id", "source", "issue_type", "severity", "suggestion", "raised_by", "evidence_refs", "created_at"],
8
+ "properties": {
9
+ "schema_version": {"const": 1},
10
+ "feedback_id": {"type": "string", "pattern": "^consumer-feedback\\.[a-z0-9][a-z0-9-]*$"},
11
+ "status": {"const": "submitted"},
12
+ "import_receipt_ref": {"type": "string", "minLength": 1},
13
+ "bundle": {
14
+ "type": "object",
15
+ "additionalProperties": false,
16
+ "required": ["id", "version", "digest"],
17
+ "properties": {
18
+ "id": {"type": "string", "pattern": "^strategic-design-handoff\\.[a-z0-9][a-z0-9-]*$"},
19
+ "version": {"type": "string", "pattern": "^v[1-9][0-9]*$"},
20
+ "digest": {"type": "string", "pattern": "^sha256:[a-f0-9]{64}$"}
21
+ }
22
+ },
23
+ "route_id": {"type": "string", "pattern": "^route\\.[a-z0-9][a-z0-9-]*$"},
24
+ "source": {
25
+ "type": "object",
26
+ "additionalProperties": false,
27
+ "required": ["id", "digest"],
28
+ "properties": {
29
+ "id": {"type": "string", "pattern": "^(rule|scenario|invariant)\\.[a-z0-9][a-z0-9-]*$"},
30
+ "digest": {"type": "string", "pattern": "^sha256:[a-f0-9]{64}$"}
31
+ }
32
+ },
33
+ "issue_type": {"enum": ["rule-conflict", "scenario-gap", "impact-mismatch", "context-conflict", "design-baseline", "other"]},
34
+ "severity": {"enum": ["blocking", "non-blocking"]},
35
+ "suggestion": {"type": "string", "minLength": 1},
36
+ "raised_by": {"type": "string", "minLength": 1},
37
+ "evidence_refs": {"type": "array", "minItems": 1, "uniqueItems": true, "items": {"type": "string", "minLength": 1}},
38
+ "created_at": {"type": "string", "format": "date-time"}
39
+ }
40
+ }