create-yss-spec 2.2.3 → 2.2.5

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 (341) hide show
  1. package/README.md +17 -1
  2. package/package.json +1 -1
  3. package/src/cli.js +15 -1
  4. package/src/self-update.js +277 -0
  5. package/template/.agents/skills/yss-domain/SKILL.md +5 -4
  6. package/template/.agents/skills/yss-product-lifecycle/SKILL.md +15 -14
  7. package/template/.agents/skills/yss-product-lifecycle/references/artifact-dependencies.md +4 -0
  8. package/template/.agents/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  9. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +139 -4
  10. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +6 -3
  11. package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +7 -2
  12. package/template/.agents/skills/yss-router/SKILL.md +4 -2
  13. package/template/.agents/skills/yss-router/references/router-contract.yaml +18 -3
  14. package/template/.agents/skills/yss-router/references/slice-implementation-contract.md +58 -1
  15. package/template/.agents/skills/yss-stage-decision/SKILL.md +50 -0
  16. package/template/.agents/skills/yss-stage-decision/references/domain-strategy-contract.md +26 -0
  17. package/template/.agents/skills/yss-stage-decision/references/domain-strategy.schema.json +128 -0
  18. package/template/.agents/skills/yss-stage-decision/references/stage-decision-package-contract.md +19 -0
  19. package/template/.agents/skills/yss-stage-decision/references/stage-decision-package.schema.json +86 -0
  20. package/template/.agents/skills/yss-stage-decision/references/validation-rules.md +18 -0
  21. package/template/.agents/skills/yss-stage-decision/scripts/validate-domain-strategy.mjs +169 -0
  22. package/template/.agents/skills/yss-stage-decision/scripts/validate-stage-decision-package.mjs +100 -0
  23. package/template/.agents/skills/yss-stage-decision/tests/fixtures/domain-strategy-approval.yaml +15 -0
  24. package/template/.agents/skills/yss-stage-decision/tests/fixtures/invalid-direction.yaml +58 -0
  25. package/template/.agents/skills/yss-stage-decision/tests/fixtures/invalid-stage-decision-blocker.yaml +44 -0
  26. package/template/.agents/skills/yss-stage-decision/tests/fixtures/stage-decision-approval.yaml +15 -0
  27. package/template/.agents/skills/yss-stage-decision/tests/fixtures/valid-stage-decision-package.yaml +49 -0
  28. package/template/.agents/skills/yss-stage-decision/tests/fixtures/valid-supplier-domain.yaml +108 -0
  29. package/template/.agents/skills/yss-stage-decision/tests/run-scenarios.mjs +68 -0
  30. package/template/.agents/skills/yss-tactical-design/SKILL.md +33 -0
  31. package/template/.agents/skills/yss-tactical-design/agents/openai.yaml +4 -0
  32. package/template/.agents/skills/yss-tactical-design/references/output-template.md +28 -0
  33. package/template/.agents/skills/yss-tactical-design/references/tactical-design-contract.md +41 -0
  34. package/template/.agents/skills/yss-tactical-design/references/tactical-design.schema.json +31 -0
  35. package/template/.agents/skills/yss-tactical-design/references/validation-rules.md +13 -0
  36. package/template/.agents/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +213 -0
  37. package/template/.agents/skills/yss-tactical-design/tests/fixtures/invalid-api-leaks-aggregate.yaml +21 -0
  38. package/template/.agents/skills/yss-tactical-design/tests/fixtures/invalid-missing-consistency-policy.yaml +21 -0
  39. package/template/.agents/skills/yss-tactical-design/tests/fixtures/invalid-missing-invariant.yaml +21 -0
  40. package/template/.agents/skills/yss-tactical-design/tests/fixtures/invalid-stale-upstream-ref.yaml +21 -0
  41. package/template/.agents/skills/yss-tactical-design/tests/fixtures/invalid-strategic-as-tactical.yaml +21 -0
  42. package/template/.agents/skills/yss-tactical-design/tests/fixtures/valid-tactical-design.yaml +80 -0
  43. package/template/.agents/skills/yss-tactical-design/tests/run-scenarios.mjs +47 -0
  44. package/template/.claude/skills/yss-domain/SKILL.md +5 -4
  45. package/template/.claude/skills/yss-product-lifecycle/SKILL.md +15 -14
  46. package/template/.claude/skills/yss-product-lifecycle/references/artifact-dependencies.md +4 -0
  47. package/template/.claude/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  48. package/template/.claude/skills/yss-product-lifecycle/references/orchestration-contract.yaml +139 -4
  49. package/template/.claude/skills/yss-product-lifecycle/references/orchestration.md +6 -3
  50. package/template/.claude/skills/yss-product-lifecycle/references/state-model.md +7 -2
  51. package/template/.claude/skills/yss-router/SKILL.md +4 -2
  52. package/template/.claude/skills/yss-router/references/router-contract.yaml +18 -3
  53. package/template/.claude/skills/yss-router/references/slice-implementation-contract.md +58 -1
  54. package/template/.claude/skills/yss-stage-decision/SKILL.md +50 -0
  55. package/template/.claude/skills/yss-stage-decision/references/domain-strategy-contract.md +26 -0
  56. package/template/.claude/skills/yss-stage-decision/references/domain-strategy.schema.json +128 -0
  57. package/template/.claude/skills/yss-stage-decision/references/stage-decision-package-contract.md +19 -0
  58. package/template/.claude/skills/yss-stage-decision/references/stage-decision-package.schema.json +86 -0
  59. package/template/.claude/skills/yss-stage-decision/references/validation-rules.md +18 -0
  60. package/template/.claude/skills/yss-stage-decision/scripts/validate-domain-strategy.mjs +169 -0
  61. package/template/.claude/skills/yss-stage-decision/scripts/validate-stage-decision-package.mjs +100 -0
  62. package/template/.claude/skills/yss-stage-decision/tests/fixtures/domain-strategy-approval.yaml +15 -0
  63. package/template/.claude/skills/yss-stage-decision/tests/fixtures/invalid-direction.yaml +58 -0
  64. package/template/.claude/skills/yss-stage-decision/tests/fixtures/invalid-stage-decision-blocker.yaml +44 -0
  65. package/template/.claude/skills/yss-stage-decision/tests/fixtures/stage-decision-approval.yaml +15 -0
  66. package/template/.claude/skills/yss-stage-decision/tests/fixtures/valid-stage-decision-package.yaml +49 -0
  67. package/template/.claude/skills/yss-stage-decision/tests/fixtures/valid-supplier-domain.yaml +108 -0
  68. package/template/.claude/skills/yss-stage-decision/tests/run-scenarios.mjs +68 -0
  69. package/template/.claude/skills/yss-tactical-design/SKILL.md +33 -0
  70. package/template/.claude/skills/yss-tactical-design/agents/openai.yaml +4 -0
  71. package/template/.claude/skills/yss-tactical-design/references/output-template.md +28 -0
  72. package/template/.claude/skills/yss-tactical-design/references/tactical-design-contract.md +41 -0
  73. package/template/.claude/skills/yss-tactical-design/references/tactical-design.schema.json +31 -0
  74. package/template/.claude/skills/yss-tactical-design/references/validation-rules.md +13 -0
  75. package/template/.claude/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +213 -0
  76. package/template/.claude/skills/yss-tactical-design/tests/fixtures/invalid-api-leaks-aggregate.yaml +21 -0
  77. package/template/.claude/skills/yss-tactical-design/tests/fixtures/invalid-missing-consistency-policy.yaml +21 -0
  78. package/template/.claude/skills/yss-tactical-design/tests/fixtures/invalid-missing-invariant.yaml +21 -0
  79. package/template/.claude/skills/yss-tactical-design/tests/fixtures/invalid-stale-upstream-ref.yaml +21 -0
  80. package/template/.claude/skills/yss-tactical-design/tests/fixtures/invalid-strategic-as-tactical.yaml +21 -0
  81. package/template/.claude/skills/yss-tactical-design/tests/fixtures/valid-tactical-design.yaml +80 -0
  82. package/template/.claude/skills/yss-tactical-design/tests/run-scenarios.mjs +47 -0
  83. package/template/.codex/skills/yss-domain/SKILL.md +5 -4
  84. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +15 -14
  85. package/template/.codex/skills/yss-product-lifecycle/references/artifact-dependencies.md +4 -0
  86. package/template/.codex/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  87. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +139 -4
  88. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +6 -3
  89. package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +7 -2
  90. package/template/.codex/skills/yss-router/SKILL.md +4 -2
  91. package/template/.codex/skills/yss-router/references/router-contract.yaml +18 -3
  92. package/template/.codex/skills/yss-router/references/slice-implementation-contract.md +58 -1
  93. package/template/.codex/skills/yss-stage-decision/SKILL.md +50 -0
  94. package/template/.codex/skills/yss-stage-decision/references/domain-strategy-contract.md +26 -0
  95. package/template/.codex/skills/yss-stage-decision/references/domain-strategy.schema.json +128 -0
  96. package/template/.codex/skills/yss-stage-decision/references/stage-decision-package-contract.md +19 -0
  97. package/template/.codex/skills/yss-stage-decision/references/stage-decision-package.schema.json +86 -0
  98. package/template/.codex/skills/yss-stage-decision/references/validation-rules.md +18 -0
  99. package/template/.codex/skills/yss-stage-decision/scripts/validate-domain-strategy.mjs +169 -0
  100. package/template/.codex/skills/yss-stage-decision/scripts/validate-stage-decision-package.mjs +100 -0
  101. package/template/.codex/skills/yss-stage-decision/tests/fixtures/domain-strategy-approval.yaml +15 -0
  102. package/template/.codex/skills/yss-stage-decision/tests/fixtures/invalid-direction.yaml +58 -0
  103. package/template/.codex/skills/yss-stage-decision/tests/fixtures/invalid-stage-decision-blocker.yaml +44 -0
  104. package/template/.codex/skills/yss-stage-decision/tests/fixtures/stage-decision-approval.yaml +15 -0
  105. package/template/.codex/skills/yss-stage-decision/tests/fixtures/valid-stage-decision-package.yaml +49 -0
  106. package/template/.codex/skills/yss-stage-decision/tests/fixtures/valid-supplier-domain.yaml +108 -0
  107. package/template/.codex/skills/yss-stage-decision/tests/run-scenarios.mjs +68 -0
  108. package/template/.codex/skills/yss-tactical-design/SKILL.md +33 -0
  109. package/template/.codex/skills/yss-tactical-design/agents/openai.yaml +4 -0
  110. package/template/.codex/skills/yss-tactical-design/references/output-template.md +28 -0
  111. package/template/.codex/skills/yss-tactical-design/references/tactical-design-contract.md +41 -0
  112. package/template/.codex/skills/yss-tactical-design/references/tactical-design.schema.json +31 -0
  113. package/template/.codex/skills/yss-tactical-design/references/validation-rules.md +13 -0
  114. package/template/.codex/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +213 -0
  115. package/template/.codex/skills/yss-tactical-design/tests/fixtures/invalid-api-leaks-aggregate.yaml +21 -0
  116. package/template/.codex/skills/yss-tactical-design/tests/fixtures/invalid-missing-consistency-policy.yaml +21 -0
  117. package/template/.codex/skills/yss-tactical-design/tests/fixtures/invalid-missing-invariant.yaml +21 -0
  118. package/template/.codex/skills/yss-tactical-design/tests/fixtures/invalid-stale-upstream-ref.yaml +21 -0
  119. package/template/.codex/skills/yss-tactical-design/tests/fixtures/invalid-strategic-as-tactical.yaml +21 -0
  120. package/template/.codex/skills/yss-tactical-design/tests/fixtures/valid-tactical-design.yaml +80 -0
  121. package/template/.codex/skills/yss-tactical-design/tests/run-scenarios.mjs +47 -0
  122. package/template/.cursor/skills/yss-domain/SKILL.md +5 -4
  123. package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +15 -14
  124. package/template/.cursor/skills/yss-product-lifecycle/references/artifact-dependencies.md +4 -0
  125. package/template/.cursor/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  126. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +139 -4
  127. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +6 -3
  128. package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +7 -2
  129. package/template/.cursor/skills/yss-router/SKILL.md +4 -2
  130. package/template/.cursor/skills/yss-router/references/router-contract.yaml +18 -3
  131. package/template/.cursor/skills/yss-router/references/slice-implementation-contract.md +58 -1
  132. package/template/.cursor/skills/yss-stage-decision/SKILL.md +50 -0
  133. package/template/.cursor/skills/yss-stage-decision/references/domain-strategy-contract.md +26 -0
  134. package/template/.cursor/skills/yss-stage-decision/references/domain-strategy.schema.json +128 -0
  135. package/template/.cursor/skills/yss-stage-decision/references/stage-decision-package-contract.md +19 -0
  136. package/template/.cursor/skills/yss-stage-decision/references/stage-decision-package.schema.json +86 -0
  137. package/template/.cursor/skills/yss-stage-decision/references/validation-rules.md +18 -0
  138. package/template/.cursor/skills/yss-stage-decision/scripts/validate-domain-strategy.mjs +169 -0
  139. package/template/.cursor/skills/yss-stage-decision/scripts/validate-stage-decision-package.mjs +100 -0
  140. package/template/.cursor/skills/yss-stage-decision/tests/fixtures/domain-strategy-approval.yaml +15 -0
  141. package/template/.cursor/skills/yss-stage-decision/tests/fixtures/invalid-direction.yaml +58 -0
  142. package/template/.cursor/skills/yss-stage-decision/tests/fixtures/invalid-stage-decision-blocker.yaml +44 -0
  143. package/template/.cursor/skills/yss-stage-decision/tests/fixtures/stage-decision-approval.yaml +15 -0
  144. package/template/.cursor/skills/yss-stage-decision/tests/fixtures/valid-stage-decision-package.yaml +49 -0
  145. package/template/.cursor/skills/yss-stage-decision/tests/fixtures/valid-supplier-domain.yaml +108 -0
  146. package/template/.cursor/skills/yss-stage-decision/tests/run-scenarios.mjs +68 -0
  147. package/template/.cursor/skills/yss-tactical-design/SKILL.md +33 -0
  148. package/template/.cursor/skills/yss-tactical-design/agents/openai.yaml +4 -0
  149. package/template/.cursor/skills/yss-tactical-design/references/output-template.md +28 -0
  150. package/template/.cursor/skills/yss-tactical-design/references/tactical-design-contract.md +41 -0
  151. package/template/.cursor/skills/yss-tactical-design/references/tactical-design.schema.json +31 -0
  152. package/template/.cursor/skills/yss-tactical-design/references/validation-rules.md +13 -0
  153. package/template/.cursor/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +213 -0
  154. package/template/.cursor/skills/yss-tactical-design/tests/fixtures/invalid-api-leaks-aggregate.yaml +21 -0
  155. package/template/.cursor/skills/yss-tactical-design/tests/fixtures/invalid-missing-consistency-policy.yaml +21 -0
  156. package/template/.cursor/skills/yss-tactical-design/tests/fixtures/invalid-missing-invariant.yaml +21 -0
  157. package/template/.cursor/skills/yss-tactical-design/tests/fixtures/invalid-stale-upstream-ref.yaml +21 -0
  158. package/template/.cursor/skills/yss-tactical-design/tests/fixtures/invalid-strategic-as-tactical.yaml +21 -0
  159. package/template/.cursor/skills/yss-tactical-design/tests/fixtures/valid-tactical-design.yaml +80 -0
  160. package/template/.cursor/skills/yss-tactical-design/tests/run-scenarios.mjs +47 -0
  161. package/template/.hermes/skills/yss-domain/SKILL.md +5 -4
  162. package/template/.hermes/skills/yss-product-lifecycle/SKILL.md +15 -14
  163. package/template/.hermes/skills/yss-product-lifecycle/references/artifact-dependencies.md +4 -0
  164. package/template/.hermes/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  165. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration-contract.yaml +139 -4
  166. package/template/.hermes/skills/yss-product-lifecycle/references/orchestration.md +6 -3
  167. package/template/.hermes/skills/yss-product-lifecycle/references/state-model.md +7 -2
  168. package/template/.hermes/skills/yss-router/SKILL.md +4 -2
  169. package/template/.hermes/skills/yss-router/references/router-contract.yaml +18 -3
  170. package/template/.hermes/skills/yss-router/references/slice-implementation-contract.md +58 -1
  171. package/template/.hermes/skills/yss-stage-decision/SKILL.md +50 -0
  172. package/template/.hermes/skills/yss-stage-decision/references/domain-strategy-contract.md +26 -0
  173. package/template/.hermes/skills/yss-stage-decision/references/domain-strategy.schema.json +128 -0
  174. package/template/.hermes/skills/yss-stage-decision/references/stage-decision-package-contract.md +19 -0
  175. package/template/.hermes/skills/yss-stage-decision/references/stage-decision-package.schema.json +86 -0
  176. package/template/.hermes/skills/yss-stage-decision/references/validation-rules.md +18 -0
  177. package/template/.hermes/skills/yss-stage-decision/scripts/validate-domain-strategy.mjs +169 -0
  178. package/template/.hermes/skills/yss-stage-decision/scripts/validate-stage-decision-package.mjs +100 -0
  179. package/template/.hermes/skills/yss-stage-decision/tests/fixtures/domain-strategy-approval.yaml +15 -0
  180. package/template/.hermes/skills/yss-stage-decision/tests/fixtures/invalid-direction.yaml +58 -0
  181. package/template/.hermes/skills/yss-stage-decision/tests/fixtures/invalid-stage-decision-blocker.yaml +44 -0
  182. package/template/.hermes/skills/yss-stage-decision/tests/fixtures/stage-decision-approval.yaml +15 -0
  183. package/template/.hermes/skills/yss-stage-decision/tests/fixtures/valid-stage-decision-package.yaml +49 -0
  184. package/template/.hermes/skills/yss-stage-decision/tests/fixtures/valid-supplier-domain.yaml +108 -0
  185. package/template/.hermes/skills/yss-stage-decision/tests/run-scenarios.mjs +68 -0
  186. package/template/.hermes/skills/yss-tactical-design/SKILL.md +33 -0
  187. package/template/.hermes/skills/yss-tactical-design/agents/openai.yaml +4 -0
  188. package/template/.hermes/skills/yss-tactical-design/references/output-template.md +28 -0
  189. package/template/.hermes/skills/yss-tactical-design/references/tactical-design-contract.md +41 -0
  190. package/template/.hermes/skills/yss-tactical-design/references/tactical-design.schema.json +31 -0
  191. package/template/.hermes/skills/yss-tactical-design/references/validation-rules.md +13 -0
  192. package/template/.hermes/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +213 -0
  193. package/template/.hermes/skills/yss-tactical-design/tests/fixtures/invalid-api-leaks-aggregate.yaml +21 -0
  194. package/template/.hermes/skills/yss-tactical-design/tests/fixtures/invalid-missing-consistency-policy.yaml +21 -0
  195. package/template/.hermes/skills/yss-tactical-design/tests/fixtures/invalid-missing-invariant.yaml +21 -0
  196. package/template/.hermes/skills/yss-tactical-design/tests/fixtures/invalid-stale-upstream-ref.yaml +21 -0
  197. package/template/.hermes/skills/yss-tactical-design/tests/fixtures/invalid-strategic-as-tactical.yaml +21 -0
  198. package/template/.hermes/skills/yss-tactical-design/tests/fixtures/valid-tactical-design.yaml +80 -0
  199. package/template/.hermes/skills/yss-tactical-design/tests/run-scenarios.mjs +47 -0
  200. package/template/.pi/skills/yss-domain/SKILL.md +5 -4
  201. package/template/.pi/skills/yss-product-lifecycle/SKILL.md +15 -14
  202. package/template/.pi/skills/yss-product-lifecycle/references/artifact-dependencies.md +4 -0
  203. package/template/.pi/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  204. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +139 -4
  205. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +6 -3
  206. package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +7 -2
  207. package/template/.pi/skills/yss-router/SKILL.md +4 -2
  208. package/template/.pi/skills/yss-router/references/router-contract.yaml +18 -3
  209. package/template/.pi/skills/yss-router/references/slice-implementation-contract.md +58 -1
  210. package/template/.pi/skills/yss-stage-decision/SKILL.md +50 -0
  211. package/template/.pi/skills/yss-stage-decision/references/domain-strategy-contract.md +26 -0
  212. package/template/.pi/skills/yss-stage-decision/references/domain-strategy.schema.json +128 -0
  213. package/template/.pi/skills/yss-stage-decision/references/stage-decision-package-contract.md +19 -0
  214. package/template/.pi/skills/yss-stage-decision/references/stage-decision-package.schema.json +86 -0
  215. package/template/.pi/skills/yss-stage-decision/references/validation-rules.md +18 -0
  216. package/template/.pi/skills/yss-stage-decision/scripts/validate-domain-strategy.mjs +169 -0
  217. package/template/.pi/skills/yss-stage-decision/scripts/validate-stage-decision-package.mjs +100 -0
  218. package/template/.pi/skills/yss-stage-decision/tests/fixtures/domain-strategy-approval.yaml +15 -0
  219. package/template/.pi/skills/yss-stage-decision/tests/fixtures/invalid-direction.yaml +58 -0
  220. package/template/.pi/skills/yss-stage-decision/tests/fixtures/invalid-stage-decision-blocker.yaml +44 -0
  221. package/template/.pi/skills/yss-stage-decision/tests/fixtures/stage-decision-approval.yaml +15 -0
  222. package/template/.pi/skills/yss-stage-decision/tests/fixtures/valid-stage-decision-package.yaml +49 -0
  223. package/template/.pi/skills/yss-stage-decision/tests/fixtures/valid-supplier-domain.yaml +108 -0
  224. package/template/.pi/skills/yss-stage-decision/tests/run-scenarios.mjs +68 -0
  225. package/template/.pi/skills/yss-tactical-design/SKILL.md +33 -0
  226. package/template/.pi/skills/yss-tactical-design/agents/openai.yaml +4 -0
  227. package/template/.pi/skills/yss-tactical-design/references/output-template.md +28 -0
  228. package/template/.pi/skills/yss-tactical-design/references/tactical-design-contract.md +41 -0
  229. package/template/.pi/skills/yss-tactical-design/references/tactical-design.schema.json +31 -0
  230. package/template/.pi/skills/yss-tactical-design/references/validation-rules.md +13 -0
  231. package/template/.pi/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +213 -0
  232. package/template/.pi/skills/yss-tactical-design/tests/fixtures/invalid-api-leaks-aggregate.yaml +21 -0
  233. package/template/.pi/skills/yss-tactical-design/tests/fixtures/invalid-missing-consistency-policy.yaml +21 -0
  234. package/template/.pi/skills/yss-tactical-design/tests/fixtures/invalid-missing-invariant.yaml +21 -0
  235. package/template/.pi/skills/yss-tactical-design/tests/fixtures/invalid-stale-upstream-ref.yaml +21 -0
  236. package/template/.pi/skills/yss-tactical-design/tests/fixtures/invalid-strategic-as-tactical.yaml +21 -0
  237. package/template/.pi/skills/yss-tactical-design/tests/fixtures/valid-tactical-design.yaml +80 -0
  238. package/template/.pi/skills/yss-tactical-design/tests/run-scenarios.mjs +47 -0
  239. package/template/.qoder/skills/yss-domain/SKILL.md +5 -4
  240. package/template/.qoder/skills/yss-product-lifecycle/SKILL.md +15 -14
  241. package/template/.qoder/skills/yss-product-lifecycle/references/artifact-dependencies.md +4 -0
  242. package/template/.qoder/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  243. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration-contract.yaml +139 -4
  244. package/template/.qoder/skills/yss-product-lifecycle/references/orchestration.md +6 -3
  245. package/template/.qoder/skills/yss-product-lifecycle/references/state-model.md +7 -2
  246. package/template/.qoder/skills/yss-router/SKILL.md +4 -2
  247. package/template/.qoder/skills/yss-router/references/router-contract.yaml +18 -3
  248. package/template/.qoder/skills/yss-router/references/slice-implementation-contract.md +58 -1
  249. package/template/.qoder/skills/yss-stage-decision/SKILL.md +50 -0
  250. package/template/.qoder/skills/yss-stage-decision/references/domain-strategy-contract.md +26 -0
  251. package/template/.qoder/skills/yss-stage-decision/references/domain-strategy.schema.json +128 -0
  252. package/template/.qoder/skills/yss-stage-decision/references/stage-decision-package-contract.md +19 -0
  253. package/template/.qoder/skills/yss-stage-decision/references/stage-decision-package.schema.json +86 -0
  254. package/template/.qoder/skills/yss-stage-decision/references/validation-rules.md +18 -0
  255. package/template/.qoder/skills/yss-stage-decision/scripts/validate-domain-strategy.mjs +169 -0
  256. package/template/.qoder/skills/yss-stage-decision/scripts/validate-stage-decision-package.mjs +100 -0
  257. package/template/.qoder/skills/yss-stage-decision/tests/fixtures/domain-strategy-approval.yaml +15 -0
  258. package/template/.qoder/skills/yss-stage-decision/tests/fixtures/invalid-direction.yaml +58 -0
  259. package/template/.qoder/skills/yss-stage-decision/tests/fixtures/invalid-stage-decision-blocker.yaml +44 -0
  260. package/template/.qoder/skills/yss-stage-decision/tests/fixtures/stage-decision-approval.yaml +15 -0
  261. package/template/.qoder/skills/yss-stage-decision/tests/fixtures/valid-stage-decision-package.yaml +49 -0
  262. package/template/.qoder/skills/yss-stage-decision/tests/fixtures/valid-supplier-domain.yaml +108 -0
  263. package/template/.qoder/skills/yss-stage-decision/tests/run-scenarios.mjs +68 -0
  264. package/template/.qoder/skills/yss-tactical-design/SKILL.md +33 -0
  265. package/template/.qoder/skills/yss-tactical-design/agents/openai.yaml +4 -0
  266. package/template/.qoder/skills/yss-tactical-design/references/output-template.md +28 -0
  267. package/template/.qoder/skills/yss-tactical-design/references/tactical-design-contract.md +41 -0
  268. package/template/.qoder/skills/yss-tactical-design/references/tactical-design.schema.json +31 -0
  269. package/template/.qoder/skills/yss-tactical-design/references/validation-rules.md +13 -0
  270. package/template/.qoder/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +213 -0
  271. package/template/.qoder/skills/yss-tactical-design/tests/fixtures/invalid-api-leaks-aggregate.yaml +21 -0
  272. package/template/.qoder/skills/yss-tactical-design/tests/fixtures/invalid-missing-consistency-policy.yaml +21 -0
  273. package/template/.qoder/skills/yss-tactical-design/tests/fixtures/invalid-missing-invariant.yaml +21 -0
  274. package/template/.qoder/skills/yss-tactical-design/tests/fixtures/invalid-stale-upstream-ref.yaml +21 -0
  275. package/template/.qoder/skills/yss-tactical-design/tests/fixtures/invalid-strategic-as-tactical.yaml +21 -0
  276. package/template/.qoder/skills/yss-tactical-design/tests/fixtures/valid-tactical-design.yaml +80 -0
  277. package/template/.qoder/skills/yss-tactical-design/tests/run-scenarios.mjs +47 -0
  278. package/template/.trae/skills/yss-domain/SKILL.md +5 -4
  279. package/template/.trae/skills/yss-product-lifecycle/SKILL.md +15 -14
  280. package/template/.trae/skills/yss-product-lifecycle/references/artifact-dependencies.md +4 -0
  281. package/template/.trae/skills/yss-product-lifecycle/references/matt-yss-adapter.md +2 -2
  282. package/template/.trae/skills/yss-product-lifecycle/references/orchestration-contract.yaml +139 -4
  283. package/template/.trae/skills/yss-product-lifecycle/references/orchestration.md +6 -3
  284. package/template/.trae/skills/yss-product-lifecycle/references/state-model.md +7 -2
  285. package/template/.trae/skills/yss-router/SKILL.md +4 -2
  286. package/template/.trae/skills/yss-router/references/router-contract.yaml +18 -3
  287. package/template/.trae/skills/yss-router/references/slice-implementation-contract.md +58 -1
  288. package/template/.trae/skills/yss-stage-decision/SKILL.md +50 -0
  289. package/template/.trae/skills/yss-stage-decision/references/domain-strategy-contract.md +26 -0
  290. package/template/.trae/skills/yss-stage-decision/references/domain-strategy.schema.json +128 -0
  291. package/template/.trae/skills/yss-stage-decision/references/stage-decision-package-contract.md +19 -0
  292. package/template/.trae/skills/yss-stage-decision/references/stage-decision-package.schema.json +86 -0
  293. package/template/.trae/skills/yss-stage-decision/references/validation-rules.md +18 -0
  294. package/template/.trae/skills/yss-stage-decision/scripts/validate-domain-strategy.mjs +169 -0
  295. package/template/.trae/skills/yss-stage-decision/scripts/validate-stage-decision-package.mjs +100 -0
  296. package/template/.trae/skills/yss-stage-decision/tests/fixtures/domain-strategy-approval.yaml +15 -0
  297. package/template/.trae/skills/yss-stage-decision/tests/fixtures/invalid-direction.yaml +58 -0
  298. package/template/.trae/skills/yss-stage-decision/tests/fixtures/invalid-stage-decision-blocker.yaml +44 -0
  299. package/template/.trae/skills/yss-stage-decision/tests/fixtures/stage-decision-approval.yaml +15 -0
  300. package/template/.trae/skills/yss-stage-decision/tests/fixtures/valid-stage-decision-package.yaml +49 -0
  301. package/template/.trae/skills/yss-stage-decision/tests/fixtures/valid-supplier-domain.yaml +108 -0
  302. package/template/.trae/skills/yss-stage-decision/tests/run-scenarios.mjs +68 -0
  303. package/template/.trae/skills/yss-tactical-design/SKILL.md +33 -0
  304. package/template/.trae/skills/yss-tactical-design/agents/openai.yaml +4 -0
  305. package/template/.trae/skills/yss-tactical-design/references/output-template.md +28 -0
  306. package/template/.trae/skills/yss-tactical-design/references/tactical-design-contract.md +41 -0
  307. package/template/.trae/skills/yss-tactical-design/references/tactical-design.schema.json +31 -0
  308. package/template/.trae/skills/yss-tactical-design/references/validation-rules.md +13 -0
  309. package/template/.trae/skills/yss-tactical-design/scripts/validate-tactical-design.mjs +213 -0
  310. package/template/.trae/skills/yss-tactical-design/tests/fixtures/invalid-api-leaks-aggregate.yaml +21 -0
  311. package/template/.trae/skills/yss-tactical-design/tests/fixtures/invalid-missing-consistency-policy.yaml +21 -0
  312. package/template/.trae/skills/yss-tactical-design/tests/fixtures/invalid-missing-invariant.yaml +21 -0
  313. package/template/.trae/skills/yss-tactical-design/tests/fixtures/invalid-stale-upstream-ref.yaml +21 -0
  314. package/template/.trae/skills/yss-tactical-design/tests/fixtures/invalid-strategic-as-tactical.yaml +21 -0
  315. package/template/.trae/skills/yss-tactical-design/tests/fixtures/valid-tactical-design.yaml +80 -0
  316. package/template/.trae/skills/yss-tactical-design/tests/run-scenarios.mjs +47 -0
  317. package/template/AGENTS.md +22 -5
  318. package/template/CONTEXT.md +1 -1
  319. package/template/docs/agents/README.md +1 -1
  320. package/template/docs/agents/digital-human-roles.md +2 -2
  321. package/template/docs/agents/digital-human-roles.yaml +7 -1
  322. package/template/docs/agents/yss-skill-registry.yaml +12 -0
  323. package/template/docs/architecture/templates/system-overview-design-template.md +1 -0
  324. package/template/docs/process/lifecycle-artifact-map.md +8 -0
  325. package/template/docs/process/lifecycle-registry-baseline.json +11 -1
  326. package/template/docs/process/lifecycle-registry.yaml +46 -2
  327. package/template/docs/process/schemas/digital-human-task-package.schema.json +107 -0
  328. package/template/docs/process/schemas/subagent-task-package.schema.json +6 -0
  329. package/template/docs/process/subagent-collaboration.md +2 -2
  330. package/template/docs/templates/subagent-task-package-template.md +39 -1
  331. package/template/scripts/lib/lifecycle-transition.mjs +259 -0
  332. package/template/scripts/lib/scenario-checks.mjs +96 -2
  333. package/template/scripts/lib/task-package.mjs +214 -0
  334. package/template/scripts/verify-digital-human-task-package +14 -0
  335. package/template/scripts/verify-digital-human-task-package-scenarios +8 -0
  336. package/template/scripts/verify-lifecycle-transition-scenarios +105 -0
  337. package/template/scripts/verify-subagent-task-package +8 -0
  338. package/template/scripts/verify-subagent-task-package-scenarios +196 -0
  339. package/template/scripts/verify-template +13 -2
  340. package/template/skills-lock.json +36 -4
  341. package/template.snapshot.json +4 -4
