create-yss-spec 3.4.5 → 3.4.6

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 (392) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/template/.agents/skills/.strategic-design-skills-manifest.json +1 -1
  4. package/template/.agents/skills/yss-application/SKILL.md +8 -6
  5. package/template/.agents/skills/yss-audit-log/SKILL.md +12 -7
  6. package/template/.agents/skills/yss-audit-log/references/source-index.boot2-java8.md +57 -0
  7. package/template/.agents/skills/yss-audit-log/references/source-index.boot3-java17.md +58 -0
  8. package/template/.agents/skills/yss-audit-log/references/source-index.md +6 -39
  9. package/template/.agents/skills/yss-cache/SKILL.md +5 -1
  10. package/template/.agents/skills/yss-cache/references/source-index.boot2-java8.md +81 -0
  11. package/template/.agents/skills/yss-cache/references/source-index.boot3-java17.md +83 -0
  12. package/template/.agents/skills/yss-cache/references/source-index.md +6 -63
  13. package/template/.agents/skills/yss-cache/scripts/check-skill-freshness.sh +20 -15
  14. package/template/.agents/skills/yss-ddd-scaffold-generator/SKILL.md +2 -2
  15. package/template/.agents/skills/yss-ddd-scaffold-generator/references/engineering-baseline.md +53 -0
  16. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +5 -51
  17. package/template/.agents/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/agents/openai.yaml +3 -3
  18. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +1 -1
  19. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +2 -2
  20. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +2 -3
  21. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  22. package/template/.agents/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +1 -1
  23. package/template/.agents/skills/yss-distributed-id/SKILL.md +4 -0
  24. package/template/.agents/skills/yss-distributed-id/references/source-index.boot2-java8.md +102 -0
  25. package/template/.agents/skills/yss-distributed-id/references/source-index.boot3-java17.md +90 -0
  26. package/template/.agents/skills/yss-distributed-id/references/source-index.md +6 -82
  27. package/template/.agents/skills/yss-dto/SKILL.md +2 -2
  28. package/template/.agents/skills/yss-dto/references/source-index.boot2-java8.md +67 -0
  29. package/template/.agents/skills/yss-dto/references/source-index.boot3-java17.md +70 -0
  30. package/template/.agents/skills/yss-dto/references/source-index.md +6 -51
  31. package/template/.agents/skills/yss-excel-mvc/SKILL.md +4 -0
  32. package/template/.agents/skills/yss-excel-mvc/references/source-index.boot2-java8.md +90 -0
  33. package/template/.agents/skills/yss-excel-mvc/references/source-index.boot3-java17.md +58 -0
  34. package/template/.agents/skills/yss-excel-mvc/references/source-index.md +6 -70
  35. package/template/.agents/skills/yss-exception/SKILL.md +12 -9
  36. package/template/.agents/skills/yss-exception/references/source-index.boot2-java8.md +50 -0
  37. package/template/.agents/skills/yss-exception/references/source-index.boot3-java17.md +50 -0
  38. package/template/.agents/skills/yss-exception/references/source-index.md +6 -31
  39. package/template/.agents/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  40. package/template/.agents/skills/yss-implementation-contract-compiler/references/boundaries.md +3 -5
  41. package/template/.agents/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +27 -2
  42. package/template/.agents/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +2 -1
  43. package/template/.agents/skills/yss-implementation-contract-compiler/tests/compiler-scenarios.test.mjs +60 -14
  44. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/SKILL.md +6 -5
  45. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +2 -2
  46. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/references/architecture.md +2 -0
  47. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/data-analysis-profile.mjs +82 -0
  48. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +23 -9
  49. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +30 -6
  50. package/template/.agents/skills/yss-layered-mvc-scaffold-generator/tests/scaffold-generator.test.mjs +2 -0
  51. package/template/.agents/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +5 -15
  52. package/template/.agents/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +9 -68
  53. package/template/.agents/skills/yss-mvc-design/SKILL.md +5 -9
  54. package/template/.agents/skills/yss-mvc-design/agents/openai.yaml +3 -3
  55. package/template/.agents/skills/yss-mybatis/SKILL.md +2 -2
  56. package/template/.agents/skills/yss-mybatis/references/source-index.boot2-java8.md +126 -0
  57. package/template/.agents/skills/yss-mybatis/references/source-index.boot3-java17.md +126 -0
  58. package/template/.agents/skills/yss-mybatis/references/source-index.md +6 -109
  59. package/template/.agents/skills/yss-product-lifecycle/references/orchestration-contract.yaml +10 -8
  60. package/template/.agents/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  61. package/template/.agents/skills/yss-repository/SKILL.md +1 -1
  62. package/template/.agents/skills/yss-resilience4j/SKILL.md +4 -0
  63. package/template/.agents/skills/yss-resilience4j/references/source-index.boot2-java8.md +48 -0
  64. package/template/.agents/skills/yss-resilience4j/references/source-index.boot3-java17.md +48 -0
  65. package/template/.agents/skills/yss-resilience4j/references/source-index.md +6 -29
  66. package/template/.agents/skills/yss-security-algorithm/SKILL.md +34 -10
  67. package/template/.agents/skills/yss-security-algorithm/references/source-index.boot2-java8.md +50 -0
  68. package/template/.agents/skills/yss-security-algorithm/references/source-index.boot3-java17.md +51 -0
  69. package/template/.agents/skills/yss-security-algorithm/references/source-index.md +6 -31
  70. package/template/.agents/skills/yss-skill-source-index-refresh/SKILL.md +12 -6
  71. package/template/.agents/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +27 -0
  72. package/template/.agents/skills/yss-skill-source-index-refresh/references/source-location.md +4 -4
  73. package/template/.agents/skills/yss-skill-source-index-refresh/references/source-map-config.md +10 -3
  74. package/template/.agents/skills/yss-skill-source-index-refresh/scripts/check-backend-skill-source-index.mjs +60 -0
  75. package/template/.agents/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +247 -54
  76. package/template/.agents/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +74 -7
  77. package/template/.agents/skills/yss-tactical-design/SKILL.md +1 -1
  78. package/template/.agents/skills/yss-tactical-design/references/output-template.md +1 -1
  79. package/template/.agents/skills/yss-technical-design/SKILL.md +3 -1
  80. package/template/.agents/skills/yss-technical-design/references/mvc-design.schema.json +315 -0
  81. package/template/.agents/skills/yss-technical-design/references/technical-design-contract.md +1 -1
  82. package/template/.agents/skills/yss-technical-design/scripts/generate-schema.mjs +1 -1
  83. package/template/.agents/skills/yss-technical-design/tests/run-scenarios.mjs +4 -1
  84. package/template/.agents/skills/yss-up-springboot3/SKILL.md +23 -9
  85. package/template/.agents/skills/yss-userinfo/SKILL.md +21 -14
  86. package/template/.agents/skills/yss-userinfo/references/source-index.boot2-java8.md +49 -0
  87. package/template/.agents/skills/yss-userinfo/references/source-index.boot3-java17.md +54 -0
  88. package/template/.agents/skills/yss-userinfo/references/source-index.md +6 -30
  89. package/template/.agents/skills/yss-validation/SKILL.md +12 -17
  90. package/template/.agents/skills/yss-validation/references/source-index.boot2-java8.md +47 -0
  91. package/template/.agents/skills/yss-validation/references/source-index.boot3-java17.md +47 -0
  92. package/template/.agents/skills/yss-validation/references/source-index.md +6 -29
  93. package/template/.agents/skills/yss-web-controller/SKILL.md +4 -4
  94. package/template/.agents/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  95. package/template/.codex/skills/yss-application/SKILL.md +8 -6
  96. package/template/.codex/skills/yss-audit-log/SKILL.md +12 -7
  97. package/template/.codex/skills/yss-audit-log/references/source-index.boot2-java8.md +57 -0
  98. package/template/.codex/skills/yss-audit-log/references/source-index.boot3-java17.md +58 -0
  99. package/template/.codex/skills/yss-audit-log/references/source-index.md +6 -39
  100. package/template/.codex/skills/yss-cache/SKILL.md +5 -1
  101. package/template/.codex/skills/yss-cache/references/source-index.boot2-java8.md +81 -0
  102. package/template/.codex/skills/yss-cache/references/source-index.boot3-java17.md +83 -0
  103. package/template/.codex/skills/yss-cache/references/source-index.md +6 -63
  104. package/template/.codex/skills/yss-cache/scripts/check-skill-freshness.sh +20 -15
  105. package/template/.codex/skills/yss-ddd-scaffold-generator/SKILL.md +2 -2
  106. package/template/.codex/skills/yss-ddd-scaffold-generator/references/engineering-baseline.md +53 -0
  107. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +5 -51
  108. package/template/.codex/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/agents/openai.yaml +3 -3
  109. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +1 -1
  110. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +2 -2
  111. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +2 -3
  112. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  113. package/template/.codex/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +1 -1
  114. package/template/.codex/skills/yss-distributed-id/SKILL.md +4 -0
  115. package/template/.codex/skills/yss-distributed-id/references/source-index.boot2-java8.md +102 -0
  116. package/template/.codex/skills/yss-distributed-id/references/source-index.boot3-java17.md +90 -0
  117. package/template/.codex/skills/yss-distributed-id/references/source-index.md +6 -82
  118. package/template/.codex/skills/yss-dto/SKILL.md +2 -2
  119. package/template/.codex/skills/yss-dto/references/source-index.boot2-java8.md +67 -0
  120. package/template/.codex/skills/yss-dto/references/source-index.boot3-java17.md +70 -0
  121. package/template/.codex/skills/yss-dto/references/source-index.md +6 -51
  122. package/template/.codex/skills/yss-excel-mvc/SKILL.md +4 -0
  123. package/template/.codex/skills/yss-excel-mvc/references/source-index.boot2-java8.md +90 -0
  124. package/template/.codex/skills/yss-excel-mvc/references/source-index.boot3-java17.md +58 -0
  125. package/template/.codex/skills/yss-excel-mvc/references/source-index.md +6 -70
  126. package/template/.codex/skills/yss-exception/SKILL.md +12 -9
  127. package/template/.codex/skills/yss-exception/references/source-index.boot2-java8.md +50 -0
  128. package/template/.codex/skills/yss-exception/references/source-index.boot3-java17.md +50 -0
  129. package/template/.codex/skills/yss-exception/references/source-index.md +6 -31
  130. package/template/.codex/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  131. package/template/.codex/skills/yss-implementation-contract-compiler/references/boundaries.md +3 -5
  132. package/template/.codex/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +27 -2
  133. package/template/.codex/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +2 -1
  134. package/template/.codex/skills/yss-implementation-contract-compiler/tests/compiler-scenarios.test.mjs +60 -14
  135. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/SKILL.md +6 -5
  136. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +2 -2
  137. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/references/architecture.md +2 -0
  138. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/data-analysis-profile.mjs +82 -0
  139. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +23 -9
  140. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +30 -6
  141. package/template/.codex/skills/yss-layered-mvc-scaffold-generator/tests/scaffold-generator.test.mjs +2 -0
  142. package/template/.codex/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +5 -15
  143. package/template/.codex/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +9 -68
  144. package/template/.codex/skills/yss-mvc-design/SKILL.md +5 -9
  145. package/template/.codex/skills/yss-mvc-design/agents/openai.yaml +3 -3
  146. package/template/.codex/skills/yss-mybatis/SKILL.md +2 -2
  147. package/template/.codex/skills/yss-mybatis/references/source-index.boot2-java8.md +126 -0
  148. package/template/.codex/skills/yss-mybatis/references/source-index.boot3-java17.md +126 -0
  149. package/template/.codex/skills/yss-mybatis/references/source-index.md +6 -109
  150. package/template/.codex/skills/yss-product-lifecycle/references/orchestration-contract.yaml +10 -8
  151. package/template/.codex/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  152. package/template/.codex/skills/yss-repository/SKILL.md +1 -1
  153. package/template/.codex/skills/yss-resilience4j/SKILL.md +4 -0
  154. package/template/.codex/skills/yss-resilience4j/references/source-index.boot2-java8.md +48 -0
  155. package/template/.codex/skills/yss-resilience4j/references/source-index.boot3-java17.md +48 -0
  156. package/template/.codex/skills/yss-resilience4j/references/source-index.md +6 -29
  157. package/template/.codex/skills/yss-security-algorithm/SKILL.md +34 -10
  158. package/template/.codex/skills/yss-security-algorithm/references/source-index.boot2-java8.md +50 -0
  159. package/template/.codex/skills/yss-security-algorithm/references/source-index.boot3-java17.md +51 -0
  160. package/template/.codex/skills/yss-security-algorithm/references/source-index.md +6 -31
  161. package/template/.codex/skills/yss-skill-source-index-refresh/SKILL.md +12 -6
  162. package/template/.codex/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +27 -0
  163. package/template/.codex/skills/yss-skill-source-index-refresh/references/source-location.md +4 -4
  164. package/template/.codex/skills/yss-skill-source-index-refresh/references/source-map-config.md +10 -3
  165. package/template/.codex/skills/yss-skill-source-index-refresh/scripts/check-backend-skill-source-index.mjs +60 -0
  166. package/template/.codex/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +247 -54
  167. package/template/.codex/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +74 -7
  168. package/template/.codex/skills/yss-tactical-design/SKILL.md +1 -1
  169. package/template/.codex/skills/yss-tactical-design/references/output-template.md +1 -1
  170. package/template/.codex/skills/yss-technical-design/SKILL.md +3 -1
  171. package/template/.codex/skills/yss-technical-design/references/mvc-design.schema.json +315 -0
  172. package/template/.codex/skills/yss-technical-design/references/technical-design-contract.md +1 -1
  173. package/template/.codex/skills/yss-technical-design/scripts/generate-schema.mjs +1 -1
  174. package/template/.codex/skills/yss-technical-design/tests/run-scenarios.mjs +4 -1
  175. package/template/.codex/skills/yss-up-springboot3/SKILL.md +23 -9
  176. package/template/.codex/skills/yss-userinfo/SKILL.md +21 -14
  177. package/template/.codex/skills/yss-userinfo/references/source-index.boot2-java8.md +49 -0
  178. package/template/.codex/skills/yss-userinfo/references/source-index.boot3-java17.md +54 -0
  179. package/template/.codex/skills/yss-userinfo/references/source-index.md +6 -30
  180. package/template/.codex/skills/yss-validation/SKILL.md +12 -17
  181. package/template/.codex/skills/yss-validation/references/source-index.boot2-java8.md +47 -0
  182. package/template/.codex/skills/yss-validation/references/source-index.boot3-java17.md +47 -0
  183. package/template/.codex/skills/yss-validation/references/source-index.md +6 -29
  184. package/template/.codex/skills/yss-web-controller/SKILL.md +4 -4
  185. package/template/.codex/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  186. package/template/.cursor/skills/yss-application/SKILL.md +8 -6
  187. package/template/.cursor/skills/yss-audit-log/SKILL.md +12 -7
  188. package/template/.cursor/skills/yss-audit-log/references/source-index.boot2-java8.md +57 -0
  189. package/template/.cursor/skills/yss-audit-log/references/source-index.boot3-java17.md +58 -0
  190. package/template/.cursor/skills/yss-audit-log/references/source-index.md +6 -39
  191. package/template/.cursor/skills/yss-cache/SKILL.md +5 -1
  192. package/template/.cursor/skills/yss-cache/references/source-index.boot2-java8.md +81 -0
  193. package/template/.cursor/skills/yss-cache/references/source-index.boot3-java17.md +83 -0
  194. package/template/.cursor/skills/yss-cache/references/source-index.md +6 -63
  195. package/template/.cursor/skills/yss-cache/scripts/check-skill-freshness.sh +20 -15
  196. package/template/.cursor/skills/yss-ddd-scaffold-generator/SKILL.md +2 -2
  197. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/engineering-baseline.md +53 -0
  198. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +5 -51
  199. package/template/.cursor/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/agents/openai.yaml +3 -3
  200. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +1 -1
  201. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +2 -2
  202. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +2 -3
  203. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  204. package/template/.cursor/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +1 -1
  205. package/template/.cursor/skills/yss-distributed-id/SKILL.md +4 -0
  206. package/template/.cursor/skills/yss-distributed-id/references/source-index.boot2-java8.md +102 -0
  207. package/template/.cursor/skills/yss-distributed-id/references/source-index.boot3-java17.md +90 -0
  208. package/template/.cursor/skills/yss-distributed-id/references/source-index.md +6 -82
  209. package/template/.cursor/skills/yss-dto/SKILL.md +2 -2
  210. package/template/.cursor/skills/yss-dto/references/source-index.boot2-java8.md +67 -0
  211. package/template/.cursor/skills/yss-dto/references/source-index.boot3-java17.md +70 -0
  212. package/template/.cursor/skills/yss-dto/references/source-index.md +6 -51
  213. package/template/.cursor/skills/yss-excel-mvc/SKILL.md +4 -0
  214. package/template/.cursor/skills/yss-excel-mvc/references/source-index.boot2-java8.md +90 -0
  215. package/template/.cursor/skills/yss-excel-mvc/references/source-index.boot3-java17.md +58 -0
  216. package/template/.cursor/skills/yss-excel-mvc/references/source-index.md +6 -70
  217. package/template/.cursor/skills/yss-exception/SKILL.md +12 -9
  218. package/template/.cursor/skills/yss-exception/references/source-index.boot2-java8.md +50 -0
  219. package/template/.cursor/skills/yss-exception/references/source-index.boot3-java17.md +50 -0
  220. package/template/.cursor/skills/yss-exception/references/source-index.md +6 -31
  221. package/template/.cursor/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  222. package/template/.cursor/skills/yss-implementation-contract-compiler/references/boundaries.md +3 -5
  223. package/template/.cursor/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +27 -2
  224. package/template/.cursor/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +2 -1
  225. package/template/.cursor/skills/yss-implementation-contract-compiler/tests/compiler-scenarios.test.mjs +60 -14
  226. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/SKILL.md +6 -5
  227. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +2 -2
  228. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/references/architecture.md +2 -0
  229. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/data-analysis-profile.mjs +82 -0
  230. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +23 -9
  231. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +30 -6
  232. package/template/.cursor/skills/yss-layered-mvc-scaffold-generator/tests/scaffold-generator.test.mjs +2 -0
  233. package/template/.cursor/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +5 -15
  234. package/template/.cursor/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +9 -68
  235. package/template/.cursor/skills/yss-mvc-design/SKILL.md +5 -9
  236. package/template/.cursor/skills/yss-mvc-design/agents/openai.yaml +3 -3
  237. package/template/.cursor/skills/yss-mybatis/SKILL.md +2 -2
  238. package/template/.cursor/skills/yss-mybatis/references/source-index.boot2-java8.md +126 -0
  239. package/template/.cursor/skills/yss-mybatis/references/source-index.boot3-java17.md +126 -0
  240. package/template/.cursor/skills/yss-mybatis/references/source-index.md +6 -109
  241. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration-contract.yaml +10 -8
  242. package/template/.cursor/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  243. package/template/.cursor/skills/yss-repository/SKILL.md +1 -1
  244. package/template/.cursor/skills/yss-resilience4j/SKILL.md +4 -0
  245. package/template/.cursor/skills/yss-resilience4j/references/source-index.boot2-java8.md +48 -0
  246. package/template/.cursor/skills/yss-resilience4j/references/source-index.boot3-java17.md +48 -0
  247. package/template/.cursor/skills/yss-resilience4j/references/source-index.md +6 -29
  248. package/template/.cursor/skills/yss-security-algorithm/SKILL.md +34 -10
  249. package/template/.cursor/skills/yss-security-algorithm/references/source-index.boot2-java8.md +50 -0
  250. package/template/.cursor/skills/yss-security-algorithm/references/source-index.boot3-java17.md +51 -0
  251. package/template/.cursor/skills/yss-security-algorithm/references/source-index.md +6 -31
  252. package/template/.cursor/skills/yss-skill-source-index-refresh/SKILL.md +12 -6
  253. package/template/.cursor/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +27 -0
  254. package/template/.cursor/skills/yss-skill-source-index-refresh/references/source-location.md +4 -4
  255. package/template/.cursor/skills/yss-skill-source-index-refresh/references/source-map-config.md +10 -3
  256. package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/check-backend-skill-source-index.mjs +60 -0
  257. package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +247 -54
  258. package/template/.cursor/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +74 -7
  259. package/template/.cursor/skills/yss-tactical-design/SKILL.md +1 -1
  260. package/template/.cursor/skills/yss-tactical-design/references/output-template.md +1 -1
  261. package/template/.cursor/skills/yss-technical-design/SKILL.md +3 -1
  262. package/template/.cursor/skills/yss-technical-design/references/mvc-design.schema.json +315 -0
  263. package/template/.cursor/skills/yss-technical-design/references/technical-design-contract.md +1 -1
  264. package/template/.cursor/skills/yss-technical-design/scripts/generate-schema.mjs +1 -1
  265. package/template/.cursor/skills/yss-technical-design/tests/run-scenarios.mjs +4 -1
  266. package/template/.cursor/skills/yss-up-springboot3/SKILL.md +23 -9
  267. package/template/.cursor/skills/yss-userinfo/SKILL.md +21 -14
  268. package/template/.cursor/skills/yss-userinfo/references/source-index.boot2-java8.md +49 -0
  269. package/template/.cursor/skills/yss-userinfo/references/source-index.boot3-java17.md +54 -0
  270. package/template/.cursor/skills/yss-userinfo/references/source-index.md +6 -30
  271. package/template/.cursor/skills/yss-validation/SKILL.md +12 -17
  272. package/template/.cursor/skills/yss-validation/references/source-index.boot2-java8.md +47 -0
  273. package/template/.cursor/skills/yss-validation/references/source-index.boot3-java17.md +47 -0
  274. package/template/.cursor/skills/yss-validation/references/source-index.md +6 -29
  275. package/template/.cursor/skills/yss-web-controller/SKILL.md +4 -4
  276. package/template/.cursor/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  277. package/template/.pi/skills/yss-application/SKILL.md +8 -6
  278. package/template/.pi/skills/yss-audit-log/SKILL.md +12 -7
  279. package/template/.pi/skills/yss-audit-log/references/source-index.boot2-java8.md +57 -0
  280. package/template/.pi/skills/yss-audit-log/references/source-index.boot3-java17.md +58 -0
  281. package/template/.pi/skills/yss-audit-log/references/source-index.md +6 -39
  282. package/template/.pi/skills/yss-cache/SKILL.md +5 -1
  283. package/template/.pi/skills/yss-cache/references/source-index.boot2-java8.md +81 -0
  284. package/template/.pi/skills/yss-cache/references/source-index.boot3-java17.md +83 -0
  285. package/template/.pi/skills/yss-cache/references/source-index.md +6 -63
  286. package/template/.pi/skills/yss-cache/scripts/check-skill-freshness.sh +20 -15
  287. package/template/.pi/skills/yss-ddd-scaffold-generator/SKILL.md +2 -2
  288. package/template/.pi/skills/yss-ddd-scaffold-generator/references/engineering-baseline.md +53 -0
  289. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/SKILL.md +5 -51
  290. package/template/.pi/skills/yss-ddd-scaffold-generator/references/yss-backend-scaffold-parent/agents/openai.yaml +3 -3
  291. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/first-slice-verification.test.mjs +1 -1
  292. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/generate_scaffold.mjs +2 -2
  293. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_first_slice_verification.mjs +2 -3
  294. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/run_scaffold_verification.mjs +1 -1
  295. package/template/.pi/skills/yss-ddd-scaffold-generator/scripts/scaffold-generator.test.mjs +1 -1
  296. package/template/.pi/skills/yss-distributed-id/SKILL.md +4 -0
  297. package/template/.pi/skills/yss-distributed-id/references/source-index.boot2-java8.md +102 -0
  298. package/template/.pi/skills/yss-distributed-id/references/source-index.boot3-java17.md +90 -0
  299. package/template/.pi/skills/yss-distributed-id/references/source-index.md +6 -82
  300. package/template/.pi/skills/yss-dto/SKILL.md +2 -2
  301. package/template/.pi/skills/yss-dto/references/source-index.boot2-java8.md +67 -0
  302. package/template/.pi/skills/yss-dto/references/source-index.boot3-java17.md +70 -0
  303. package/template/.pi/skills/yss-dto/references/source-index.md +6 -51
  304. package/template/.pi/skills/yss-excel-mvc/SKILL.md +4 -0
  305. package/template/.pi/skills/yss-excel-mvc/references/source-index.boot2-java8.md +90 -0
  306. package/template/.pi/skills/yss-excel-mvc/references/source-index.boot3-java17.md +58 -0
  307. package/template/.pi/skills/yss-excel-mvc/references/source-index.md +6 -70
  308. package/template/.pi/skills/yss-exception/SKILL.md +12 -9
  309. package/template/.pi/skills/yss-exception/references/source-index.boot2-java8.md +50 -0
  310. package/template/.pi/skills/yss-exception/references/source-index.boot3-java17.md +50 -0
  311. package/template/.pi/skills/yss-exception/references/source-index.md +6 -31
  312. package/template/.pi/skills/yss-implementation-contract-compiler/SKILL.md +2 -0
  313. package/template/.pi/skills/yss-implementation-contract-compiler/references/boundaries.md +3 -5
  314. package/template/.pi/skills/yss-implementation-contract-compiler/references/compiler-contract.yaml +27 -2
  315. package/template/.pi/skills/yss-implementation-contract-compiler/references/yss-skill-execution-result.md +2 -1
  316. package/template/.pi/skills/yss-implementation-contract-compiler/tests/compiler-scenarios.test.mjs +60 -14
  317. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/SKILL.md +6 -5
  318. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/agents/openai.yaml +2 -2
  319. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/references/architecture.md +2 -0
  320. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/data-analysis-profile.mjs +82 -0
  321. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/generate_scaffold.mjs +23 -9
  322. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/scripts/scaffold-generator.test.mjs +30 -6
  323. package/template/.pi/skills/yss-layered-mvc-scaffold-generator/tests/scaffold-generator.test.mjs +2 -0
  324. package/template/.pi/skills/yss-mvc-data-analysis-project-initializer/SKILL.md +5 -15
  325. package/template/.pi/skills/yss-mvc-data-analysis-project-initializer/scripts/generate_project.mjs +9 -68
  326. package/template/.pi/skills/yss-mvc-design/SKILL.md +5 -9
  327. package/template/.pi/skills/yss-mvc-design/agents/openai.yaml +3 -3
  328. package/template/.pi/skills/yss-mybatis/SKILL.md +2 -2
  329. package/template/.pi/skills/yss-mybatis/references/source-index.boot2-java8.md +126 -0
  330. package/template/.pi/skills/yss-mybatis/references/source-index.boot3-java17.md +126 -0
  331. package/template/.pi/skills/yss-mybatis/references/source-index.md +6 -109
  332. package/template/.pi/skills/yss-product-lifecycle/references/orchestration-contract.yaml +10 -8
  333. package/template/.pi/skills/yss-product-lifecycle/references/orchestration.md +2 -2
  334. package/template/.pi/skills/yss-repository/SKILL.md +1 -1
  335. package/template/.pi/skills/yss-resilience4j/SKILL.md +4 -0
  336. package/template/.pi/skills/yss-resilience4j/references/source-index.boot2-java8.md +48 -0
  337. package/template/.pi/skills/yss-resilience4j/references/source-index.boot3-java17.md +48 -0
  338. package/template/.pi/skills/yss-resilience4j/references/source-index.md +6 -29
  339. package/template/.pi/skills/yss-security-algorithm/SKILL.md +34 -10
  340. package/template/.pi/skills/yss-security-algorithm/references/source-index.boot2-java8.md +50 -0
  341. package/template/.pi/skills/yss-security-algorithm/references/source-index.boot3-java17.md +51 -0
  342. package/template/.pi/skills/yss-security-algorithm/references/source-index.md +6 -31
  343. package/template/.pi/skills/yss-skill-source-index-refresh/SKILL.md +12 -6
  344. package/template/.pi/skills/yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md +27 -0
  345. package/template/.pi/skills/yss-skill-source-index-refresh/references/source-location.md +4 -4
  346. package/template/.pi/skills/yss-skill-source-index-refresh/references/source-map-config.md +10 -3
  347. package/template/.pi/skills/yss-skill-source-index-refresh/scripts/check-backend-skill-source-index.mjs +60 -0
  348. package/template/.pi/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs +247 -54
  349. package/template/.pi/skills/yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.test.mjs +74 -7
  350. package/template/.pi/skills/yss-tactical-design/SKILL.md +1 -1
  351. package/template/.pi/skills/yss-tactical-design/references/output-template.md +1 -1
  352. package/template/.pi/skills/yss-technical-design/SKILL.md +3 -1
  353. package/template/.pi/skills/yss-technical-design/references/mvc-design.schema.json +315 -0
  354. package/template/.pi/skills/yss-technical-design/references/technical-design-contract.md +1 -1
  355. package/template/.pi/skills/yss-technical-design/scripts/generate-schema.mjs +1 -1
  356. package/template/.pi/skills/yss-technical-design/tests/run-scenarios.mjs +4 -1
  357. package/template/.pi/skills/yss-up-springboot3/SKILL.md +23 -9
  358. package/template/.pi/skills/yss-userinfo/SKILL.md +21 -14
  359. package/template/.pi/skills/yss-userinfo/references/source-index.boot2-java8.md +49 -0
  360. package/template/.pi/skills/yss-userinfo/references/source-index.boot3-java17.md +54 -0
  361. package/template/.pi/skills/yss-userinfo/references/source-index.md +6 -30
  362. package/template/.pi/skills/yss-validation/SKILL.md +12 -17
  363. package/template/.pi/skills/yss-validation/references/source-index.boot2-java8.md +47 -0
  364. package/template/.pi/skills/yss-validation/references/source-index.boot3-java17.md +47 -0
  365. package/template/.pi/skills/yss-validation/references/source-index.md +6 -29
  366. package/template/.pi/skills/yss-web-controller/SKILL.md +4 -4
  367. package/template/.pi/skills/yss-web-controller/scripts/generate_controller.test.mjs +1 -1
  368. package/template/docs/agents/backend-architecture-profiles.md +1 -1
  369. package/template/docs/agents/digital-human-roles.yaml +1 -1
  370. package/template/docs/agents/skill-migrations.md +23 -0
  371. package/template/docs/agents/yss-skill-registry.yaml +109 -40
  372. package/template/docs/api/templates/openapi-draft-review-checklist.md +1 -1
  373. package/template/docs/architecture/templates/engineering-baseline-review-template.md +3 -3
  374. package/template/docs/architecture/templates/system-overview-design-template.md +1 -1
  375. package/template/docs/engineering/backend-platforms.json +662 -9
  376. package/template/docs/engineering/backend-platforms.md +33 -7
  377. package/template/docs/process/schemas/backend-architecture-identity.schema.json +102 -0
  378. package/template/docs/process/schemas/project-scaffold-contract.schema.json +16 -4
  379. package/template/docs/process/schemas/scaffold-architecture-decisions.schema.json +7 -0
  380. package/template/docs/process/schemas/slice-implementation-contract-v3.schema.json +143 -0
  381. package/template/docs/process/strategic-handoff-package.md +1 -1
  382. package/template/docs/templates/implementation-routing-template.md +1 -1
  383. package/template/docs/user-guide//346/212/200/346/234/257/350/256/276/350/256/241/347/224/250/346/210/267/346/214/207/345/215/227.md +2 -2
  384. package/template/scripts/backend-platforms +77 -8
  385. package/template/scripts/lib/backend-platform.mjs +232 -5
  386. package/template/scripts/lib/existing-backend-architecture.mjs +3 -2
  387. package/template/scripts/lib/implementation-contract-compiler.mjs +93 -9
  388. package/template/scripts/lib/skill-registry.mjs +165 -12
  389. package/template/scripts/lib/slice-contract-preparation.mjs +6 -5
  390. package/template/scripts/verify-backend-platform-matrix +1 -1
  391. package/template/skills-lock.json +29 -29
  392. package/template.snapshot.json +4 -4
