create-yss-spec 3.3.8 → 3.4.3

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 (908) hide show
  1. package/README.md +1 -1
  2. package/package.json +2 -2
  3. package/template/.agents/skills/.strategic-design-skills-manifest.json +3 -13
  4. package/template/.agents/skills/archify/SKILL.md +1 -1
  5. package/template/.agents/skills/code-review/SKILL.md +12 -8
  6. package/template/.agents/skills/file-export-download/SKILL.md +1 -1
  7. package/template/.agents/skills/frontend-commit/SKILL.md +1 -1
  8. package/template/.agents/skills/java-backend-commit/SKILL.md +1 -1
  9. package/template/.agents/skills/llm-wiki/SKILL.md +1 -6
  10. package/template/.agents/skills/lombok/SKILL.md +10 -336
  11. package/template/.agents/skills/lombok/references/annotation-examples.md +307 -0
  12. package/template/.agents/skills/maintaining-skills/SKILL.md +2 -1
  13. package/template/.agents/skills/maintaining-skills/references/authoring.md +27 -0
  14. package/template/.agents/skills/mapstruct/SKILL.md +11 -318
  15. package/template/.agents/skills/mapstruct/references/annotation-examples.md +300 -0
  16. package/template/.agents/skills/page-form-module/SKILL.md +1 -1
  17. package/template/.agents/skills/page-skeleton/SKILL.md +1 -1
  18. package/template/.agents/skills/theme-token-usage/SKILL.md +1 -1
  19. package/template/.agents/skills/to-tickets/SKILL.md +1 -1
  20. package/template/.agents/skills/using-git-worktrees/SKILL.md +1 -1
  21. package/template/.agents/skills/wayfinder/SKILL.md +1 -1
  22. package/template/.agents/skills/yedit-table-usage/SKILL.md +1 -1
  23. package/template/.agents/skills/yss-api-integration/SKILL.md +1 -1
  24. package/template/.agents/skills/yss-audit-log/SKILL.md +1 -1
  25. package/template/.agents/skills/yss-cache/SKILL.md +1 -1
  26. package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +18 -5
  27. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +1 -1
  28. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +15 -10
  29. package/template/.agents/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +3 -3
  30. package/template/.agents/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
  31. package/template/.agents/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
  32. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +4 -4
  33. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +18 -5
  34. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +5 -2
  35. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +21 -17
  36. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +4 -2
  37. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -7
  38. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +109 -13
  39. package/template/.agents/skills/yss-design-system/SKILL.md +19 -19
  40. package/template/.agents/skills/yss-design-system/references/data-quality-theme.md +13 -0
  41. package/template/.agents/skills/yss-design-system/references/design-qa-theme.md +3 -1
  42. package/template/.agents/skills/yss-design-system/references/design-system.md +7 -9
  43. package/template/.agents/skills/yss-distributed-id/SKILL.md +1 -1
  44. package/template/.agents/skills/yss-dto/SKILL.md +5 -1
  45. package/template/.agents/skills/yss-excel-mvc/SKILL.md +1 -1
  46. package/template/.agents/skills/yss-exception/SKILL.md +5 -1
  47. package/template/.agents/skills/yss-formily/SKILL.md +21 -258
  48. package/template/.agents/skills/yss-formily-schema-generator/SKILL.md +1 -1
  49. package/template/.agents/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
  50. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
  51. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
  52. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
  53. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
  54. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
  55. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
  56. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
  57. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
  58. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
  59. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
  60. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
  61. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
  62. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
  63. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
  64. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
  65. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
  66. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
  67. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
  68. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
  69. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
  70. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
  71. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
  72. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
  73. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
  74. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
  75. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
  76. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
  77. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
  78. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
  79. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
  80. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
  81. package/template/.agents/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
  82. package/template/.agents/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
  83. package/template/.agents/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
  84. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
  85. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
  86. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
  87. package/template/.agents/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
  88. package/template/.agents/skills/yss-hook/SKILL.md +1 -1
  89. package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +14 -6
  90. package/template/.agents/skills/yss-implementation-contract-compiler/agents/openai.yaml +1 -1
  91. package/template/.agents/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
  92. package/template/.agents/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +29 -5
  93. package/template/.agents/skills/yss-implementation-contract-compiler/references/slice-implementation-contract-v2.md +214 -0
  94. package/template/.agents/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +66 -204
  95. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/SKILL.md +17 -4
  96. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
  97. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +38 -25
  98. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  99. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +101 -13
  100. package/template/.agents/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
  101. package/template/.agents/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
  102. package/template/.agents/skills/yss-mybatis/SKILL.md +4 -0
  103. package/template/.agents/skills/yss-openapi-draft-review/SKILL.md +1 -1
  104. package/template/.agents/skills/yss-openapi-governance/SKILL.md +3 -1
  105. package/template/.agents/skills/yss-product-lifecycle/SKILL.md +4 -4
  106. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +50 -17
  107. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +6 -2
  108. package/template/.agents/skills/yss-product-lifecycle/references/state-model.md +3 -1
  109. package/template/.agents/skills/yss-product-lifecycle/references/user-decisions.md +23 -3
  110. package/template/.agents/skills/yss-prototype-stage/SKILL.md +13 -9
  111. package/template/.agents/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
  112. package/template/.agents/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
  113. package/template/.agents/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
  114. package/template/.agents/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
  115. package/template/.agents/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
  116. package/template/.agents/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
  117. package/template/.agents/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
  118. package/template/.agents/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
  119. package/template/.agents/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
  120. package/template/.agents/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
  121. package/template/.agents/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
  122. package/template/.agents/skills/yss-prototype-stage/references/antd-integration.md +61 -0
  123. package/template/.agents/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
  124. package/template/.agents/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
  125. package/template/.agents/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
  126. package/template/.agents/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
  127. package/template/.agents/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
  128. package/template/.agents/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
  129. package/template/.agents/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
  130. package/template/.agents/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
  131. package/template/.agents/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
  132. package/template/.agents/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
  133. package/template/.agents/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
  134. package/template/.agents/skills/yss-repository/SKILL.md +4 -0
  135. package/template/.agents/skills/yss-research/SKILL.md +1 -1
  136. package/template/.agents/skills/yss-resilience4j/SKILL.md +1 -1
  137. package/template/.agents/skills/yss-security-algorithm/SKILL.md +1 -1
  138. package/template/.agents/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
  139. package/template/.agents/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
  140. package/template/.agents/skills/yss-tactical-design/SKILL.md +5 -1
  141. package/template/.agents/skills/yss-technical-design/SKILL.md +4 -0
  142. package/template/.agents/skills/yss-technical-design/scripts/validate-technical-design.mjs +2 -2
  143. package/template/.agents/skills/yss-ui/SKILL.md +4 -3
  144. package/template/.agents/skills/yss-ui/references/component-routing.md +11 -10
  145. package/template/.agents/skills/yss-ui/references/specialized-components.md +52 -0
  146. package/template/.agents/skills/yss-ui-business-page-generation/SKILL.md +1 -1
  147. package/template/.agents/skills/yss-up-springboot3/SKILL.md +1 -1
  148. package/template/.agents/skills/yss-use-table-height/SKILL.md +1 -1
  149. package/template/.agents/skills/yss-use-tree-height/SKILL.md +1 -1
  150. package/template/.agents/skills/yss-userinfo/SKILL.md +1 -1
  151. package/template/.agents/skills/yss-validation/SKILL.md +5 -1
  152. package/template/.agents/skills/yss-web-controller/SKILL.md +5 -1
  153. package/template/.agents/skills/yss-web-controller/scripts/generate_controller.mjs +9 -5
  154. package/template/.agents/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  155. package/template/.agents/skills/ytable-usage/SKILL.md +1 -1
  156. package/template/.agents/skills/ytree-usage/SKILL.md +1 -1
  157. package/template/.codex/skills/archify/SKILL.md +1 -1
  158. package/template/.codex/skills/code-review/SKILL.md +12 -8
  159. package/template/.codex/skills/data-analytics/skills/analyze-data-quality/SKILL.md +1 -1
  160. package/template/.codex/skills/data-analytics/skills/build-dashboard/SKILL.md +1 -1
  161. package/template/.codex/skills/data-analytics/skills/build-report/SKILL.md +1 -1
  162. package/template/.codex/skills/data-analytics/skills/design-kpis/SKILL.md +1 -1
  163. package/template/.codex/skills/data-analytics/skills/gather-business-context/SKILL.md +1 -1
  164. package/template/.codex/skills/data-analytics/skills/index/SKILL.md +1 -1
  165. package/template/.codex/skills/data-analytics/skills/jupyter-notebooks/SKILL.md +1 -1
  166. package/template/.codex/skills/data-analytics/skills/kpi-reporting/SKILL.md +1 -1
  167. package/template/.codex/skills/data-analytics/skills/market-sizing/SKILL.md +1 -1
  168. package/template/.codex/skills/data-analytics/skills/metric-diagnostics/SKILL.md +1 -1
  169. package/template/.codex/skills/data-analytics/skills/product-business-analysis/SKILL.md +1 -1
  170. package/template/.codex/skills/data-analytics/skills/spreadsheets/SKILL.md +1 -1
  171. package/template/.codex/skills/data-analytics/skills/validate-data/SKILL.md +1 -1
  172. package/template/.codex/skills/data-analytics/skills/visualize-data/SKILL.md +1 -1
  173. package/template/.codex/skills/file-export-download/SKILL.md +1 -1
  174. package/template/.codex/skills/frontend-commit/SKILL.md +1 -1
  175. package/template/.codex/skills/java-backend-commit/SKILL.md +1 -1
  176. package/template/.codex/skills/llm-wiki/SKILL.md +1 -6
  177. package/template/.codex/skills/lombok/SKILL.md +10 -336
  178. package/template/.codex/skills/lombok/references/annotation-examples.md +307 -0
  179. package/template/.codex/skills/maintaining-skills/SKILL.md +2 -1
  180. package/template/.codex/skills/maintaining-skills/references/authoring.md +27 -0
  181. package/template/.codex/skills/mapstruct/SKILL.md +11 -318
  182. package/template/.codex/skills/mapstruct/references/annotation-examples.md +300 -0
  183. package/template/.codex/skills/page-form-module/SKILL.md +1 -1
  184. package/template/.codex/skills/page-skeleton/SKILL.md +1 -1
  185. package/template/.codex/skills/product-design/skills/audit/SKILL.md +1 -1
  186. package/template/.codex/skills/product-design/skills/design-qa/SKILL.md +1 -1
  187. package/template/.codex/skills/product-design/skills/get-context/SKILL.md +1 -1
  188. package/template/.codex/skills/product-design/skills/ideate/SKILL.md +1 -1
  189. package/template/.codex/skills/product-design/skills/image-to-code/SKILL.md +1 -1
  190. package/template/.codex/skills/product-design/skills/index/SKILL.md +1 -1
  191. package/template/.codex/skills/product-design/skills/prototype/SKILL.md +1 -1
  192. package/template/.codex/skills/product-design/skills/research/SKILL.md +1 -1
  193. package/template/.codex/skills/product-design/skills/user-context/SKILL.md +1 -1
  194. package/template/.codex/skills/theme-token-usage/SKILL.md +1 -1
  195. package/template/.codex/skills/to-tickets/SKILL.md +1 -1
  196. package/template/.codex/skills/using-git-worktrees/SKILL.md +1 -1
  197. package/template/.codex/skills/wayfinder/SKILL.md +1 -1
  198. package/template/.codex/skills/yedit-table-usage/SKILL.md +1 -1
  199. package/template/.codex/skills/yss-api-integration/SKILL.md +1 -1
  200. package/template/.codex/skills/yss-audit-log/SKILL.md +1 -1
  201. package/template/.codex/skills/yss-cache/SKILL.md +1 -1
  202. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +18 -5
  203. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +1 -1
  204. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +15 -10
  205. package/template/.codex/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +3 -3
  206. package/template/.codex/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
  207. package/template/.codex/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
  208. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +4 -4
  209. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +18 -5
  210. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +5 -2
  211. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +21 -17
  212. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +4 -2
  213. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -7
  214. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +109 -13
  215. package/template/.codex/skills/yss-design-system/SKILL.md +19 -19
  216. package/template/.codex/skills/yss-design-system/references/data-quality-theme.md +13 -0
  217. package/template/.codex/skills/yss-design-system/references/design-qa-theme.md +3 -1
  218. package/template/.codex/skills/yss-design-system/references/design-system.md +7 -9
  219. package/template/.codex/skills/yss-distributed-id/SKILL.md +1 -1
  220. package/template/.codex/skills/yss-dto/SKILL.md +5 -1
  221. package/template/.codex/skills/yss-excel-mvc/SKILL.md +1 -1
  222. package/template/.codex/skills/yss-exception/SKILL.md +5 -1
  223. package/template/.codex/skills/yss-formily/SKILL.md +21 -258
  224. package/template/.codex/skills/yss-formily-schema-generator/SKILL.md +1 -1
  225. package/template/.codex/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
  226. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
  227. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
  228. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
  229. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
  230. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
  231. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
  232. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
  233. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
  234. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
  235. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
  236. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
  237. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
  238. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
  239. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
  240. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
  241. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
  242. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
  243. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
  244. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
  245. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
  246. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
  247. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
  248. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
  249. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
  250. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
  251. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
  252. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
  253. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
  254. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
  255. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
  256. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
  257. package/template/.codex/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
  258. package/template/.codex/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
  259. package/template/.codex/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
  260. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
  261. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
  262. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
  263. package/template/.codex/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
  264. package/template/.codex/skills/yss-hook/SKILL.md +1 -1
  265. package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +14 -6
  266. package/template/.codex/skills/yss-implementation-contract-compiler/agents/openai.yaml +1 -1
  267. package/template/.codex/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
  268. package/template/.codex/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +29 -5
  269. package/template/.codex/skills/yss-implementation-contract-compiler/references/slice-implementation-contract-v2.md +214 -0
  270. package/template/.codex/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +66 -204
  271. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/SKILL.md +17 -4
  272. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
  273. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +38 -25
  274. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  275. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +101 -13
  276. package/template/.codex/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
  277. package/template/.codex/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
  278. package/template/.codex/skills/yss-mybatis/SKILL.md +4 -0
  279. package/template/.codex/skills/yss-openapi-draft-review/SKILL.md +1 -1
  280. package/template/.codex/skills/yss-openapi-governance/SKILL.md +3 -1
  281. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +4 -4
  282. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +50 -17
  283. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +6 -2
  284. package/template/.codex/skills/yss-product-lifecycle/references/state-model.md +3 -1
  285. package/template/.codex/skills/yss-product-lifecycle/references/user-decisions.md +23 -3
  286. package/template/.codex/skills/yss-prototype-stage/SKILL.md +13 -9
  287. package/template/.codex/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
  288. package/template/.codex/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
  289. package/template/.codex/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
  290. package/template/.codex/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
  291. package/template/.codex/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
  292. package/template/.codex/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
  293. package/template/.codex/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
  294. package/template/.codex/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
  295. package/template/.codex/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
  296. package/template/.codex/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
  297. package/template/.codex/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
  298. package/template/.codex/skills/yss-prototype-stage/references/antd-integration.md +61 -0
  299. package/template/.codex/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
  300. package/template/.codex/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
  301. package/template/.codex/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
  302. package/template/.codex/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
  303. package/template/.codex/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
  304. package/template/.codex/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
  305. package/template/.codex/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
  306. package/template/.codex/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
  307. package/template/.codex/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
  308. package/template/.codex/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
  309. package/template/.codex/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
  310. package/template/.codex/skills/yss-repository/SKILL.md +4 -0
  311. package/template/.codex/skills/yss-research/SKILL.md +1 -1
  312. package/template/.codex/skills/yss-resilience4j/SKILL.md +1 -1
  313. package/template/.codex/skills/yss-security-algorithm/SKILL.md +1 -1
  314. package/template/.codex/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
  315. package/template/.codex/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
  316. package/template/.codex/skills/yss-tactical-design/SKILL.md +5 -1
  317. package/template/.codex/skills/yss-technical-design/SKILL.md +4 -0
  318. package/template/.codex/skills/yss-technical-design/scripts/validate-technical-design.mjs +2 -2
  319. package/template/.codex/skills/yss-ui/SKILL.md +4 -3
  320. package/template/.codex/skills/yss-ui/references/component-routing.md +11 -10
  321. package/template/.codex/skills/yss-ui/references/specialized-components.md +52 -0
  322. package/template/.codex/skills/yss-ui-business-page-generation/SKILL.md +1 -1
  323. package/template/.codex/skills/yss-up-springboot3/SKILL.md +1 -1
  324. package/template/.codex/skills/yss-use-table-height/SKILL.md +1 -1
  325. package/template/.codex/skills/yss-use-tree-height/SKILL.md +1 -1
  326. package/template/.codex/skills/yss-userinfo/SKILL.md +1 -1
  327. package/template/.codex/skills/yss-validation/SKILL.md +5 -1
  328. package/template/.codex/skills/yss-web-controller/SKILL.md +5 -1
  329. package/template/.codex/skills/yss-web-controller/scripts/generate_controller.mjs +9 -5
  330. package/template/.codex/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  331. package/template/.codex/skills/ytable-usage/SKILL.md +1 -1
  332. package/template/.codex/skills/ytree-usage/SKILL.md +1 -1
  333. package/template/.cursor/skills/archify/SKILL.md +1 -1
  334. package/template/.cursor/skills/code-review/SKILL.md +12 -8
  335. package/template/.cursor/skills/file-export-download/SKILL.md +1 -1
  336. package/template/.cursor/skills/frontend-commit/SKILL.md +1 -1
  337. package/template/.cursor/skills/java-backend-commit/SKILL.md +1 -1
  338. package/template/.cursor/skills/llm-wiki/SKILL.md +1 -6
  339. package/template/.cursor/skills/lombok/SKILL.md +10 -336
  340. package/template/.cursor/skills/lombok/references/annotation-examples.md +307 -0
  341. package/template/.cursor/skills/maintaining-skills/SKILL.md +2 -1
  342. package/template/.cursor/skills/maintaining-skills/references/authoring.md +27 -0
  343. package/template/.cursor/skills/mapstruct/SKILL.md +11 -318
  344. package/template/.cursor/skills/mapstruct/references/annotation-examples.md +300 -0
  345. package/template/.cursor/skills/page-form-module/SKILL.md +1 -1
  346. package/template/.cursor/skills/page-skeleton/SKILL.md +1 -1
  347. package/template/.cursor/skills/theme-token-usage/SKILL.md +1 -1
  348. package/template/.cursor/skills/to-tickets/SKILL.md +1 -1
  349. package/template/.cursor/skills/using-git-worktrees/SKILL.md +1 -1
  350. package/template/.cursor/skills/wayfinder/SKILL.md +1 -1
  351. package/template/.cursor/skills/yedit-table-usage/SKILL.md +1 -1
  352. package/template/.cursor/skills/yss-api-integration/SKILL.md +1 -1
  353. package/template/.cursor/skills/yss-audit-log/SKILL.md +1 -1
  354. package/template/.cursor/skills/yss-cache/SKILL.md +1 -1
  355. package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +18 -5
  356. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +1 -1
  357. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +15 -10
  358. package/template/.cursor/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +3 -3
  359. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
  360. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
  361. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +4 -4
  362. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +18 -5
  363. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +5 -2
  364. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +21 -17
  365. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +4 -2
  366. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -7
  367. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +109 -13
  368. package/template/.cursor/skills/yss-design-system/SKILL.md +19 -19
  369. package/template/.cursor/skills/yss-design-system/references/data-quality-theme.md +13 -0
  370. package/template/.cursor/skills/yss-design-system/references/design-qa-theme.md +3 -1
  371. package/template/.cursor/skills/yss-design-system/references/design-system.md +7 -9
  372. package/template/.cursor/skills/yss-distributed-id/SKILL.md +1 -1
  373. package/template/.cursor/skills/yss-dto/SKILL.md +5 -1
  374. package/template/.cursor/skills/yss-excel-mvc/SKILL.md +1 -1
  375. package/template/.cursor/skills/yss-exception/SKILL.md +5 -1
  376. package/template/.cursor/skills/yss-formily/SKILL.md +21 -258
  377. package/template/.cursor/skills/yss-formily-schema-generator/SKILL.md +1 -1
  378. package/template/.cursor/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
  379. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
  380. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
  381. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
  382. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
  383. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
  384. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
  385. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
  386. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
  387. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
  388. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
  389. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
  390. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
  391. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
  392. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
  393. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
  394. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
  395. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
  396. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
  397. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
  398. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
  399. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
  400. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
  401. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
  402. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
  403. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
  404. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
  405. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
  406. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
  407. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
  408. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
  409. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
  410. package/template/.cursor/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
  411. package/template/.cursor/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
  412. package/template/.cursor/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
  413. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
  414. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
  415. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
  416. package/template/.cursor/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
  417. package/template/.cursor/skills/yss-hook/SKILL.md +1 -1
  418. package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +14 -6
  419. package/template/.cursor/skills/yss-implementation-contract-compiler/agents/openai.yaml +1 -1
  420. package/template/.cursor/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
  421. package/template/.cursor/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +29 -5
  422. package/template/.cursor/skills/yss-implementation-contract-compiler/references/slice-implementation-contract-v2.md +214 -0
  423. package/template/.cursor/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +66 -204
  424. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/SKILL.md +17 -4
  425. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
  426. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +38 -25
  427. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  428. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +101 -13
  429. package/template/.cursor/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
  430. package/template/.cursor/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
  431. package/template/.cursor/skills/yss-mybatis/SKILL.md +4 -0
  432. package/template/.cursor/skills/yss-openapi-draft-review/SKILL.md +1 -1
  433. package/template/.cursor/skills/yss-openapi-governance/SKILL.md +3 -1
  434. package/template/.cursor/skills/yss-product-lifecycle/SKILL.md +4 -4
  435. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +50 -17
  436. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +6 -2
  437. package/template/.cursor/skills/yss-product-lifecycle/references/state-model.md +3 -1
  438. package/template/.cursor/skills/yss-product-lifecycle/references/user-decisions.md +23 -3
  439. package/template/.cursor/skills/yss-prototype-stage/SKILL.md +13 -9
  440. package/template/.cursor/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
  441. package/template/.cursor/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
  442. package/template/.cursor/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
  443. package/template/.cursor/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
  444. package/template/.cursor/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
  445. package/template/.cursor/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
  446. package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
  447. package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
  448. package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
  449. package/template/.cursor/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
  450. package/template/.cursor/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
  451. package/template/.cursor/skills/yss-prototype-stage/references/antd-integration.md +61 -0
  452. package/template/.cursor/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
  453. package/template/.cursor/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
  454. package/template/.cursor/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
  455. package/template/.cursor/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
  456. package/template/.cursor/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
  457. package/template/.cursor/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
  458. package/template/.cursor/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
  459. package/template/.cursor/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
  460. package/template/.cursor/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
  461. package/template/.cursor/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
  462. package/template/.cursor/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
  463. package/template/.cursor/skills/yss-repository/SKILL.md +4 -0
  464. package/template/.cursor/skills/yss-research/SKILL.md +1 -1
  465. package/template/.cursor/skills/yss-resilience4j/SKILL.md +1 -1
  466. package/template/.cursor/skills/yss-security-algorithm/SKILL.md +1 -1
  467. package/template/.cursor/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
  468. package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
  469. package/template/.cursor/skills/yss-tactical-design/SKILL.md +5 -1
  470. package/template/.cursor/skills/yss-technical-design/SKILL.md +4 -0
  471. package/template/.cursor/skills/yss-technical-design/scripts/validate-technical-design.mjs +2 -2
  472. package/template/.cursor/skills/yss-ui/SKILL.md +4 -3
  473. package/template/.cursor/skills/yss-ui/references/component-routing.md +11 -10
  474. package/template/.cursor/skills/yss-ui/references/specialized-components.md +52 -0
  475. package/template/.cursor/skills/yss-ui-business-page-generation/SKILL.md +1 -1
  476. package/template/.cursor/skills/yss-up-springboot3/SKILL.md +1 -1
  477. package/template/.cursor/skills/yss-use-table-height/SKILL.md +1 -1
  478. package/template/.cursor/skills/yss-use-tree-height/SKILL.md +1 -1
  479. package/template/.cursor/skills/yss-userinfo/SKILL.md +1 -1
  480. package/template/.cursor/skills/yss-validation/SKILL.md +5 -1
  481. package/template/.cursor/skills/yss-web-controller/SKILL.md +5 -1
  482. package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.mjs +9 -5
  483. package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  484. package/template/.cursor/skills/ytable-usage/SKILL.md +1 -1
  485. package/template/.cursor/skills/ytree-usage/SKILL.md +1 -1
  486. package/template/.pi/skills/archify/SKILL.md +1 -1
  487. package/template/.pi/skills/code-review/SKILL.md +12 -8
  488. package/template/.pi/skills/file-export-download/SKILL.md +1 -1
  489. package/template/.pi/skills/frontend-commit/SKILL.md +1 -1
  490. package/template/.pi/skills/java-backend-commit/SKILL.md +1 -1
  491. package/template/.pi/skills/llm-wiki/SKILL.md +1 -6
  492. package/template/.pi/skills/lombok/SKILL.md +10 -336
  493. package/template/.pi/skills/lombok/references/annotation-examples.md +307 -0
  494. package/template/.pi/skills/maintaining-skills/SKILL.md +2 -1
  495. package/template/.pi/skills/maintaining-skills/references/authoring.md +27 -0
  496. package/template/.pi/skills/mapstruct/SKILL.md +11 -318
  497. package/template/.pi/skills/mapstruct/references/annotation-examples.md +300 -0
  498. package/template/.pi/skills/page-form-module/SKILL.md +1 -1
  499. package/template/.pi/skills/page-skeleton/SKILL.md +1 -1
  500. package/template/.pi/skills/theme-token-usage/SKILL.md +1 -1
  501. package/template/.pi/skills/to-tickets/SKILL.md +1 -1
  502. package/template/.pi/skills/using-git-worktrees/SKILL.md +1 -1
  503. package/template/.pi/skills/wayfinder/SKILL.md +1 -1
  504. package/template/.pi/skills/yedit-table-usage/SKILL.md +1 -1
  505. package/template/.pi/skills/yss-api-integration/SKILL.md +1 -1
  506. package/template/.pi/skills/yss-audit-log/SKILL.md +1 -1
  507. package/template/.pi/skills/yss-cache/SKILL.md +1 -1
  508. package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +18 -5
  509. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/application-pom.xml.template +1 -1
  510. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/parent-pom.xml.template +15 -10
  511. package/template/.pi/skills/yss-ddd-scaffold-generator/assets/templates/pom/web-pom.xml.template +3 -3
  512. package/template/.pi/skills/yss-ddd-scaffold-generator/references/USAGE_EXAMPLES.md +1 -1
  513. package/template/.pi/skills/yss-ddd-scaffold-generator/references/layer-skill-routing.md +18 -0
  514. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +4 -4
  515. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-compatibility.test.mjs +18 -5
  516. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +5 -2
  517. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +21 -17
  518. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +4 -2
  519. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +41 -7
  520. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +109 -13
  521. package/template/.pi/skills/yss-design-system/SKILL.md +19 -19
  522. package/template/.pi/skills/yss-design-system/references/data-quality-theme.md +13 -0
  523. package/template/.pi/skills/yss-design-system/references/design-qa-theme.md +3 -1
  524. package/template/.pi/skills/yss-design-system/references/design-system.md +7 -9
  525. package/template/.pi/skills/yss-distributed-id/SKILL.md +1 -1
  526. package/template/.pi/skills/yss-dto/SKILL.md +5 -1
  527. package/template/.pi/skills/yss-excel-mvc/SKILL.md +1 -1
  528. package/template/.pi/skills/yss-exception/SKILL.md +5 -1
  529. package/template/.pi/skills/yss-formily/SKILL.md +21 -258
  530. package/template/.pi/skills/yss-formily-schema-generator/SKILL.md +1 -1
  531. package/template/.pi/skills/yss-frontend-scaffold-generator/SKILL.md +17 -13
  532. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.eslintrc.cjs +1 -0
  533. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/.npmrc.example +2 -0
  534. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/DESIGN.md +264 -0
  535. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/README.md +13 -0
  536. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/__yss_dotfile__.gitignore +6 -0
  537. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/micro-config.json +5 -0
  538. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/orval.config.ts +2 -0
  539. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/package.json +30 -0
  540. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.development +1 -0
  541. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.example +5 -0
  542. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production +1 -0
  543. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/.env.production.standalone +1 -0
  544. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/index.html +2 -0
  545. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/package.json +34 -0
  546. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/public/favicon.svg +1 -0
  547. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/App.vue +15 -0
  548. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/api/mutator.ts +7 -0
  549. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/components/ThemeScope.vue +11 -0
  550. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/config/theme.json +41 -0
  551. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/env.d.ts +1 -0
  552. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/main.ts +40 -0
  553. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/router/index.ts +8 -0
  554. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/store/theme.ts +37 -0
  555. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/styles/index.less +6 -0
  556. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/types/microAppBridge.ts +28 -0
  557. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/utils/microAppRouterBridge.ts +266 -0
  558. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/NotFound.vue +1 -0
  559. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/src/views/Welcome.vue +1 -0
  560. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/tsconfig.json +23 -0
  561. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/packages/vite.config.ts +16 -0
  562. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-lock.yaml +9026 -0
  563. package/template/.pi/skills/yss-frontend-scaffold-generator/assets/data-quality-v1/pnpm-workspace.yaml +7 -0
  564. package/template/.pi/skills/yss-frontend-scaffold-generator/references/data-quality-baseline.md +17 -0
  565. package/template/.pi/skills/yss-frontend-scaffold-generator/references/data-quality-v1.manifest.json +49 -0
  566. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/generate_scaffold.mjs +41 -13
  567. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/refresh_baseline.mjs +29 -0
  568. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/run_scaffold_verification.mjs +5 -1
  569. package/template/.pi/skills/yss-frontend-scaffold-generator/scripts/scaffold-generator.test.mjs +32 -0
  570. package/template/.pi/skills/yss-hook/SKILL.md +1 -1
  571. package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +14 -6
  572. package/template/.pi/skills/yss-implementation-contract-compiler/agents/openai.yaml +1 -1
  573. package/template/.pi/skills/yss-implementation-contract-compiler/references/boundaries.md +5 -3
  574. package/template/.pi/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +29 -5
  575. package/template/.pi/skills/yss-implementation-contract-compiler/references/slice-implementation-contract-v2.md +214 -0
  576. package/template/.pi/skills/yss-implementation-contract-compiler/references/slice-implementation-contract.md +66 -204
  577. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/SKILL.md +17 -4
  578. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +1 -1
  579. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +38 -25
  580. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  581. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +101 -13
  582. package/template/.pi/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +2 -2
  583. package/template/.pi/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +1 -1
  584. package/template/.pi/skills/yss-mybatis/SKILL.md +4 -0
  585. package/template/.pi/skills/yss-openapi-draft-review/SKILL.md +1 -1
  586. package/template/.pi/skills/yss-openapi-governance/SKILL.md +3 -1
  587. package/template/.pi/skills/yss-product-lifecycle/SKILL.md +4 -4
  588. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +50 -17
  589. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +6 -2
  590. package/template/.pi/skills/yss-product-lifecycle/references/state-model.md +3 -1
  591. package/template/.pi/skills/yss-product-lifecycle/references/user-decisions.md +23 -3
  592. package/template/.pi/skills/yss-prototype-stage/SKILL.md +13 -9
  593. package/template/.pi/skills/yss-prototype-stage/assets/antd-authoring/package.json +16 -0
  594. package/template/.pi/skills/yss-prototype-stage/assets/antd-authoring/pnpm-lock.yaml +1678 -0
  595. package/template/.pi/skills/yss-prototype-stage/assets/antd-authoring/workbench.jsx +23 -0
  596. package/template/.pi/skills/yss-prototype-stage/assets/native-workbench/app.js +20 -0
  597. package/template/.pi/skills/yss-prototype-stage/assets/native-workbench/index.html +11 -0
  598. package/template/.pi/skills/yss-prototype-stage/assets/native-workbench/styles.css +28 -0
  599. package/template/.pi/skills/yss-prototype-stage/assets/offline-html/app.js +50 -0
  600. package/template/.pi/skills/yss-prototype-stage/assets/offline-html/index.html +38 -0
  601. package/template/.pi/skills/yss-prototype-stage/assets/offline-html/scenarios.js +7 -0
  602. package/template/.pi/skills/yss-prototype-stage/assets/offline-html/styles.css +20 -0
  603. package/template/.pi/skills/yss-prototype-stage/references/antd-component-catalog.json +736 -0
  604. package/template/.pi/skills/yss-prototype-stage/references/antd-integration.md +61 -0
  605. package/template/.pi/skills/yss-prototype-stage/references/html-prototype-practices.md +14 -0
  606. package/template/.pi/skills/yss-prototype-stage/references/product-design-adapter.md +28 -51
  607. package/template/.pi/skills/yss-prototype-stage/references/prototype-profile-routing.md +15 -4
  608. package/template/.pi/skills/yss-prototype-stage/scripts/build-antd-prototype.mjs +71 -0
  609. package/template/.pi/skills/yss-prototype-stage/scripts/collect-antd-reference.mjs +26 -0
  610. package/template/.pi/skills/yss-prototype-stage/scripts/offline-html.mjs +121 -0
  611. package/template/.pi/skills/yss-prototype-stage/scripts/prototype-contract.mjs +52 -143
  612. package/template/.pi/skills/yss-prototype-stage/tests/antd-reference.test.mjs +24 -0
  613. package/template/.pi/skills/yss-prototype-stage/tests/browser-smoke.mjs +77 -0
  614. package/template/.pi/skills/yss-prototype-stage/tests/run-scenarios.mjs +73 -26
  615. package/template/.pi/skills/yss-prototype-stage/tests/workbench-smoke.mjs +57 -0
  616. package/template/.pi/skills/yss-repository/SKILL.md +4 -0
  617. package/template/.pi/skills/yss-research/SKILL.md +1 -1
  618. package/template/.pi/skills/yss-resilience4j/SKILL.md +1 -1
  619. package/template/.pi/skills/yss-security-algorithm/SKILL.md +1 -1
  620. package/template/.pi/skills/yss-skill-source-index-refresh/references/source-map-config.md +0 -1
  621. package/template/.pi/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +0 -1
  622. package/template/.pi/skills/yss-tactical-design/SKILL.md +5 -1
  623. package/template/.pi/skills/yss-technical-design/SKILL.md +4 -0
  624. package/template/.pi/skills/yss-technical-design/scripts/validate-technical-design.mjs +2 -2
  625. package/template/.pi/skills/yss-ui/SKILL.md +4 -3
  626. package/template/.pi/skills/yss-ui/references/component-routing.md +11 -10
  627. package/template/.pi/skills/yss-ui/references/specialized-components.md +52 -0
  628. package/template/.pi/skills/yss-ui-business-page-generation/SKILL.md +1 -1
  629. package/template/.pi/skills/yss-up-springboot3/SKILL.md +1 -1
  630. package/template/.pi/skills/yss-use-table-height/SKILL.md +1 -1
  631. package/template/.pi/skills/yss-use-tree-height/SKILL.md +1 -1
  632. package/template/.pi/skills/yss-userinfo/SKILL.md +1 -1
  633. package/template/.pi/skills/yss-validation/SKILL.md +5 -1
  634. package/template/.pi/skills/yss-web-controller/SKILL.md +5 -1
  635. package/template/.pi/skills/yss-web-controller/scripts/generate_controller.mjs +9 -5
  636. package/template/.pi/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  637. package/template/.pi/skills/ytable-usage/SKILL.md +1 -1
  638. package/template/.pi/skills/ytree-usage/SKILL.md +1 -1
  639. package/template/AGENTS.md +1 -0
  640. package/template/CONTEXT.md +3 -1
  641. package/template/DESIGN.md +31 -14
  642. package/template/__yss_dotfile__.gitignore +4 -0
  643. package/template/docs/agents/backend-architecture-profiles.md +1 -1
  644. package/template/docs/agents/digital-human-roles.yaml +29 -5
  645. package/template/docs/agents/issue-tracker.md +2 -0
  646. package/template/docs/agents/skill-migrations.md +15 -2
  647. package/template/docs/agents/yss-skill-registry.yaml +6 -40
  648. package/template/docs/design/README.md +4 -4
  649. package/template/docs/design/design-system-sync.yaml +2 -1
  650. package/template/docs/design/design.md +23 -31
  651. package/template/docs/design/preview-dark.html +3 -3
  652. package/template/docs/design/preview.css +1 -1
  653. package/template/docs/design/preview.html +2 -2
  654. package/template/docs/design/templates/interaction-spec-template.md +2 -2
  655. package/template/docs/design/templates/prototype-evidence-template.yaml +18 -22
  656. package/template/docs/design/templates/prototype-review-checklist.md +3 -1
  657. package/template/docs/design/templates/state-matrix-template.md +1 -1
  658. package/template/docs/design/templates/visual-baseline-template.yaml +3 -2
  659. package/template/docs/design/tokens/.design-md-projection.json +7 -7
  660. package/template/docs/design/tokens/theme.json +16 -10
  661. package/template/docs/design/tokens/tokens.compact.json +521 -237
  662. package/template/docs/design/tokens/tokens.dark.json +527 -240
  663. package/template/docs/design/tokens/tokens.default.json +513 -235
  664. package/template/docs/design/tokens/variables.css +67 -65
  665. package/template/docs/design/tokens/variables.dark.css +41 -41
  666. package/template/docs/engineering/backend-platforms.json +174 -0
  667. package/template/docs/engineering/backend-platforms.md +77 -0
  668. package/template/docs/process/MATT-POCOCK-ENGINEERING-SKILLS.md +1 -0
  669. package/template/docs/process/delivery-preflight.md +1 -1
  670. package/template/docs/process/frontend-backend-delivery.md +2 -1
  671. package/template/docs/process/harness-process-tailoring.md +9 -1
  672. package/template/docs/process/lifecycle-artifact-map.md +4 -4
  673. package/template/docs/process/lifecycle-registry-baseline.json +1 -1
  674. package/template/docs/process/lifecycle-registry.yaml +9 -9
  675. package/template/docs/process/schemas/api-contract-decision.schema.json +74 -0
  676. package/template/docs/process/schemas/backend-architecture-identity.schema.json +91 -0
  677. package/template/docs/process/schemas/data-architecture-decision.schema.json +34 -0
  678. package/template/docs/process/schemas/digital-human-task-package.schema.json +2 -1
  679. package/template/docs/process/schemas/implementation-repository-preparation-result.schema.json +80 -24
  680. package/template/docs/process/schemas/lifecycle-checkpoint.schema.json +4 -0
  681. package/template/docs/process/schemas/project-scaffold-contract.schema.json +666 -73
  682. package/template/docs/process/schemas/scaffold-architecture-decisions.schema.json +323 -39
  683. package/template/docs/process/schemas/slice-implementation-contract-v3.schema.json +925 -0
  684. package/template/docs/process/schemas/strategic-design-handoff.schema.json +296 -107
  685. package/template/docs/process/schemas/strategic-handoff-delivery-verification.schema.json +19 -0
  686. package/template/docs/process/schemas/strategic-handoff-delivery.schema.json +84 -0
  687. package/template/docs/process/schemas/strategic-handoff-import-receipt-v3.schema.json +42 -0
  688. package/template/docs/process/strategic-handoff-package.md +26 -9
  689. package/template/docs/templates/approval-record-template.yaml +2 -0
  690. package/template/docs/templates/vertical-slice-ticket-template.md +22 -31
  691. package/template/docs/user-guide//350/256/276/345/244/207/345/200/237/347/224/250/350/264/257/347/251/277/346/241/210/344/276/213.md +1 -1
  692. package/template/scripts/audit-legacy-backend-scaffold +29 -0
  693. package/template/scripts/backend-platforms +14 -0
  694. package/template/scripts/lib/api-contract-decision.mjs +49 -0
  695. package/template/scripts/lib/api-contract-decision.test.mjs +69 -0
  696. package/template/scripts/lib/approval-record.mjs +32 -6
  697. package/template/scripts/lib/approved-execution-context.mjs +31 -8
  698. package/template/scripts/lib/backend-architecture.mjs +6 -0
  699. package/template/scripts/lib/backend-platform-provenance.mjs +67 -0
  700. package/template/scripts/lib/backend-platform-verification.mjs +210 -0
  701. package/template/scripts/lib/backend-platform.mjs +175 -0
  702. package/template/scripts/lib/backend-scaffold-prerequisites.mjs +123 -0
  703. package/template/scripts/lib/decision-continuation.mjs +79 -0
  704. package/template/scripts/lib/delivery-preflight.mjs +6 -5
  705. package/template/scripts/lib/digital-human-roles.mjs +10 -0
  706. package/template/scripts/lib/frontend-delivery-boundary.mjs +3 -0
  707. package/template/scripts/lib/implementation-contract-compiler.mjs +42 -9
  708. package/template/scripts/lib/legacy-backend-scaffold-audit.mjs +87 -0
  709. package/template/scripts/lib/legacy-backend-scaffold-audit.test.mjs +64 -0
  710. package/template/scripts/lib/lifecycle-controls.mjs +2 -2
  711. package/template/scripts/lib/lifecycle-transition.mjs +155 -5
  712. package/template/scripts/lib/openapi-draft-validation.mjs +111 -0
  713. package/template/scripts/lib/plan-spec-entry.mjs +3 -3
  714. package/template/scripts/lib/scaffold-local-database.mjs +1 -0
  715. package/template/scripts/lib/skill-registry.mjs +17 -3
  716. package/template/scripts/lib/skill-supply-chain.mjs +12 -1
  717. package/template/scripts/lib/slice-applicability.mjs +10 -0
  718. package/template/scripts/lib/slice-contract-preparation.mjs +257 -0
  719. package/template/scripts/lib/slice-contract-views.mjs +52 -0
  720. package/template/scripts/lib/slice-contract.mjs +211 -0
  721. package/template/scripts/lib/slice-repositories.mjs +49 -0
  722. package/template/scripts/lib/slice-task-package.mjs +66 -0
  723. package/template/scripts/lib/strategic-feedback.mjs +2 -2
  724. package/template/scripts/lib/strategic-handoff-consumption.mjs +2 -2
  725. package/template/scripts/lib/strategic-handoff.mjs +89 -4
  726. package/template/scripts/lib/task-package.mjs +6 -2
  727. package/template/scripts/lib/technical-design-boundary.mjs +1 -0
  728. package/template/scripts/lib/user-decision-reuse.mjs +1 -0
  729. package/template/scripts/lib/user-decision.mjs +4 -1
  730. package/template/scripts/preflight-delivery +2 -2
  731. package/template/scripts/slice-contract +30 -0
  732. package/template/scripts/strategic-handoff +6 -4
  733. package/template/scripts/verify-backend-platform-matrix +69 -0
  734. package/template/scripts/verify-openapi-draft-validation-record +10 -129
  735. package/template/scripts/verify-scaffold-architecture-decisions +5 -0
  736. package/template/scripts/verify-strategic-context-import +12 -14
  737. package/template/scripts/verify-user-decision +7 -2
  738. package/template/skills-lock.json +67 -117
  739. package/template/yss-public-skills.json +0 -6
  740. package/template.snapshot.json +8 -4
  741. package/template/.agents/skills/yss-antd-design/SKILL.md +0 -35
  742. package/template/.agents/skills/yss-antd-design/references/boundaries.md +0 -30
  743. package/template/.agents/skills/yss-antd-design/references/cli-matrix.md +0 -38
  744. package/template/.agents/skills/yss-antd-design/references/evidence.md +0 -35
  745. package/template/.agents/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
  746. package/template/.agents/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
  747. package/template/.agents/skills/yss-antdv-next-design/SKILL.md +0 -48
  748. package/template/.agents/skills/yss-antdv-next-design/references/boundaries.md +0 -25
  749. package/template/.agents/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
  750. package/template/.agents/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
  751. package/template/.agents/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
  752. package/template/.agents/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
  753. package/template/.agents/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
  754. package/template/.agents/skills/yss-components/SKILL.md +0 -386
  755. package/template/.agents/skills/yss-components/agents/openai.yaml +0 -5
  756. package/template/.agents/skills/yss-components/references/frontend-docs.md +0 -9
  757. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
  758. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
  759. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
  760. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  761. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
  762. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  763. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
  764. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  765. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
  766. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  767. package/template/.agents/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
  768. package/template/.agents/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
  769. package/template/.agents/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
  770. package/template/.agents/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
  771. package/template/.agents/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
  772. package/template/.agents/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
  773. package/template/.agents/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
  774. package/template/.agents/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
  775. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
  776. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
  777. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
  778. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
  779. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
  780. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
  781. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
  782. package/template/.agents/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
  783. package/template/.codex/skills/yss-antd-design/SKILL.md +0 -35
  784. package/template/.codex/skills/yss-antd-design/references/boundaries.md +0 -30
  785. package/template/.codex/skills/yss-antd-design/references/cli-matrix.md +0 -38
  786. package/template/.codex/skills/yss-antd-design/references/evidence.md +0 -35
  787. package/template/.codex/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
  788. package/template/.codex/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
  789. package/template/.codex/skills/yss-antdv-next-design/SKILL.md +0 -48
  790. package/template/.codex/skills/yss-antdv-next-design/references/boundaries.md +0 -25
  791. package/template/.codex/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
  792. package/template/.codex/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
  793. package/template/.codex/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
  794. package/template/.codex/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
  795. package/template/.codex/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
  796. package/template/.codex/skills/yss-components/SKILL.md +0 -386
  797. package/template/.codex/skills/yss-components/agents/openai.yaml +0 -5
  798. package/template/.codex/skills/yss-components/references/frontend-docs.md +0 -9
  799. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
  800. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
  801. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
  802. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  803. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
  804. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  805. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
  806. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  807. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
  808. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  809. package/template/.codex/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
  810. package/template/.codex/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
  811. package/template/.codex/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
  812. package/template/.codex/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
  813. package/template/.codex/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
  814. package/template/.codex/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
  815. package/template/.codex/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
  816. package/template/.codex/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
  817. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
  818. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
  819. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
  820. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
  821. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
  822. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
  823. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
  824. package/template/.codex/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
  825. package/template/.cursor/skills/yss-antd-design/SKILL.md +0 -35
  826. package/template/.cursor/skills/yss-antd-design/references/boundaries.md +0 -30
  827. package/template/.cursor/skills/yss-antd-design/references/cli-matrix.md +0 -38
  828. package/template/.cursor/skills/yss-antd-design/references/evidence.md +0 -35
  829. package/template/.cursor/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
  830. package/template/.cursor/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
  831. package/template/.cursor/skills/yss-antdv-next-design/SKILL.md +0 -48
  832. package/template/.cursor/skills/yss-antdv-next-design/references/boundaries.md +0 -25
  833. package/template/.cursor/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
  834. package/template/.cursor/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
  835. package/template/.cursor/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
  836. package/template/.cursor/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
  837. package/template/.cursor/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
  838. package/template/.cursor/skills/yss-components/SKILL.md +0 -386
  839. package/template/.cursor/skills/yss-components/agents/openai.yaml +0 -5
  840. package/template/.cursor/skills/yss-components/references/frontend-docs.md +0 -9
  841. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
  842. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
  843. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
  844. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  845. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
  846. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  847. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
  848. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  849. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
  850. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  851. package/template/.cursor/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
  852. package/template/.cursor/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
  853. package/template/.cursor/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
  854. package/template/.cursor/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
  855. package/template/.cursor/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
  856. package/template/.cursor/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
  857. package/template/.cursor/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
  858. package/template/.cursor/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
  859. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
  860. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
  861. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
  862. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
  863. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
  864. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
  865. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
  866. package/template/.cursor/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
  867. package/template/.pi/skills/yss-antd-design/SKILL.md +0 -35
  868. package/template/.pi/skills/yss-antd-design/references/boundaries.md +0 -30
  869. package/template/.pi/skills/yss-antd-design/references/cli-matrix.md +0 -38
  870. package/template/.pi/skills/yss-antd-design/references/evidence.md +0 -35
  871. package/template/.pi/skills/yss-antd-design/scripts/validate-frontmatter.mjs +0 -46
  872. package/template/.pi/skills/yss-antd-design/scripts/validate-frontmatter.test.mjs +0 -27
  873. package/template/.pi/skills/yss-antdv-next-design/SKILL.md +0 -48
  874. package/template/.pi/skills/yss-antdv-next-design/references/boundaries.md +0 -25
  875. package/template/.pi/skills/yss-antdv-next-design/references/cli-matrix.md +0 -34
  876. package/template/.pi/skills/yss-antdv-next-design/references/fact-pack.md +0 -38
  877. package/template/.pi/skills/yss-antdv-next-design/scripts/collect-antdv-next-facts.mjs +0 -213
  878. package/template/.pi/skills/yss-antdv-next-design/scripts/validate-fact-pack.mjs +0 -168
  879. package/template/.pi/skills/yss-antdv-next-design/tests/run-scenarios.mjs +0 -139
  880. package/template/.pi/skills/yss-components/SKILL.md +0 -386
  881. package/template/.pi/skills/yss-components/agents/openai.yaml +0 -5
  882. package/template/.pi/skills/yss-components/references/frontend-docs.md +0 -9
  883. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/SKILL.md +0 -31
  884. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-adapter/agents/openai.yaml +0 -5
  885. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/SKILL.md +0 -8
  886. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-application/agents/openai.yaml +0 -5
  887. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/SKILL.md +0 -8
  888. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-domain/agents/openai.yaml +0 -5
  889. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/SKILL.md +0 -8
  890. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-infrastructure/agents/openai.yaml +0 -5
  891. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/SKILL.md +0 -8
  892. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-web/agents/openai.yaml +0 -5
  893. package/template/.pi/skills/yss-mvc-scaffold-generator/SKILL.md +0 -8
  894. package/template/.pi/skills/yss-mvc-scaffold-generator/agents/openai.yaml +0 -4
  895. package/template/.pi/skills/yss-mvc-scaffold-generator/assets/logback-spring.xml.template +0 -50
  896. package/template/.pi/skills/yss-mvc-scaffold-generator/assets/smart-doc.json.template +0 -42
  897. package/template/.pi/skills/yss-mvc-scaffold-generator/references/architecture.md +0 -28
  898. package/template/.pi/skills/yss-mvc-scaffold-generator/references/history/generate_project.mjs.txt +0 -137
  899. package/template/.pi/skills/yss-mvc-scaffold-generator/references/history/generate_project.test.mjs.txt +0 -341
  900. package/template/.pi/skills/yss-mvc-scaffold-generator/references/history/skill.md +0 -87
  901. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/generate_project.mjs +0 -3
  902. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/generate_project.test.mjs +0 -9
  903. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.mjs +0 -74
  904. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/envelope.test.mjs +0 -36
  905. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/runtime.mjs +0 -114
  906. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/storage.mjs +0 -90
  907. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/lib/templates.mjs +0 -54
  908. package/template/.pi/skills/yss-mvc-scaffold-generator/scripts/verify_project.mjs +0 -103