@@ -66,11 +66,11 @@ exclusive_flags:
66
66
 
67
67
  slice_contract_required:
68
68
  root: [schema_version, contract_id, contract_version, slice_id, status, lifecycle_refs, readiness, common, frontend, backend, contract, cross_repo, work_units]
69
- lifecycle_refs: [spec, ticket, requirement_freeze, low_fidelity_review, prototype_review, high_fidelity_html, prototype_verification, antd_cli_evidence, browser_verification_evidence, prototype_confirmation, openapi_freeze_or_no_impact, architecture_review, data_architecture, engineering_baseline, build_architecture_checklist, implementation_repository, frontend_repository, backend_repository, maven_wrapper]
69
+ lifecycle_refs: [spec, ticket, requirement_freeze, low_fidelity_review, prototype_review, high_fidelity_html, prototype_verification, antd_cli_evidence, browser_verification_evidence, prototype_confirmation, openapi_freeze_or_no_impact, architecture_review, data_architecture, tactical_design, engineering_baseline, build_architecture_checklist, implementation_repository, frontend_repository, backend_repository, maven_wrapper]
70
70
  readiness: [blockers, stale_inputs, not_applicable]
71
71
  common: [impacted_areas, implementation_path_policy, project_roots, required_skills, optional_skills, unavailable_skills, allowed_write_paths, forbidden_patterns, expected_evidence_files, verification_commands, human_review_points, full_reroute_triggers]