@@ -1,74 +1,10 @@
1
- # yss-excel-mvc Source Index
1
+ # yss-excel-mvc Source Index Router
2
2
 
3
- Generated: 2026-08-17T12:03:37.436Z
4
- Source commit: `38b556a5081e6c66c0c538cbc1ef839b19996ed3`
5
- Source worktree: `dirty`
6
- Indexed source root: resolved at refresh time; set `YSS_SOURCE_ROOT` to reproduce or refresh.
3
+ Index schema: `backend-component-source-index-router-v1`
7
4
 
8
- This file is generated by `yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs`. Do not hand-edit generated sections.
5
+ Select the source index from the approved `platform_configuration.component_platform_line`; do not infer a line from imports, a branch name or a requested upgrade.
9
6
 
10
- Paths below are source path hints captured at refresh time. If they do not exist in the current workspace, locate sources using `YSS_SOURCE_ROOT`, CodeGraph, package/class names, Maven artifact names, or repository search before assuming the source is unavailable.
7
+ - `boot2-java8` — [Spring Boot 2.7 / Java 8 maintenance line](source-index.boot2-java8.md)
8
+ - `boot3-java17` — [Spring Boot 3.5 / Java 17 mainline](source-index.boot3-java17.md)
11
9
 
12
- ## Component Path Hints
13
-
14
- - `yss-microservice-components/yss-component-excel-mvc` (existed when indexed)
15
- - `yss-microservice-components/yss-component-excel-starter` (existed when indexed)
16
-
17
- ## Documentation Files
18
-
19
- - `yss-microservice-components/yss-component-excel-mvc/README.md`
20
-
21
- ## Maven Modules
22
-
23
- - `yss-microservice-components/yss-component-excel-mvc`
24
- - `yss-microservice-components/yss-component-excel-starter`
25
-
26
- ## Key Java Entry Points
27
-
28
- - `yss-microservice-components/yss-component-excel-mvc/src/main/java/com/yss/excel/mvc/annotation/EnableExcelMvc.java`
29
- - `yss-microservice-components/yss-component-excel-mvc/src/main/java/com/yss/excel/mvc/annotation/RequestExcel.java`
30
- - `yss-microservice-components/yss-component-excel-mvc/src/main/java/com/yss/excel/mvc/annotation/ResponseExcel.java`
31
- - `yss-microservice-components/yss-component-excel-mvc/src/main/java/com/yss/excel/mvc/config/FastExcelAutoConfiguration.java`
32
- - `yss-microservice-components/yss-component-excel-mvc/src/main/java/com/yss/excel/mvc/exception/ExcelDataValidationData.java`
33
- - `yss-microservice-components/yss-component-excel-mvc/src/main/java/com/yss/excel/mvc/exception/ExcelDataValidationException.java`
34
- - `yss-microservice-components/yss-component-excel-mvc/src/main/java/com/yss/excel/mvc/exception/ExcelMvcExceptionHandler.java`
35
- - `yss-microservice-components/yss-component-excel-mvc/src/main/java/com/yss/excel/mvc/handler/RequestFastExcelArgumentResolver.java`
36
- - `yss-microservice-components/yss-component-excel-mvc/src/main/java/com/yss/excel/mvc/handler/ResponseFastExcelReturnValueHandler.java`
37
- - `yss-microservice-components/yss-component-excel-mvc/src/main/java/com/yss/excel/mvc/model/ExcelDynamicData.java`
38
- - `yss-microservice-components/yss-component-excel-mvc/src/main/java/com/yss/excel/mvc/util/ExcelUtils.java`
39
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/ExcelAutoConfiguration.java`
40
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/ExcelControlProperties.java`
41
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/ExcelDataRequest.java`
42
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/ExcelResolverConfiguration.java`
43
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/annotation/EnableExcelControl.java`
44
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/annotation/ExcelDynamicSelect.java`
45
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/annotation/ExcelMeta.java`
46
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/annotation/ExcelNotation.java`
47
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/annotation/ExcelSelected.java`
48
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/annotation/RequestExcel.java`
49
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/annotation/ResponseExcel.java`
50
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/aop/DynamicExcelAspect.java`
51
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/handler/DynamicEasyHandler.java`
52
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/handler/ExcelCellWidthStyleStrategy.java`
53
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/handler/RequestExcelArgumentResolver.java`
54
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/handler/ResponseExcelReturnHandler.java`
55
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/handler/SelectedSheetWriteHandler.java`
56
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/handler/TitleHandler.java`
57
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/handler/WorkbookExcelWriteBuilder.java`
58
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/model/ExcelComment.java`
59
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/model/ExcelGeneralData.java`
60
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/model/ExcelMetaData.java`
61
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/model/ExcelSelectedResolve.java`
62
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/model/RowValidationInfo.java`
63
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/model/excel/CellType.java`
64
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/model/excel/ExcelCellStyle.java`
65
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/model/excel/ExcelColHeader.java`
66
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/model/excel/ExcelDisabled.java`
67
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/processor/DynamicEasyExcelProcessor.java`
68
- - `yss-microservice-components/yss-component-excel-starter/src/main/java/com/yss/cloud/excel/processor/ExcelStyleParseProcessor.java`
69
-
70
- ## Recommended Next Reads
71
-
72
- - Start with the documentation files above when learning component usage.
73
- - Search the key Java entry points for annotations, auto configuration, properties, aspects, interceptors, handlers, and result objects before changing application code.
74
- - Prefer existing component extension points over rewriting framework logic in business modules.
10
+ Run the freshness checker with the same explicit `--platform-line` and its matching clean source root before exact integration guidance.
@@ -27,12 +27,14 @@ Read `references/source-index.md` as a path-hint index whenever the task depends
27
27
  6. In the `target-domain-model` profile, Domain owns stable error meaning and parameters but does not depend directly on YSS `BizException` or HTTP. Translate at the Web boundary after verifying the component handler precedence.
28
28
  7. MVC Profile 的稳定业务错误归 service/core;Repository 保留 cause;server 持有 HTTP 映射与脱敏。不要为了复用错误码引入 Domain 层或让 core 依赖 client。分层依据 `docs/agents/backend-architecture-profiles.md`。
29
29
 
30
- ## Current Source Behavior
30
+ ## Boot 3 Current Source Behavior
31
31
 
32
- - `GlobalExceptionAdvice` currently maps BizException, unknown Exception, and RuntimeException to HTTP 400; the OpenAPI error contract must reflect or deliberately override that behavior.
33
- - The current RuntimeException handler returns `exception.getLocalizedMessage()` for many runtime failures; treat that as a response-information-leak risk and do not copy it into new APIs without an approved, sanitized error mapping.
34
- - `yss.exception.level` only controls a direct `printStackTrace()` branch when its value is exactly `debug`; it is not a general response-format switch.
35
- - Validation binding failures currently become `SysException(PARAM_VALIDATION_ERROR)`. Coordinate changes with `yss-validation` and contract tests.
32
+ - 以下当前行为针对 `boot3-java17`;Boot 2 旧工程必须读取其独立索引,旧行为只用于迁移识别。
33
+ - `GlobalExceptionAdvice` maps `BizException` to HTTP 400. Unknown `Exception`, `RuntimeException`, and `NullPointerException` map to HTTP 500 and return a sanitized `SysException` with `ResultErrorCode.INTERNAL_ERROR` instead of raw exception text.
34
+ - `MaxUploadSizeExceededException` maps to HTTP 413 (`PAYLOAD_TOO_LARGE`) with `ResultErrorCode.MAX_UPLOAD_SIZE_EXCEEDED`.
35
+ - System and unknown failures are recorded with the SLF4J logger. `yss.exception.level=debug` adds a logger-backed debug stack trace; it never calls `Throwable#printStackTrace()`.
36
+ - Every handled response attaches or reuses a trace id in MDC and exposes it through the `X-Trace-Id` response header. The public body does not contain the raw localized exception or stack trace.
37
+ - Validation binding failures become `SysException(PARAM_VALIDATION_ERROR)`. Coordinate changes with `yss-validation` and contract tests.
36
38
 