@@ -0,0 +1,79 @@
1
+ import { decisionIO, decisionDigest, decisionError, assertUserDecisionRequirement } from './user-decision.mjs';
2
+
3
+ export const CONTINUATION_CAPABILITY = 'approved-scope-continuation-v1';
4
+ const fail = message => decisionError('user-decision-continuation-invalid', message);
5
+ const strings = value => Array.isArray(value) && value.length > 0 && value.every(x => typeof x === 'string' && x.trim()) && new Set(value).size === value.length;
6
+ const sameSet = (a, b) => strings(a) && strings(b) && a.length === b.length && a.every(x => b.includes(x));
7
+ const basisFields = ['business_scope', 'acceptance', 'contract_commitments', 'authorization', 'risk_acceptance', 'quality', 'external_commitments'];
8
+
9
+ // A continuation validates an explicit human mandate and an independent current
10
+ // review. It never infers semantic equivalence from whitespace or a boolean flag.
11
+ export function assertDecisionContinuation(requirement, roles, options = {}) {
12
+ const io = decisionIO(options);
13
+ const policy = roles.user_decision_policy.continuation;
14
+ if (policy?.capability !== CONTINUATION_CAPABILITY || !policy.boundaries.includes(requirement.boundary)) fail('未授权的延续边界');
15
+ const proof = io.document(requirement.continuation_ref);
16
+ if (proof.schema_version !== 1 || proof.kind !== CONTINUATION_CAPABILITY || proof.boundary !== requirement.boundary || proof.subject?.ref !== requirement.subject_ref || !sameSet(proof.scope, requirement.scope)) fail('当前边界、资产或范围不匹配');
17
+ const current = (asset, parse = true) => {
18
+ if (!asset?.ref || !asset.version || !asset.digest || decisionDigest(io.bytes(asset.ref)) !== asset.digest) fail(`当前证据缺失或过期: ${asset?.ref}`);
19
+ return parse ? io.document(asset.ref) : null;
20
+ };
21
+ if (!proof.source || proof.source.continuation_ref || proof.source.boundary !== 'delivery-scope') fail('必须引用原始交付范围批准,不能链式扩权');
22
+ const sourceResult = assertUserDecisionRequirement(proof.source, { ...options, rolesDoc: roles });
23
+ const mandate = io.document(proof.source.subject_ref);
24
+ if (mandate.schema_version !== 1 || mandate.kind !== 'delivery-authorization' || !Array.isArray(mandate.targets)) fail('缺少已展示并批准的交付授权清单');
25
+ if (!requirement.scope.every(x => proof.source.scope.includes(x))) fail('超出原始批准范围');
26
+ const matches = mandate.targets.filter(x => x.boundary === requirement.boundary && x.subject_ref === requirement.subject_ref && requirement.scope.every(s => x.scope?.includes(s)));
27
+ if (matches.length !== 1) fail('原授权未唯一覆盖当前边界、资产和范围');
28
+ const target = matches[0];
29
+ if (!basisFields.every(key => strings(target.decision_basis?.[key]))) fail('原授权缺少业务、验收、契约、授权、风险、质量或对外承诺依据');
30
+ if (!Array.isArray(mandate.basis) || !mandate.basis.length) fail('原授权缺少可读取的决定依据');
31
+ for (const asset of mandate.basis) {
32
+ if (!asset.ref || !asset.version || decisionDigest(io.bytes(asset.ref)) !== asset.digest) fail('原授权决定依据变化,须重新决定');
33
+ }
34
+ const external = current(mandate.external_policy);
35
+ if (external.status !== 'confirmed' || !Array.isArray(external.requirements)) fail('项目外部审批要求尚未确认,不能自动延续');
36
+ current(proof.subject, false);
37
+ if (requirement.boundary === 'implementation-scope') {
38
+ const manifest = io.document(proof.subject.ref);
39
+ if (manifest.kind !== 'implementation-scope' || !Array.isArray(manifest.slices)) fail('实施范围清单无效');
40
+ for (const ticket of requirement.scope) {
41
+ const slices = manifest.slices.filter(x => x.ticket_ref === ticket);
42
+ const limit = target.implementation_limits?.[ticket];
43
+ if (slices.length !== 1 || !limit || !sameSet(slices[0].repositories, limit.repositories) || !sameSet(slices[0].allowed_write_paths, limit.allowed_write_paths)) fail('实施仓库或写路径超出原授权边界');
44
+ }
45
+ }
46
+ if (!Array.isArray(proof.basis) || !proof.basis.length) fail('缺少本次实际验证证据');
47
+ for (const asset of proof.basis) {
48
+ if (!asset.ref || !asset.version || decisionDigest(io.bytes(asset.ref)) !== asset.digest) fail('本次验证证据过期');
49
+ }
50
+ const review = current(proof.review);
51
+ const actor = roles.roles.find(x => x.id === review.role_id);
52
+ if (!actor || !roles.runtimes.some(x => x.id === review.runtime_id) || !review.principal_ref || !review.drafter_principal_ref || review.principal_ref === review.drafter_principal_ref) fail('缺少独立专业审查身份');
53
+ const eligible = roles.gate_policy.continuation_reviews?.[requirement.boundary] || roles.gate_policy.dual_digital_human?.find(x => x.gate === requirement.boundary)?.countersigners;
54
+ if (!eligible?.includes(review.role_id)) fail('审查能力不覆盖当前边界');
55
+ if (review.decision !== 'approved' || !['within-approved-scope', 'presentation-only', 'implementation-detail'].includes(review.classification)) fail('未知或实质变化须重新决定');
56
+ if (!Array.isArray(review.material_changes) || review.material_changes.length || !Array.isArray(review.findings)) fail('存在实质变化或未完成影响分析');
57
+ for (const finding of review.findings) {
58
+ if (!finding.id || !finding.reason || !['requirement-violation', 'missing-evidence', 'important-risk', 'suggestion'].includes(finding.kind)) fail('审查发现未分类');
59
+ if (finding.kind === 'suggestion' && !finding.follow_up) fail('非阻断建议缺少待办去向');
60
+ if (finding.kind !== 'suggestion' && finding.status !== 'resolved') fail('未解决的缺陷、证据缺口或重要风险');
61
+ }
62
+ if (review.boundary !== requirement.boundary || !sameSet(review.scope, requirement.scope) || decisionDigest(review.subject) !== decisionDigest(proof.subject) || decisionDigest(review.basis) !== decisionDigest(proof.basis)) fail('审查未绑定当前资产、范围和验证证据');
63
+ if (decisionDigest(review.decision_basis) !== decisionDigest(target.decision_basis)) fail('决定依据有实质变化');
64
+ if (!review.reason?.trim() || !review.comparison?.before || !review.comparison?.after) fail('缺少可审阅的前后差异和等价性说明');
65
+ // Before is an immutable, originally approved snapshot; after is the current candidate.
66
+ const before = review.comparison.before;
67
+ if (!mandate.basis.some(x => decisionDigest(x) === decisionDigest(before)) || decisionDigest(review.comparison.after) !== decisionDigest(proof.subject)) fail('前后差异未绑定原授权快照和当前资产');
68
+ for (const obligation of external.requirements) {
69
+ if (!obligation.id || !strings(obligation.boundaries) || !strings(obligation.principals)) fail('外部审批制度记录不完整');
70
+ if (!obligation.boundaries.includes(requirement.boundary)) continue;
71
+ for (const principal of obligation.principals) {
72
+ const reply = proof.external_decisions?.find(x => x.obligation_id === obligation.id && x.principal_ref === principal);
73
+ if (!reply || reply.requirement?.continuation_ref || reply.requirement?.boundary !== requirement.boundary || reply.requirement?.subject_ref !== requirement.subject_ref || !sameSet(reply.requirement?.scope, requirement.scope)) fail('外部强制审批缺失或范围不符');
74
+ const result = assertUserDecisionRequirement(reply.requirement, { ...options, rolesDoc: roles });
75
+ if (!result.validated.length || result.validated.some(x => x.principal_ref !== principal)) fail('外部审批人与制度要求不符');
76
+ }
77
+ }
78
+ return { ...sourceResult, continued: true, review_ref: proof.review.ref };
79
+ }
@@ -1,3 +1,4 @@
1
+ import { normalizeSliceContract, sourceSliceContract, parseSliceYaml } from './slice-contract.mjs';
1
2
  import { assertExistingSliceStructure, createApprovedExecutionContext, verifySliceContractApproval } from './approved-execution-context.mjs';