72
72
  frontend: [status, required_skills, approved_prototype_ref, state_matrix_ref, allowed_write_paths, component_test_seams, e2e_paths]
73
- backend: [status, affected_layers, component_impacts, required_skills, application_boundary, transaction_boundary, persistence_strategy, allowed_write_paths, forbidden_patterns, expected_evidence_files, seam_deferred, verification_commands]
73
+ backend: [status, affected_layers, component_impacts, required_skills, application_boundary, transaction_boundary, persistence_strategy, allowed_write_paths, forbidden_patterns, expected_evidence_files, seam_deferred, verification_commands, tactical_ddd]
74
74
  contract: [api_impact, freeze_ref, no_api_impact_ref, generated_clients, contract_tests, regeneration_commands]
75
75
  cross_repo: [repositories, delivery_order, integration_verification, rollback_order]
76
76
 
@@ -91,6 +91,7 @@ lifecycle_ref_by_readiness:
91
91
  openapi_freeze: openapi_freeze_or_no_impact
92
92
  no_api_impact_record: openapi_freeze_or_no_impact
93
93
  data_architecture: data_architecture
94
+ tactical_design: tactical_design
94
95
  engineering_baseline: engineering_baseline
95
96
  backend_repository: backend_repository
96
97
  maven_wrapper: maven_wrapper