37
39
  ## Source-Backed Exception Semantics
38
40
 
@@ -45,11 +47,12 @@ Read `references/source-index.md` as a path-hint index whenever the task depends
45
47
  - Required dependency or starter module is present.
46
48
  - Error code/message are meaningful to API consumers.
47
49
  - Response messages are sanitized and do not expose raw RuntimeException or localized exception details.
50
+ - HTTP assertions cover business 4xx, unknown/runtime 5xx, upload 413, and `X-Trace-Id`.
48
51
  - Business validation failures are not reported as unknown system errors.
49
- - Stack traces are preserved for unknown/system failures.
52
+ - Stack traces are preserved in structured logger output for unknown/system failures, never printed directly to stderr or serialized to clients.
50
53
  - Retry guidance matches exception type.
51
54
  - Known system failures use `ExceptionFactory.sysException(..., cause)`; Application code does not replace them with ad-hoc `RuntimeException`.
52
- - Endpoint contract tests cover business, known-system, and unknown/runtime failures; unknown public messages never expose `getLocalizedMessage()`.
55
+ - Endpoint contract tests cover business, known-system, unknown/runtime, and upload-limit failures; unknown public messages never expose `getLocalizedMessage()`.
53
56
 
54
57
  ## Do Not
55
58
 
@@ -57,6 +60,6 @@ Read `references/source-index.md` as a path-hint index whenever the task depends
57
60
  - Do not replace component extension points with business-local framework code.