2
3
  import path from 'node:path';
3
4
  import { readFileSync, existsSync } from 'node:fs';
@@ -46,7 +47,7 @@ function requireBackendCapability(key) {
46
47
  }
47
48
 
48
49
  /** Read-only: never executes input commands, starts services, unpacks archives or writes receipts. */
49
- export async function preflightDelivery(input,{stage,root=process.cwd()}={}) {
50
+ export async function preflightDelivery(input,{stage,root=process.cwd(),work_unit_id}={}) {
50
51
  try { ensure(STAGES.includes(stage),'未知阶段;必须是 prepare|build|export|accept');schema(input,'docs/process/schemas/delivery-preflight-input.schema.json'); }
51
52
  catch(error) { return invalidPreflightInput(error.message); }
52
53
  root=path.resolve(root,input.governance_root||'.');
@@ -78,7 +79,7 @@ export async function preflightDelivery(input,{stage,root=process.cwd()}={}) {
78
79
  if(input.architecture_identity.source_kind==='existing-registration')ensure(input.architecture_identity.repository_id===input.scope.repository_id&&input.architecture_identity.project_id===input.scope.project_id,'架构身份与预检目标仓库/项目不一致');
79
80
  },{source:'architecture_identity'});
80
81
  if(valid.has('architecture.identity'))await run('architecture.profile',()=>{ensure(architecture.validateArchitectureIdentity(input.architecture_identity).maturity==='supported','不支持未达到 supported 的 architecture_profile');},{source:'architecture_profile'});
81
- if(['build','export','accept'].includes(stage)&&assets.slice_contract)await run('slice_contract.execution',()=>{requireBackendCapability('slice_contract');execution=createApprovedExecutionContext(assets.slice_contract,{root});},{from:'build',source:assets.slice_contract.approval_ref||'slice_contract',evidence:[assets.slice_contract.ref,...(assets.slice_contract.approval_ref?[assets.slice_contract.approval_ref]:[])]});
82
+ if(['build','export','accept'].includes(stage)&&assets.slice_contract)await run('slice_contract.execution',()=>{requireBackendCapability('slice_contract');execution=createApprovedExecutionContext(assets.slice_contract,{root,work_unit_id});},{from:'build',source:assets.slice_contract.approval_ref||'slice_contract',evidence:[assets.slice_contract.ref,...(assets.slice_contract.approval_ref?[assets.slice_contract.approval_ref]:[])]});
82
83
  const archDeps=['architecture.identity',...['repository_registration','engineering_baseline','manifest'].map(x=>`architecture.${x}`)];
83
84
  if(archDeps.every(x=>valid.has(x)))await run('architecture',()=>{
84
85
  ensure(typeof architecture.verifyArchitectureEvidence==='function','不支持既有工程原始证据验证,请同步支持该身份版本的模板运行时');
@@ -143,12 +144,12 @@ async function verifyAsset(key,data,binding,{root,input,documents,assets,executi
143
144
  await validateTechnicalDesign(data,{root,sliceRef:input.scope.slice_id,readOnly:true,execution});
144
145
  await approved(root,binding,['gate.engineering-contract-approved','gate.technical-design-approved']);
145
146
  } else if(key==='slice_contract') {
146
- const contract=data.slice_contract||data;
147
+ const contract=normalizeSliceContract(data,{root});
147
148
  assertExistingSliceStructure(contract);
148
- ensure(contract.schema_version===2&&contract.status==='approved'&&contract.slice_id===input.scope.slice_id,'Slice 合同版本、批准状态或切片不匹配');
149
+ ensure([2,3].includes(contract.schema_version)&&contract.status==='approved'&&contract.slice_id===input.scope.slice_id,'Slice 合同版本、批准状态或切片不匹配');
149
150
  ensure(binding.id===contract.contract_id&&binding.version===contract.contract_version,'Slice 合同身份与引用不一致');
150
151
  const compiler=read(safe(ROOT,'.agents/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml'));
151
- for(const [section,fields]of Object.entries(compiler.slice_contract_required))for(const field of fields)ensure(Object.hasOwn(section==='root'?contract:contract[section]||{},field),`合同缺少 ${section}.${field}`);
152
+ if(contract.schema_version===2)for(const [section,fields]of Object.entries(compiler.slice_contract_required))for(const field of fields)ensure(Object.hasOwn(section==='root'?contract:contract[section]||{},field),`合同缺少 ${section}.${field}`);
152
153
  ensure(contract.readiness.blockers.length===0&&contract.readiness.stale_inputs.length===0,'Slice 合同仍有 blocker 或 stale input');
153
154
  const resolution=contract.resolution;
154
155
  ensure(resolution.freshness==='current','Slice resolution 非 current');
@@ -388,6 +388,16 @@ export function validateDigitalHumanRoles(doc, { skillIds, stageIds, gateIds, ar
388
388
  }
389
389
 
390
390
  const decisions = doc.user_decision_policy;
391
+ if (decisions?.continuation) {
392
+ const continuation = decisions.continuation;
393
+ if (continuation.capability !== 'approved-scope-continuation-v1' || continuation.source_boundary !== 'delivery-scope' || continuation.unknown_change !== 'blocked' || continuation.external_policy_unconfirmed !== 'no-automatic-continuation') fail('授权延续策略不能省略未知变化或外部制度保护');
394
+ requireStringArray(continuation.boundaries, 'continuation.boundaries');
395
+ for (const boundary of continuation.boundaries) {
396
+ if (!gateIds.has(boundary) && boundary !== 'implementation-scope') fail(`未支持的延续边界: ${boundary}`);
397
+ requireStringArray(policy.continuation_reviews?.[boundary], `${boundary}.continuation_reviews`);
398
+ for (const role of policy.continuation_reviews[boundary]) if (!actors.has(role)) fail(`未知延续审查角色: ${role}`);
399
+ }
400
+ }
391
401
  if (decisions?.schema_version !== 1 || decisions.default_responder !== "requester" || decisions.delegate_requires_requester_evidence !== true) fail("缺少统一用户决定策略");
392
402
  requireStringArray(decisions.gates, "user_decision_policy.gates");
393
403
  for (const gate of decisions.gates) if (!gateIds.has(gate)) fail(`用户决定引用未知门禁: ${gate}`);
@@ -1,3 +1,4 @@
1
+ import { normalizeSliceContract, sourceSliceContract, parseSliceYaml } from './slice-contract.mjs';
1
2
  import { loadDeliveryProfile } from './harness-execution-scope.mjs';
2
3
  import { existsSync } from 'node:fs';
3
4
  import path from 'node:path';
@@ -8,6 +9,7 @@ import { ROOT, read, safe, ensure, digest } from './strategic-handoff-io.mjs';
8
9
  // Always re-executes the verifier; a caller-supplied "verified" flag is never evidence.
9
10
  export function enforceFrontendDelivery(state={}, {root=ROOT,phase='inputs'}={}) {
10
11
  ensure(['preflight','design','contract','inputs','implementation','verification'].includes(phase),`未知前端交付阶段: ${phase}`);
12
+ if(state.schema_version===3)state=normalizeSliceContract(state,{root});
11
13
  const profile=loadDeliveryProfile(root);
12
14
  let contract;
13
15
  const contractRef=state.slice_contract_ref||state.contract?.slice_contract_ref;
@@ -35,6 +37,7 @@ export function enforceFrontendDelivery(state={}, {root=ROOT,phase='inputs'}={})
35
37
  const file=path.resolve(root,contractRef);
36
38
  if(existsSync(file)) {
37
39
  const document=read(file);contract=document.slice_contract||document;
40
+ if(contract.schema_version===3)contract=normalizeSliceContract(contract,{root});
38
41
  const direct=contract.frontend?.delivery, resolved=contract.resolution?.frontend_delivery;
39
42
  ensure(!direct||!resolved||digest(direct)===digest(resolved),'Slice Contract 前端交付绑定冲突');
40
43
  binding=direct||resolved||binding;
@@ -1,3 +1,6 @@
1
+ import { resolveBackendPlatform } from "./backend-platform.mjs";
2
+ import { safe } from './strategic-handoff-io.mjs';
3
+ import { selectSliceWorkUnit, normalizeSliceContract, withinSlicePath } from './slice-contract.mjs';
1
4
  import { createApprovedExecutionContext, createApprovedRecompilationContext, assertApprovedExecutionContext } from './approved-execution-context.mjs';
2
5
  import { enforceTechnicalDesign } from './technical-design-boundary.mjs';
3
6
  import { enforceHarnessSkillScope } from "./harness-execution-scope.mjs";
@@ -67,13 +70,15 @@ export function compileImplementationContract({
67
70
  architecture_identity,
68
71
  architecture_evidence,
69
72
  approved_slice,
73
+ work_unit_id,
70
74
  root = ROOT,
71
75
  slice_id,
72
76
  frontend_delivery,
73
- technical_design
77
+ technical_design,
78
+ readOnly = false
74
79
  }) {
75
80
  assertV2(registry, compilerContract);
76
- const recompilationExecution=approved_slice?createApprovedRecompilationContext(approved_slice,{root}):undefined;
81
+ const recompilationExecution=approved_slice?createApprovedRecompilationContext(approved_slice,{root,work_unit_id}):undefined;
77
82
  const deliveryInput = enforceFrontendDelivery({ slice_id, frontend_delivery }, { root });
78
83
  if (!Array.isArray(recipeIds) || !Array.isArray(requiredCapabilities) || !Array.isArray(conditions)) {
79
84
  fail("recipeIds、requiredCapabilities 与 conditions 必须是数组");
@@ -96,7 +101,8 @@ export function compileImplementationContract({
96
101
  for (const recipe of orderedRecipes) if (recipe.architecture_family && recipe.architecture_family !== architecture_identity.architecture_family) fail(`Recipe ${recipe.id} 与架构族不匹配`);
97
102
  }
98
103
 
99
- enforceTechnicalDesign({ technical_design, conditions, architecture_identity, slice_id }, { root, execution:recompilationExecution });
104
+ if (architecture_identity?.platform_configuration) resolveBackendPlatform(architecture_identity.platform_configuration);
105
+ enforceTechnicalDesign({ technical_design, conditions, architecture_identity, slice_id }, { root, execution:recompilationExecution, readOnly });
100
106
 
101
107
  const capabilitySources = new Map();
102
108
  const orderedCapabilities = [];
@@ -206,14 +212,17 @@ export function compileDefaultImplementationContract(input = {}) {
206
212
  });
207
213
  }
208
214
 
209
- export function evaluateContractFreshness(contract, { registry, compilerContract, root = ROOT, approved_slice, readOnly = false }, execution) {
215
+ export function evaluateContractFreshness(contract, { registry, compilerContract, root = ROOT, approved_slice, readOnly = false, work_unit_id }, execution) {
210
216
  assertV2(registry, compilerContract);
211
- if (contract?.schema_version !== 2) fail("Slice Implementation Contract schema v1 已停止支持;必须重新编译 v2 合同");
217
+ try { contract=normalizeSliceContract(contract,{root}); } catch(error) { return {freshness:'stale',reasons:[error.message]}; }
218
+ if (![2,3].includes(contract?.schema_version)) fail("Slice Implementation Contract schema v1 已停止支持;必须重新编译 v2 合同");
219
+ const all=contract;
220
+ try {contract=selectSliceWorkUnit(contract,work_unit_id);} catch(error){return {freshness:'stale',reasons:[error.message]};}
212
221
  const resolution = contract.resolution ?? contract;
213
222
  const reasons = [];
214
223
  let trustedExecution;
215
224
  try {
216
- trustedExecution=approved_slice?createApprovedExecutionContext(approved_slice,{root,contract}):execution;
225
+ trustedExecution=approved_slice?createApprovedExecutionContext(approved_slice,{root,contract:all,work_unit_id}):execution;
217
226
  if(trustedExecution)assertApprovedExecutionContext(trustedExecution,{root,contract});
218
227
  } catch(error) { reasons.push(error.code||'EXECUTION_APPROVAL_INVALID');trustedExecution=undefined; }
219
228
  try { enforceTechnicalDesign({ ...resolution, slice_id: contract.slice_id ?? resolution.slice_id }, { root,execution:trustedExecution,readOnly }); }
@@ -236,11 +245,13 @@ export function evaluateContractFreshness(contract, { registry, compilerContract
236
245
 
237
246
  export function validateExecutionResult(result, contract, current) {
238
247
  if (result?.schema_version !== 2) fail("YSS Skill Execution Result schema v1 已停止支持;请迁移到 v2");
239
- if (contract?.schema_version !== 2) fail("Slice Implementation Contract schema v1 已停止支持;必须重新编译 v2 合同");
248
+ contract=normalizeSliceContract(contract,{root:current?.root || ROOT});
249
+ if (![2,3].includes(contract?.schema_version)) fail("Slice Implementation Contract schema v1 已停止支持;必须重新编译 v2 合同");
240
250
  if (!EXECUTION_STATUSES.has(result.status)) fail(`未知 execution result status: ${result.status}`);
241
- if(contract.resolution?.architecture_identity?.schema_version===2&&!current?.approved_slice)return {status:'stale',blockers:['EXECUTION_APPROVAL_REQUIRED']};
242
- const freshness = evaluateContractFreshness(contract, current);
251
+ if((contract.schema_version===3||contract.resolution?.architecture_identity?.schema_version===2)&&!current?.approved_slice)return {status:'stale',blockers:['EXECUTION_APPROVAL_REQUIRED']};
252
+ const freshness = evaluateContractFreshness(contract, {...current,work_unit_id:result.work_unit_id});
243
253
  if (freshness.freshness === "stale") return { status: "stale", blockers: freshness.reasons };
254
+ contract=selectSliceWorkUnit(contract,result.work_unit_id);
244
255
  const consumed = result.consumed_contract ?? {};
245
256
  const resolution = contract.resolution ?? contract;
246
257
  const blockers = [];
@@ -253,6 +264,28 @@ export function validateExecutionResult(result, contract, current) {
253
264
  if (!item?.command || item.exit_code === undefined || !item.executed_at) blockers.push("verification-result-incomplete");
254
265
  else if (item.exit_code !== 0) blockers.push("verification-failed");
255
266
  }
267
+ if(contract.schema_version===3) {
268
+ const unit=contract.work_units.find(item=>item.id===result.work_unit_id);
269
+ if(!unit)blockers.push('work-unit-mismatch');
270
+ else {
271
+ const checks=unit.work_unit.verification;
272
+ for(const check of checks)if(!result.verification_results?.some(item=>item.command===check.command&&item.exit_code===0&&item.cwd===check.cwd&&(!check.dependency_roots||JSON.stringify(item.dependency_roots)===JSON.stringify(check.dependency_roots))))blockers.push('verification-coverage-or-cwd-missing');
273
+ if(!Array.isArray(result.changed_files))blockers.push('changed-files-missing');
274
+ else for(const item of result.changed_files) {
275
+ const changed=typeof item==='string'?item:item.path;
276
+ if(contract.repositories&&(typeof item==='string'||item.project_root!==unit.project_root))blockers.push('changed-file-repository-mismatch');
277
+ if(!unit.allowed_write_paths.some(parent=>withinSlicePath(changed,parent)))blockers.push('write-scope-violation');
278
+ }
279
+ const evidence=result.evidence_files||[];
280
+ for(const ref of unit.work_unit.expected_evidence) {
281
+ if(!evidence.some(item=>(typeof item==='string'?item:item.path)===ref&&(!contract.repositories||item.project_root===unit.project_root)))blockers.push('expected-evidence-missing');
282
+ else {try {readFileSync(safe(contract.repositories?unit.project_root:(current.root||ROOT),ref));}catch {blockers.push('expected-evidence-unreadable');}}
283
+ }
284
+ }
285
+ if(['drift','violation'].includes(result.status))blockers.push(result.status);
286
+ if(result.status==='not-applicable'&&!result.not_applicable_reason?.trim())blockers.push('not-applicable-reason-missing');
287
+ if(result.status==='seam-deferred'&&(!result.seam_deferred?.length||result.seam_deferred.some(item=>['risk','owner','follow_up_ticket','verification_plan','target_version_or_release_date'].some(key=>!item[key]))))blockers.push('seam-deferred-incomplete');
288
+ }
256
289
  if (Array.isArray(result.new_impacts) && result.new_impacts.length) blockers.push("new-impacts");
257
290
  return { status: blockers.length ? "blocked" : "accepted", blockers: [...new Set(blockers)] };
258
291
  }
@@ -0,0 +1,87 @@
1
+ import { createHash } from "node:crypto";
2
+ import { lstat, readFile, readdir } from "node:fs/promises";
3
+ import path from "node:path";
4
+
5
+ const sha256 = (bytes) => createHash("sha256").update(bytes).digest("hex");
6
+ const normalizedDigest = (value) => String(value ?? "").replace(/^sha256:/, "");
7
+
8
+ async function collectFiles(root) {
9
+ const files = [];
10
+ async function visit(directory) {
11
+ for (const entry of (await readdir(directory, { withFileTypes: true })).sort((a, b) => a.name.localeCompare(b.name))) {
12
+ if ([".git", "target", "node_modules"].includes(entry.name)) continue;
13
+ const target = path.join(directory, entry.name);
14
+ const relative = path.relative(root, target).split(path.sep).join("/");
15
+ if (entry.isDirectory()) await visit(target);
16
+ else files.push({ relative, target, symlink: entry.isSymbolicLink() });
17
+ }
18
+ }
19
+ await visit(root);
20
+ return files;
21
+ }
22
+
23
+ function isBusinessFile(relative, manifest) {
24
+ if (relative === manifest.bootstrap_main_source || /(^|\/)package-info\.java$/.test(relative)) return false;
25
+ return /(^|\/)src\/(main|test)\/java\/.+\.java$/.test(relative)
26
+ || /(^|\/)src\/main\/resources\/.+\.(sql|xml|ya?ml|properties)$/.test(relative)
27
+ || /(^|\/)(db|mapper|repository|controller|domain)(\/|$)/i.test(relative)
28
+ || /(^|\/)(Controller|Repository|Mapper|Aggregate|Entity)\.java$/i.test(relative);
29
+ }
30
+
31
+ export async function auditLegacyBackendScaffold(projectRoot, { manifestRef = ".yss/scaffold-generation.json" } = {}) {
32
+ const root = path.resolve(projectRoot);
33
+ const manifestFile = path.resolve(root, manifestRef);
34
+ const relativeManifest = path.relative(root, manifestFile);
35
+ if (relativeManifest.startsWith("..") || path.isAbsolute(relativeManifest)) throw new TypeError("Manifest 必须位于项目根内");
36
+ const manifestBytes = await readFile(manifestFile).catch(() => { throw new TypeError(`Manifest 不可读取: ${manifestRef}`); });
37
+ let manifest;
38
+ try { manifest = JSON.parse(manifestBytes); } catch { throw new TypeError("Manifest 必须是 JSON 对象"); }
39
+ if (manifest?.schema_version !== 3) throw new TypeError("恢复审计只接受历史 v3 Manifest");
40
+ if (!Array.isArray(manifest?.ownership?.generated_files)) throw new TypeError("历史 v3 Manifest 缺少 ownership.generated_files");
41
+
42
+ const generated = new Map(manifest.ownership.generated_files.map((entry) => [entry.path, entry]));
43
+ const generatedFileDrift = [];
44
+ for (const [relative, entry] of generated) {
45
+ const target = path.resolve(root, relative);
46
+ const inside = path.relative(root, target);
47
+ if (inside.startsWith("..") || path.isAbsolute(inside)) {
48
+ generatedFileDrift.push({ path: relative, reason: "path-outside-project" });
49
+ continue;
50
+ }
51
+ try {
52
+ const info = await lstat(target);
53
+ if (!info.isFile()) generatedFileDrift.push({ path: relative, reason: "not-a-regular-file" });
54
+ else {
55
+ const actual = sha256(await readFile(target));
56
+ if (actual !== normalizedDigest(entry.sha256)) generatedFileDrift.push({ path: relative, reason: "digest-drift", expected: normalizedDigest(entry.sha256), actual });
57
+ }
58
+ } catch (error) {
59
+ if (error.code === "ENOENT") generatedFileDrift.push({ path: relative, reason: "missing" });
60
+ else throw error;
61
+ }
62
+ }
63
+
64
+ const files = await collectFiles(root);
65
+ const unownedFiles = files.map((entry) => entry.relative).filter((relative) => relative !== manifestRef && !generated.has(relative));
66
+ const businessFiles = files
67
+ .filter((entry) => entry.symlink || (unownedFiles.includes(entry.relative) && isBusinessFile(entry.relative, manifest)))
68
+ .map((entry) => entry.relative);
69
+ const premature = businessFiles.length > 0;
70
+ const state = premature ? "premature-implementation-detected" : generatedFileDrift.length > 0 ? "generated-file-drift" : "unchanged-mechanical-scaffold";
71
+ return {
72
+ schema_version: 1,
73
+ kind: "legacy-backend-scaffold-ownership-audit",
74
+ status: state === "unchanged-mechanical-scaffold" ? "reconcilable" : "blocked",
75
+ manifest_ref: manifestRef,
76
+ manifest_digest: `sha256:${sha256(manifestBytes)}`,
77
+ manifest_schema_version: 3,
78
+ ownership_state: state,
79
+ premature_implementation: premature,
80
+ generated_file_drift: generatedFileDrift,
81
+ business_files: businessFiles,
82
+ unowned_files: unownedFiles,
83
+ recovery_requirements: state === "unchanged-mechanical-scaffold"
84
+ ? ["approved-current-technical-design", "data-architecture-decision", "gate.engineering-contract-approved", "recovery-approval"]
85
+ : ["preserve-all-files", "design-reconciliation", "difference-review", "current-user-approval"],
86
+ };
87
+ }
@@ -0,0 +1,64 @@
1
+ import assert from "node:assert/strict";
2
+ import { createHash } from "node:crypto";
3
+ import { mkdtemp, mkdir, rm, writeFile } from "node:fs/promises";
4
+ import os from "node:os";
5
+ import path from "node:path";
6
+ import test from "node:test";
7
+ import { auditLegacyBackendScaffold } from "./legacy-backend-scaffold-audit.mjs";
8
+
9
+ const rawDigest = (value) => createHash("sha256").update(value).digest("hex");
10
+
11
+ async function fixture(t) {
12
+ const root = await mkdtemp(path.join(os.tmpdir(), "legacy-scaffold-audit-"));
13
+ t.after(() => rm(root, { recursive: true, force: true }));
14
+ const generated = "package com.yss.demo;\n";
15
+ const source = "demo-service-server/src/main/java/com/yss/demo/package-info.java";
16
+ await mkdir(path.join(root, path.dirname(source)), { recursive: true });
17
+ await writeFile(path.join(root, source), generated);
18
+ const manifest = {
19
+ schema_version: 3,
20
+ kind: "backend-scaffold",
21
+ completion_level: "empty-scaffold-verified",
22
+ ownership: { generated_files: [{ path: source, owner: "generator", sha256: rawDigest(generated) }] },
23
+ };
24
+ await mkdir(path.join(root, ".yss"));
25
+ await writeFile(path.join(root, ".yss/scaffold-generation.json"), `${JSON.stringify(manifest, null, 2)}\n`);
26
+ return { root, source };
27
+ }
28
+
29
+ test("未修改的历史 v3 机械骨架可进入恢复对账但不会自动批准", async (t) => {
30
+ const data = await fixture(t);
31
+ const result = await auditLegacyBackendScaffold(data.root);
32
+ assert.equal(result.status, "reconcilable");
33
+ assert.equal(result.ownership_state, "unchanged-mechanical-scaffold");
34
+ assert.equal(result.premature_implementation, false);
35
+ assert.deepEqual(result.generated_file_drift, []);
36
+ });
37
+
38
+ test("额外业务代码保留并标记 premature-implementation-detected", async (t) => {
39
+ const data = await fixture(t);
40
+ const controller = "demo-service-server/src/main/java/com/yss/demo/controller/DemoController.java";
41
+ await mkdir(path.join(data.root, path.dirname(controller)), { recursive: true });
42
+ await writeFile(path.join(data.root, controller), "class DemoController {}\n");
43
+ const result = await auditLegacyBackendScaffold(data.root);
44
+ assert.equal(result.status, "blocked");
45
+ assert.equal(result.ownership_state, "premature-implementation-detected");
46
+ assert.equal(result.premature_implementation, true);
47
+ assert.deepEqual(result.business_files, [controller]);
48
+ });
49
+
50
+ test("历史生成文件摘要漂移时保持 blocked", async (t) => {
51
+ const data = await fixture(t);
52
+ await writeFile(path.join(data.root, data.source), "changed\n");
53
+ const result = await auditLegacyBackendScaffold(data.root);
54
+ assert.equal(result.status, "blocked");
55
+ assert.equal(result.ownership_state, "generated-file-drift");
56
+ assert.equal(result.generated_file_drift[0].path, data.source);
57
+ });
58
+
59
+ test("审计器拒绝将 v4 当作历史恢复输入", async (t) => {
60
+ const data = await fixture(t);
61
+ const manifestFile = path.join(data.root, ".yss/scaffold-generation.json");
62
+ await writeFile(manifestFile, JSON.stringify({ schema_version: 4, ownership: { generated_files: [] } }));
63
+ await assert.rejects(() => auditLegacyBackendScaffold(data.root), /历史 v3/);
64
+ });
@@ -46,7 +46,7 @@ export function assertGateChecks(gateId, state, { root = ROOT, registry = loadRe
46
46
  const rule = countersignRuleForGate(rolesDoc.gate_policy, id);
47
47
  if (rule) {
48
48
  if (!refs.has(item.approval_ref) || !refs.has(item.subject_ref)) fail(`${id} 未绑定审查与资产`);
49
- const record = loadApprovalRecord(path.resolve(root, item.approval_ref));
49
+ const record = loadApprovalRecord(path.resolve(root, item.approval_ref), id);
50
50
  if (record.gate_id !== id || record.subject_ref !== item.subject_ref) fail(`${id} 审查对象不匹配`);
51
51
  if (!item.approval_scope?.length || JSON.stringify([...item.approval_scope].sort()) !== JSON.stringify([...(record.approval_scope || [])].sort())) fail(`${id} 审查范围不匹配`);
52
52
  const subjectDigest = createHash('sha256').update(readFileSync(path.resolve(root, item.subject_ref))).digest('hex');
@@ -65,7 +65,7 @@ export function assertGateChecks(gateId, state, { root = ROOT, registry = loadRe
65
65
  const approvalRequired = countersignRuleForGate(rolesDoc.gate_policy, gateId);
66
66
  if (approvalRequired) {
67
67
  if (!refs.has(item.approval_ref) || !refs.has(item.subject_ref)) fail(`${gateId} 缺少已绑定批准记录和审阅包`);
68
- const record = loadApprovalRecord(path.resolve(root, item.approval_ref));
68
+ const record = loadApprovalRecord(path.resolve(root, item.approval_ref), gateId);
69
69
  if (!record.drafter_principal_ref || record.drafter_principal_ref === record.principal_ref) fail(`${gateId} 缺少独立审查身份或起草者自签`);
70
70
  const bytes = readFileSync(path.resolve(root, item.subject_ref));
71
71
  if (record.subject_ref !== item.subject_ref || record.subject_digest !== createHash('sha256').update(bytes).digest('hex')) fail(`${gateId} 批准依据过期`);