@@ -135,6 +136,10 @@ applicable_subcontract_nonempty:
135
136
  backend:
136
137
  scalar: [application_boundary, transaction_boundary, persistence_strategy]
137
138
  array: [affected_layers, required_skills, allowed_write_paths, forbidden_patterns, expected_evidence_files, verification_commands]
139
+ conditional_tactical_ddd:
140
+ when: [aggregate-impact, state-machine-impact, invariant-impact, consistency-impact, domain-event-impact, gateway-boundary-impact, persistence-mapping-impact]
141
+ scalar: [tactical_design_ref, tactical_design_version, gateway_boundary_ref]
142
+ array: [aggregate_refs, invariant_refs, state_behavior_refs, domain_test_seams, application_test_seams]
138
143
  contract_api:
139
144
  scalar: [freeze_ref]
140
145
  array: [contract_tests]
@@ -148,8 +153,12 @@ dependency_closure:
148
153
  always: [yss-backend-scaffold-parent, alibaba-java-code-style]
149
154
  yss-domain:
150
155
  always: [alibaba-java-code-style]
151
- when_modeling: [domain-modeling]
156
+ when_modeling: [domain-modeling, yss-tactical-design]
152
157
  when_pojo: [lombok]
158
+ yss-tactical-design:
159
+ always: [domain-modeling]
160
+ when_api_impact: [yss-openapi-draft-review]
161
+ when_data_impact: [yss-repository]
153
162
  yss-application:
154
163
  always: [alibaba-java-code-style]
155
164
  when_conversion: [mapstruct, lombok]
@@ -218,6 +227,12 @@ full_reroute_triggers:
218
227
  - data-model-impact
219
228
  - new-write-path
220
229
  - new-repository
230
+ - aggregate-impact
231
+ - invariant-impact
232
+ - consistency-impact
233
+ - domain-event-impact
234
+ - gateway-boundary-impact
235
+ - persistence-mapping-impact
221
236
  - new-required-skill
222
237
  - not-applicable-invalidated
223
238
  - architecture-drift
@@ -25,6 +25,7 @@ slice_contract:
25
25
  architecture_review:
26
26
  data_architecture:
27
27
  engineering_baseline:
28
+ tactical_design:
28
29
  build_architecture_checklist:
29
30
  implementation_repository:
30
31
  frontend_repository:
@@ -70,6 +71,24 @@ slice_contract:
70
71
  application_boundary:
71
72
  transaction_boundary:
72
73
  persistence_strategy:
74
+ tactical_design_ref:
75
+ tactical_design_version:
76
+ aggregate_refs: []
77
+ invariant_refs: []
78
+ state_behavior_refs: []
79
+ gateway_boundary_ref:
80
+ domain_test_seams: []
81
+ application_test_seams: []
82
+ tactical_ddd:
83
+ status: not-applicable
84
+ tactical_design_ref:
85
+ tactical_design_version:
86
+ aggregate_refs: []
87
+ invariant_refs: []
88
+ state_behavior_refs: []
89
+ gateway_boundary_ref:
90
+ domain_test_seams: []
91
+ application_test_seams: []
73
92
  allowed_write_paths: []
74
93
  forbidden_patterns: []
75
94
  expected_evidence_files: []
@@ -87,7 +106,43 @@ slice_contract:
87
106
  delivery_order: []
88
107
  integration_verification: []
89
108
  rollback_order: []