58
61
  - Do not broaden the task into unrelated YSS components unless the user asks.
59
62
 
60
- ## 新脚手架平台约束
63
+ ## 平台与源码门禁
61
64
 
62
- 消费批准切片架构身份中的 `platform_configuration`,与工程 Manifest 核对后使用对应 YSS 组件。Boot 2.7 使用 `javax` Web/Validation API;Boot 3.5/4.1 使用 `jakarta`。Boot 4 按 Jackson 3、对应自动配置和 starter 适配;不替换 `javax.sql` 等 Java SE 包。平台不一致、兼容条目缺失或候选未验证时回合同编译器阻断,不在业务实现中升级或替换组件。详见 仓库共享合同 `docs/engineering/backend-platforms.md`。
65
+ 接入、修改、代码生成或给出精确类名/配置前,读取 [后端组件平台与源码门禁](../yss-skill-source-index-refresh/references/backend-component-platform-compatibility.md),从批准的 `platform_configuration.component_platform_line` 选择 `source-index.boot2-java8.md` 或 `source-index.boot3-java17.md`,并以 `--skill yss-exception --platform-line <line> --source-root <matching-root>` 运行统一 freshness 校验。平台线与源码根不匹配、组件 tree 不一致、组件子树 dirty、索引缺少平台信号,或 Manifest / 组件 GAV 缺少 verified 兼容证据时返回 `blocked`;不得回退另一代索引,也不在业务实现中升级、降级或替换 YSS 组件。既有工程只读分诊可继续,但不得据此宣称跨 Boot/JDK 兼容。
@@ -0,0 +1,50 @@
1
+ # yss-exception Source Index
2
+
3
+ Index schema: `backend-component-source-index-v2`
4
+ Platform line: `boot2-java8`
5
+ Generated: 2026-09-18T18:40:26.031Z
6
+ Source commit: `a3be2b2e33dca4545782e2b31894aaa00d0305cd`
7
+ Component worktree: `clean`
8
+ Component tree `yss-microservice-components/yss-component-exception`: `e5d71e213f26cd7e52d419ded1c2f5e7b7fbf40b`
9
+ Indexed source root: resolved at refresh time; set `YSS_SOURCE_ROOT_BOOT2_JAVA8` to reproduce or refresh.
10
+
11
+ This file is generated by `yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs`. Do not hand-edit generated sections.
12
+
13
+ Paths are relocatable source hints. Exact guidance requires a matching component tree and a clean indexed component subtree; the repository commit is trace metadata and may differ when unrelated components change.
14
+
15
+ ## Component Path Hints
16
+
17
+ - `yss-microservice-components/yss-component-exception` (existed when indexed)
18
+
19
+ ## Documentation Files
20
+
21
+ - `yss-microservice-components/yss-component-exception/readme.md`
22
+
23
+ Component documentation is a discovery aid. For API signatures, conditions and defaults, prefer the indexed source facts below when documentation differs.
24
+
25
+ ## Maven Modules
26
+
27
+ - `yss-microservice-components/yss-component-exception/pom.xml` — GAV `com.yss.cloud:yss-component-exception:2.0.0-SNAPSHOT`; parent `com.yss.cloud:yss-microservice-components:2.0.0-SNAPSHOT`
28
+
29
+ ## Platform Signals
30
+
31
+ - Inherited Java signals: `1.8`.
32
+ - Inherited Spring Boot signals: `2.7.18`.
33
+ - Namespace source signals: `javax.*` in 1 main Java files; `jakarta.*` in 0 main Java files.
34
+ - Auto-configuration metadata: 1 `spring.factories`; 0 `AutoConfiguration.imports` files.
35
+ - These are source observations, not compatibility certification. Use the approved `platform_configuration` and verified compatibility evidence before integration or generation.
36
+
37
+ ## Key Java Entry Points
38
+
39
+ - `yss-microservice-components/yss-component-exception/src/main/java/com/yss/cloud/exception/ExceptionFactory.java` — `sha256:871070981022984dc5e991bcc6a250fb9fdda31efe94a6e151bd86dfebc7162b`
40
+ - `yss-microservice-components/yss-component-exception/src/main/java/com/yss/cloud/exception/ResultErrorCode.java` — `sha256:cfc1ce146b99ba5d938bdc6bfb80758582e0c80cf1e37472967d5fdc334b8f81`
41
+ - `yss-microservice-components/yss-component-exception/src/main/java/com/yss/cloud/exception/YssGlobalExceptionProperties.java` — `sha256:706136214248b90965feadced7940fde2f649e9d5f19a3953d55756a7f56ea84`
42
+ - `yss-microservice-components/yss-component-exception/src/main/java/com/yss/cloud/exception/advice/GlobalExceptionAdvice.java` — `sha256:c4233e0fdfccb63330fc82d26e4defd8fb8985ba04cc23d8fa3d0e2cbc0183b5`
43
+
44
+ ## Freshness and Use
45
+
46
+ - Locate the current source root using `YSS_SOURCE_ROOT_BOOT2_JAVA8`, CodeGraph, Maven artifact names or repository search.
47
+ - Compare each indexed `Component tree` with `git rev-parse HEAD:<component-path>` and require the current component subtree to be clean before exact guidance.
48
+ - Run `node ../yss-skill-source-index-refresh/scripts/check-backend-skill-source-index.mjs --skill <skill-id> --platform-line boot2-java8 --source-root <root>` from the canonical skill root before exact integration guidance.
49
+ - A repository commit difference alone is not stale when the component tree is unchanged; a component tree mismatch or component-local dirty state is stale.
50
+ - Read only the source entries needed for the current decision or troubleshooting path.
@@ -0,0 +1,50 @@
1
+ # yss-exception Source Index
2
+
3
+ Index schema: `backend-component-source-index-v2`
4
+ Platform line: `boot3-java17`
5
+ Generated: 2026-09-18T18:40:26.031Z
6
+ Source commit: `5041c41fbe96c25821bbc15f688c0521b8c97a3d`
7
+ Component worktree: `clean`
8
+ Component tree `yss-microservice-components/yss-component-exception`: `4d83019be2ede902b69eb5fe9fdad8739f0f9933`
9
+ Indexed source root: resolved at refresh time; set `YSS_SOURCE_ROOT_BOOT3_JAVA17` to reproduce or refresh.
10
+
11
+ This file is generated by `yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs`. Do not hand-edit generated sections.
12
+
13
+ Paths are relocatable source hints. Exact guidance requires a matching component tree and a clean indexed component subtree; the repository commit is trace metadata and may differ when unrelated components change.
14
+
15
+ ## Component Path Hints
16
+
17
+ - `yss-microservice-components/yss-component-exception` (existed when indexed)
18
+
19
+ ## Documentation Files
20
+
21
+ - `yss-microservice-components/yss-component-exception/readme.md`
22
+
23
+ Component documentation is a discovery aid. For API signatures, conditions and defaults, prefer the indexed source facts below when documentation differs.
24
+
25
+ ## Maven Modules
26
+
27
+ - `yss-microservice-components/yss-component-exception/pom.xml` — GAV `com.yss.cloud:yss-component-exception:3.0.0-SNAPSHOT`; parent `com.yss.cloud:yss-microservice-components:3.0.0-SNAPSHOT`
28
+
29
+ ## Platform Signals
30
+
31
+ - Inherited Java signals: `17`.
32
+ - Inherited Spring Boot signals: `3.5.16`.
33
+ - Namespace source signals: `javax.*` in 0 main Java files; `jakarta.*` in 1 main Java files.
34
+ - Auto-configuration metadata: 0 `spring.factories`; 1 `AutoConfiguration.imports` files.
35
+ - These are source observations, not compatibility certification. Use the approved `platform_configuration` and verified compatibility evidence before integration or generation.
36
+
37
+ ## Key Java Entry Points
38
+
39
+ - `yss-microservice-components/yss-component-exception/src/main/java/com/yss/cloud/exception/ExceptionFactory.java` — `sha256:871070981022984dc5e991bcc6a250fb9fdda31efe94a6e151bd86dfebc7162b`
40
+ - `yss-microservice-components/yss-component-exception/src/main/java/com/yss/cloud/exception/ResultErrorCode.java` — `sha256:cfc1ce146b99ba5d938bdc6bfb80758582e0c80cf1e37472967d5fdc334b8f81`
41
+ - `yss-microservice-components/yss-component-exception/src/main/java/com/yss/cloud/exception/YssGlobalExceptionProperties.java` — `sha256:706136214248b90965feadced7940fde2f649e9d5f19a3953d55756a7f56ea84`
42
+ - `yss-microservice-components/yss-component-exception/src/main/java/com/yss/cloud/exception/advice/GlobalExceptionAdvice.java` — `sha256:56c2025e65b314c30ba2f6c51bead345fe8d81da892c10f5d5c20663e7f38949`
43
+
44
+ ## Freshness and Use
45
+
46
+ - Locate the current source root using `YSS_SOURCE_ROOT_BOOT3_JAVA17`, CodeGraph, Maven artifact names or repository search.
47
+ - Compare each indexed `Component tree` with `git rev-parse HEAD:<component-path>` and require the current component subtree to be clean before exact guidance.
48
+ - Run `node ../yss-skill-source-index-refresh/scripts/check-backend-skill-source-index.mjs --skill <skill-id> --platform-line boot3-java17 --source-root <root>` from the canonical skill root before exact integration guidance.
49
+ - A repository commit difference alone is not stale when the component tree is unchanged; a component tree mismatch or component-local dirty state is stale.
50
+ - Read only the source entries needed for the current decision or troubleshooting path.
@@ -1,35 +1,10 @@
1
- # yss-exception Source Index
1
+ # yss-exception Source Index Router
2
2
 
