@sdd-method/sdd-cli 1.43.0 → 1.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (325) hide show
  1. package/NOTICE +1 -1
  2. package/README.md +13 -14
  3. package/dist/author-program.js +1 -1
  4. package/dist/author-program.js.map +1 -1
  5. package/dist/cli.js +0 -0
  6. package/dist/index.js +1 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/lib/catalogue/aggregate.js +6 -6
  9. package/dist/lib/catalogue/aggregate.js.map +1 -1
  10. package/dist/lib/catalogue/build.js +1 -1
  11. package/dist/lib/catalogue/build.js.map +1 -1
  12. package/dist/lib/catalogue/builders/c4-components.js +1 -1
  13. package/dist/lib/catalogue/builders/c4-components.js.map +1 -1
  14. package/dist/lib/catalogue/builders/c4-containers.d.ts +1 -1
  15. package/dist/lib/catalogue/builders/c4-containers.js +1 -1
  16. package/dist/lib/catalogue/builders/c4-l1-candidates.js +1 -1
  17. package/dist/lib/catalogue/builders/c4-l1-candidates.js.map +1 -1
  18. package/dist/lib/catalogue/builders/container-dependency.d.ts +1 -1
  19. package/dist/lib/catalogue/builders/container-dependency.js +1 -1
  20. package/dist/lib/catalogue/builders/data-store-mapping.js +1 -1
  21. package/dist/lib/catalogue/builders/data-store-mapping.js.map +1 -1
  22. package/dist/lib/catalogue/builders/screen-tree.d.ts +1 -1
  23. package/dist/lib/catalogue/builders/screen-tree.js +1 -1
  24. package/dist/lib/catalogue/contract-path-resolution.d.ts +2 -2
  25. package/dist/lib/catalogue/contract-path-resolution.js +2 -2
  26. package/dist/lib/catalogue/dedupe-keyed-tables.d.ts +1 -1
  27. package/dist/lib/catalogue/dedupe-keyed-tables.js +0 -0
  28. package/dist/lib/catalogue/dedupe-keyed-tables.js.map +1 -1
  29. package/dist/lib/catalogue/scores-coverage.js +1 -1
  30. package/dist/lib/catalogue/scores-coverage.js.map +1 -1
  31. package/dist/lib/catalogue/service-contract-aliases-loader.d.ts +1 -1
  32. package/dist/lib/catalogue/service-contract-aliases-loader.js +1 -1
  33. package/dist/lib/ci-binding/index.d.ts.map +1 -1
  34. package/dist/lib/ci-binding/index.js +44 -5
  35. package/dist/lib/ci-binding/index.js.map +1 -1
  36. package/dist/lib/ci-binding/module.d.ts +10 -0
  37. package/dist/lib/ci-binding/module.d.ts.map +1 -1
  38. package/dist/lib/ci-binding/module.js +74 -2
  39. package/dist/lib/ci-binding/module.js.map +1 -1
  40. package/dist/lib/hooks-seed/entries.d.ts +35 -11
  41. package/dist/lib/hooks-seed/entries.d.ts.map +1 -1
  42. package/dist/lib/hooks-seed/entries.js +43 -21
  43. package/dist/lib/hooks-seed/entries.js.map +1 -1
  44. package/dist/lib/hooks-seed/index.d.ts +2 -1
  45. package/dist/lib/hooks-seed/index.d.ts.map +1 -1
  46. package/dist/lib/hooks-seed/index.js +1 -1
  47. package/dist/lib/hooks-seed/index.js.map +1 -1
  48. package/dist/lib/init/ci-workflow.js +26 -2
  49. package/dist/lib/init/ci-workflow.js.map +1 -1
  50. package/dist/lib/init/platform.d.ts.map +1 -1
  51. package/dist/lib/init/platform.js +1 -0
  52. package/dist/lib/init/platform.js.map +1 -1
  53. package/dist/lib/lock-file.d.ts +7 -0
  54. package/dist/lib/lock-file.d.ts.map +1 -1
  55. package/dist/lib/lock-file.js +10 -0
  56. package/dist/lib/lock-file.js.map +1 -1
  57. package/dist/lib/pack/builder.d.ts +14 -0
  58. package/dist/lib/pack/builder.d.ts.map +1 -1
  59. package/dist/lib/pack/builder.js +56 -4
  60. package/dist/lib/pack/builder.js.map +1 -1
  61. package/dist/lib/pack/index.d.ts +3 -1
  62. package/dist/lib/pack/index.d.ts.map +1 -1
  63. package/dist/lib/pack/index.js +1 -0
  64. package/dist/lib/pack/index.js.map +1 -1
  65. package/dist/lib/pack/publish-transform.js +1 -1
  66. package/dist/lib/pack/publish-transform.js.map +1 -1
  67. package/dist/lib/snapshot/targets.js +1 -1
  68. package/dist/lib/snapshot/targets.js.map +1 -1
  69. package/dist/lib/sync/index.d.ts +11 -0
  70. package/dist/lib/sync/index.d.ts.map +1 -1
  71. package/dist/lib/sync/index.js +26 -2
  72. package/dist/lib/sync/index.js.map +1 -1
  73. package/dist/lib/sync/settings-merge.d.ts +3 -1
  74. package/dist/lib/sync/settings-merge.d.ts.map +1 -1
  75. package/dist/lib/sync/settings-merge.js +1 -1
  76. package/dist/lib/sync/settings-merge.js.map +1 -1
  77. package/dist/lib/validate/plan.d.ts +10 -1
  78. package/dist/lib/validate/plan.d.ts.map +1 -1
  79. package/dist/lib/validate/plan.js +6 -3
  80. package/dist/lib/validate/plan.js.map +1 -1
  81. package/dist/maintain-program.js +1 -1
  82. package/dist/maintain-program.js.map +1 -1
  83. package/dist/maintain-version.json +2 -2
  84. package/dist/verbs/pack-build.d.ts.map +1 -1
  85. package/dist/verbs/pack-build.js +22 -0
  86. package/dist/verbs/pack-build.js.map +1 -1
  87. package/dist/verbs/plan.js +1 -1
  88. package/dist/verbs/plan.js.map +1 -1
  89. package/dist/verbs/sync.d.ts.map +1 -1
  90. package/dist/verbs/sync.js +17 -0
  91. package/dist/verbs/sync.js.map +1 -1
  92. package/dist/verbs/validate.d.ts.map +1 -1
  93. package/dist/verbs/validate.js +6 -1
  94. package/dist/verbs/validate.js.map +1 -1
  95. package/dist/verify-program.js +1 -1
  96. package/dist/verify-program.js.map +1 -1
  97. package/dist/verify-version.json +2 -2
  98. package/package.json +2 -10
  99. package/scripts/README.md +1 -1
  100. package/scripts/author-version.json +2 -2
  101. package/scripts/maintain-acceptance.mjs +3 -2
  102. package/scripts/maintain-version.json +2 -2
  103. package/scripts/publish-release.mjs +117 -0
  104. package/scripts/release-gate.mjs +18 -7
  105. package/scripts/verify-version.json +2 -2
  106. package/dist/lib/catalogue/advisory-container-type.d.ts +0 -13
  107. package/dist/lib/catalogue/advisory-container-type.d.ts.map +0 -1
  108. package/dist/lib/catalogue/advisory-container-type.js +0 -56
  109. package/dist/lib/catalogue/advisory-container-type.js.map +0 -1
  110. package/dist/lib/hooks-seed/copilot.d.ts +0 -93
  111. package/dist/lib/hooks-seed/copilot.d.ts.map +0 -1
  112. package/dist/lib/hooks-seed/copilot.js +0 -167
  113. package/dist/lib/hooks-seed/copilot.js.map +0 -1
  114. package/dist/lib/hooks-seed/lifecycle-mapping.d.ts +0 -12
  115. package/dist/lib/hooks-seed/lifecycle-mapping.d.ts.map +0 -1
  116. package/dist/lib/hooks-seed/lifecycle-mapping.js +0 -28
  117. package/dist/lib/hooks-seed/lifecycle-mapping.js.map +0 -1
  118. package/dist/lib/mcp/build-info.d.ts +0 -7
  119. package/dist/lib/mcp/build-info.d.ts.map +0 -1
  120. package/dist/lib/mcp/build-info.js +0 -10
  121. package/dist/lib/mcp/build-info.js.map +0 -1
  122. package/dist/lib/mcp/errors.d.ts +0 -23
  123. package/dist/lib/mcp/errors.d.ts.map +0 -1
  124. package/dist/lib/mcp/errors.js +0 -25
  125. package/dist/lib/mcp/errors.js.map +0 -1
  126. package/dist/lib/mcp/parse/frontmatter.d.ts +0 -22
  127. package/dist/lib/mcp/parse/frontmatter.d.ts.map +0 -1
  128. package/dist/lib/mcp/parse/frontmatter.js +0 -49
  129. package/dist/lib/mcp/parse/frontmatter.js.map +0 -1
  130. package/dist/lib/mcp/parse/gate-registry.d.ts +0 -78
  131. package/dist/lib/mcp/parse/gate-registry.d.ts.map +0 -1
  132. package/dist/lib/mcp/parse/gate-registry.js +0 -164
  133. package/dist/lib/mcp/parse/gate-registry.js.map +0 -1
  134. package/dist/lib/mcp/parse/paths.d.ts +0 -21
  135. package/dist/lib/mcp/parse/paths.d.ts.map +0 -1
  136. package/dist/lib/mcp/parse/paths.js +0 -84
  137. package/dist/lib/mcp/parse/paths.js.map +0 -1
  138. package/dist/lib/mcp/pin/errors.d.ts +0 -11
  139. package/dist/lib/mcp/pin/errors.d.ts.map +0 -1
  140. package/dist/lib/mcp/pin/errors.js +0 -32
  141. package/dist/lib/mcp/pin/errors.js.map +0 -1
  142. package/dist/lib/mcp/pin/index.d.ts +0 -18
  143. package/dist/lib/mcp/pin/index.d.ts.map +0 -1
  144. package/dist/lib/mcp/pin/index.js +0 -29
  145. package/dist/lib/mcp/pin/index.js.map +0 -1
  146. package/dist/lib/mcp/pin/read.d.ts +0 -24
  147. package/dist/lib/mcp/pin/read.d.ts.map +0 -1
  148. package/dist/lib/mcp/pin/read.js +0 -64
  149. package/dist/lib/mcp/pin/read.js.map +0 -1
  150. package/dist/lib/mcp/pin/resolve.d.ts +0 -12
  151. package/dist/lib/mcp/pin/resolve.d.ts.map +0 -1
  152. package/dist/lib/mcp/pin/resolve.js +0 -33
  153. package/dist/lib/mcp/pin/resolve.js.map +0 -1
  154. package/dist/lib/mcp/prompts/evaluate-cascade.d.ts +0 -14
  155. package/dist/lib/mcp/prompts/evaluate-cascade.d.ts.map +0 -1
  156. package/dist/lib/mcp/prompts/evaluate-cascade.js +0 -147
  157. package/dist/lib/mcp/prompts/evaluate-cascade.js.map +0 -1
  158. package/dist/lib/mcp/prompts/index.d.ts +0 -9
  159. package/dist/lib/mcp/prompts/index.d.ts.map +0 -1
  160. package/dist/lib/mcp/prompts/index.js +0 -23
  161. package/dist/lib/mcp/prompts/index.js.map +0 -1
  162. package/dist/lib/mcp/prompts/propose-adr.d.ts +0 -12
  163. package/dist/lib/mcp/prompts/propose-adr.d.ts.map +0 -1
  164. package/dist/lib/mcp/prompts/propose-adr.js +0 -100
  165. package/dist/lib/mcp/prompts/propose-adr.js.map +0 -1
  166. package/dist/lib/mcp/prompts/review-data-model-change.d.ts +0 -10
  167. package/dist/lib/mcp/prompts/review-data-model-change.d.ts.map +0 -1
  168. package/dist/lib/mcp/prompts/review-data-model-change.js +0 -134
  169. package/dist/lib/mcp/prompts/review-data-model-change.js.map +0 -1
  170. package/dist/lib/mcp/prompts/template-loader.d.ts +0 -29
  171. package/dist/lib/mcp/prompts/template-loader.d.ts.map +0 -1
  172. package/dist/lib/mcp/prompts/template-loader.js +0 -44
  173. package/dist/lib/mcp/prompts/template-loader.js.map +0 -1
  174. package/dist/lib/mcp/prompts/types.d.ts +0 -17
  175. package/dist/lib/mcp/prompts/types.d.ts.map +0 -1
  176. package/dist/lib/mcp/prompts/types.js +0 -10
  177. package/dist/lib/mcp/prompts/types.js.map +0 -1
  178. package/dist/lib/mcp/prompts/write-capability-spec.d.ts +0 -8
  179. package/dist/lib/mcp/prompts/write-capability-spec.d.ts.map +0 -1
  180. package/dist/lib/mcp/prompts/write-capability-spec.js +0 -85
  181. package/dist/lib/mcp/prompts/write-capability-spec.js.map +0 -1
  182. package/dist/lib/mcp/prompts/write-feature-spec.d.ts +0 -10
  183. package/dist/lib/mcp/prompts/write-feature-spec.d.ts.map +0 -1
  184. package/dist/lib/mcp/prompts/write-feature-spec.js +0 -94
  185. package/dist/lib/mcp/prompts/write-feature-spec.js.map +0 -1
  186. package/dist/lib/mcp/prompts/write-work-order.d.ts +0 -7
  187. package/dist/lib/mcp/prompts/write-work-order.d.ts.map +0 -1
  188. package/dist/lib/mcp/prompts/write-work-order.js +0 -69
  189. package/dist/lib/mcp/prompts/write-work-order.js.map +0 -1
  190. package/dist/lib/mcp/reader.d.ts +0 -37
  191. package/dist/lib/mcp/reader.d.ts.map +0 -1
  192. package/dist/lib/mcp/reader.js +0 -93
  193. package/dist/lib/mcp/reader.js.map +0 -1
  194. package/dist/lib/mcp/resources/adrs.d.ts +0 -3
  195. package/dist/lib/mcp/resources/adrs.d.ts.map +0 -1
  196. package/dist/lib/mcp/resources/adrs.js +0 -97
  197. package/dist/lib/mcp/resources/adrs.js.map +0 -1
  198. package/dist/lib/mcp/resources/catalogue.d.ts +0 -19
  199. package/dist/lib/mcp/resources/catalogue.d.ts.map +0 -1
  200. package/dist/lib/mcp/resources/catalogue.js +0 -240
  201. package/dist/lib/mcp/resources/catalogue.js.map +0 -1
  202. package/dist/lib/mcp/resources/data-models.d.ts +0 -14
  203. package/dist/lib/mcp/resources/data-models.d.ts.map +0 -1
  204. package/dist/lib/mcp/resources/data-models.js +0 -81
  205. package/dist/lib/mcp/resources/data-models.js.map +0 -1
  206. package/dist/lib/mcp/resources/gates.d.ts +0 -9
  207. package/dist/lib/mcp/resources/gates.d.ts.map +0 -1
  208. package/dist/lib/mcp/resources/gates.js +0 -76
  209. package/dist/lib/mcp/resources/gates.js.map +0 -1
  210. package/dist/lib/mcp/resources/glossary.d.ts +0 -16
  211. package/dist/lib/mcp/resources/glossary.d.ts.map +0 -1
  212. package/dist/lib/mcp/resources/glossary.js +0 -87
  213. package/dist/lib/mcp/resources/glossary.js.map +0 -1
  214. package/dist/lib/mcp/resources/specs.d.ts +0 -23
  215. package/dist/lib/mcp/resources/specs.d.ts.map +0 -1
  216. package/dist/lib/mcp/resources/specs.js +0 -151
  217. package/dist/lib/mcp/resources/specs.js.map +0 -1
  218. package/dist/lib/mcp/resources/version.d.ts +0 -3
  219. package/dist/lib/mcp/resources/version.d.ts.map +0 -1
  220. package/dist/lib/mcp/resources/version.js +0 -45
  221. package/dist/lib/mcp/resources/version.js.map +0 -1
  222. package/dist/lib/mcp/server.d.ts +0 -29
  223. package/dist/lib/mcp/server.d.ts.map +0 -1
  224. package/dist/lib/mcp/server.js +0 -108
  225. package/dist/lib/mcp/server.js.map +0 -1
  226. package/dist/lib/mcp/tools/cascade-impact.d.ts +0 -22
  227. package/dist/lib/mcp/tools/cascade-impact.d.ts.map +0 -1
  228. package/dist/lib/mcp/tools/cascade-impact.js +0 -53
  229. package/dist/lib/mcp/tools/cascade-impact.js.map +0 -1
  230. package/dist/lib/mcp/tools/catalogue.d.ts +0 -16
  231. package/dist/lib/mcp/tools/catalogue.d.ts.map +0 -1
  232. package/dist/lib/mcp/tools/catalogue.js +0 -268
  233. package/dist/lib/mcp/tools/catalogue.js.map +0 -1
  234. package/dist/lib/mcp/tools/find-consumers-of-contract.d.ts +0 -7
  235. package/dist/lib/mcp/tools/find-consumers-of-contract.d.ts.map +0 -1
  236. package/dist/lib/mcp/tools/find-consumers-of-contract.js +0 -70
  237. package/dist/lib/mcp/tools/find-consumers-of-contract.js.map +0 -1
  238. package/dist/lib/mcp/tools/find-consumers.d.ts +0 -7
  239. package/dist/lib/mcp/tools/find-consumers.d.ts.map +0 -1
  240. package/dist/lib/mcp/tools/find-consumers.js +0 -52
  241. package/dist/lib/mcp/tools/find-consumers.js.map +0 -1
  242. package/dist/lib/mcp/tools/find-dependencies.d.ts +0 -8
  243. package/dist/lib/mcp/tools/find-dependencies.d.ts.map +0 -1
  244. package/dist/lib/mcp/tools/find-dependencies.js +0 -101
  245. package/dist/lib/mcp/tools/find-dependencies.js.map +0 -1
  246. package/dist/lib/mcp/tools/find-dependents.d.ts +0 -8
  247. package/dist/lib/mcp/tools/find-dependents.d.ts.map +0 -1
  248. package/dist/lib/mcp/tools/find-dependents.js +0 -89
  249. package/dist/lib/mcp/tools/find-dependents.js.map +0 -1
  250. package/dist/lib/mcp/tools/find-producers.d.ts +0 -8
  251. package/dist/lib/mcp/tools/find-producers.d.ts.map +0 -1
  252. package/dist/lib/mcp/tools/find-producers.js +0 -57
  253. package/dist/lib/mcp/tools/find-producers.js.map +0 -1
  254. package/dist/lib/mcp/tools/find-related-specs.d.ts +0 -9
  255. package/dist/lib/mcp/tools/find-related-specs.d.ts.map +0 -1
  256. package/dist/lib/mcp/tools/find-related-specs.js +0 -92
  257. package/dist/lib/mcp/tools/find-related-specs.js.map +0 -1
  258. package/dist/lib/mcp/tools/list-adrs.d.ts +0 -3
  259. package/dist/lib/mcp/tools/list-adrs.d.ts.map +0 -1
  260. package/dist/lib/mcp/tools/list-adrs.js +0 -73
  261. package/dist/lib/mcp/tools/list-adrs.js.map +0 -1
  262. package/dist/lib/mcp/tools/query-gate-status.d.ts +0 -3
  263. package/dist/lib/mcp/tools/query-gate-status.d.ts.map +0 -1
  264. package/dist/lib/mcp/tools/query-gate-status.js +0 -68
  265. package/dist/lib/mcp/tools/query-gate-status.js.map +0 -1
  266. package/dist/lib/mcp/tools/search-specs.d.ts +0 -12
  267. package/dist/lib/mcp/tools/search-specs.d.ts.map +0 -1
  268. package/dist/lib/mcp/tools/search-specs.js +0 -151
  269. package/dist/lib/mcp/tools/search-specs.js.map +0 -1
  270. package/dist/lib/mcp/workspace.d.ts +0 -31
  271. package/dist/lib/mcp/workspace.d.ts.map +0 -1
  272. package/dist/lib/mcp/workspace.js +0 -146
  273. package/dist/lib/mcp/workspace.js.map +0 -1
  274. package/dist/lib/mcp-seed/entries.d.ts +0 -32
  275. package/dist/lib/mcp-seed/entries.d.ts.map +0 -1
  276. package/dist/lib/mcp-seed/entries.js +0 -14
  277. package/dist/lib/mcp-seed/entries.js.map +0 -1
  278. package/dist/lib/mcp-seed/index.d.ts +0 -36
  279. package/dist/lib/mcp-seed/index.d.ts.map +0 -1
  280. package/dist/lib/mcp-seed/index.js +0 -28
  281. package/dist/lib/mcp-seed/index.js.map +0 -1
  282. package/dist/lib/mcp-seed/merge.d.ts +0 -34
  283. package/dist/lib/mcp-seed/merge.d.ts.map +0 -1
  284. package/dist/lib/mcp-seed/merge.js +0 -99
  285. package/dist/lib/mcp-seed/merge.js.map +0 -1
  286. package/dist/lib/mcp-seed/types.d.ts +0 -24
  287. package/dist/lib/mcp-seed/types.d.ts.map +0 -1
  288. package/dist/lib/mcp-seed/types.js +0 -13
  289. package/dist/lib/mcp-seed/types.js.map +0 -1
  290. package/dist/lib/sdd-index/cascade.d.ts +0 -46
  291. package/dist/lib/sdd-index/cascade.d.ts.map +0 -1
  292. package/dist/lib/sdd-index/cascade.js +0 -91
  293. package/dist/lib/sdd-index/cascade.js.map +0 -1
  294. package/dist/lib/sdd-index/contracts.d.ts +0 -29
  295. package/dist/lib/sdd-index/contracts.d.ts.map +0 -1
  296. package/dist/lib/sdd-index/contracts.js +0 -216
  297. package/dist/lib/sdd-index/contracts.js.map +0 -1
  298. package/dist/lib/sdd-index/data-model.d.ts +0 -13
  299. package/dist/lib/sdd-index/data-model.d.ts.map +0 -1
  300. package/dist/lib/sdd-index/data-model.js +0 -23
  301. package/dist/lib/sdd-index/data-model.js.map +0 -1
  302. package/dist/lib/sdd-index/execution-map.d.ts +0 -34
  303. package/dist/lib/sdd-index/execution-map.d.ts.map +0 -1
  304. package/dist/lib/sdd-index/execution-map.js +0 -105
  305. package/dist/lib/sdd-index/execution-map.js.map +0 -1
  306. package/dist/lib/sdd-index/graph.d.ts +0 -28
  307. package/dist/lib/sdd-index/graph.d.ts.map +0 -1
  308. package/dist/lib/sdd-index/graph.js +0 -122
  309. package/dist/lib/sdd-index/graph.js.map +0 -1
  310. package/dist/lib/sdd-index/index.d.ts +0 -29
  311. package/dist/lib/sdd-index/index.d.ts.map +0 -1
  312. package/dist/lib/sdd-index/index.js +0 -79
  313. package/dist/lib/sdd-index/index.js.map +0 -1
  314. package/dist/lib/sdd-index/watch.d.ts +0 -24
  315. package/dist/lib/sdd-index/watch.d.ts.map +0 -1
  316. package/dist/lib/sdd-index/watch.js +0 -112
  317. package/dist/lib/sdd-index/watch.js.map +0 -1
  318. package/dist/lib/sync/copilot-hooks-merge.d.ts +0 -36
  319. package/dist/lib/sync/copilot-hooks-merge.d.ts.map +0 -1
  320. package/dist/lib/sync/copilot-hooks-merge.js +0 -108
  321. package/dist/lib/sync/copilot-hooks-merge.js.map +0 -1
  322. package/dist/verbs/mcp.d.ts +0 -3
  323. package/dist/verbs/mcp.d.ts.map +0 -1
  324. package/dist/verbs/mcp.js +0 -22
  325. package/dist/verbs/mcp.js.map +0 -1