90
- work_units: []
109
+ work_units:
110
+ - id: slice-frontend
111
+ role_id: role.frontend-engineer
112
+ runtime_id: runtime.skill-projection
113
+ execution_state: Worker
114
+ workflow_status: not-started
115
+ task_package_ref:
116
+ contract_id: # must equal slice_contract.contract_id
117
+ contract_version: # must equal slice_contract.contract_version
118
+ downstream_consumers: []
119
+ convergence_ref:
120
+ work_unit:
121
+ behavior:
122
+ primary_skill:
123
+ supporting_skills: []
124
+ tdd_mode: behavior-tdd
125
+ allowed_write_paths: []
126
+ expected_evidence: []
127
+ verification_commands: []
128
+ - id: slice-backend
129
+ role_id: role.backend-engineer
130
+ runtime_id: runtime.skill-projection
131
+ execution_state: Worker
132
+ workflow_status: not-started
133
+ task_package_ref:
134
+ contract_id:
135
+ contract_version:
136
+ downstream_consumers: []
137
+ convergence_ref:
138
+ work_unit:
139
+ behavior:
140
+ primary_skill:
141
+ supporting_skills: []
142
+ tdd_mode: behavior-tdd
143
+ allowed_write_paths: []
144
+ expected_evidence: []
145
+ verification_commands: []
91
146
  ```
92
147
 
93
148
  工作单元:
@@ -112,3 +167,5 @@ work_unit:
112
167
  ```
113
168
 
114
169
  `controlled_generation` 仅在 `tdd_mode: controlled-generation` 时必填;其他模式标记 `not-applicable`。明确写入需求的权限业务行为仍使用 `behavior-tdd`;API schema 与 database schema 分别触发契约或数据架构回退,不得用一个含糊的 schema 类型决定路线。