3
- Generated: 2026-08-17T12:03:37.436Z
4
- Source commit: `38b556a5081e6c66c0c538cbc1ef839b19996ed3`
5
- Source worktree: `dirty`
6
- Indexed source root: resolved at refresh time; set `YSS_SOURCE_ROOT` to reproduce or refresh.
3
+ Index schema: `backend-component-source-index-router-v1`
7
4
 
8
- This file is generated by `yss-skill-source-index-refresh/scripts/refresh-yss-skill-index.mjs`. Do not hand-edit generated sections.
5
+ Select the source index from the approved `platform_configuration.component_platform_line`; do not infer a line from imports, a branch name or a requested upgrade.
9
6
 
10
- Paths below are source path hints captured at refresh time. If they do not exist in the current workspace, locate sources using `YSS_SOURCE_ROOT`, CodeGraph, package/class names, Maven artifact names, or repository search before assuming the source is unavailable.
7
+ - `boot2-java8` — [Spring Boot 2.7 / Java 8 maintenance line](source-index.boot2-java8.md)
8
+ - `boot3-java17` — [Spring Boot 3.5 / Java 17 mainline](source-index.boot3-java17.md)
11
9
 
12
- ## Component Path Hints
13
-
14
- - `yss-microservice-components/yss-component-exception` (existed when indexed)
15
-
16
- ## Documentation Files
17
-
18
- - `yss-microservice-components/yss-component-exception/readme.md`
19
-
20
- ## Maven Modules
21
-
22
- - `yss-microservice-components/yss-component-exception`
23
-
24
- ## Key Java Entry Points
25
-
26
- - `yss-microservice-components/yss-component-exception/src/main/java/com/yss/cloud/exception/ExceptionFactory.java`
27
- - `yss-microservice-components/yss-component-exception/src/main/java/com/yss/cloud/exception/ResultErrorCode.java`
28
- - `yss-microservice-components/yss-component-exception/src/main/java/com/yss/cloud/exception/YssGlobalExceptionProperties.java`
29
- - `yss-microservice-components/yss-component-exception/src/main/java/com/yss/cloud/exception/advice/GlobalExceptionAdvice.java`
30
-
31
- ## Recommended Next Reads
32
-
33
- - Start with the documentation files above when learning component usage.
34
- - Search the key Java entry points for annotations, auto configuration, properties, aspects, interceptors, handlers, and result objects before changing application code.
35
- - Prefer existing component extension points over rewriting framework logic in business modules.
10
+ Run the freshness checker with the same explicit `--platform-line` and its matching clean source root before exact integration guidance.
@@ -75,3 +75,5 @@ Slice v3 的任务进度、缺口和实时就绪结果不回写合同。源事
75
75
  ## 后端脚手架平台承接