@@ -14,7 +14,7 @@ import { createHash } from "node:crypto";
14
14
  import { dirname, join } from "node:path";
15
15
  import { BLOCK_BEGIN, BLOCK_END, WORKFLOW_REL_PATH, renderMethodManagedWorkflowBlock, renderMethodValidationWorkflow, } from "../init/ci-workflow.js";
16
16
  import { detectBlockDrift, writeMarkedBlockFile } from "../sync/yaml-block-merge.js";
17
- import { DAGGER_VERSION, MODULE_CALL, MODULE_DIR, moduleSha256, renderModuleFiles } from "./module.js";
17
+ import { DAGGER_VERSION, MODULE_CALL, MODULE_DIR, REBUILD_FLAG, REBUILD_SCRIPT, moduleSha256, renderModuleFiles } from "./module.js";
18
18
  export const CI_BINDINGS = ["github", "gitlab", "jenkins"];
19
19
  /** M-ADR 0219 §8.2 (ruled 2026-10-16): what every SDD has before it chooses. */
20
20
  export const DEFAULT_CI_BINDING = "github";
@@ -34,6 +34,18 @@ export function isCiBinding(s) {
34
34
  const HASH = { begin: BLOCK_BEGIN, end: BLOCK_END };
35
35
  // Groovy has no '#' comments.
36
36
  const SLASH = { begin: "// method-managed: begin", end: "// method-managed: end" };
37
+ // How each host's adopter switches the catalogue rebuild on (M-ADR 0220 §4.4): the variable the method names.
38
+ const REBUILD_SETUP = {
39
+ "#": [
40
+ "set the masked (not protected) CI variable",
41
+ "SDD_CATALOGUE_PUSH_TOKEN to a project or group access token with write_repository.",
42
+ ],
43
+ "//": [
44
+ "set the job's environment variable",
45
+ "SDD_CATALOGUE_PUSH_CREDENTIAL to the ID of a username-and-password credential (a token",
46
+ "with write) for the repository's https remote.",
47
+ ],
48
+ };
37
49
  function header(comment, profile) {
38
50
  return [
39
51
  `${comment} Method Validation per M-ADR 0129, run by the method's Dagger module (M-ADR 0219).`,
@@ -47,6 +59,11 @@ function header(comment, profile) {
47
59
  comment,
48
60
  `${comment} Run it locally:`,
49
61
  `${comment} ${MODULE_CALL}`,
62
+ comment,
63
+ `${comment} Catalogue rebuild (M-ADR 0220 §4.4), off until you configure it:`,
64
+ ...REBUILD_SETUP[comment].map((l) => `${comment} ${l}`),
65
+ `${comment} The job then rebuilds the catalogues and pushes them to the branch it is`,
66
+ `${comment} building (never a fork's), and the freshness step gates.`,
50
67
  ];
51
68
  }
52
69
  // GitLab: a Docker-in-Docker service, the shape GitLab documents for Dagger. The runner must allow
@@ -71,10 +88,16 @@ function gitlabBlock(profile, runner) {
71
88
  ' - if: $CI_PIPELINE_SOURCE == "merge_request_event"',
72
89
  " - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH",
73
90
  " before_script:",
74
- " - apk add --no-cache curl",
91
+ " - apk add --no-cache curl git",
75
92
  ` - curl -fsSL https://dl.dagger.io/dagger/install.sh | BIN_DIR=/usr/local/bin DAGGER_VERSION=${DAGGER_VERSION} sh`,
76
93
  " script:",
77
- ` - ${MODULE_CALL}`,
94
+ " - |",
95
+ ' if [ -n "${SDD_CATALOGUE_PUSH_TOKEN:-}" ] && [ "${CI_MERGE_REQUEST_SOURCE_PROJECT_ID:-$CI_PROJECT_ID}" = "$CI_PROJECT_ID" ]; then',
96
+ ' SDD_REBUILD_BRANCH="${CI_MERGE_REQUEST_SOURCE_BRANCH_NAME:-$CI_COMMIT_BRANCH}" \\',
97
+ ' SDD_REBUILD_PUSH_URL="${CI_SERVER_PROTOCOL}://oauth2:${SDD_CATALOGUE_PUSH_TOKEN}@${CI_SERVER_URL#*://}/${CI_PROJECT_PATH}.git" \\',
98
+ ` sh ${REBUILD_SCRIPT}`,
99
+ " fi",
100
+ ` - ${MODULE_CALL} ${REBUILD_FLAG}`,
78
101
  HASH.end,
79
102
  ].join("\n");
80
103
  }
@@ -92,7 +115,18 @@ function jenkinsBlock(profile, runner) {
92
115
  " stage('Method Validation') {",
93
116
  " steps {",
94
117
  ` sh 'curl -fsSL https://dl.dagger.io/dagger/install.sh | BIN_DIR="$WORKSPACE@tmp/dagger" DAGGER_VERSION=${DAGGER_VERSION} sh'`,
95
- ` sh 'PATH="$WORKSPACE@tmp/dagger:$PATH" ${MODULE_CALL}'`,
118
+ " script {",
119
+ " if (env.SDD_CATALOGUE_PUSH_CREDENTIAL && !env.CHANGE_FORK) {",
120
+ " withCredentials([usernamePassword(credentialsId: env.SDD_CATALOGUE_PUSH_CREDENTIAL, usernameVariable: 'SDD_PUSH_USER', passwordVariable: 'SDD_PUSH_TOKEN')]) {",
121
+ " sh '''",
122
+ ' export SDD_REBUILD_BRANCH="${CHANGE_BRANCH:-${BRANCH_NAME:-${GIT_BRANCH#origin/}}}"',
123
+ ' export SDD_REBUILD_PUSH_URL="$(git config --get remote.origin.url | sed "s#^https://#https://${SDD_PUSH_USER}:${SDD_PUSH_TOKEN}@#")"',
124
+ ` PATH="$WORKSPACE@tmp/dagger:$PATH" sh ${REBUILD_SCRIPT}`,
125
+ " '''",
126
+ " }",
127
+ " }",
128
+ " }",
129
+ ` sh 'PATH="$WORKSPACE@tmp/dagger:$PATH" ${MODULE_CALL} ${REBUILD_FLAG}'`,
96
130
  " }",
97
131
  " }",
98
132
  " }",
@@ -160,7 +194,12 @@ export async function syncCiBinding(o) {
160
194
  onDisk.push([rel, await tryRead(join(o.targetRepo, MODULE_DIR, rel))]);
161
195
  const present = onDisk.some(([, c]) => c !== null);
162
196
  const matches = rendered.every(([rel, c], i) => onDisk[i][0] === rel && onDisk[i][1] === c);
163
- const modulePristine = o.prevLock?.ciModuleSha256 !== undefined && moduleSha256(onDisk) === o.prevLock.ciModuleSha256;
197
+ // Pristine when the files on disk hash to the lock's digest. The render may list a file the last sync
198
+ // never wrote (the generator gained one): it is absent, not edited, so the digest over the files present
199
+ // decides. A file the adopter deleted still changes that digest, so it is still drift.
200
+ const lockSha = o.prevLock?.ciModuleSha256;
201
+ const modulePristine = lockSha !== undefined &&
202
+ (moduleSha256(onDisk) === lockSha || moduleSha256(onDisk.filter(([, c]) => c !== null)) === lockSha);
164
203
  if (present && !matches && modulePristine) {
165
204
  log.push(`${MODULE_DIR}/: unmodified since the last sync (digest matches the lock); re-rendering it for this sdd-cli.`);
166
205
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/ci-binding/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAG1C,OAAO,EACL,WAAW,EACX,SAAS,EACT,iBAAiB,EACjB,gCAAgC,EAChC,8BAA8B,GAC/B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAqB,MAAM,6BAA6B,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEvG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAU,CAAC;AAEpE,gFAAgF;AAChF,MAAM,CAAC,MAAM,kBAAkB,GAAc,QAAQ,CAAC;AAEtD;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAC3C,MAAM,YAAY,GAAG,8BAA8B,CAAC;AACpD,MAAM,UAAU,aAAa,CAAC,CAAS;IACrC,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,OAAQ,WAAiC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAYD,MAAM,IAAI,GAAiB,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;AAClE,8BAA8B;AAC9B,MAAM,KAAK,GAAiB,EAAE,KAAK,EAAE,0BAA0B,EAAE,GAAG,EAAE,wBAAwB,EAAE,CAAC;AAEjG,SAAS,MAAM,CAAC,OAAe,EAAE,OAAgB;IAC/C,OAAO;QACL,GAAG,OAAO,oFAAoF;QAC9F,GAAG,OAAO,mEAAmE;QAC7E,GAAG,OAAO,4EAA4E;QACtF,GAAG,OAAO,aAAa,OAAO,EAAE;QAChC,OAAO;QACP,GAAG,OAAO,gCAAgC,UAAU,iCAAiC;QACrF,GAAG,OAAO,qEAAqE;QAC/E,GAAG,OAAO,iEAAiE;QAC3E,OAAO;QACP,GAAG,OAAO,kBAAkB;QAC5B,GAAG,OAAO,MAAM,WAAW,EAAE;KAC9B,CAAC;AACJ,CAAC;AAED,mGAAmG;AACnG,iGAAiG;AACjG,4FAA4F;AAC5F,SAAS,WAAW,CAAC,OAAgB,EAAE,MAA0B;IAC/D,OAAO;QACL,IAAI,CAAC,KAAK;QACV,GAAG,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC;QACvB,EAAE;QACF,oBAAoB;QACpB,wBAAwB;QACxB,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,aAAa;QACb,0BAA0B;QAC1B,cAAc;QACd,oCAAoC;QACpC,kCAAkC;QAClC,4BAA4B;QAC5B,uCAAuC;QACvC,UAAU;QACV,wDAAwD;QACxD,mDAAmD;QACnD,kBAAkB;QAClB,+BAA+B;QAC/B,mGAAmG,cAAc,KAAK;QACtH,WAAW;QACX,SAAS,WAAW,EAAE;QACtB,IAAI,CAAC,GAAG;KACT,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,0FAA0F;AAC1F,mGAAmG;AACnG,gFAAgF;AAChF,SAAS,YAAY,CAAC,OAAgB,EAAE,MAA0B;IAChE,OAAO;QACL,KAAK,CAAC,KAAK;QACX,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC;QACxB,EAAE;QACF,YAAY;QACZ,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa;QACxG,YAAY;QACZ,kCAAkC;QAClC,eAAe;QACf,kHAAkH,cAAc,MAAM;QACtI,kDAAkD,WAAW,GAAG;QAChE,SAAS;QACT,OAAO;QACP,KAAK;QACL,GAAG;QACH,KAAK,CAAC,GAAG;KACV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAmC;IAC3D,MAAM,EAAE;QACN,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,gCAAgC;QACvC,IAAI,EAAE,8BAA8B;KACrC;IACD,MAAM,EAAE;QACN,OAAO,EAAE,gBAAgB;QACzB,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,6EAA6E;KAClH;IACD,OAAO,EAAE;QACP,OAAO,EAAE,wCAAwC;QACjD,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI;KAC1C;CACF,CAAC;AAEF,2GAA2G;AAC3G,MAAM,UAAU,WAAW,CAAC,IAAmB,EAAE,OAAqB;IACpE,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC1F,CAAC;AAyBD,yFAAyF;AACzF,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,CAAuB;IACzD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;IAEhF,uBAAuB;IACvB,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,QAAQ,KAAK,IAAI,IAAI,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrF,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;IACjH,MAAM,UAAU,GACd,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1H,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;QACxB,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,oHAAoH,CAAC,CAAC;IAChJ,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QAC1C,QAAQ,CAAC,IAAI,CACX,GAAG,IAAI,CAAC,OAAO,8RAA8R,CAC9S,CAAC;IACJ,CAAC;SAAM,IAAI,UAAU,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;QAC3C,QAAQ,CAAC,IAAI,CACX,GAAG,IAAI,CAAC,OAAO,oIAAoI,CACpJ,CAAC;IACJ,CAAC;IAED,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IACrC,MAAM,MAAM,GAAmC,EAAE,CAAC;IAClD,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ;QAAE,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9F,MAAM,cAAc,GAAG,CAAC,CAAC,QAAQ,EAAE,cAAc,KAAK,SAAS,IAAI,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;IACtH,IAAI,OAAO,IAAI,CAAC,OAAO,IAAI,cAAc,EAAE,CAAC;QAC1C,GAAG,CAAC,IAAI,CAAC,GAAG,UAAU,gGAAgG,CAAC,CAAC;IAC1H,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QAC5D,QAAQ,CAAC,IAAI,CACX,GAAG,UAAU,gOAAgO,CAC9O,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9E,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,UAAU,EAAE,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC;IACnJ,IAAI,OAAO,CAAC,OAAO;QAAE,GAAG,CAAC,IAAI,CAAC,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IAC/F,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;YAChD,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/C,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,IAAI,UAAU,+CAA+C,CAAC,CAAC;IAC5G,CAAC;IAED,iGAAiG;IACjG,mGAAmG;IACnG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC;QAClC,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,KAAK,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACjG,IAAI,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACnE,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,4DAA4D,IAAI,CAAC,OAAO,QAAQ,CAAC,CAAC;QAChJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ;QACR,GAAG;QACH,UAAU,EAAE,WAAW,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC;QAChE,SAAS,EAAE,YAAY,CAAC,QAAQ,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,IAAY;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,mGAAmG;AACnG,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,UAAkB;IAClE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,iBAAiB,EAAE,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;QAC9C,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,MAAM,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,GAAG,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/ci-binding/index.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,16 @@ export declare const MODULE_DIR = ".dagger/method-validation";
20
20
  export declare const DAGGER_VERSION = "0.21.10";
21
21
  /** The command every host wrapper runs. */
22
22
  export declare const MODULE_CALL = "dagger call -m .dagger/method-validation method-validation --source .";
23
+ /** The pipeline catalogue rebuild (M-ADR 0220 §4.4): a method-managed script in the module, run by every host wrapper. */
24
+ export declare const REBUILD_SCRIPT = ".dagger/method-validation/catalogue-rebuild.sh";
25
+ /**
26
+ * Left in the git directory by REBUILD_SCRIPT when the rebuild ran, whether or not it pushed. Every
27
+ * wrapper turns it into the module's --catalogue-rebuild, so the freshness step gates exactly where
28
+ * the rebuild ran (sdm-jts.9's ruling) and the wrapper holds no condition of its own.
29
+ */
30
+ export declare const REBUILD_RAN_MARKER = "sdd-catalogue-rebuild-ran";
31
+ /** What every wrapper appends to MODULE_CALL: --catalogue-rebuild when, and only when, the rebuild ran. */
32
+ export declare const REBUILD_FLAG = "$(test -f \"$(git rev-parse --git-dir)/sdd-catalogue-rebuild-ran\" && echo --catalogue-rebuild)";
23
33
  /**
24
34
  * The module's files, relative to MODULE_DIR, in a fixed order. Pins default to the versions released
25
35
  * with this sdd-cli (M-ADR 0218 §4.6); the parity harness passes candidate versions.
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/lib/ci-binding/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,4EAA4E;AAC5E,eAAO,MAAM,UAAU,8BAA8B,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,cAAc,YAAY,CAAC;AAExC,2CAA2C;AAC3C,eAAO,MAAM,WAAW,0EAA8D,CAAC;AAmKvF;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,GAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAyE,GAChH,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CASzB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAM1E"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../src/lib/ci-binding/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,4EAA4E;AAC5E,eAAO,MAAM,UAAU,8BAA8B,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,cAAc,YAAY,CAAC;AAExC,2CAA2C;AAC3C,eAAO,MAAM,WAAW,0EAA8D,CAAC;AAEvF,0HAA0H;AAC1H,eAAO,MAAM,cAAc,mDAAuC,CAAC;AAEnE;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,8BAA8B,CAAC;AAE9D,2GAA2G;AAC3G,eAAO,MAAM,YAAY,oGAA8F,CAAC;AAiOxH;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,GAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAyE,GAChH,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAUzB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAM1E"}
@@ -22,6 +22,16 @@ export const MODULE_DIR = ".dagger/method-validation";
22
22
  export const DAGGER_VERSION = "0.21.10";
23
23
  /** The command every host wrapper runs. */
24
24
  export const MODULE_CALL = `dagger call -m ${MODULE_DIR} method-validation --source .`;
25
+ /** The pipeline catalogue rebuild (M-ADR 0220 §4.4): a method-managed script in the module, run by every host wrapper. */
26
+ export const REBUILD_SCRIPT = `${MODULE_DIR}/catalogue-rebuild.sh`;
27
+ /**
28
+ * Left in the git directory by REBUILD_SCRIPT when the rebuild ran, whether or not it pushed. Every
29
+ * wrapper turns it into the module's --catalogue-rebuild, so the freshness step gates exactly where
30
+ * the rebuild ran (sdm-jts.9's ruling) and the wrapper holds no condition of its own.
31
+ */
32
+ export const REBUILD_RAN_MARKER = "sdd-catalogue-rebuild-ran";
33
+ /** What every wrapper appends to MODULE_CALL: --catalogue-rebuild when, and only when, the rebuild ran. */
34
+ export const REBUILD_FLAG = `$(test -f "$(git rev-parse --git-dir)/${REBUILD_RAN_MARKER}" && echo --catalogue-rebuild)`;
25
35
  const VERIFY_PIN = "@@VERIFY_CLI_VERSION@@";
26
36
  // The module's SDK import, substituted at render: written literally, the persona builds' import-closure
27
37
  // scan would read this text as an import of the CLI's own and refuse a dependency it does not declare.
@@ -39,7 +49,8 @@ const INDEX_TS = String.raw `/**
39
49
  *
40
50
  * The steps are the method's job plan, read at run time from "sdd-verify validate --list". Every
41
51
  * step runs even after an earlier one fails, so one red step never hides the verdicts after it. The
42
- * job fails only when a non-advisory step fails; the catalogue freshness step is advisory.
52
+ * job fails only when a non-advisory step fails; the catalogue freshness step is advisory unless the
53
+ * pipeline rebuilt the catalogues on this run (catalogue-rebuild.sh, M-ADR 0220 §4.4).
43
54
  */
44
55
  import { dag, Container, Directory, File, object, func, ReturnType } from ${DAGGER_SDK}
45
56
 
@@ -102,12 +113,14 @@ export class MethodValidation {
102
113
  maintainVersion: string = "${MAINTAIN_PIN}",
103
114
  verifyTarball?: File,
104
115
  maintainTarball?: File,
116
+ catalogueRebuild: boolean = false,
105
117
  ): Promise<string> {
106
118
  const base = this.toolchain(verifyVersion, maintainVersion, verifyTarball, maintainTarball)
107
119
  .withMountedDirectory("/src", source)
108
120
  .withWorkdir("/src")
109
121
  const versions = (await base.withExec(["sh", "-c", "sdd-verify --version; sdd-maintain --version"]).stdout()).split("\n")
110
- const plan = JSON.parse(await base.withExec(["sdd-verify", "validate", "--list"]).stdout()) as {
122
+ const listArgs = ["sdd-verify", "validate", "--list"]
123
+ const plan = JSON.parse(await base.withExec(catalogueRebuild ? [...listArgs, "--catalogue-rebuild"] : listArgs).stdout()) as {
111
124
  profile: string
112
125
  steps: PlanStep[]
113
126
  }
@@ -130,8 +143,66 @@ export class MethodValidation {
130
143
  if (failed > 0) throw new Error(report)
131
144
  return report
132
145
  }
146
+
147
+ /**
148
+ * Rebuild the committed catalogues from the specifications (M-ADR 0220 §4.4) and return the whole
149
+ * new catalogues directory: every file sdd-maintain catalogue build produces, plus every file
150
+ * already there except a .csv the build no longer produces, the freshness check's own rule. The
151
+ * host wrapper's catalogue-rebuild.sh exports it over catalogues/ and pushes only if it changed.
152
+ */
153
+ @func()
154
+ catalogueRebuild(source: Directory, maintainVersion: string = "${MAINTAIN_PIN}", maintainTarball?: File): Directory {
155
+ return this.toolchain(undefined, maintainVersion, undefined, maintainTarball)
156
+ .withMountedDirectory("/src", source)
157
+ .withWorkdir("/src")
158
+ .withExec(["sdd-maintain", "catalogue", "build", "--sdd-path", ".", "--out", "/rebuilt"])
159
+ .withExec([
160
+ "sh",
161
+ "-c",
162
+ "mkdir -p /next && if [ -d catalogues ]; then cp -a catalogues/. /next/; fi && " +
163
+ "for f in /next/*.csv; do [ -e \"$f\" ] || continue; [ -e \"/rebuilt/$(basename \"$f\")\" ] || rm \"$f\"; done && " +
164
+ "cp -a /rebuilt/. /next/",
165
+ ])
166
+ .directory("/next")
167
+ }
133
168
  }
134
169
  `;
170
+ // Run by every host wrapper, and only where the adopter has provided the push credential. Plain
171
+ // strings, not a template: the shell's own \${...} must reach the file as written.
172
+ const REBUILD_SH = [
173
+ "#!/bin/sh",
174
+ "# Pipeline catalogue rebuild (M-ADR 0220 §4.4). Written by sdd-cli sync and method-managed, like the",
175
+ "# rest of this module. The host wrapper runs it only where the adopter has provided the push",
176
+ "# credential, and sets:",
177
+ "# SDD_REBUILD_BRANCH the branch this pipeline builds, which the rebuild is pushed to",
178
+ "# SDD_REBUILD_PUSH_URL the repository's URL, carrying the credential",
179
+ "#",
180
+ "# A rebuild that changes nothing pushes nothing, so the push cannot loop: the pipeline it starts",
181
+ "# rebuilds the same catalogues, finds no change, and runs Method Validation.",
182
+ "set -eu",
183
+ ': "${SDD_REBUILD_BRANCH:?the host wrapper sets it}" "${SDD_REBUILD_PUSH_URL:?the host wrapper sets it}"',
184
+ "",
185
+ "# A merge the pipeline made (a merged-results or merge-with-target build) is not the branch's head,",
186
+ "# and pushing it would put that merge on the branch. The branch's own pipeline rebuilds instead.",
187
+ 'if [ "$(git rev-list --parents -n 1 HEAD | wc -w)" -gt 2 ]; then',
188
+ ' echo "Catalogue rebuild: skipped, HEAD is a merge commit this pipeline made; the branch pipeline rebuilds."',
189
+ " exit 0",
190
+ "fi",
191
+ "",
192
+ "dagger call -m " + MODULE_DIR + " catalogue-rebuild --source . export --path catalogues --wipe >/dev/null",
193
+ 'touch "$(git rev-parse --git-dir)/' + REBUILD_RAN_MARKER + '"',
194
+ "git add -A catalogues",
195
+ "if git diff --cached --quiet; then",
196
+ ' echo "Catalogue rebuild: the committed catalogues already match the specifications; nothing to push."',
197
+ " exit 0",
198
+ "fi",
199
+ "git diff --cached --stat",
200
+ 'git -c user.name="sdd-method catalogue rebuild" -c user.email="catalogue-rebuild@sdd-method.invalid" \\',
201
+ ' commit -q -m "Rebuild catalogues from the specifications (Method Validation, M-ADR 0220 §4.4)"',
202
+ 'git push -q "$SDD_REBUILD_PUSH_URL" "HEAD:refs/heads/$SDD_REBUILD_BRANCH"',
203
+ 'echo "Catalogue rebuild: pushed $(git rev-parse --short HEAD) to $SDD_REBUILD_BRANCH; Method Validation runs on it there too."',
204
+ "",
205
+ ].join("\n");
135
206
  const DAGGER_JSON = `{
136
207
  "name": "method-validation",
137
208
  "engineVersion": "v${DAGGER_VERSION}",
@@ -183,6 +254,7 @@ const GITIGNORE = `/sdk
183
254
  export function renderModuleFiles(pins = { verify: getVerifyCliVersion(), maintain: getMaintainCliVersion() }) {
184
255
  return [
185
256
  [".gitignore", GITIGNORE],
257
+ ["catalogue-rebuild.sh", REBUILD_SH],
186
258
  ["dagger.json", DAGGER_JSON],
187
259
  ["package.json", PACKAGE_JSON],
188
260
  ["src/index.ts", INDEX_TS.split(VERIFY_PIN).join(pins.verify).split(MAINTAIN_PIN).join(pins.maintain).split(DAGGER_SDK).join('"@dagger.io' + '/dagger"')],
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../src/lib/ci-binding/module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEnF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,UAAU,GAAG,2BAA2B,CAAC;AAEtD;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;AAExC,2CAA2C;AAC3C,MAAM,CAAC,MAAM,WAAW,GAAG,kBAAkB,UAAU,+BAA+B,CAAC;AAEvF,MAAM,UAAU,GAAG,wBAAwB,CAAC;AAC5C,wGAAwG;AACxG,uGAAuG;AACvG,MAAM,UAAU,GAAG,gBAAgB,CAAC;AACpC,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAEhD,gGAAgG;AAChG,+EAA+E;AAC/E,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;4EAYiD,UAAU;;;;;;;;;;;;;;;;;;;;;;+BAsBvD,UAAU;iCACR,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+BAkCd,UAAU;iCACR,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgC5C,CAAC;AAEF,MAAM,WAAW,GAAG;;uBAEG,cAAc;;;;;CAKpC,CAAC;AAEF,MAAM,YAAY,GAAG;;;;;;CAMpB,CAAC;AAEF,MAAM,aAAa,GAAG;;;;;;;;;;;;;CAarB,CAAC;AAEF,MAAM,SAAS,GAAG;;;;;;;;CAQjB,CAAC;AAEF,uEAAuE;AACvE,MAAM,SAAS,GAAG;;;;CAIjB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAA6C,EAAE,MAAM,EAAE,mBAAmB,EAAE,EAAE,QAAQ,EAAE,qBAAqB,EAAE,EAAE;IAEjH,OAAO;QACL,CAAC,YAAY,EAAE,SAAS,CAAC;QACzB,CAAC,aAAa,EAAE,WAAW,CAAC;QAC5B,CAAC,cAAc,EAAE,YAAY,CAAC;QAC9B,CAAC,cAAc,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,CAAC;QACzJ,CAAC,eAAe,EAAE,aAAa,CAAC;QAChC,CAAC,WAAW,EAAE,SAAS,CAAC;KACzB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAqC;IAChE,MAAM,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC/B,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC;QACnC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../../src/lib/ci-binding/module.ts"],"names":[],"mappings":"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"}
@@ -7,25 +7,49 @@
7
7
  */
8
8
  import type { HookMatcher, HooksBlock } from "./types.js";
9
9
  export declare function buildMethodGuardPreToolUse(): HookMatcher;
10
+ /** The verify persona's npm package, unless the lock names a rescoped one (sync --cli-package). */
11
+ export declare const DEFAULT_VERIFY_CLI_PACKAGE = "@sdd-method/verify-cli";
12
+ /** One npm package name, scoped or not, the shape `npm pack` and `npx` accept. */
13
+ export declare const NPM_PACKAGE_NAME: RegExp;
14
+ /**
15
+ * Where the session-start check finds the verify CLI, recorded in the lock as `cli_source`
16
+ * (sync --cli-source):
17
+ *
18
+ * registry `npx --yes <package>@<version>`: npm fetches the exact version, nothing is installed
19
+ * globally. The default. `package` overrides the name for a registry that rescopes it.
20
+ * installed `sdd-verify` from PATH, for an org with no npm registry that installs the verify CLI
21
+ * from the release's tarballs. The hook first compares `sdd-verify --version` with the
22
+ * pinned version and, when it differs or the CLI is missing, prints one line naming
23
+ * the version to install; it runs the check only when a CLI is there to run it.
24
+ */
25
+ export type CliSource = {
26
+ readonly source: "registry";
27
+ readonly package?: string;
28
+ } | {
29
+ readonly source: "installed";
30
+ };
31
+ export declare const CLI_SOURCES: readonly ["registry", "installed"];
32
+ export declare const DEFAULT_CLI_SOURCE: CliSource;
10
33
  /**
11
34
  * The session-start check runs the VERIFY persona's CLI (M-ADR 0218, 0220), not sdd-cli, which is
12
- * the administrator's: validating is routine author work. It runs through npx at the exact
13
- * verify-cli version this sdd-cli releases with, the version the managed CI workflow installs, so a
14
- * local pass comes from the same verifier CI uses and nothing needs installing globally.
35
+ * the administrator's: validating is routine author work. It runs at the exact verify-cli version
36
+ * this sdd-cli releases with, the version the managed CI workflow installs, so a local pass comes
37
+ * from the same verifier CI uses.
15
38
  */
16
- export declare function sessionStartValidateCommand(verifyVersion?: string): string;
39
+ export declare function sessionStartValidateCommand(verifyVersion?: string, cli?: CliSource): string;
17
40
  /**
18
- * Whether a session-start command is one this tool rendered, at any version: the sdd-cli form it
19
- * wrote until the hook moved to verify-cli, or the npx form at any exact version. Sync replaces its
20
- * own earlier render without counting it as drift; otherwise every release that moves the pinned
21
- * version would refuse the settings sync until --allow-overwrite, the flag that also rewrites keys
22
- * the adopter owns. Anything else under the sentinel (an edited command) is still drift.
41
+ * Whether a session-start command is one this tool rendered, at any exact version and from either
42
+ * source: the sdd-cli form it wrote until the hook moved to verify-cli, the npx form under any
43
+ * package name, or the installed form. Sync replaces its own earlier render without counting it as
44
+ * drift, so a release that moves the pin, or a switch of source, needs no --allow-overwrite (the
45
+ * flag that also rewrites keys the adopter owns). The candidate is re-rendered from the version it
46
+ * names and must match exactly, so anything edited under the sentinel is still drift.
23
47
  */
24
48
  export declare function isOwnSessionStartRender(command: string): boolean;
25
- export declare function buildSessionStartValidate(): HookMatcher;
49
+ export declare function buildSessionStartValidate(cli?: CliSource): HookMatcher;
26
50
  /**
27
51
  * Full method-managed hooks block. When extending, add a new event
28
52
  * name to the returned object and a corresponding builder above.
29
53
  */
30
- export declare function buildMethodManagedHooks(): HooksBlock;
54
+ export declare function buildMethodManagedHooks(cli?: CliSource): HooksBlock;
31
55
  //# sourceMappingURL=entries.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks-seed/entries.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAiB,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQzE,wBAAgB,0BAA0B,IAAI,WAAW,CAYxD;AAMD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,aAAa,GAAE,MAA8B,GAAG,MAAM,CAEjG;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAOhE;AAED,wBAAgB,yBAAyB,IAAI,WAAW,CAUvD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,UAAU,CAMpD"}
1
+ {"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks-seed/entries.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAiB,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQzE,wBAAgB,0BAA0B,IAAI,WAAW,CAYxD;AAKD,mGAAmG;AACnG,eAAO,MAAM,0BAA0B,2BAA2B,CAAC;AAEnE,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,QAAuD,CAAC;AAErF;;;;;;;;;;GAUG;AACH,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAAC;AACtH,eAAO,MAAM,WAAW,oCAAqC,CAAC;AAC9D,eAAO,MAAM,kBAAkB,EAAE,SAAkC,CAAC;AAepE;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,aAAa,GAAE,MAA8B,EAC7C,GAAG,GAAE,SAA8B,GAClC,MAAM,CAMR;AAKD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQhE;AAED,wBAAgB,yBAAyB,CAAC,GAAG,GAAE,SAA8B,GAAG,WAAW,CAU1F;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,GAAE,SAA8B,GAAG,UAAU,CAMvF"}
@@ -24,40 +24,62 @@ export function buildMethodGuardPreToolUse() {
24
24
  };
25
25
  }
26
26
  const SESSION_START_VALIDATE_ARGS = ' validate --target-repo "${CLAUDE_PROJECT_DIR:-$(pwd)}" --validator adr-structure 2>&1 | head -20';
27
- const VERIFY_CLI_NPX = /^npx --yes @sdd-method\/verify-cli@(\S+)$/;
27
+ /** The verify persona's npm package, unless the lock names a rescoped one (sync --cli-package). */
28
+ export const DEFAULT_VERIFY_CLI_PACKAGE = "@sdd-method/verify-cli";
29
+ /** One npm package name, scoped or not, the shape `npm pack` and `npx` accept. */
30
+ export const NPM_PACKAGE_NAME = /^(@[a-z0-9][a-z0-9._~-]*\/)?[a-z0-9][a-z0-9._~-]*$/;
31
+ export const CLI_SOURCES = ["registry", "installed"];
32
+ export const DEFAULT_CLI_SOURCE = { source: "registry" };
33
+ function registryLauncher(version, pkg) {
34
+ return `npx --yes ${pkg}@${version}${SESSION_START_VALIDATE_ARGS}`;
35
+ }
36
+ function installedLauncher(version) {
37
+ return (`v=$(sdd-verify --version 2>/dev/null); [ "$v" = "${version}" ] || ` +
38
+ `echo "[method] sdd-verify \${v:-is not installed}; this SDD pins verify-cli ${version}: ` +
39
+ `pull your CLI release repository and run ./install.sh ${version}"; ` +
40
+ `if [ -n "$v" ]; then sdd-verify${SESSION_START_VALIDATE_ARGS}; fi`);
41
+ }
28
42
  /**
29
43
  * The session-start check runs the VERIFY persona's CLI (M-ADR 0218, 0220), not sdd-cli, which is
30
- * the administrator's: validating is routine author work. It runs through npx at the exact
31
- * verify-cli version this sdd-cli releases with, the version the managed CI workflow installs, so a
32
- * local pass comes from the same verifier CI uses and nothing needs installing globally.
44
+ * the administrator's: validating is routine author work. It runs at the exact verify-cli version
45
+ * this sdd-cli releases with, the version the managed CI workflow installs, so a local pass comes
46
+ * from the same verifier CI uses.
33
47
  */
34
- export function sessionStartValidateCommand(verifyVersion = getVerifyCliVersion()) {
35
- return withSentinel(`npx --yes @sdd-method/verify-cli@${verifyVersion}${SESSION_START_VALIDATE_ARGS}`);
48
+ export function sessionStartValidateCommand(verifyVersion = getVerifyCliVersion(), cli = DEFAULT_CLI_SOURCE) {
49
+ const body = cli.source === "installed"
50
+ ? installedLauncher(verifyVersion)
51
+ : registryLauncher(verifyVersion, cli.package ?? DEFAULT_VERIFY_CLI_PACKAGE);
52
+ return withSentinel(body);
36
53
  }
54
+ const REGISTRY_FORM = /^npx --yes ((?:@[a-z0-9][a-z0-9._~-]*\/)?[a-z0-9][a-z0-9._~-]*)@(\S+) validate /;
55
+ const INSTALLED_FORM = /^v=\$\(sdd-verify --version 2>\/dev\/null\); \[ "\$v" = "([^"]+)" \]/;
37
56
  /**
38
- * Whether a session-start command is one this tool rendered, at any version: the sdd-cli form it
39
- * wrote until the hook moved to verify-cli, or the npx form at any exact version. Sync replaces its
40
- * own earlier render without counting it as drift; otherwise every release that moves the pinned
41
- * version would refuse the settings sync until --allow-overwrite, the flag that also rewrites keys
42
- * the adopter owns. Anything else under the sentinel (an edited command) is still drift.
57
+ * Whether a session-start command is one this tool rendered, at any exact version and from either
58
+ * source: the sdd-cli form it wrote until the hook moved to verify-cli, the npx form under any
59
+ * package name, or the installed form. Sync replaces its own earlier render without counting it as
60
+ * drift, so a release that moves the pin, or a switch of source, needs no --allow-overwrite (the
61
+ * flag that also rewrites keys the adopter owns). The candidate is re-rendered from the version it
62
+ * names and must match exactly, so anything edited under the sentinel is still drift.
43
63
  */
44
64
  export function isOwnSessionStartRender(command) {
45
65
  const body = command.replace(METHOD_MANAGED_SENTINEL, "").trimEnd();
46
- if (!body.endsWith(SESSION_START_VALIDATE_ARGS))
47
- return false;
48
- const launcher = body.slice(0, body.length - SESSION_START_VALIDATE_ARGS.length);
49
- if (launcher === "sdd-cli")
66
+ if (body === `sdd-cli${SESSION_START_VALIDATE_ARGS}`)
50
67
  return true;
51
- const npx = VERIFY_CLI_NPX.exec(launcher);
52
- return npx !== null && EXACT_VERSION.test(npx[1]);
68
+ const npx = REGISTRY_FORM.exec(body);
69
+ if (npx && EXACT_VERSION.test(npx[2]))
70
+ return body === registryLauncher(npx[2], npx[1]);
71
+ const installed = INSTALLED_FORM.exec(body);
72
+ if (installed && EXACT_VERSION.test(installed[1]))
73
+ return body === installedLauncher(installed[1]);
74
+ return false;
53
75
  }
54
- export function buildSessionStartValidate() {
76
+ export function buildSessionStartValidate(cli = DEFAULT_CLI_SOURCE) {
55
77
  return {
56
78
  matcher: "startup",
57
79
  hooks: [
58
80
  {
59
81
  type: "command",
60
- command: sessionStartValidateCommand(),
82
+ command: sessionStartValidateCommand(getVerifyCliVersion(), cli),
61
83
  },
62
84
  ],
63
85
  };
@@ -66,10 +88,10 @@ export function buildSessionStartValidate() {
66
88
  * Full method-managed hooks block. When extending, add a new event
67
89
  * name to the returned object and a corresponding builder above.
68
90
  */
69
- export function buildMethodManagedHooks() {
91
+ export function buildMethodManagedHooks(cli = DEFAULT_CLI_SOURCE) {
70
92
  const hooks = {
71
93
  PreToolUse: [buildMethodGuardPreToolUse()],
72
- SessionStart: [buildSessionStartValidate()],
94
+ SessionStart: [buildSessionStartValidate(cli)],
73
95
  };
74
96
  return hooks;
75
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"entries.js","sourceRoot":"","sources":["../../../src/lib/hooks-seed/entries.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,SAAS,YAAY,CAAC,OAAe;IACnC,IAAI,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAAE,OAAO,OAAO,CAAC;IAC9D,OAAO,GAAG,OAAO,IAAI,uBAAuB,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO;QACL,OAAO,EAAE,yBAAyB;QAClC,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,YAAY,CACnB,mFAAmF,CACpF;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,2BAA2B,GAC/B,mGAAmG,CAAC;AACtG,MAAM,cAAc,GAAG,2CAA2C,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,gBAAwB,mBAAmB,EAAE;IACvF,OAAO,YAAY,CAAC,oCAAoC,aAAa,GAAG,2BAA2B,EAAE,CAAC,CAAC;AACzG,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACpE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACjF,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,OAAO,GAAG,KAAK,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,OAAO;QACL,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,2BAA2B,EAAE;aACvC;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,KAAK,GAAkD;QAC3D,UAAU,EAAE,CAAC,0BAA0B,EAAE,CAAC;QAC1C,YAAY,EAAE,CAAC,yBAAyB,EAAE,CAAC;KAC5C,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"entries.js","sourceRoot":"","sources":["../../../src/lib/hooks-seed/entries.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,8 @@
10
10
  */
11
11
  export type { HookCommand, HookEventName, HookMatcher, HooksBlock, SettingsWithHooks, } from "./types.js";
12
12
  export { METHOD_MANAGED_SENTINEL, isMethodManagedMatcher } from "./types.js";
13
- export { buildMethodManagedHooks, isOwnSessionStartRender, sessionStartValidateCommand, } from "./entries.js";
13
+ export { buildMethodManagedHooks, CLI_SOURCES, DEFAULT_CLI_SOURCE, DEFAULT_VERIFY_CLI_PACKAGE, isOwnSessionStartRender, NPM_PACKAGE_NAME, sessionStartValidateCommand, } from "./entries.js";
14
+ export type { CliSource } from "./entries.js";
14
15
  export { detectHooksDrift, normaliseOwnHookRenders, upsertMethodManagedHooks, } from "./merge.js";
15
16
  export type { HooksUpsertResult } from "./merge.js";
16
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks-seed/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,YAAY,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,UAAU,EACV,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/hooks-seed/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,YAAY,EACV,WAAW,EACX,aAAa,EACb,WAAW,EACX,UAAU,EACV,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,kBAAkB,EAClB,0BAA0B,EAC1B,uBAAuB,EACvB,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
@@ -9,6 +9,6 @@
9
9
  * when the repo runs the claude-code harness (the default).
10
10
  */
11
11
  export { METHOD_MANAGED_SENTINEL, isMethodManagedMatcher } from "./types.js";
12
- export { buildMethodManagedHooks, isOwnSessionStartRender, sessionStartValidateCommand, } from "./entries.js";
12
+ export { buildMethodManagedHooks, CLI_SOURCES, DEFAULT_CLI_SOURCE, DEFAULT_VERIFY_CLI_PACKAGE, isOwnSessionStartRender, NPM_PACKAGE_NAME, sessionStartValidateCommand, } from "./entries.js";
13
13
  export { detectHooksDrift, normaliseOwnHookRenders, upsertMethodManagedHooks, } from "./merge.js";
14
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/hooks-seed/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/hooks-seed/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,kBAAkB,EAClB,0BAA0B,EAC1B,uBAAuB,EACvB,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
@@ -8,7 +8,7 @@
8
8
  * block-marker pair so the sync path can preserve adopter-authored
9
9
  * content outside the block.
10
10
  */
11
- import { DAGGER_VERSION, MODULE_CALL, MODULE_DIR } from "../ci-binding/module.js";
11
+ import { DAGGER_VERSION, MODULE_CALL, MODULE_DIR, REBUILD_FLAG, REBUILD_SCRIPT } from "../ci-binding/module.js";
12
12
  export const WORKFLOW_REL_PATH = ".github/workflows/method-validation.yml";
13
13
  export const BLOCK_BEGIN = "# method-managed: begin";
14
14
  export const BLOCK_END = "# method-managed: end";
@@ -56,6 +56,13 @@ function buildMethodManagedBlock(profile, runner) {
56
56
  "# released with the sdd-cli that last synced this repository. The catalogue",
57
57
  "# freshness step (@sdd-method/maintain-cli, pinned the same way) is advisory.",
58
58
  "#",
59
+ "# Catalogue rebuild (M-ADR 0220 §4.4), off until you configure it: set the",
60
+ "# repository variable SDD_CATALOGUE_APP_ID and the secret",
61
+ "# SDD_CATALOGUE_APP_PRIVATE_KEY for a GitHub App that can write contents, and",
62
+ "# the job rebuilds the catalogues and pushes them to the branch it is building",
63
+ "# (a pull request's own branch, never a fork's); the freshness step then gates.",
64
+ "# An App token, because pushes made with the default token start no workflow.",
65
+ "#",
59
66
  "# Run it locally (needs a container engine):",
60
67
  `# ${MODULE_CALL}`,
61
68
  "",
@@ -74,11 +81,28 @@ function buildMethodManagedBlock(profile, runner) {
74
81
  " name: Method Validation",
75
82
  ` runs-on: ${runsOn(runner)}`,
76
83
  " steps:",
84
+ " - name: Catalogue rebuild token",
85
+ " id: catalogue-token",
86
+ " if: vars.SDD_CATALOGUE_APP_ID != '' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository)",
87
+ " uses: actions/create-github-app-token@v1",
88
+ " with:",
89
+ " app-id: ${{ vars.SDD_CATALOGUE_APP_ID }}",
90
+ " private-key: ${{ secrets.SDD_CATALOGUE_APP_PRIVATE_KEY }}",
77
91
  " - uses: actions/checkout@v4",
92
+ " with:",
93
+ // The branch itself when rebuilding, so the rebuild lands on it; otherwise the event's own ref.
94
+ " ref: ${{ steps.catalogue-token.outputs.token != '' && (github.head_ref || github.ref_name) || '' }}",
95
+ " persist-credentials: false",
78
96
  " - name: Install Dagger",
79
97
  ` run: curl -fsSL https://dl.dagger.io/dagger/install.sh | BIN_DIR="$RUNNER_TEMP/dagger" DAGGER_VERSION=${DAGGER_VERSION} sh && echo "$RUNNER_TEMP/dagger" >> "$GITHUB_PATH"`,
98
+ " - name: Rebuild catalogues",
99
+ " if: steps.catalogue-token.outputs.token != ''",
100
+ " env:",
101
+ " SDD_REBUILD_TOKEN: ${{ steps.catalogue-token.outputs.token }}",
102
+ " SDD_REBUILD_BRANCH: ${{ github.head_ref || github.ref_name }}",
103
+ ` run: SDD_REBUILD_PUSH_URL="https://x-access-token:$SDD_REBUILD_TOKEN@\${GITHUB_SERVER_URL#https://}/$GITHUB_REPOSITORY.git" sh ${REBUILD_SCRIPT}`,
80
104
  " - name: Method Validation",
81
- ` run: ${MODULE_CALL}`,
105
+ ` run: ${MODULE_CALL} ${REBUILD_FLAG}`,
82
106
  BLOCK_END,
83
107
  ].join("\n");
84
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ci-workflow.js","sourceRoot":"","sources":["../../../src/lib/init/ci-workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGlF,MAAM,CAAC,MAAM,iBAAiB,GAAG,yCAAyC,CAAC;AAC3E,MAAM,CAAC,MAAM,WAAW,GAAG,yBAAyB,CAAC;AACrD,MAAM,CAAC,MAAM,SAAS,GAAG,uBAAuB,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAAC,OAAgB,EAAE,MAA0B;IACzF,MAAM,WAAW,GAAG,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7D,OAAO,WAAW,GAAG,oKAAoK,CAAC;AAC5L,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gCAAgC,CAAC,OAAgB,EAAE,MAA0B;IAC3F,OAAO,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,SAAS,MAAM,CAAC,MAA0B;IACxC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,eAAe,CAAC;IACxE,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACrE,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAgB,EAAE,MAA0B;IAC3E,OAAO;QACL,WAAW;QACX,qFAAqF;QACrF,kEAAkE;QAClE,6EAA6E;QAC7E,cAAc,OAAO,EAAE;QACvB,GAAG;QACH,4FAA4F;QAC5F,uCAAuC;QACvC,iCAAiC,UAAU,iCAAiC;QAC5E,4EAA4E;QAC5E,0EAA0E;QAC1E,+EAA+E;QAC/E,8EAA8E;QAC9E,6EAA6E;QAC7E,+EAA+E;QAC/E,GAAG;QACH,8CAA8C;QAC9C,OAAO,WAAW,EAAE;QACpB,EAAE;QACF,yBAAyB;QACzB,EAAE;QACF,KAAK;QACL,iBAAiB;QACjB,SAAS;QACT,8BAA8B;QAC9B,GAAG,eAAe,CAAC,OAAO,CAAC;QAC3B,sBAAsB;QACtB,EAAE;QACF,OAAO;QACP,iGAAiG;QACjG,sBAAsB;QACtB,6BAA6B;QAC7B,gBAAgB,MAAM,CAAC,MAAM,CAAC,EAAE;QAChC,YAAY;QACZ,mCAAmC;QACnC,8BAA8B;QAC9B,iHAAiH,cAAc,qDAAqD;QACpL,iCAAiC;QACjC,gBAAgB,WAAW,EAAE;QAC7B,SAAS;KACV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe,CAAC,OAAgB;IACvC,IAAI,OAAO,KAAK,aAAa;QAAE,OAAO,EAAE,CAAC;IACzC,OAAO,CAAC,mBAAmB,EAAE,yBAAyB,CAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"ci-workflow.js","sourceRoot":"","sources":["../../../src/lib/init/ci-workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGhH,MAAM,CAAC,MAAM,iBAAiB,GAAG,yCAAyC,CAAC;AAC3E,MAAM,CAAC,MAAM,WAAW,GAAG,yBAAyB,CAAC;AACrD,MAAM,CAAC,MAAM,SAAS,GAAG,uBAAuB,CAAC;AAEjD;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAAC,OAAgB,EAAE,MAA0B;IACzF,MAAM,WAAW,GAAG,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7D,OAAO,WAAW,GAAG,oKAAoK,CAAC;AAC5L,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gCAAgC,CAAC,OAAgB,EAAE,MAA0B;IAC3F,OAAO,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,SAAS,MAAM,CAAC,MAA0B;IACxC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,eAAe,CAAC;IACxE,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACrE,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAgB,EAAE,MAA0B;IAC3E,OAAO;QACL,WAAW;QACX,qFAAqF;QACrF,kEAAkE;QAClE,6EAA6E;QAC7E,cAAc,OAAO,EAAE;QACvB,GAAG;QACH,4FAA4F;QAC5F,uCAAuC;QACvC,iCAAiC,UAAU,iCAAiC;QAC5E,4EAA4E;QAC5E,0EAA0E;QAC1E,+EAA+E;QAC/E,8EAA8E;QAC9E,6EAA6E;QAC7E,+EAA+E;QAC/E,GAAG;QACH,4EAA4E;QAC5E,2DAA2D;QAC3D,+EAA+E;QAC/E,gFAAgF;QAChF,iFAAiF;QACjF,+EAA+E;QAC/E,GAAG;QACH,8CAA8C;QAC9C,OAAO,WAAW,EAAE;QACpB,EAAE;QACF,yBAAyB;QACzB,EAAE;QACF,KAAK;QACL,iBAAiB;QACjB,SAAS;QACT,8BAA8B;QAC9B,GAAG,eAAe,CAAC,OAAO,CAAC;QAC3B,sBAAsB;QACtB,EAAE;QACF,OAAO;QACP,iGAAiG;QACjG,sBAAsB;QACtB,6BAA6B;QAC7B,gBAAgB,MAAM,CAAC,MAAM,CAAC,EAAE;QAChC,YAAY;QACZ,uCAAuC;QACvC,6BAA6B;QAC7B,4JAA4J;QAC5J,kDAAkD;QAClD,eAAe;QACf,oDAAoD;QACpD,qEAAqE;QACrE,mCAAmC;QACnC,eAAe;QACf,gGAAgG;QAChG,+GAA+G;QAC/G,sCAAsC;QACtC,8BAA8B;QAC9B,iHAAiH,cAAc,qDAAqD;QACpL,kCAAkC;QAClC,uDAAuD;QACvD,cAAc;QACd,yEAAyE;QACzE,yEAAyE;QACzE,0IAA0I,cAAc,EAAE;QAC1J,iCAAiC;QACjC,gBAAgB,WAAW,IAAI,YAAY,EAAE;QAC7C,SAAS;KACV,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe,CAAC,OAAgB;IACvC,IAAI,OAAO,KAAK,aAAa;QAAE,OAAO,EAAE,CAAC;IACzC,OAAO,CAAC,mBAAmB,EAAE,yBAAyB,CAAC,CAAC;AAC1D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../src/lib/init/platform.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMxD,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kGAAkG;IAClG,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAmDT;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CA4BhD;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAkBjD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAqB1E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAqB5E;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAgErC;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAM7D"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../../src/lib/init/platform.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMxD,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kGAAkG;IAClG,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,MAAM,CAoDT;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CA4BhD;AAED,wBAAgB,wBAAwB,IAAI,MAAM,CAkBjD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAqB1E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAqB5E;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAgErC;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAM7D"}
@@ -41,6 +41,7 @@ export function renderPlatformReadme(input) {
41
41
  "",
42
42
  `- \`sdd-cli sync\` — refresh the method baseline for **${input.platformName}**.`,
43
43
  `- \`npx --yes @sdd-method/verify-cli@${getVerifyCliVersion()} validate\` — run the platform validation suite with the verifier CI installs (the version CI pinned at init; sync moves CI's pin, so match it).`,
44
+ "- Without an npm registry, install the verify CLI from the release's CLI tarballs and run `sdd-verify validate`; `sdd-cli sync --cli-source installed` points the session-start hook at it.",
44
45
  "- `sdd-cli scaffold domain <name>` — scaffold a domain's docs in this repo (M-ADR 0173 §4.4).",
45
46
  "- Your code CLI's `add` (e.g. `platform-cli add`) — scaffold the services within a domain, in code repositories outside this repo.",
46
47
  "",