170
+
171
+ `work_units` 中的前端、后端和测试任务是切片级子任务,不是新的生命周期阶段。每个子任务必须引用独立任务包;任务包只能消费同一份已批准且版本当前的 Slice Contract。`workflow_status` 追踪执行过程,不能替代生命周期状态;`contract_id` 或 `contract_version` 不一致时必须阻断并回到 Router。
@@ -0,0 +1,50 @@
1
+ ---
2
+ name: yss-stage-decision
3
+ description: 编排 Discovery 到 Spec 入口的阶段决策与 DDD 战略设计;当需求、领域边界、统一语言或下游影响尚未稳定时使用。
4
+ ---
5
+
6
+ # YSS Stage Decision
7
+
8
+ `yss-stage-decision` 是由 `yss-product-lifecycle` 调度的上游决策技能空间,负责把需求、产品、商务输入和 DDD 战略设计结果整理成可审查、可版本化、可被下游消费的阶段决策包。它不替代生命周期主控,也不生成产品代码、原型、OpenAPI 或垂直切片 Ticket。
9
+
10
+ ## 适用边界
11
+
12
+ - 适用于 `project-instance` 的 Discovery → Spec 入口。
13
+ - `template-source` 只维护本技能、Schema、验证器和合成 Fixture,不生成具体产品领域资产。
14
+ - DDD 工作单元只做子域、限界上下文、Context Map、统一语言、关键场景、事件、核心领域概念候选和业务不变量。
15
+ - Entity、Aggregate、Repository、Java 类、数据库表和 OpenAPI Freeze 留给下游工作单元。
16
+
17
+ ## 执行顺序
18
+
19
+ 1. 读取 `yss-project.yaml`、`CONTEXT.md`、既有 Discovery/Spec、ADR 和父 Ticket/checkpoint。
20
+ 2. 分离事实、决策、假设、约束和未决项;技术事实走 `research`,市场/竞品事实走 `competitive-intelligence`。
21
+ 3. 从业务场景、事件、规则、责任人和失败路径识别子域及限界上下文,不从数据库表或调用链直接反推边界。
22
+ 4. 为每个上下文建立本地统一语言;为跨上下文关系记录语义上游/下游、业务决策权、技术传输方向和翻译责任。
23
+ 5. 记录核心领域概念候选,不提前锁定 Entity 或 Aggregate。
24
+ 6. 生成 `domain_strategy` 和 `stage_decision_package`,绑定版本、digest、证据和下游影响映射。
25
+ 7. 运行 Schema、引用、语义一致性和传播验证;发现关键冲突时返回 `blocked`,不得生成 `approved` 包。
26
+
27
+ ## 语义方向规则
28
+
29
+ `semantic_upstream` 是拥有业务规则、决策语义或权威模型的一方;`semantic_downstream` 是消费、适配或依赖该语义的一方。二者不等于 HTTP、事件或数据库的技术方向。每条 Context Map 关系必须独立记录 `transport_direction` 和 `translation_responsibility`;同一对上下文可以存在多条相反方向的语义边。
30
+
31
+ ## 产物与批准
32
+
33
+ - DDD 资产是事实源,阶段决策包只通过 `domain_strategy_ref` 引用它们。
34
+ - `stage_decision_package` 必须经过 `draft → ready-for-human → approved`;起草者不得自签。
35
+ - 建议门禁为 `gate.domain-strategy-approved` 和 `gate.stage-decision-package-approved`,实际状态由 `yss-product-lifecycle` 维护;阶段包批准引用必须通过 `scripts/verify-approval-record`,不得用不可读路径或聊天确认替代。
36
+ - 下游只能消费批准且版本当前的包;发现语义冲突返回 `drift` / `new_impacts`,不得静默修改上游。
37
+
38
+ ## 结果合同
39
+
40
+ 返回标准 `Workflow Execution Result`,至少包含 `work_unit`、`workflow_reference`、`result`、`evidence_refs`、`changed_artifacts`、`new_impacts`、`stale_candidates`、`next_route` 和 `blocking_signals`。`blocked` 必须包含冲突、责任人、恢复条件和下一工作单元。
41
+
42
+ ## 禁止事项
43
+
44
+ - 不把阶段包当作第二套领域事实源。
45
+ - 不按数据库、微服务、菜单或 HTTP 调用方向自动划分上下文。
46
+ - 不把同名术语强行合并为全局概念。
47
+ - 不在战略设计阶段生成 Entity、Aggregate、Repository、生产代码或 API 契约。
48
+ - 不把模板 Fixture 当作具体项目的业务事实。
49
+
50
+ 详细合同、字段和验证规则见 `references/domain-strategy-contract.md`、`references/stage-decision-package-contract.md` 与 `references/validation-rules.md`。机器可读合同分别为 `references/domain-strategy.schema.json` 和 `references/stage-decision-package.schema.json`;对应验证器为 `scripts/validate-domain-strategy.mjs` 与 `scripts/validate-stage-decision-package.mjs`。
@@ -0,0 +1,26 @@
1
+ # DDD 战略设计合同
2
+
3
+ ## 顶层结构
4
+
5
+ 机器可读合同使用 `references/domain-strategy.schema.json`。顶层必须包含:
6
+
7
+ - `schema_version`、`domain_strategy_id`、`domain_version`、`status`;
8
+ - `contexts`、`subdomains`、`relationships`、`scenarios`;
9
+ - `concept_candidates`、`invariants`、`terminology_refs`;
10
+ - `downstream_mapping`、`evidence_refs`、`approval`。
11
+
12
+ ## 上下文
13
+
14
+ 每个上下文声明 `context_id`、职责边界、非职责、子域分类、模型所有者、关键场景和本地词汇引用。`context_id` 是稳定身份,不得使用代码模块、数据库 schema 或菜单路径替代。
15
+
16
+ ## 关系
17
+
18
+ 关系必须声明 `relationship_pattern`、`semantic_upstream`、`semantic_downstream`、`business_authority`、`model_change_impact`、`transport_direction` 和 `translation_responsibility`。语义方向与技术方向可以不同;关系模式只能使用合同中列出的 DDD 模式。
19
+
20
+ ## 核心概念
21
+
22
+ 使用 `domain_concept_candidate` 表达战略阶段的核心概念候选,记录身份特征、生命周期、不变量引用、可能的战术角色和置信度。不得在该合同中把概念直接批准为 Entity 或 Aggregate Root。
23
+
24
+ ## 阶段决策包
25
+
26
+ 阶段包应通过 `domain_strategy_ref` 引用 DDD 合同的当前版本和 digest,并使用 `domain_to_downstream_mapping` 描述领域变化对 Spec、设计、API、数据、Ticket 和测试 seam 的传播。
@@ -0,0 +1,128 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://yss.local/schemas/domain-strategy-v1.json",
4
+ "title": "YSS DDD Strategic Design",
5
+ "type": "object",
6
+ "required": ["schema_version", "domain_strategy_id", "domain_version", "status", "contexts", "subdomains", "relationships", "scenarios", "concept_candidates", "invariants", "terminology_refs", "downstream_mapping", "evidence_refs", "approval"],
7
+ "properties": {
8
+ "schema_version": {"const": 1},
9
+ "domain_strategy_id": {"type": "string", "pattern": "^domain-strategy\\.[a-z0-9][a-z0-9-]*$"},
10
+ "domain_version": {"type": "string", "pattern": "^v[0-9]+$"},
11
+ "status": {"enum": ["draft", "ready-for-human", "approved", "stale", "blocked"]},
12
+ "contexts": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/context"}},
13
+ "subdomains": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/subdomain"}},
14
+ "relationships": {"type": "array", "items": {"$ref": "#/$defs/relationship"}},
15
+ "scenarios": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/scenario"}},
16
+ "concept_candidates": {"type": "array", "items": {"$ref": "#/$defs/concept"}},
17
+ "invariants": {"type": "array", "items": {"$ref": "#/$defs/invariant"}},
18
+ "terminology_refs": {"type": "array", "items": {"type": "string", "minLength": 1}},
19
+ "downstream_mapping": {"type": "array", "items": {"$ref": "#/$defs/mapping"}},
20
+ "evidence_refs": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}},
21
+ "approval": {"$ref": "#/$defs/approval"}
22
+ },
23
+ "$defs": {
24
+ "context": {
25
+ "type": "object",
26
+ "required": ["context_id", "name", "responsibilities", "non_responsibilities", "subdomain_type", "owner", "status"],
27
+ "properties": {
28
+ "context_id": {"type": "string", "pattern": "^[A-Z][A-Za-z0-9]+$"},
29
+ "name": {"type": "string", "minLength": 1},
30
+ "responsibilities": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}},
31
+ "non_responsibilities": {"type": "array", "items": {"type": "string", "minLength": 1}},
32
+ "subdomain_type": {"enum": ["Core Domain", "Supporting Subdomain", "Generic Subdomain"]},
33
+ "owner": {"type": "string", "minLength": 1},
34
+ "status": {"enum": ["candidate", "confirmed", "stale"]}
35
+ }
36
+ },
37
+ "subdomain": {
38
+ "type": "object",
39
+ "required": ["subdomain_id", "name", "type", "rationale", "evidence_refs"],
40
+ "properties": {
41
+ "subdomain_id": {"type": "string", "pattern": "^subdomain\\.[a-z0-9][a-z0-9-]*$"},
42
+ "name": {"type": "string", "minLength": 1},
43
+ "type": {"enum": ["Core Domain", "Supporting Subdomain", "Generic Subdomain"]},
44
+ "rationale": {"type": "string", "minLength": 1},
45
+ "evidence_refs": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}}
46
+ }
47
+ },
48
+ "relationship": {
49
+ "type": "object",
50
+ "required": ["relationship_id", "from_context", "to_context", "relationship_pattern", "semantic_upstream", "semantic_downstream", "business_authority", "model_change_impact", "transport_direction", "translation_responsibility", "direction_explanation"],
51
+ "properties": {
52
+ "relationship_id": {"type": "string", "pattern": "^relationship\\.[a-z0-9][a-z0-9-]*$"},
53
+ "from_context": {"type": "string", "pattern": "^[A-Z][A-Za-z0-9]+$"},
54
+ "to_context": {"type": "string", "pattern": "^[A-Z][A-Za-z0-9]+$"},
55
+ "relationship_pattern": {"enum": ["Partnership", "Customer/Supplier", "Conformist", "Anti-Corruption Layer", "Open Host Service", "Published Language", "Shared Kernel", "Separate Ways"]},
56
+ "semantic_upstream": {"type": "string", "pattern": "^[A-Z][A-Za-z0-9]+$"},
57
+ "semantic_downstream": {"type": "string", "pattern": "^[A-Z][A-Za-z0-9]+$"},
58
+ "business_authority": {"type": "string", "minLength": 1},
59
+ "model_change_impact": {"type": "string", "minLength": 1},
60
+ "transport_direction": {"type": "string", "minLength": 1},
61
+ "translation_responsibility": {"type": "string", "minLength": 1},
62
+ "direction_explanation": {"type": "string", "minLength": 1}
63
+ }
64
+ },
65
+ "scenario": {
66
+ "type": "object",
67
+ "required": ["scenario_id", "actor", "preconditions", "commands", "rules", "events", "failure_results", "responsible_context", "consumers", "status"],
68
+ "properties": {
69
+ "scenario_id": {"type": "string", "pattern": "^scenario\\.[a-z0-9][a-z0-9-]*$"},
70
+ "actor": {"type": "string", "minLength": 1},
71
+ "preconditions": {"type": "array", "items": {"type": "string"}},
72
+ "commands": {"type": "array", "minItems": 1, "items": {"type": "string"}},
73
+ "rules": {"type": "array", "minItems": 1, "items": {"type": "string"}},
74
+ "events": {"type": "array", "items": {"type": "string"}},
75
+ "failure_results": {"type": "array", "minItems": 1, "items": {"type": "string"}},
76
+ "responsible_context": {"type": "string", "pattern": "^[A-Z][A-Za-z0-9]+$"},
77
+ "consumers": {"type": "array", "items": {"type": "string", "pattern": "^[A-Z][A-Za-z0-9]+$"}},
78
+ "status": {"enum": ["candidate", "confirmed", "stale"]}
79
+ }
80
+ },
81
+ "concept": {
82
+ "type": "object",
83
+ "required": ["concept_id", "name", "context_id", "identity_features", "lifecycle", "confidence", "status"],
84
+ "properties": {
85
+ "concept_id": {"type": "string", "pattern": "^domain-concept\\.[a-z0-9][a-z0-9-]*$"},
86
+ "name": {"type": "string", "minLength": 1},
87
+ "context_id": {"type": "string", "pattern": "^[A-Z][A-Za-z0-9]+$"},
88
+ "identity_features": {"type": "array", "minItems": 1, "items": {"type": "string"}},
89
+ "lifecycle": {"type": "array", "minItems": 1, "items": {"type": "string"}},
90
+ "invariant_refs": {"type": "array", "items": {"type": "string"}},
91
+ "possible_tactical_role": {"type": "string"},
92
+ "confidence": {"enum": ["low", "medium", "high"]},
93
+ "status": {"enum": ["candidate", "confirmed", "stale"]}
94
+ }
95
+ },
96
+ "invariant": {
97
+ "type": "object",
98
+ "required": ["invariant_id", "statement", "responsible_context", "scenario_refs", "verification_method"],
99
+ "properties": {
100
+ "invariant_id": {"type": "string", "pattern": "^invariant\\.[a-z0-9][a-z0-9-]*$"},
101
+ "statement": {"type": "string", "minLength": 1},
102
+ "responsible_context": {"type": "string", "pattern": "^[A-Z][A-Za-z0-9]+$"},
103
+ "scenario_refs": {"type": "array", "minItems": 1, "items": {"type": "string"}},
104
+ "verification_method": {"type": "string", "minLength": 1}
105
+ }
106
+ },
107
+ "mapping": {
108
+ "type": "object",
109
+ "required": ["domain_change", "impacts", "propagation", "reapproval_condition"],
110
+ "properties": {
111
+ "domain_change": {"type": "string", "minLength": 1},
112
+ "impacts": {"type": "array", "minItems": 1, "items": {"type": "string"}},
113
+ "propagation": {"enum": ["direct", "transitive", "stale"]},
114
+ "reapproval_condition": {"type": "string", "minLength": 1}
115
+ }
116
+ },
117
+ "approval": {
118
+ "type": "object",
119
+ "required": ["approval_ref", "approver", "persisted_ref", "current_version"],
120
+ "properties": {
121
+ "approval_ref": {"type": "string", "minLength": 1},
122
+ "approver": {"type": "string", "minLength": 1},
123
+ "persisted_ref": {"type": "string", "minLength": 1},
124
+ "current_version": {"type": "string", "pattern": "^v[0-9]+$"}
125
+ }
126
+ }
127
+ }
128
+ }
@@ -0,0 +1,19 @@
1
+ # 阶段决策包合同
2
+
3
+ `stage_decision_package` 是 Discovery、需求/产品/商务决策与 DDD 战略设计之间的冻结入口。它记录“做什么、为什么做、范围是什么、哪些仍未决”,不复制领域模型事实。
4
+
5
+ ## 必须包含
6
+
7
+ - 问题陈述、目标用户、MVP、非目标、成功标准和可执行的测试 seam;
8
+ - 已确认决策、假设、约束和未决项;
9
+ - `domain_strategy_ref`:领域战略合同的稳定 ID、版本、digest 和批准状态;
10
+ - UI/API/Data/Backend/Frontend/跨仓/高风险影响面布尔值;
11
+ - 每个下游消费者的传播方式、重新批准条件、证据引用和批准记录。`approval.approval_ref` 必须指向可读取且通过 `scripts/verify-approval-record` 的 `gate.stage-decision-package-approved` 会签记录;`approval.approver` 必须与记录中的 `role_id` 一致。
12
+
13
+ ## 未决项规则
14
+
15
+ `blocker` 必须阻断批准;`deferred` 必须同时记录责任人、下一动作和目标版本/发布日期。没有责任人或恢复路径的未决项不得隐藏在备注中。
16
+
17
+ ## 下游消费规则
18
+
19
+ 只有 `approved` 且引用的领域战略为 `approved`、版本当前的阶段包,才可以进入 Spec synthesis。任何领域战略 digest、版本或影响面变化都使阶段包 `stale`,并要求重新评估。
@@ -0,0 +1,86 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://yss.local/schemas/stage-decision-package-v1.json",
4
+ "title": "YSS Stage Decision Package",
5
+ "type": "object",
6
+ "required": ["schema_version", "stage_decision_id", "package_version", "status", "problem_statement", "target_users", "mvp", "non_goals", "success_criteria", "test_seams", "confirmed_decisions", "assumptions", "constraints", "unresolved_items", "terminology_refs", "domain_strategy_ref", "impact_assessment", "downstream_mapping", "evidence_refs", "approval"],
7
+ "properties": {
8
+ "schema_version": {"const": 1},
9
+ "stage_decision_id": {"type": "string", "pattern": "^stage-decision\\.[a-z0-9][a-z0-9-]*$"},
10
+ "package_version": {"type": "string", "pattern": "^v[0-9]+$"},
11
+ "status": {"enum": ["draft", "ready-for-human", "approved", "stale", "blocked"]},
12
+ "problem_statement": {"type": "string", "minLength": 1},
13
+ "target_users": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}},
14
+ "mvp": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}},
15
+ "non_goals": {"type": "array", "items": {"type": "string", "minLength": 1}},
16
+ "success_criteria": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}},
17
+ "test_seams": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}},
18
+ "confirmed_decisions": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}},
19
+ "assumptions": {"type": "array", "items": {"type": "string", "minLength": 1}},
20
+ "constraints": {"type": "array", "items": {"type": "string", "minLength": 1}},
21
+ "unresolved_items": {"type": "array", "items": {"$ref": "#/$defs/unresolved"}},
22
+ "terminology_refs": {"type": "array", "items": {"type": "string", "minLength": 1}},
23
+ "domain_strategy_ref": {"$ref": "#/$defs/domainRef"},
24
+ "impact_assessment": {"$ref": "#/$defs/impact"},
25
+ "downstream_mapping": {"type": "array", "minItems": 1, "items": {"$ref": "#/$defs/mapping"}},
26
+ "evidence_refs": {"type": "array", "minItems": 1, "items": {"type": "string", "minLength": 1}},
27
+ "approval": {"$ref": "#/$defs/approval"}
28
+ },
29
+ "$defs": {
30
+ "unresolved": {
31
+ "type": "object",
32
+ "required": ["item", "type", "owner", "next_action", "target_version"],
33
+ "properties": {
34
+ "item": {"type": "string", "minLength": 1},
35
+ "type": {"enum": ["blocker", "deferred"]},
36
+ "owner": {"type": "string", "minLength": 1},
37
+ "next_action": {"type": "string", "minLength": 1},
38
+ "target_version": {"type": "string", "minLength": 1}
39
+ }
40
+ },
41
+ "domainRef": {
42
+ "type": "object",
43
+ "required": ["domain_strategy_id", "domain_version", "digest", "status", "persisted_ref"],
44
+ "properties": {
45
+ "domain_strategy_id": {"type": "string", "pattern": "^domain-strategy\\.[a-z0-9][a-z0-9-]*$"},
46
+ "domain_version": {"type": "string", "pattern": "^v[0-9]+$"},
47
+ "digest": {"type": "string", "minLength": 1},
48
+ "status": {"enum": ["approved", "stale", "blocked"]},
49
+ "persisted_ref": {"type": "string", "minLength": 1}
50
+ }
51
+ },
52
+ "impact": {
53
+ "type": "object",
54
+ "required": ["ui", "api", "data", "backend", "frontend", "cross_repo", "high_risk"],
55
+ "properties": {
56
+ "ui": {"type": "boolean"},
57
+ "api": {"type": "boolean"},
58
+ "data": {"type": "boolean"},
59
+ "backend": {"type": "boolean"},
60
+ "frontend": {"type": "boolean"},
61
+ "cross_repo": {"type": "boolean"},
62
+ "high_risk": {"type": "boolean"}
63
+ }
64
+ },
65
+ "mapping": {
66
+ "type": "object",
67
+ "required": ["domain_change", "consumer", "propagation", "reapproval_condition"],
68
+ "properties": {
69
+ "domain_change": {"type": "string", "minLength": 1},
70
+ "consumer": {"type": "string", "minLength": 1},
71
+ "propagation": {"enum": ["direct", "transitive", "not-applicable", "stale"]},
72
+ "reapproval_condition": {"type": "string", "minLength": 1}
73
+ }
74
+ },
75
+ "approval": {
76
+ "type": "object",
77
+ "required": ["approval_ref", "approver", "persisted_ref", "current_version"],
78
+ "properties": {
79
+ "approval_ref": {"type": "string", "minLength": 1},
80
+ "approver": {"type": "string", "minLength": 1},
81
+ "persisted_ref": {"type": "string", "minLength": 1},
82
+ "current_version": {"type": "string", "pattern": "^v[0-9]+$"}
83
+ }
84
+ }
85
+ }
86
+ }
@@ -0,0 +1,18 @@
1
+ # 验证规则
2
+
3
+ 验证分为结构、引用和语义三层:
4
+
5
+ 1. **结构**:Schema 版本、稳定 ID、状态枚举、必填字段、条件字段和证据格式。
6
+ 2. **引用**:上下文端点、场景、不变量、术语和下游资产引用必须可解析。
7
+ 3. **语义**:禁止关系自环、未知上下文、未批准 Shared Kernel、未解释的语义/技术方向差异、职责重叠、无责任人的不变量和跨上下文直接共享实体。
8
+
9
+ 以下情况必须 `blocked`:关键规则所有权未知、关键术语冲突、上下文边界未定、关键失败场景缺失、事件语义无法解释、领域专家确认缺失。
10
+
11
+ 以下变化应触发精确传播:
12
+
13
+ - 术语含义变化 → Spec、验收、原型或 API;
14
+ - 上下文边界变化 → 系统架构、OpenAPI、数据和切片;
15
+ - Context Map 关系变化 → 集成契约和模型翻译;
16
+ - 不变量变化 → 测试 seam、实现合同和验证策略。
17
+
18
+ 验证器允许“语义方向 ≠ 技术方向”,但要求 `direction_explanation` 和翻译责任非空。