76
76
 
77
77
  消费生命周期已确认的架构与 `platform_configuration` v2;不得自行选择、批准或静默升级 Boot/Java。平台清单执行 `scripts/backend-platforms` 查询;只允许已验证 YSS 组合,新生成缺少配置或证据即阻断。决定、合同、Manifest 与下游架构身份须绑定同一平台及兼容摘要。详见 仓库共享合同 `docs/engineering/backend-platforms.md`。
78
+
79
+ 后端 Slice 解析出 `component_binding: required` 的 capability 或其主 Skill 时,必须在同一平台兼容条目中逐项解析 `component_capabilities`。编译结果保存 `component_bindings` 与 `component_bindings_digest`;未登记、未验证、架构证据缺失、构件坐标冲突或摘要漂移均阻断。旧合同含组件 Skill 但没有组件绑定时直接 `stale`,重新编译并交生命周期批准,禁止自动补字段后沿用原批准。
@@ -20,7 +20,7 @@
20
20
  | --- | --- | --- |
21
21
  | `writing.lifecycle-document` | `i-have-adhd` | `guidance` |
22
22
  | `architecture.technical-design` | `yss-technical-design` | `guidance`, `integration`, `review-input` |
23
- | `architecture.mvc-design` | `yss-mvc-design` | `guidance`, `integration`, `review-input` |
23
+ | `architecture.mvc-design` | `yss-technical-design` | `guidance`, `integration`, `review-input` |
24
24
  | `layer.mvc-service` | `yss-application` | `guidance`, `integration`, `slice-implementation`, `troubleshooting`, `review-input` |
25
25
  | `layer.mvc-persistence` | `yss-repository` | `guidance`, `integration`, `slice-implementation`, `troubleshooting`, `review-input` |
26
26
  | `layer.mvc-web` | `yss-web-controller` | `guidance`, `integration`, `slice-implementation`, `troubleshooting`, `review-input` |
@@ -48,7 +48,7 @@
48
48
  | `scaffold.ddd` | `yss-ddd-scaffold-generator` | `integration`, `component-maintenance` |
49
49
  | `scaffold.layered-mvc` | `yss-layered-mvc-scaffold-generator` | `integration`, `component-maintenance` |
50
50
  | `scaffold.frontend-vue3` | `yss-frontend-scaffold-generator` | `integration`, `component-maintenance` |
51
- | `project-init.mvc-data-analysis` | `yss-mvc-data-analysis-project-initializer` | `component-maintenance` |
51
+ | `project-init.mvc-data-analysis` | `yss-layered-mvc-scaffold-generator` | `component-maintenance` |
52
52
  | `migration.springboot3` | `yss-up-springboot3` | `guidance`, `integration`, `troubleshooting`, `component-maintenance`, `review-input` |
53
53
 
54
54
  ## Narrow Recipes
@@ -118,7 +118,6 @@
118
118
  | `yss-prototype-stage` | `i-have-adhd` | `context-conditional` | `lifecycle-document-output` |
119
119
  | `yss-prototype-stage` | `prototype-review` | `review-only` | — |
120
120
  | `yss-prototype-stage` | `yss-design-system` | `coordination-only` | — |
121
- | `yss-ddd-scaffold-generator` | `yss-backend-scaffold-parent` | `context-required` | — |
122
121
  | `yss-ddd-scaffold-generator` | `alibaba-java-code-style` | `context-required` | — |
123
122
  | `yss-layered-mvc-scaffold-generator` | `alibaba-java-code-style` | `context-required` | — |
124
123
  | `yss-domain` | `alibaba-java-code-style` | `context-required` | — |
@@ -127,8 +126,7 @@
127
126
  | `yss-domain` | `lombok` | `context-conditional` | `pojo` |
128
127
  | `yss-technical-design` | `i-have-adhd` | `context-conditional` | `lifecycle-document-output` |
129
128
  | `yss-technical-design` | `yss-tactical-design` | `coordination-only` | `domain-driven` |
130
- | `yss-technical-design` | `yss-mvc-design` | `coordination-only` | `layered-mvc` |
131
- | `yss-mvc-design` | `yss-openapi-draft-review` | `review-only` | `api-impact` |
129
+ | `yss-technical-design` | `yss-openapi-draft-review` | `review-only` | `api-impact` |
132
130
  | `yss-tactical-design` | `domain-modeling` | `coordination-only` | — |
133
131
  | `yss-tactical-design` | `yss-openapi-draft-review` | `review-only` | `api-impact` |
134
132
  | `yss-tactical-design` | `yss-repository` | `component-dependency` | `data-impact` |
@@ -143,6 +143,14 @@ resolution_contract:
143
143
  deterministic_order: [recipe-declaration, dependency-topology, skill-id]
144
144
  digest_change_status: stale
145
145
  stale_action: recompile-and-return-to-lifecycle-approval
146
+ component_bindings:
147
+ when: any-required-capability-provider-kind-is-yss-component
148
+ platform_configuration: required-v2
149
+ catalog_source: docs/engineering/backend-platforms.json
150
+ required_fields: [component_bindings, component_bindings_digest]
151
+ exact_artifact_binding: [group_id, artifact_id, declared_version, resolved_version, pom_sha256, jar_sha256, source_tree]
152
+ digest_change_status: stale
153
+ old_contract_without_binding: stale-and-recompile-no-auto-upgrade
146
154
 
147
155
  context_plan:
148
156
  required: [required_context_refs, on_demand_context_refs, context_stop_rule, missing_context_action]
@@ -157,7 +165,7 @@ project_scaffold_contract_schema:
157
165
  delivery_roles:
158
166
  backend:
159
167
  scaffold_kinds: [backend-ddd, backend-layered-mvc, backend-mvc-data-analysis]
160
- generators: [yss-ddd-scaffold-generator, yss-layered-mvc-scaffold-generator, yss-mvc-data-analysis-project-initializer]
168
+ generators: [yss-ddd-scaffold-generator, yss-layered-mvc-scaffold-generator]
161
169
  requires: [scaffold_request_id, architecture_family, decision_ref, decision_id, decision_digest, project_name, base_package, maven_coordinates, profiles, module_profile, design_prerequisites]
162
170
  design_prerequisites:
163
171
  required: [technical_design, data_architecture_decision, api_contract_decision, engineering_contract_approval_ref]
@@ -253,7 +261,7 @@ scaffold_contract_schema:
253
261
  lifecycle_approves: [approved]
254
262
  generator_consumes: []
255
263
  after_generation:
256
- domain-driven: [yss-backend-scaffold-parent, yss-implementation-contract-compiler]
264
+ domain-driven: [yss-implementation-contract-compiler]
257
265
  layered-mvc: [yss-implementation-contract-compiler]
258
266
  work_unit:
259
267
  required: [id, behavior, primary_skill, supporting_skills, tdd_mode, allowed_write_paths, expected_evidence, verification_commands, controlled_generation]
@@ -330,6 +338,7 @@ full_reroute_triggers:
330
338
  - scaffold-architecture-decision-changed
331
339
  - scaffold-profile-changed
332
340
  - scaffold-module-resolution-changed
341
+ - component-binding-drift
333
342
  - api-schema-impact
334
343
  - database-schema-impact
335
344
  - state-machine-impact
@@ -355,6 +364,7 @@ full_reroute_triggers:
355
364
 
356
365
  reroute_destinations:
357
366
  scaffold-baseline-drift: stage7-scaffold-revalidation
367
+ component-binding-drift: stage7-contract-recompile
358
368
  api-schema-impact: system-data-architecture-and-contract-review
359
369
  database-schema-impact: data-architecture-and-migration-review
360
370
  state-machine-impact: spec-system-data-and-contract-review
@@ -410,6 +420,10 @@ execution_result_required:
410
420
  - deviations
411
421
  - new_impacts
412
422
  - not_applicable_reason
423
+ execution_result_component_binding:
424
+ when: resolution.component_bindings-present
425
+ required: consumed_contract.component_bindings_digest
426
+ mismatch: component-binding-mismatch
413
427
  seam_deferred_required: [risk, owner, follow_up_ticket, verification_plan, target_version_or_release_date]
414
428
  deviation_required: [rule, reason, approval_ref]
415
429
  not_applicable_required: [item, reason]
@@ -432,3 +446,14 @@ backend_platform_contract:
432
446
  new_generation_requires: [exact-boot-java, confirmed-decision, matching-yss-coordinates, verified-compatibility-entry]
433
447
  candidate_generation: maintenance-only
434
448
  candidate_downstream: blocked
449
+ component_capabilities:
450
+ registry_marker: provider-kind-yss-component
451
+ mapping_key: provider-binding-id
452
+ foundational_capabilities: [contract.dto-wire, contract.request-validation, contract.error-mapping, framework.mybatis]
453
+ specialized_capabilities: [component.cache, component.current-user-context, component.audit-log, component.excel-import-export, component.distributed-id, component.security-algorithm, component.gateway-resilience]
454
+ exact_artifact_evidence: [group_id, artifact_id, declared_version, resolved_version, pom_sha256, jar_sha256, source_tree]
455
+ verified_architecture_required: true
456
+ unlisted_or_blocked: component-unavailable-for-platform
457
+ missing_evidence: component-evidence-missing
458
+ coordinate_conflict: component-artifact-coordinate-conflict
459
+ drift: component-binding-drift
@@ -17,6 +17,7 @@ execution_result:
17
17
  contract_version:
18
18
  registry_digest:
19
19
  compiler_contract_digest:
20
+ component_bindings_digest: # 合同含 component_bindings 时必填
20
21
  quality_baseline_ref:
21
22
  context_plan_ref:
22
23
  changed_files:
@@ -57,7 +58,7 @@ execution_result:
57
58
 
58
59
  实现合同编译器必须验证:
59
60
 
60
- 1. `consumed_contract.contract_version` 与当前批准版本一致,两个 resolution digest 与批准合同一致且保持 current。
61
+ 1. `consumed_contract.contract_version` 与当前批准版本一致,Registry、编译器以及适用的 `component_bindings_digest` 与批准合同一致且保持 current。
61
62
  2. `changed_files` 全部位于工作单元和切片允许路径内。
62
63
  3. `expected_evidence_files` 全部存在并能回指行为。
63
64
  4. 验证命令包含实际结果和时间;计划命令不算证据。
@@ -1,5 +1,6 @@
1
1
  import assert from "node:assert/strict";
2
2
  import test from "node:test";
3
+ import { readFileSync } from "node:fs";
3
4
  import {
4
5
  compileImplementationContract,
5
6
  digestDocument,
@@ -8,6 +9,7 @@ import {
8
9
  validateExecutionResult
9
10
  } from "../../../../scripts/lib/implementation-contract-compiler.mjs";
10
11
  import { loadSkillRegistry } from "../../../../scripts/lib/skill-registry.mjs";
12
+ import { loadBackendPlatforms, platformBinding } from "../../../../scripts/lib/backend-platform.mjs";
11
13
 
12
14
  const registry = loadSkillRegistry();
13
15
  const compilerContract = loadCompilerContract();
@@ -15,17 +17,18 @@ const fixed = "2026-09-04T00:00:00.000Z";
15
17
  const identity = { architecture_family: "domain-driven", architecture_profile: "target-domain-model", generator_skill: "yss-ddd-scaffold-generator", requested_capabilities: [], resolved_modules: ["domain", "application", "infrastructure", "adapter", "bootstrap"], verification_database: "h2", production_database: "not-bound", contract_digest: "a".repeat(64) };
16
18
  const architecture = { architecture_identity: identity, architecture_evidence: { engineering_baseline: identity, repository_registration: identity, manifest: identity } };
17
19
  const compile = (input) => compileImplementationContract({ registry, compilerContract, compiledAt: fixed, ...architecture, ...input });
20
+ const stableComponentError = code => error => error?.code === code && new RegExp(`^component-capability: ${code}:`).test(error.message);
18
21
 
19
22
  test("combines narrow recipes once and preserves deterministic output", () => {
20
23
  const input = {
21
- recipeIds: ["backend.ddd-http-api", "backend.ddd-domain-behavior", "backend.ddd-persistence-mybatis"],
22
- conditions: ["mybatis", "conversion", "pojo", "request-validation", "error-mapping"]
24
+ recipeIds: ["backend.ddd-domain-behavior"],
25
+ conditions: ["conversion", "pojo"]
23
26
  };
24
27
  const first = compile(input);
25
28
  const second = compile({ ...input, recipeIds: [...input.recipeIds].reverse(), conditions: [...input.conditions].reverse() });
26
29
  assert.deepEqual(first, second);
27
- assert.deepEqual(first.recipe_ids, ["backend.ddd-domain-behavior", "backend.ddd-persistence-mybatis", "backend.ddd-http-api"]);
28
- for (const skill of ["yss-domain", "yss-application", "yss-repository", "yss-mybatis", "yss-web-controller", "yss-dto", "yss-validation", "yss-exception", "mapstruct", "lombok", "alibaba-java-code-style"]) {
30
+ assert.deepEqual(first.recipe_ids, ["backend.ddd-domain-behavior"]);
31
+ for (const skill of ["yss-domain", "yss-application", "mapstruct", "lombok", "alibaba-java-code-style"]) {
29
32
  assert.equal(first.required_skills.filter((candidate) => candidate === skill).length, 1, `${skill} should appear once`);
30
33
  }
31
34
  });
@@ -37,17 +40,43 @@ test("does not promote conditional or component dependencies without explicit in
37
40
  assert.equal(persistence.required_skills.includes("mapstruct"), false);
38
41
  assert.equal(persistence.required_skills.includes("lombok"), false);
39
42
 
40
- const validation = compile({ requiredCapabilities: ["contract.request-validation"] });
41
- assert.deepEqual(validation.required_skills, ["yss-validation"]);
42
- assert.equal(validation.required_skills.includes("yss-exception"), false);
43
- assert.ok(validation.non_expanding_dependencies.some((edge) => edge.from === "yss-validation" && edge.skill === "yss-exception"));
43
+ assert.throws(
44
+ () => compile({ requiredCapabilities: ["contract.request-validation"], architecture_identity: undefined, architecture_evidence: undefined }),
45
+ /component-platform-binding-required/
46
+ );
44
47
  });
45
48
 
46
49
  test("loads only explicitly satisfied context-conditional dependencies", () => {
47
- const persistence = compile({ requiredCapabilities: ["layer.persistence"], conditions: ["mybatis"] });
48
- assert.equal(persistence.required_skills.includes("yss-mybatis"), true);
49
- assert.equal(persistence.required_skills.includes("mapstruct"), false);
50
- assert.equal(persistence.required_skills.includes("lombok"), false);
50
+ const application = compile({ requiredCapabilities: ["layer.application"], conditions: ["conversion"] });
51
+ assert.equal(application.required_skills.includes("mapstruct"), true);
52
+ assert.equal(application.required_skills.includes("lombok"), false);
53
+ assert.equal(application.required_skills.includes("yss-mybatis"), false);
54
+ });
55
+
56
+ test("requires a platform binding for every backend component capability", () => {
57
+ for (const capability of ["contract.dto-wire", "contract.request-validation", "contract.error-mapping", "framework.mybatis", "component.cache", "component.current-user-context", "component.audit-log", "component.excel-import-export", "component.distributed-id", "component.security-algorithm", "component.gateway-resilience"]) {
58
+ assert.throws(
59
+ () => compile({ requiredCapabilities: [capability], architecture_identity: undefined, architecture_evidence: undefined }),
60
+ stableComponentError("component-platform-binding-required"),
61
+ capability
62
+ );
63
+ }
64
+ });
65
+
66
+ test("public compiler entry preserves stable component error codes", () => {
67
+ const catalog = loadBackendPlatforms();
68
+ const boot2Profile = catalog.profiles.find(item => item.id === "spring-boot-2.7-jdk8");
69
+ const boot2Entry = catalog.compatibility.find(item => item.profile_id === boot2Profile.id);
70
+ const boot2 = platformBinding(boot2Profile, boot2Entry);
71
+ const withPlatform = platform_configuration => {
72
+ const architecture_identity = { ...identity, platform_configuration };
73
+ return { architecture_identity, architecture_evidence: { engineering_baseline: architecture_identity, repository_registration: architecture_identity, manifest: architecture_identity } };
74
+ };
75
+ assert.throws(() => compile({ requiredCapabilities: ["contract.dto-wire"], ...withPlatform(boot2) }), stableComponentError("component-evidence-missing"));
76
+ assert.throws(() => compile({ requiredCapabilities: ["component.cache"], ...withPlatform(boot2) }), stableComponentError("component-platform-generation-mismatch"));
77
+ const boot3Profile = catalog.profiles.find(item => item.id === "spring-boot-3.5-jdk17");
78
+ const boot3 = { ...boot2, profile_id: boot3Profile.id, spring_boot_version: boot3Profile.spring_boot_version, java_version: boot3Profile.java_version, compatibility_id: "unavailable-boot3-components" };
79
+ assert.throws(() => compile({ requiredCapabilities: ["contract.dto-wire"], ...withPlatform(boot3) }), stableComponentError("component-unavailable-for-platform"));
51
80
  });
52
81
 
53
82
  test("rejects recipes that reference skills and context-required cycles", () => {
@@ -62,12 +91,12 @@ test("rejects recipes that reference skills and context-required cycles", () =>
62
91
 
63
92
  test("rejects removed ids and schema v1 without compatibility", () => {
64
93
  assert.throws(() => compile({ recipeIds: ["yss-router"] }), /已移除 skill id/);
65
- assert.throws(() => compileImplementationContract({ registry: { ...registry, schema_version: 1 }, compilerContract, requiredCapabilities: ["layer.domain"] }), /schema v1 已停止支持/);
94
+ assert.throws(() => compileImplementationContract({ registry: { ...registry, schema_version: 1 }, compilerContract, requiredCapabilities: ["layer.domain"] }), /schema v1\/v2 已停止支持/);
66
95
  assert.throws(() => compileImplementationContract({ registry, compilerContract: { ...compilerContract, schema_version: 1 }, requiredCapabilities: ["layer.domain"] }), /schema v1 已停止支持/);
67
96
  });
68
97
 
69
98
  test("marks digest drift stale and validates v2 execution evidence", () => {
70
- const resolution = compile({ requiredCapabilities: ["contract.request-validation"], architecture_identity: undefined, architecture_evidence: undefined });
99
+ const resolution = compile({ requiredCapabilities: ["quality.java-code-style"], architecture_identity: undefined, architecture_evidence: undefined });
71
100
  const contract = { schema_version: 2, contract_id: "slice-1", contract_version: 1, resolution };
72
101
  assert.deepEqual(evaluateContractFreshness(contract, { registry, compilerContract }), { freshness: "current", reasons: [] });
73
102
  const changedRegistry = structuredClone(registry);
@@ -89,3 +118,20 @@ test("marks digest drift stale and validates v2 execution evidence", () => {
89
118
  assert.deepEqual(validateExecutionResult(result, contract, { registry, compilerContract }), { status: "accepted", blockers: [] });
90
119
  assert.deepEqual(validateExecutionResult({ ...result, new_impacts: [{ impact_type: "cache" }] }, contract, { registry, compilerContract }), { status: "blocked", blockers: ["new-impacts"] });
91
120
  });
121
+
122
+ test("marks legacy component contracts without component bindings stale", () => {
123
+ const resolution = compile({ requiredCapabilities: ["quality.java-code-style"], architecture_identity: undefined, architecture_evidence: undefined });
124
+ resolution.required_capabilities = ["contract.dto-wire"];
125
+ resolution.required_skills = ["yss-dto"];
126
+ const contract = { schema_version: 2, contract_id: "legacy-component", contract_version: 1, resolution };
127
+ assert.ok(evaluateContractFreshness(contract, { registry, compilerContract }).reasons.includes("component-binding-drift"));
128
+ });
129
+
130
+ test("current lifecycle scaffold contract delegates platform facts to the catalog", () => {
131
+ const source = readFileSync(new URL("../../yss-product-lifecycle/references/orchestration-contract.yaml", import.meta.url), "utf8");
132
+ const current = source.slice(source.indexOf("backend_scaffold:"), source.indexOf(" required_inputs:", source.indexOf("backend_scaffold:")));
133
+ assert.match(current, /platform_binding: platform_configuration-v2/);
134
+ assert.doesNotMatch(current, /yss_components_version:\s*2\.0\.0-SNAPSHOT/);
135
+ assert.doesNotMatch(current, /spring-boot-3/);
136
+ assert.doesNotMatch(current, /validation_namespace:\s*javax/);
137
+ });
@@ -1,11 +1,11 @@
1
1
  ---
2
2
  name: yss-layered-mvc-scaffold-generator
3
- description: 用于在生命周期已批准的脚手架合同下生成按批准 Spring Boot / Java 平台生成通用 YSS 分层 MVC 后端工程;核心模块为 server、service、repository,并按能力确定性增加 adapter、client、feign-client。
3
+ description: 在生命周期已批准的脚手架合同下生成通用 YSS 分层 MVC 后端,或按 mvc-data-analysis-v1 初始化六模块数据分析 project-instance。
4
4
  ---
5
5
 
6
6
  # YSS Layered MVC Scaffold Generator
7
7
 
8
- 本 skill 只为已登记的全新 backend project 生成机械工程骨架,不创建 `project-instance`、不初始化 Git、不生成业务 Controller、DTO、查询、状态机或 Mock 数据。
8
+ 本 skill 只为已登记的全新 backend project 生成机械工程骨架,不生成业务 Controller、DTO、查询、状态机或 Mock 数据。普通 `layered-mvc-service` 不创建 `project-instance` 或初始化 Git;`mvc-data-analysis-v1` 按批准合同创建独立 project-instance、同级锁定 `skillUtils` 和未提交的 main Git。
9
9
 
10
10
  ## 进入条件
11
11
 
@@ -31,12 +31,13 @@ description: 用于在生命周期已批准的脚手架合同下生成按批准
31
31
 
32
32
  ## 架构与 Profile
33
33
 
34
- - 固定核心模块:`server`、`service`、`repository`。
34
+ - `layered-mvc-service` 固定核心模块:`server`、`service`、`repository`。
35
35
  - `external-integration` 增加 `adapter`。
36
36
  - `published-client` 增加 `client`。
37
37
  - `feign-client` 增加 `client`、`feign-client`。
38
38
  - 平台来自批准的 `platform_configuration`;保留 YSS BOM、MyBatis-Plus,不固定单一 Boot/Java/Validation 命名空间。
39
- - 固定 architecture_profile=layered-mvc-service;verification_database=h2、production_database=not-bound。测试使用 H2,本地运行显式启用 scaffold-local;不引入外部驱动/数据源。
39
+ - `mvc-data-analysis-v1` 固定 `server/core/client/repository/adapter/feign-client` 六模块,要求 `context_handoff_ref`、摘要和 `init_git=true`,复制批准的根 `CONTEXT.md`、治理资产和锁定工具包;不得从交接内容创造术语。该 Profile 仍绑定平台目录与构件证据,不再通过历史初始化器绕过平台门禁。
40
+ - 两个 Profile 均固定 verification_database=h2、production_database=not-bound。测试使用 H2,本地运行显式启用 scaffold-local;不引入外部驱动/数据源。
40
41
 
41
42
  能力解析规则、模块职责和依赖方向见 [architecture.md](references/architecture.md)。生成器必须同时校验 `requested_capabilities` 与 `resolved_modules`,不得自行补猜模块。
42
43
 
@@ -69,7 +70,7 @@ node scripts/generate_and_verify_scaffold.mjs \
69
70
  ## 硬约束
70
71
 
71
72
  - 新生成只接受包含 API Contract Decision 的统一 schema v4;缺 API 字段的预发布 v4 不得静默接受。验证器可只读检查历史 Manifest v3,恢复必须另行完成所有权审计、技术/数据/API 设计补齐与当前批准。历史 v2/v3 均不用于新生成。
72
- - `architecture_family` 必须为 `layered-mvc`,`generator_skill` 必须为本 skill。
73
+ - `architecture_family` 必须为 `layered-mvc`,`generator_skill` 必须为本 skill。历史 `yss-mvc-data-analysis-project-initializer` 合同必须返回 `skill-deprecated`、标记 `stale` 并重编译,不自动替换或继承批准。
73
74
  - 目标存在、`--force`、旧项目迁移、模板升级均为 `unsupported`。
74
75
  - Harness 内只允许以 `apps/backend/` 为输出父容器;外部实现仓库使用已登记真实路径。
75
76
  - 不生成业务示例。健康检查、上下文加载测试和架构测试只能验证机械工程能力,不定义用户可见 API。
@@ -1,4 +1,4 @@
1
1
  interface:
2
2
  display_name: "YSS Layered MVC Scaffold Generator"
3
- short_description: "Generate an approved YSS layered MVC backend skeleton."
4
- default_prompt: "Use $yss-layered-mvc-scaffold-generator only after a user-confirmed architecture decision and a lifecycle-approved schema v4 scaffold contract with approved technical and data design prerequisites."
3
+ short_description: "Generate approved MVC service or data-analysis profiles."
4
+ default_prompt: "Use $yss-layered-mvc-scaffold-generator only after a user-confirmed architecture decision and a lifecycle-approved schema v4 contract; generate layered-mvc-service or the native mvc-data-analysis-v1 project profile exactly as bound."
@@ -11,6 +11,8 @@
11
11
 
12
12
  合同保存 `requested_capabilities`、`resolved_modules` 和 `resolution_version: 1`。模块按 `server`、`service`、`repository`、`adapter`、`client`、`feign-client` 的稳定顺序生成。
13
13
 
14
+ `mvc-data-analysis-v1` 是本生成器的固定 Profile,不使用上述可选闭包:模块严格为 `server`、`core`、`client`、`repository`、`adapter`、`feign-client`。`core` 承载薄应用编排,不能依赖 `client`、Spring Web 或生产数据库驱动;CONTEXT handoff、project-instance 治理信封、同级 `skillUtils` 与独立 Git 必须在最终 rename 前完成。
15
+
14
16
  ## 职责和依赖
15
17
 
16
18
  | 模块 | 职责 | 允许依赖 |