@devtrack-solution/codesdd 1.2.2 → 1.2.4-rc3

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 (413) hide show
  1. package/.sdd/skills/curated/api-clean-flask-langgraph/SKILL.md +17 -17
  2. package/.sdd/skills/curated/devtrack-api/SKILL.md +170 -31
  3. package/.sdd/skills/curated/devtrack-api/agents/claude-code.yaml +8 -0
  4. package/.sdd/skills/curated/devtrack-api/agents/codex.yaml +8 -0
  5. package/.sdd/skills/curated/devtrack-api/agents/cursor.yaml +8 -0
  6. package/.sdd/skills/curated/devtrack-api/agents/gemini.yaml +8 -0
  7. package/.sdd/skills/curated/devtrack-api/agents/kimi.yaml +8 -0
  8. package/.sdd/skills/curated/devtrack-api/agents/openai.yaml +4 -2
  9. package/.sdd/skills/curated/devtrack-api/agents/opencode.yaml +10 -0
  10. package/.sdd/skills/curated/devtrack-api/references/application-presentation.md +2 -2
  11. package/.sdd/skills/curated/devtrack-api/references/architecture-governance.md +8 -7
  12. package/.sdd/skills/curated/devtrack-api/references/consumer-sync-policy.md +93 -0
  13. package/.sdd/skills/curated/devtrack-api/references/contract-pack.yaml +372 -0
  14. package/.sdd/skills/curated/devtrack-api/references/domain-modeling.md +13 -13
  15. package/.sdd/skills/curated/devtrack-api/references/field-validation-protocol.md +95 -0
  16. package/.sdd/skills/curated/devtrack-api/references/foundation-layout.md +294 -0
  17. package/.sdd/skills/curated/devtrack-api/references/implementation-checklist.md +5 -5
  18. package/.sdd/skills/curated/devtrack-api/references/imports-lint.md +4 -0
  19. package/.sdd/skills/curated/devtrack-api/references/portable-agent-contract.md +41 -0
  20. package/.sdd/skills/curated/devtrack-api/references/testing-validation.md +2 -2
  21. package/.sdd/skills/curated/devtrack-api/references/typeorm-infrastructure.md +7 -9
  22. package/LICENSE +1 -1
  23. package/README.md +399 -53
  24. package/bin/codesdd.js +3 -2
  25. package/dist/applications/sdd/index.d.ts +16 -0
  26. package/dist/applications/sdd/index.js +16 -0
  27. package/dist/cli/index.d.ts +2 -2
  28. package/dist/cli/index.js +11 -558
  29. package/dist/cli/program.d.ts +14 -0
  30. package/dist/cli/program.js +645 -0
  31. package/dist/commands/change.js +5 -5
  32. package/dist/commands/completion.d.ts +1 -1
  33. package/dist/commands/completion.js +9 -2
  34. package/dist/commands/config.js +320 -20
  35. package/dist/commands/feedback.js +1 -1
  36. package/dist/commands/schema.d.ts +63 -0
  37. package/dist/commands/schema.js +12 -12
  38. package/dist/commands/sdd/backlog.d.ts +3 -0
  39. package/dist/commands/sdd/backlog.js +54 -0
  40. package/dist/commands/sdd/execution.js +489 -28
  41. package/dist/commands/sdd/plugin.d.ts +3 -0
  42. package/dist/commands/sdd/plugin.js +158 -0
  43. package/dist/commands/sdd/shared.d.ts +1 -0
  44. package/dist/commands/sdd/shared.js +11 -22
  45. package/dist/commands/sdd/skills.js +7 -0
  46. package/dist/commands/sdd.js +107 -15
  47. package/dist/commands/spec.js +9 -9
  48. package/dist/commands/validate.js +6 -6
  49. package/dist/commands/workflow/instructions.js +6 -6
  50. package/dist/commands/workflow/new-change.js +3 -3
  51. package/dist/commands/workflow/shared.d.ts +1 -1
  52. package/dist/commands/workflow/shared.js +4 -4
  53. package/dist/core/archive.js +15 -5
  54. package/dist/core/artifact-graph/instruction-loader.d.ts +1 -1
  55. package/dist/core/artifact-graph/instruction-loader.js +3 -3
  56. package/dist/core/artifact-graph/resolver.d.ts +4 -4
  57. package/dist/core/artifact-graph/resolver.js +6 -6
  58. package/dist/core/branding.js +3 -3
  59. package/dist/core/cli/command-matrix.js +19 -1
  60. package/dist/core/cli-command-quality.d.ts +27 -0
  61. package/dist/core/cli-command-quality.js +180 -0
  62. package/dist/core/command-generation/adapters/costrict.d.ts +1 -1
  63. package/dist/core/command-generation/adapters/costrict.js +2 -2
  64. package/dist/core/command-generation/types.d.ts +1 -1
  65. package/dist/core/completions/command-registry.d.ts +1 -1
  66. package/dist/core/completions/command-registry.js +200 -12
  67. package/dist/core/completions/completion-provider.d.ts +14 -1
  68. package/dist/core/completions/completion-provider.js +29 -1
  69. package/dist/core/completions/generators/bash-generator.d.ts +1 -1
  70. package/dist/core/completions/generators/bash-generator.js +20 -12
  71. package/dist/core/completions/generators/fish-generator.d.ts +9 -1
  72. package/dist/core/completions/generators/fish-generator.js +39 -25
  73. package/dist/core/completions/generators/powershell-generator.d.ts +1 -1
  74. package/dist/core/completions/generators/powershell-generator.js +21 -11
  75. package/dist/core/completions/generators/zsh-generator.d.ts +3 -6
  76. package/dist/core/completions/generators/zsh-generator.js +21 -42
  77. package/dist/core/completions/installers/bash-installer.js +6 -6
  78. package/dist/core/completions/installers/fish-installer.js +1 -1
  79. package/dist/core/completions/installers/powershell-installer.js +14 -14
  80. package/dist/core/completions/installers/zsh-installer.d.ts +7 -1
  81. package/dist/core/completions/installers/zsh-installer.js +36 -8
  82. package/dist/core/completions/templates/bash-templates.d.ts +1 -1
  83. package/dist/core/completions/templates/bash-templates.js +12 -6
  84. package/dist/core/completions/templates/fish-templates.d.ts +2 -2
  85. package/dist/core/completions/templates/fish-templates.js +20 -9
  86. package/dist/core/completions/templates/powershell-templates.d.ts +1 -1
  87. package/dist/core/completions/templates/powershell-templates.js +13 -4
  88. package/dist/core/completions/templates/zsh-templates.d.ts +1 -1
  89. package/dist/core/completions/templates/zsh-templates.js +18 -9
  90. package/dist/core/config-schema.d.ts +20 -1
  91. package/dist/core/config-schema.js +70 -2
  92. package/dist/core/config.d.ts +3 -3
  93. package/dist/core/config.js +4 -4
  94. package/dist/core/global-config.d.ts +57 -12
  95. package/dist/core/global-config.js +344 -27
  96. package/dist/core/index.d.ts +1 -1
  97. package/dist/core/index.js +2 -2
  98. package/dist/core/init.d.ts +6 -1
  99. package/dist/core/init.js +99 -77
  100. package/dist/core/legacy-cleanup.d.ts +17 -17
  101. package/dist/core/legacy-cleanup.js +96 -79
  102. package/dist/core/list.js +18 -4
  103. package/dist/core/migration.d.ts +3 -1
  104. package/dist/core/migration.js +7 -8
  105. package/dist/core/parsers/change-parser.js +1 -1
  106. package/dist/core/parsers/markdown-parser.js +2 -2
  107. package/dist/core/profile-sync-drift.d.ts +1 -1
  108. package/dist/core/profile-sync-drift.js +13 -13
  109. package/dist/core/project-config.d.ts +4 -4
  110. package/dist/core/project-config.js +11 -11
  111. package/dist/core/schemas/change.schema.d.ts +1 -1
  112. package/dist/core/schemas/change.schema.js +1 -1
  113. package/dist/core/schemas/spec.schema.d.ts +1 -1
  114. package/dist/core/schemas/spec.schema.js +1 -1
  115. package/dist/core/sdd/adr.js +23 -1
  116. package/dist/core/sdd/agent-binding.d.ts +346 -0
  117. package/dist/core/sdd/agent-binding.js +343 -0
  118. package/dist/core/sdd/agent-runtime-contract.d.ts +204 -0
  119. package/dist/core/sdd/agent-runtime-contract.js +200 -0
  120. package/dist/core/sdd/backlog-cli.d.ts +16 -0
  121. package/dist/core/sdd/backlog-cli.js +146 -0
  122. package/dist/core/sdd/backlog-conflict-policy.d.ts +58 -0
  123. package/dist/core/sdd/backlog-conflict-policy.js +230 -0
  124. package/dist/core/sdd/backlog-projection.d.ts +8 -0
  125. package/dist/core/sdd/backlog-projection.js +89 -0
  126. package/dist/core/sdd/backlog-provider-contract.d.ts +252 -0
  127. package/dist/core/sdd/backlog-provider-contract.js +158 -0
  128. package/dist/core/sdd/bootstrap.js +2 -2
  129. package/dist/core/sdd/check.d.ts +44 -0
  130. package/dist/core/sdd/check.js +62 -24
  131. package/dist/core/sdd/contract.d.ts +13 -0
  132. package/dist/core/sdd/contract.js +36 -0
  133. package/dist/core/sdd/coordination/coordination-adapters.d.ts +53 -8
  134. package/dist/core/sdd/coordination/coordination-adapters.js +182 -16
  135. package/dist/core/sdd/coordination/index.d.ts +1 -0
  136. package/dist/core/sdd/coordination/index.js +1 -0
  137. package/dist/core/sdd/coordination/redis-runtime.d.ts +131 -0
  138. package/dist/core/sdd/coordination/redis-runtime.js +698 -0
  139. package/dist/core/sdd/deepagent-contracts.d.ts +370 -0
  140. package/dist/core/sdd/deepagent-contracts.js +235 -0
  141. package/dist/core/sdd/deepagents/adr-governor.d.ts +2 -0
  142. package/dist/core/sdd/deepagents/adr-governor.js +30 -0
  143. package/dist/core/sdd/deepagents/backend.d.ts +63 -0
  144. package/dist/core/sdd/deepagents/backend.js +174 -0
  145. package/dist/core/sdd/deepagents/codesdd-tools.d.ts +39 -0
  146. package/dist/core/sdd/deepagents/codesdd-tools.js +83 -0
  147. package/dist/core/sdd/deepagents/evidence-mapper.d.ts +86 -0
  148. package/dist/core/sdd/deepagents/evidence-mapper.js +178 -0
  149. package/dist/core/sdd/deepagents/model-provider.d.ts +53 -0
  150. package/dist/core/sdd/deepagents/model-provider.js +379 -0
  151. package/dist/core/sdd/deepagents/policy-enforcement.d.ts +30 -0
  152. package/dist/core/sdd/deepagents/policy-enforcement.js +90 -0
  153. package/dist/core/sdd/deepagents/policy.d.ts +75 -0
  154. package/dist/core/sdd/deepagents/policy.js +358 -0
  155. package/dist/core/sdd/deepagents/quality-witness.d.ts +3 -0
  156. package/dist/core/sdd/deepagents/quality-witness.js +77 -0
  157. package/dist/core/sdd/deepagents/reversa-subagents.d.ts +75 -0
  158. package/dist/core/sdd/deepagents/reversa-subagents.js +182 -0
  159. package/dist/core/sdd/deepagents/runtime-factory.d.ts +90 -0
  160. package/dist/core/sdd/deepagents/runtime-factory.js +231 -0
  161. package/dist/core/sdd/deepagents/runtime-loader.d.ts +16 -0
  162. package/dist/core/sdd/deepagents/runtime-loader.js +65 -0
  163. package/dist/core/sdd/default-bootstrap-files.d.ts +3 -3
  164. package/dist/core/sdd/default-bootstrap-files.js +50 -10
  165. package/dist/core/sdd/default-skills.d.ts +30 -0
  166. package/dist/core/sdd/default-skills.js +288 -8
  167. package/dist/core/sdd/devtrack-api-appliance.d.ts +91 -0
  168. package/dist/core/sdd/devtrack-api-appliance.js +280 -0
  169. package/dist/core/sdd/devtrack-api-architecture.d.ts +31 -0
  170. package/dist/core/sdd/devtrack-api-architecture.js +608 -0
  171. package/dist/core/sdd/devtrack-api-import-boundary.d.ts +19 -0
  172. package/dist/core/sdd/devtrack-api-import-boundary.js +32 -0
  173. package/dist/core/sdd/diagnose.d.ts +59 -0
  174. package/dist/core/sdd/diagnose.js +37 -37
  175. package/dist/core/sdd/docs-sync.js +54 -20
  176. package/dist/core/sdd/domain/capability-diff.d.ts +63 -0
  177. package/dist/core/sdd/domain/capability-diff.js +200 -0
  178. package/dist/core/sdd/domain/change-safety-guardrails.d.ts +74 -0
  179. package/dist/core/sdd/domain/change-safety-guardrails.js +333 -0
  180. package/dist/core/sdd/domain/post-active-validation.d.ts +7 -0
  181. package/dist/core/sdd/domain/post-active-validation.js +61 -0
  182. package/dist/core/sdd/domain/semantic-intent-classifier.d.ts +29 -0
  183. package/dist/core/sdd/domain/semantic-intent-classifier.js +117 -0
  184. package/dist/core/sdd/domain/transition-engine.js +1 -0
  185. package/dist/core/sdd/entity-reference.d.ts +5 -0
  186. package/dist/core/sdd/entity-reference.js +22 -0
  187. package/dist/core/sdd/foundation-artifact-map-validator.d.ts +16 -0
  188. package/dist/core/sdd/foundation-artifact-map-validator.js +71 -0
  189. package/dist/core/sdd/foundation-layer-manifest.d.ts +24 -0
  190. package/dist/core/sdd/foundation-layer-manifest.js +117 -0
  191. package/dist/core/sdd/governance-backfill.d.ts +31 -0
  192. package/dist/core/sdd/governance-backfill.js +359 -0
  193. package/dist/core/sdd/governance-parser.d.ts +21 -0
  194. package/dist/core/sdd/governance-parser.js +91 -0
  195. package/dist/core/sdd/governance-schemas.d.ts +245 -0
  196. package/dist/core/sdd/governance-schemas.js +143 -0
  197. package/dist/core/sdd/{import-openspec.d.ts → import-legacy-spec.d.ts} +7 -7
  198. package/dist/core/sdd/{import-openspec.js → import-legacy-spec.js} +21 -29
  199. package/dist/core/sdd/init.d.ts +3 -0
  200. package/dist/core/sdd/init.js +6 -3
  201. package/dist/core/sdd/intent-guard.d.ts +22 -0
  202. package/dist/core/sdd/intent-guard.js +67 -0
  203. package/dist/core/sdd/json-schema.js +108 -6
  204. package/dist/core/sdd/knowledge-graph.d.ts +45 -0
  205. package/dist/core/sdd/knowledge-graph.js +288 -0
  206. package/dist/core/sdd/legacy-operations.js +507 -44
  207. package/dist/core/sdd/lenses.d.ts +1 -0
  208. package/dist/core/sdd/lenses.js +29 -1
  209. package/dist/core/sdd/migrate-workspace.js +95 -2
  210. package/dist/core/sdd/migrate.d.ts +1 -1
  211. package/dist/core/sdd/migrate.js +36 -2
  212. package/dist/core/sdd/package-security-gates.d.ts +21 -0
  213. package/dist/core/sdd/package-security-gates.js +119 -0
  214. package/dist/core/sdd/package-structure-gate.d.ts +83 -0
  215. package/dist/core/sdd/package-structure-gate.js +357 -0
  216. package/dist/core/sdd/parallel-feat-automation.d.ts +330 -0
  217. package/dist/core/sdd/parallel-feat-automation.js +424 -0
  218. package/dist/core/sdd/plugin-broker.d.ts +777 -0
  219. package/dist/core/sdd/plugin-broker.js +492 -0
  220. package/dist/core/sdd/plugin-certification.d.ts +79 -0
  221. package/dist/core/sdd/plugin-certification.js +453 -0
  222. package/dist/core/sdd/plugin-cli.d.ts +139 -0
  223. package/dist/core/sdd/plugin-cli.js +265 -0
  224. package/dist/core/sdd/plugin-evidence.d.ts +348 -0
  225. package/dist/core/sdd/plugin-evidence.js +307 -0
  226. package/dist/core/sdd/plugin-manifest.d.ts +232 -0
  227. package/dist/core/sdd/plugin-manifest.js +225 -0
  228. package/dist/core/sdd/plugin-policy-pack.d.ts +88 -0
  229. package/dist/core/sdd/plugin-policy-pack.js +236 -0
  230. package/dist/core/sdd/plugin-policy.d.ts +68 -0
  231. package/dist/core/sdd/plugin-policy.js +212 -0
  232. package/dist/core/sdd/plugin-registry.d.ts +447 -0
  233. package/dist/core/sdd/plugin-registry.js +138 -0
  234. package/dist/core/sdd/plugin-sdk-contract.d.ts +363 -0
  235. package/dist/core/sdd/plugin-sdk-contract.js +268 -0
  236. package/dist/core/sdd/plugin-skill-binding.d.ts +151 -0
  237. package/dist/core/sdd/plugin-skill-binding.js +339 -0
  238. package/dist/core/sdd/quality-artifact-manifest-validator.d.ts +28 -0
  239. package/dist/core/sdd/quality-artifact-manifest-validator.js +167 -0
  240. package/dist/core/sdd/quality-evidence-renderer.d.ts +65 -0
  241. package/dist/core/sdd/quality-evidence-renderer.js +218 -0
  242. package/dist/core/sdd/quality-scenario-runner.d.ts +42 -0
  243. package/dist/core/sdd/quality-scenario-runner.js +613 -0
  244. package/dist/core/sdd/quality-validation.d.ts +620 -0
  245. package/dist/core/sdd/quality-validation.js +239 -0
  246. package/dist/core/sdd/release-readiness.d.ts +19 -0
  247. package/dist/core/sdd/release-readiness.js +472 -0
  248. package/dist/core/sdd/resolve-project-root.d.ts +2 -2
  249. package/dist/core/sdd/resolve-project-root.js +11 -5
  250. package/dist/core/sdd/runtime-boundary-contract.d.ts +45 -0
  251. package/dist/core/sdd/runtime-boundary-contract.js +90 -0
  252. package/dist/core/sdd/sanitize.d.ts +30 -1
  253. package/dist/core/sdd/sanitize.js +23 -23
  254. package/dist/core/sdd/sdk-agent-plugin-quality-gates.d.ts +150 -0
  255. package/dist/core/sdd/sdk-agent-plugin-quality-gates.js +258 -0
  256. package/dist/core/sdd/services/agent-run.service.d.ts +97 -0
  257. package/dist/core/sdd/services/agent-run.service.js +261 -0
  258. package/dist/core/sdd/services/breakdown.service.js +2 -1
  259. package/dist/core/sdd/services/capability-diff.service.d.ts +18 -0
  260. package/dist/core/sdd/services/capability-diff.service.js +26 -0
  261. package/dist/core/sdd/services/change-safety-preflight.service.d.ts +17 -0
  262. package/dist/core/sdd/services/change-safety-preflight.service.js +17 -0
  263. package/dist/core/sdd/services/context.service.d.ts +43 -340
  264. package/dist/core/sdd/services/context.service.js +341 -25
  265. package/dist/core/sdd/services/debate.service.js +15 -2
  266. package/dist/core/sdd/services/feature-lint.service.d.ts +22 -0
  267. package/dist/core/sdd/services/feature-lint.service.js +105 -5
  268. package/dist/core/sdd/services/finalize.service.d.ts +105 -0
  269. package/dist/core/sdd/services/finalize.service.js +499 -38
  270. package/dist/core/sdd/services/frontend-gap.service.js +22 -7
  271. package/dist/core/sdd/services/frontend-impact.service.d.ts +1 -1
  272. package/dist/core/sdd/services/governance-control-plane-runtime-adapters.d.ts +17 -0
  273. package/dist/core/sdd/services/governance-control-plane-runtime-adapters.js +38 -0
  274. package/dist/core/sdd/services/governance-control-plane.service.d.ts +66 -0
  275. package/dist/core/sdd/services/governance-control-plane.service.js +134 -0
  276. package/dist/core/sdd/services/ingest-deposito.service.js +1 -1
  277. package/dist/core/sdd/services/legacy-capability.service.d.ts +10 -7
  278. package/dist/core/sdd/services/legacy-capability.service.js +38 -21
  279. package/dist/core/sdd/services/mcp-runtime.service.d.ts +123 -8
  280. package/dist/core/sdd/services/mcp-runtime.service.js +1085 -33
  281. package/dist/core/sdd/services/onboard.service.js +2 -1
  282. package/dist/core/sdd/services/rebuild.service.js +6 -1
  283. package/dist/core/sdd/services/semantic-intent-classifier.service.d.ts +6 -0
  284. package/dist/core/sdd/services/semantic-intent-classifier.service.js +7 -0
  285. package/dist/core/sdd/services/skills-sync.service.d.ts +17 -5
  286. package/dist/core/sdd/services/skills-sync.service.js +55 -2
  287. package/dist/core/sdd/services/start.service.js +6 -4
  288. package/dist/core/sdd/skill-bundles-curation-schema.d.ts +66 -0
  289. package/dist/core/sdd/skill-bundles-curation-schema.js +52 -0
  290. package/dist/core/sdd/skill-evidence.d.ts +19 -0
  291. package/dist/core/sdd/skill-evidence.js +38 -0
  292. package/dist/core/sdd/skill-policy-pool.d.ts +46 -0
  293. package/dist/core/sdd/skill-policy-pool.js +185 -0
  294. package/dist/core/sdd/state.d.ts +23 -0
  295. package/dist/core/sdd/state.js +313 -66
  296. package/dist/core/sdd/store/sdd-stores.js +2 -2
  297. package/dist/core/sdd/structural-health.d.ts +55 -55
  298. package/dist/core/sdd/types.d.ts +60 -19
  299. package/dist/core/sdd/types.js +21 -0
  300. package/dist/core/sdd/upgrade-to-codesdd.d.ts +45 -0
  301. package/dist/core/sdd/upgrade-to-codesdd.js +179 -0
  302. package/dist/core/sdd/views.js +17 -0
  303. package/dist/core/sdd/workspace-schemas.d.ts +670 -19
  304. package/dist/core/sdd/workspace-schemas.js +285 -5
  305. package/dist/core/sdd/write-manifest.js +22 -4
  306. package/dist/core/shared/skill-generation.d.ts +1 -1
  307. package/dist/core/shared/skill-generation.js +15 -15
  308. package/dist/core/shared/tool-detection.d.ts +3 -3
  309. package/dist/core/shared/tool-detection.js +14 -14
  310. package/dist/core/specs-apply.js +6 -6
  311. package/dist/core/templates/index.d.ts +1 -1
  312. package/dist/core/templates/index.js +1 -1
  313. package/dist/core/templates/workflows/apply-change.js +14 -14
  314. package/dist/core/templates/workflows/archive-change.js +32 -32
  315. package/dist/core/templates/workflows/bulk-archive-change.js +25 -25
  316. package/dist/core/templates/workflows/continue-change.js +12 -12
  317. package/dist/core/templates/workflows/explore.js +29 -29
  318. package/dist/core/templates/workflows/feedback.js +6 -6
  319. package/dist/core/templates/workflows/ff-change.js +24 -24
  320. package/dist/core/templates/workflows/new-change.js +20 -20
  321. package/dist/core/templates/workflows/onboard.js +33 -33
  322. package/dist/core/templates/workflows/propose.js +23 -23
  323. package/dist/core/templates/workflows/sdd.js +8 -8
  324. package/dist/core/templates/workflows/sync-specs.js +19 -19
  325. package/dist/core/templates/workflows/verify-change.js +17 -17
  326. package/dist/core/update.d.ts +2 -2
  327. package/dist/core/update.js +16 -15
  328. package/dist/core/validation/constants.d.ts +1 -1
  329. package/dist/core/validation/constants.js +1 -1
  330. package/dist/core/view.js +11 -11
  331. package/dist/domains/sdd/index.d.ts +6 -0
  332. package/dist/domains/sdd/index.js +6 -0
  333. package/dist/infrastructures/sdd/index.d.ts +7 -0
  334. package/dist/infrastructures/sdd/index.js +6 -0
  335. package/dist/presentations/cli/sdd/index.d.ts +3 -0
  336. package/dist/presentations/cli/sdd/index.js +3 -0
  337. package/dist/shared/sdd/index.d.ts +3 -0
  338. package/dist/shared/sdd/index.js +2 -0
  339. package/dist/telemetry/config.d.ts +2 -1
  340. package/dist/telemetry/config.js +17 -8
  341. package/dist/telemetry/index.d.ts +10 -2
  342. package/dist/telemetry/index.js +40 -7
  343. package/dist/ui/ascii-patterns.d.ts +2 -2
  344. package/dist/ui/ascii-patterns.js +2 -2
  345. package/dist/ui/welcome-screen.js +2 -2
  346. package/dist/utils/change-metadata.d.ts +4 -4
  347. package/dist/utils/change-metadata.js +6 -6
  348. package/dist/utils/change-utils.d.ts +3 -3
  349. package/dist/utils/change-utils.js +5 -5
  350. package/dist/utils/file-system.js +1 -1
  351. package/dist/utils/interactive.js +1 -1
  352. package/dist/utils/item-discovery.js +4 -4
  353. package/dist/utils/legacy-spec-compat.d.ts +2 -0
  354. package/dist/utils/legacy-spec-compat.js +2 -0
  355. package/dist/utils/shell-detection.d.ts +1 -0
  356. package/dist/utils/shell-detection.js +16 -0
  357. package/package.json +34 -21
  358. package/schemas/sdd/1-spec.schema.json +1 -1
  359. package/schemas/sdd/2-plan.schema.json +280 -3
  360. package/schemas/sdd/3-tasks.schema.json +73 -1
  361. package/schemas/sdd/4-changelog.schema.json +1 -1
  362. package/schemas/sdd/5-quality.schema.json +701 -5
  363. package/schemas/sdd/adr.schema.json +148 -0
  364. package/schemas/sdd/agent-binding-adapter.schema.json +210 -0
  365. package/schemas/sdd/agent-binding-resolution.schema.json +338 -0
  366. package/schemas/sdd/agent-runtime-command-plan.schema.json +212 -0
  367. package/schemas/sdd/agent-runtime-opencode-run-evidence.schema.json +270 -0
  368. package/schemas/sdd/backlog-projection-plan.schema.json +180 -0
  369. package/schemas/sdd/backlog-provider-contract.schema.json +260 -0
  370. package/schemas/sdd/codesdd-plugin.schema.json +645 -0
  371. package/schemas/sdd/debate.schema.json +244 -0
  372. package/schemas/sdd/deepagent-decision-evidence.schema.json +58 -0
  373. package/schemas/sdd/deepagent-env-contract.schema.json +143 -0
  374. package/schemas/sdd/deepagent-quality-evidence.schema.json +108 -0
  375. package/schemas/sdd/deepagent-run-evidence.schema.json +192 -0
  376. package/schemas/sdd/deepagent-run-plan.schema.json +197 -0
  377. package/schemas/sdd/deepagent-run-request.schema.json +637 -0
  378. package/schemas/sdd/deepagent-subagent-evidence.schema.json +110 -0
  379. package/schemas/sdd/deepagent-tool-call-evidence.schema.json +78 -0
  380. package/schemas/sdd/discarded.schema.json +127 -0
  381. package/schemas/sdd/epic.schema.json +147 -0
  382. package/schemas/sdd/insight.schema.json +136 -0
  383. package/schemas/sdd/parallel-feat-automation-plan.schema.json +304 -0
  384. package/schemas/sdd/parallel-feat-automation-request.schema.json +109 -0
  385. package/schemas/sdd/parallel-feat-scheduler-request.schema.json +116 -0
  386. package/schemas/sdd/parallel-feat-scheduler-result.schema.json +404 -0
  387. package/schemas/sdd/plugin-artifact-manifest.schema.json +259 -0
  388. package/schemas/sdd/plugin-artifact-map.schema.json +223 -0
  389. package/schemas/sdd/plugin-compliance-index.schema.json +136 -0
  390. package/schemas/sdd/plugin-dry-run-plan.schema.json +260 -0
  391. package/schemas/sdd/plugin-evidence-manifest.schema.json +678 -0
  392. package/schemas/sdd/plugin-language-runtime.schema.json +103 -0
  393. package/schemas/sdd/plugin-package-governance.schema.json +74 -0
  394. package/schemas/sdd/plugin-policy-evaluation.schema.json +92 -0
  395. package/schemas/sdd/plugin-policy-pack-evaluation.schema.json +94 -0
  396. package/schemas/sdd/plugin-policy-pack.schema.json +196 -0
  397. package/schemas/sdd/plugin-registry.schema.json +729 -0
  398. package/schemas/sdd/plugin-rollback-manifest.schema.json +87 -0
  399. package/schemas/sdd/plugin-runtime-invocation-plan.schema.json +954 -0
  400. package/schemas/sdd/plugin-skill-binding-resolution.schema.json +305 -0
  401. package/schemas/sdd/plugin-skill-binding.schema.json +88 -0
  402. package/schemas/sdd/plugin-validation-manifest.schema.json +123 -0
  403. package/schemas/sdd/quality-architecture-schema.schema.json +216 -0
  404. package/schemas/sdd/quality-evidence-bundle.schema.json +1337 -0
  405. package/schemas/sdd/quality-run.schema.json +197 -0
  406. package/schemas/sdd/quality-scenario.schema.json +252 -0
  407. package/schemas/sdd/sdk-agent-plugin-quality-gate-input.schema.json +168 -0
  408. package/schemas/sdd/sdk-agent-plugin-quality-gate-report.schema.json +160 -0
  409. package/schemas/sdd/workspace-catalog.schema.json +13232 -35
  410. package/schemas/spec-driven/schema.yaml +4 -4
  411. package/schemas/spec-driven/templates/proposal.md +1 -1
  412. package/dist/utils/openspec-compat.d.ts +0 -2
  413. package/dist/utils/openspec-compat.js +0 -2
@@ -17,6 +17,65 @@ function relativePath(paths, targetPath) {
17
17
  function legacyArchiveRoot(paths) {
18
18
  return path.join(paths.memoryRoot, LEGACY_ARCHIVE_DIR);
19
19
  }
20
+ async function listFiles(root) {
21
+ const entries = await fs.readdir(root, { withFileTypes: true }).catch(() => []);
22
+ const files = [];
23
+ for (const entry of entries) {
24
+ const fullPath = path.join(root, entry.name);
25
+ if (entry.isDirectory()) {
26
+ files.push(...(await listFiles(fullPath)));
27
+ }
28
+ else if (entry.isFile()) {
29
+ files.push(fullPath);
30
+ }
31
+ }
32
+ return files;
33
+ }
34
+ function archivedActiveReferenceNeedle(featureId) {
35
+ return `.sdd/active/${featureId}`;
36
+ }
37
+ function archivedFeatureReference(featureId) {
38
+ return `.sdd/archived/${featureId}`;
39
+ }
40
+ export async function normalizeArchivedFeatureActiveReferences(paths, featureId) {
41
+ const archivedFeaturePath = path.join(paths.archivedDir, featureId);
42
+ if (!(await exists(archivedFeaturePath))) {
43
+ return [];
44
+ }
45
+ const needle = archivedActiveReferenceNeedle(featureId);
46
+ const replacement = archivedFeatureReference(featureId);
47
+ const updated = [];
48
+ for (const filePath of await listFiles(archivedFeaturePath)) {
49
+ const content = await fs.readFile(filePath, 'utf-8').catch(() => '');
50
+ if (!content.includes(needle)) {
51
+ continue;
52
+ }
53
+ await fs.writeFile(filePath, content.split(needle).join(replacement), 'utf-8');
54
+ updated.push(relativePath(paths, filePath));
55
+ }
56
+ return updated;
57
+ }
58
+ export async function detectArchivedFeatureActiveReferences(paths, featureId) {
59
+ const archivedFeaturePath = path.join(paths.archivedDir, featureId);
60
+ if (!(await exists(archivedFeaturePath))) {
61
+ return [];
62
+ }
63
+ const needle = archivedActiveReferenceNeedle(featureId);
64
+ const references = [];
65
+ for (const filePath of await listFiles(archivedFeaturePath)) {
66
+ const content = await fs.readFile(filePath, 'utf-8').catch(() => '');
67
+ if (!content.includes(needle)) {
68
+ continue;
69
+ }
70
+ const relative = relativePath(paths, filePath);
71
+ references.push({
72
+ feature_id: featureId,
73
+ path: relative,
74
+ message: `${featureId} archived workspace file ${relative} references removed active workspace ${needle}.`,
75
+ });
76
+ }
77
+ return references;
78
+ }
20
79
  export async function detectArchiveArchivedLifecycleCollisions(paths, featureId) {
21
80
  const legacyRoot = legacyArchiveRoot(paths);
22
81
  if (path.resolve(legacyRoot) === path.resolve(paths.archivedDir)) {
@@ -63,6 +122,8 @@ export async function validatePostActiveFeaturePlacement(paths, featureId) {
63
122
  }
64
123
  const collisions = await detectArchiveArchivedLifecycleCollisions(paths, featureId);
65
124
  reasons.push(...collisions.map((collision) => collision.message));
125
+ const activeReferences = await detectArchivedFeatureActiveReferences(paths, featureId);
126
+ reasons.push(...activeReferences.map((reference) => reference.message));
66
127
  return {
67
128
  ok: reasons.length === 0,
68
129
  reasons,
@@ -0,0 +1,29 @@
1
+ import type { CapabilityDiffReport, CapabilityRiskReport } from './capability-diff.js';
2
+ import type { ChangeSafetyOperation } from './change-safety-guardrails.js';
3
+ export declare const SEMANTIC_INTENT_CLASSES: readonly ["incremental", "refactor", "replacement", "ambiguous"];
4
+ export type SemanticIntentClass = (typeof SEMANTIC_INTENT_CLASSES)[number];
5
+ export interface SemanticIntentClassifierInput {
6
+ objective?: string;
7
+ declared_operation?: ChangeSafetyOperation | '';
8
+ capability_diff?: CapabilityDiffReport;
9
+ deterministic_risk?: CapabilityRiskReport;
10
+ }
11
+ export interface SemanticIntentSignal {
12
+ code: string;
13
+ message: string;
14
+ weight: number;
15
+ }
16
+ export interface SemanticIntentClassification {
17
+ schema_version: 1;
18
+ contract: 'semantic-intent-classification/v1';
19
+ status: 'allowed' | 'blocked';
20
+ classification: SemanticIntentClass;
21
+ fail_closed: true;
22
+ triggered: boolean;
23
+ confidence: number;
24
+ reasons: string[];
25
+ signals: SemanticIntentSignal[];
26
+ }
27
+ export declare function shouldRunSemanticIntentClassifier(input: SemanticIntentClassifierInput): boolean;
28
+ export declare function classifySemanticIntent(input: SemanticIntentClassifierInput): SemanticIntentClassification;
29
+ //# sourceMappingURL=semantic-intent-classifier.d.ts.map
@@ -0,0 +1,117 @@
1
+ export const SEMANTIC_INTENT_CLASSES = ['incremental', 'refactor', 'replacement', 'ambiguous'];
2
+ const REPLACEMENT_PATTERNS = [
3
+ /\breplace\b/iu,
4
+ /\brewrite\b/iu,
5
+ /\brebuild\b/iu,
6
+ /\bfrom scratch\b/iu,
7
+ /\boverwrite\b/iu,
8
+ /\bsubstitu(?:ir|icao|ição)\b/iu,
9
+ /\bsobrescrev/iu,
10
+ /\breescrev/iu,
11
+ /\bdo zero\b/iu,
12
+ ];
13
+ const REFACTOR_PATTERNS = [/\brefactor\b/iu, /\brefator/iu, /\boptimi[sz]e\b/iu, /\botimiz/iu];
14
+ const INCREMENTAL_PATTERNS = [
15
+ /\badd\b/iu,
16
+ /\bcreate\b/iu,
17
+ /\bextend\b/iu,
18
+ /\bincremental\b/iu,
19
+ /\bcriar\b/iu,
20
+ /\badicionar\b/iu,
21
+ /\bincrement/iu,
22
+ ];
23
+ const HIGH_RISK_LEVELS = new Set(['high', 'critical']);
24
+ export function shouldRunSemanticIntentClassifier(input) {
25
+ return Boolean(input.deterministic_risk && HIGH_RISK_LEVELS.has(input.deterministic_risk.level));
26
+ }
27
+ export function classifySemanticIntent(input) {
28
+ const triggered = shouldRunSemanticIntentClassifier(input);
29
+ const signals = collectSignals(input);
30
+ const classification = resolveClassification(input, signals);
31
+ const highRisk = Boolean(input.deterministic_risk && HIGH_RISK_LEVELS.has(input.deterministic_risk.level));
32
+ const blocked = triggered &&
33
+ (classification === 'replacement' ||
34
+ classification === 'ambiguous' ||
35
+ (highRisk && input.declared_operation === 'add' && hasRemovedCapability(input.capability_diff)));
36
+ return {
37
+ schema_version: 1,
38
+ contract: 'semantic-intent-classification/v1',
39
+ status: blocked ? 'blocked' : 'allowed',
40
+ classification,
41
+ fail_closed: true,
42
+ triggered,
43
+ confidence: confidenceFor(classification, signals),
44
+ reasons: blocked ? blockedReasons(classification, input) : [],
45
+ signals,
46
+ };
47
+ }
48
+ function collectSignals(input) {
49
+ const objective = input.objective ?? '';
50
+ const signals = [];
51
+ collectPatternSignals(objective, REPLACEMENT_PATTERNS, signals, 'replacement_language', 50);
52
+ collectPatternSignals(objective, REFACTOR_PATTERNS, signals, 'refactor_language', 30);
53
+ collectPatternSignals(objective, INCREMENTAL_PATTERNS, signals, 'incremental_language', 30);
54
+ if (input.declared_operation === 'replace' || input.declared_operation === 'remove') {
55
+ signals.push({
56
+ code: 'declared_replacement_operation',
57
+ message: `Declared operation ${input.declared_operation} is replacement-class.`,
58
+ weight: 60,
59
+ });
60
+ }
61
+ if (hasRemovedCapability(input.capability_diff)) {
62
+ signals.push({
63
+ code: 'removed_capability_present',
64
+ message: 'Capability diff contains removed capabilities.',
65
+ weight: 45,
66
+ });
67
+ }
68
+ if (input.deterministic_risk?.level === 'critical') {
69
+ signals.push({
70
+ code: 'critical_deterministic_risk',
71
+ message: 'Deterministic risk is critical.',
72
+ weight: 50,
73
+ });
74
+ }
75
+ return signals.sort((left, right) => right.weight - left.weight || left.code.localeCompare(right.code));
76
+ }
77
+ function collectPatternSignals(value, patterns, signals, code, weight) {
78
+ if (patterns.some((pattern) => pattern.test(value))) {
79
+ signals.push({ code, message: `Objective matched ${code}.`, weight });
80
+ }
81
+ }
82
+ function resolveClassification(input, signals) {
83
+ const hasReplacement = signals.some((signal) => ['replacement_language', 'declared_replacement_operation', 'removed_capability_present'].includes(signal.code));
84
+ const hasIncremental = signals.some((signal) => signal.code === 'incremental_language') || input.declared_operation === 'add';
85
+ const hasRefactor = signals.some((signal) => signal.code === 'refactor_language') || input.declared_operation === 'refactor';
86
+ if (hasReplacement && (hasIncremental || hasRefactor))
87
+ return 'ambiguous';
88
+ if (hasReplacement)
89
+ return 'replacement';
90
+ if (hasRefactor)
91
+ return 'refactor';
92
+ if (hasIncremental)
93
+ return 'incremental';
94
+ return input.deterministic_risk && HIGH_RISK_LEVELS.has(input.deterministic_risk.level) ? 'ambiguous' : 'incremental';
95
+ }
96
+ function hasRemovedCapability(diff) {
97
+ return Boolean(diff?.entries.some((entry) => entry.change === 'removed'));
98
+ }
99
+ function confidenceFor(classification, signals) {
100
+ if (classification === 'ambiguous')
101
+ return 50;
102
+ const total = Math.min(100, signals.filter((signal) => signal.weight > 0).reduce((sum, signal) => sum + signal.weight, 40));
103
+ return total;
104
+ }
105
+ function blockedReasons(classification, input) {
106
+ if (classification === 'replacement') {
107
+ return ['Semantic intent classifier fail-closed because the request is replacement-class.'];
108
+ }
109
+ if (classification === 'ambiguous') {
110
+ return ['Semantic intent classifier fail-closed because high-risk intent is ambiguous.'];
111
+ }
112
+ if (input.declared_operation === 'add' && hasRemovedCapability(input.capability_diff)) {
113
+ return ['Semantic intent classifier fail-closed because add intent conflicts with removed capabilities.'];
114
+ }
115
+ return [];
116
+ }
117
+ //# sourceMappingURL=semantic-intent-classifier.js.map
@@ -5,6 +5,7 @@ export class TransitionEngine {
5
5
  NEW: ['DEBATED', 'DISCARDED'],
6
6
  },
7
7
  DEB: {
8
+ DEBATED: ['APPROVED', 'DISCARDED'],
8
9
  OPEN: ['APPROVED', 'DISCARDED'],
9
10
  },
10
11
  EPIC: {
@@ -0,0 +1,5 @@
1
+ export type SddEntityType = 'FEAT' | 'RAD' | 'EPIC' | 'FGAP' | 'TD';
2
+ export declare function normalizeFeatRef(input: string): string | null;
3
+ export declare function normalizeSddEntityRef(input: string): string;
4
+ export declare function detectSddEntityType(input: string): SddEntityType | null;
5
+ //# sourceMappingURL=entity-reference.d.ts.map
@@ -0,0 +1,22 @@
1
+ const FEAT_ALIAS_PATTERN = /^(?:FEAT|FEATS|FEATES)-(\d{3,})$/i;
2
+ const CANONICAL_PATTERNS = [
3
+ ['FEAT', /^FEAT-\d{3,}$/],
4
+ ['EPIC', /^EPIC-\d{3,}$/],
5
+ ['RAD', /^RAD-\d{3,}$/],
6
+ ['FGAP', /^FGAP-\d{3,}$/],
7
+ ['TD', /^TD-\d{3,}$/],
8
+ ];
9
+ export function normalizeFeatRef(input) {
10
+ const match = input.trim().match(FEAT_ALIAS_PATTERN);
11
+ if (!match)
12
+ return null;
13
+ return `FEAT-${match[1]}`;
14
+ }
15
+ export function normalizeSddEntityRef(input) {
16
+ return normalizeFeatRef(input) ?? input.trim();
17
+ }
18
+ export function detectSddEntityType(input) {
19
+ const normalized = normalizeSddEntityRef(input);
20
+ return CANONICAL_PATTERNS.find(([, pattern]) => pattern.test(normalized))?.[0] ?? null;
21
+ }
22
+ //# sourceMappingURL=entity-reference.js.map
@@ -0,0 +1,16 @@
1
+ import { type PluginArtifactMap } from './plugin-sdk-contract.js';
2
+ export type FoundationArtifactMapFindingCode = 'FOUNDATION_ARTIFACT_SCHEMA_INVALID' | 'FOUNDATION_LAYER_PATH_MISMATCH' | 'FOUNDATION_DOMAIN_BO_PATH_INVALID' | 'FOUNDATION_DOMAIN_VO_PATH_INVALID' | 'FOUNDATION_APPLICATION_PORT_PATH_INVALID' | 'FOUNDATION_INFRASTRUCTURE_ENTITY_PATH_INVALID';
3
+ export interface FoundationArtifactMapFinding {
4
+ code: FoundationArtifactMapFindingCode;
5
+ severity: 'warn';
6
+ path?: string;
7
+ message: string;
8
+ remediation: string;
9
+ }
10
+ export interface FoundationArtifactMapValidationResult {
11
+ status: 'passed' | 'warning';
12
+ artifact_map?: PluginArtifactMap;
13
+ findings: FoundationArtifactMapFinding[];
14
+ }
15
+ export declare function validateFoundationArtifactMapArchitecture(value: unknown): FoundationArtifactMapValidationResult;
16
+ //# sourceMappingURL=foundation-artifact-map-validator.d.ts.map
@@ -0,0 +1,71 @@
1
+ import { pluginArtifactMapSchema, } from './plugin-sdk-contract.js';
2
+ const LAYER_PATH_PREFIXES = {
3
+ domain: 'src/domain/',
4
+ application: 'src/application/',
5
+ infrastructure: 'src/infrastructure/',
6
+ presentation: 'src/presentation/',
7
+ tests: 'test/',
8
+ docs: 'docs/',
9
+ sdd: '.sdd/',
10
+ config: '.',
11
+ };
12
+ const DOMAIN_BO_PATTERN = /^src\/domain\/[^/]+\/business-objects\/[^/]+\.bo\.ts$/u;
13
+ const DOMAIN_VO_PATTERN = /^src\/domain\/[^/]+\/value-objects\/[^/]+\.vo\.ts$/u;
14
+ const APPLICATION_PORT_PATTERN = /^src\/application\/business\/[^/]+\/ports\/out\/[^/]+\.port\.ts$/u;
15
+ const INFRASTRUCTURE_ENTITY_PATTERN = /^src\/infrastructure\/adapters\/orm\/entities\/[^/]+\.orm-entity\.ts$/u;
16
+ export function validateFoundationArtifactMapArchitecture(value) {
17
+ const parsed = pluginArtifactMapSchema.safeParse(value);
18
+ if (!parsed.success) {
19
+ return {
20
+ status: 'warning',
21
+ findings: [
22
+ {
23
+ code: 'FOUNDATION_ARTIFACT_SCHEMA_INVALID',
24
+ severity: 'warn',
25
+ message: `Artifact map failed SDK schema validation: ${parsed.error.issues.map(formatIssue).join('; ')}`,
26
+ remediation: 'Validate the artifact map with @devtrack-solution/codesdd-plugin-sdk before applying Foundation architecture checks.',
27
+ },
28
+ ],
29
+ };
30
+ }
31
+ const findings = parsed.data.artifacts.flatMap(validateEntry);
32
+ return {
33
+ status: findings.length > 0 ? 'warning' : 'passed',
34
+ artifact_map: parsed.data,
35
+ findings,
36
+ };
37
+ }
38
+ function validateEntry(entry) {
39
+ const findings = [];
40
+ const expectedPrefix = LAYER_PATH_PREFIXES[entry.layer];
41
+ if (expectedPrefix && !entry.path.startsWith(expectedPrefix)) {
42
+ findings.push(finding('FOUNDATION_LAYER_PATH_MISMATCH', entry, `Artifact declares layer "${entry.layer}" but path "${entry.path}" does not use the expected prefix "${expectedPrefix}".`, `Move the artifact under ${expectedPrefix} or correct the layer metadata before execution.`));
43
+ }
44
+ if (entry.layer === 'domain' && entry.role === 'business-object' && !DOMAIN_BO_PATTERN.test(entry.path)) {
45
+ findings.push(finding('FOUNDATION_DOMAIN_BO_PATH_INVALID', entry, `Domain business object path "${entry.path}" does not match the Foundation BO-pattern.`, 'Use src/domain/<context>/business-objects/<name>.bo.ts for new Foundation contexts.'));
46
+ }
47
+ if (entry.layer === 'domain' && entry.role === 'value-object' && !DOMAIN_VO_PATTERN.test(entry.path)) {
48
+ findings.push(finding('FOUNDATION_DOMAIN_VO_PATH_INVALID', entry, `Domain value object path "${entry.path}" does not match the Foundation VO-pattern.`, 'Use src/domain/<context>/value-objects/<name>.vo.ts for value objects.'));
49
+ }
50
+ if (entry.role === 'repository-port' && !APPLICATION_PORT_PATTERN.test(entry.path)) {
51
+ findings.push(finding('FOUNDATION_APPLICATION_PORT_PATH_INVALID', entry, `Repository port path "${entry.path}" does not match the Foundation application ports/out pattern.`, 'Use src/application/business/<context>/ports/out/<name>.port.ts for BO-pattern repository ports.'));
52
+ }
53
+ if (entry.layer === 'infrastructure' && entry.role === 'entity' && !INFRASTRUCTURE_ENTITY_PATTERN.test(entry.path)) {
54
+ findings.push(finding('FOUNDATION_INFRASTRUCTURE_ENTITY_PATH_INVALID', entry, `Infrastructure entity path "${entry.path}" does not match the centralized TypeORM entity pattern.`, 'Use src/infrastructure/adapters/orm/entities/<name>.orm-entity.ts for TypeORM entities.'));
55
+ }
56
+ return findings;
57
+ }
58
+ function finding(code, entry, message, remediation) {
59
+ return {
60
+ code,
61
+ severity: 'warn',
62
+ path: entry.path,
63
+ message,
64
+ remediation,
65
+ };
66
+ }
67
+ function formatIssue(issue) {
68
+ const issuePath = issue.path.length > 0 ? issue.path.join('.') : '<root>';
69
+ return `${issuePath}: ${issue.message}`;
70
+ }
71
+ //# sourceMappingURL=foundation-artifact-map-validator.js.map
@@ -0,0 +1,24 @@
1
+ export declare const CODESDD_FOUNDATION_LAYER_IDS: readonly ["domains", "applications", "infrastructures", "presentations", "shared"];
2
+ export type CodesddFoundationLayerId = (typeof CODESDD_FOUNDATION_LAYER_IDS)[number];
3
+ export interface CodesddFoundationLayerMapping {
4
+ layer: CodesddFoundationLayerId;
5
+ root: `src/${CodesddFoundationLayerId}`;
6
+ entrypoint: `src/${CodesddFoundationLayerId}/${string}`;
7
+ legacy_roots: string[];
8
+ role: string;
9
+ migration_status: 'active-facade' | 'legacy-source';
10
+ }
11
+ export interface CodesddFoundationLayerFinding {
12
+ code: 'FOUNDATION_LAYER_MISSING' | 'FOUNDATION_LAYER_ROOT_MISMATCH' | 'FOUNDATION_LAYER_ENTRYPOINT_MISMATCH' | 'FOUNDATION_LAYER_DUPLICATE' | 'FOUNDATION_LAYER_FORBIDDEN_PROJECT_RUNTIME';
13
+ layer?: string;
14
+ path?: string;
15
+ message: string;
16
+ }
17
+ export interface CodesddFoundationLayerValidationReport {
18
+ valid: boolean;
19
+ findings: CodesddFoundationLayerFinding[];
20
+ }
21
+ export declare const CODESDD_FOUNDATION_LAYER_MANIFEST: readonly CodesddFoundationLayerMapping[];
22
+ export declare function listCodesddFoundationLayerRoots(manifest?: readonly CodesddFoundationLayerMapping[]): string[];
23
+ export declare function validateCodesddFoundationLayerManifest(manifest?: readonly CodesddFoundationLayerMapping[]): CodesddFoundationLayerValidationReport;
24
+ //# sourceMappingURL=foundation-layer-manifest.d.ts.map
@@ -0,0 +1,117 @@
1
+ export const CODESDD_FOUNDATION_LAYER_IDS = [
2
+ 'domains',
3
+ 'applications',
4
+ 'infrastructures',
5
+ 'presentations',
6
+ 'shared',
7
+ ];
8
+ export const CODESDD_FOUNDATION_LAYER_MANIFEST = [
9
+ {
10
+ layer: 'domains',
11
+ root: 'src/domains',
12
+ entrypoint: 'src/domains/sdd/index.ts',
13
+ legacy_roots: ['src/core/sdd/domain'],
14
+ role: 'Pure CodeSDD lifecycle, traceability, title, transition, and guardrail domain rules.',
15
+ migration_status: 'active-facade',
16
+ },
17
+ {
18
+ layer: 'applications',
19
+ root: 'src/applications',
20
+ entrypoint: 'src/applications/sdd/index.ts',
21
+ legacy_roots: ['src/core/sdd/services'],
22
+ role: 'Use-case and orchestration services for CodeSDD lifecycle and command workflows.',
23
+ migration_status: 'active-facade',
24
+ },
25
+ {
26
+ layer: 'infrastructures',
27
+ root: 'src/infrastructures',
28
+ entrypoint: 'src/infrastructures/sdd/index.ts',
29
+ legacy_roots: ['src/core/sdd/store', 'src/core/sdd/coordination'],
30
+ role: 'Filesystem, YAML state, Redis, cache, lock, queue, and event adapters.',
31
+ migration_status: 'active-facade',
32
+ },
33
+ {
34
+ layer: 'presentations',
35
+ root: 'src/presentations',
36
+ entrypoint: 'src/presentations/cli/sdd/index.ts',
37
+ legacy_roots: ['src/commands', 'src/cli'],
38
+ role: 'CLI and operator-facing command surfaces.',
39
+ migration_status: 'active-facade',
40
+ },
41
+ {
42
+ layer: 'shared',
43
+ root: 'src/shared',
44
+ entrypoint: 'src/shared/sdd/index.ts',
45
+ legacy_roots: ['src/core/sdd/types.ts', 'src/core/sdd/workspace-schemas.ts', 'src/core/shared'],
46
+ role: 'Shared contracts, schema documents, and reusable utility boundaries.',
47
+ migration_status: 'active-facade',
48
+ },
49
+ ];
50
+ export function listCodesddFoundationLayerRoots(manifest = CODESDD_FOUNDATION_LAYER_MANIFEST) {
51
+ return manifest.map((entry) => entry.root);
52
+ }
53
+ export function validateCodesddFoundationLayerManifest(manifest = CODESDD_FOUNDATION_LAYER_MANIFEST) {
54
+ const findings = [];
55
+ const seenLayers = new Set();
56
+ const seenRoots = new Set();
57
+ for (const layer of CODESDD_FOUNDATION_LAYER_IDS) {
58
+ if (!manifest.some((entry) => entry.layer === layer)) {
59
+ findings.push({
60
+ code: 'FOUNDATION_LAYER_MISSING',
61
+ layer,
62
+ message: `Foundation-like layer ${layer} must be declared.`,
63
+ });
64
+ }
65
+ }
66
+ for (const entry of manifest) {
67
+ if (seenLayers.has(entry.layer)) {
68
+ findings.push({
69
+ code: 'FOUNDATION_LAYER_DUPLICATE',
70
+ layer: entry.layer,
71
+ message: `Foundation-like layer ${entry.layer} is declared more than once.`,
72
+ });
73
+ }
74
+ seenLayers.add(entry.layer);
75
+ if (seenRoots.has(entry.root)) {
76
+ findings.push({
77
+ code: 'FOUNDATION_LAYER_DUPLICATE',
78
+ layer: entry.layer,
79
+ path: entry.root,
80
+ message: `Foundation-like root ${entry.root} is declared more than once.`,
81
+ });
82
+ }
83
+ seenRoots.add(entry.root);
84
+ const expectedRoot = `src/${entry.layer}`;
85
+ if (entry.root !== expectedRoot) {
86
+ findings.push({
87
+ code: 'FOUNDATION_LAYER_ROOT_MISMATCH',
88
+ layer: entry.layer,
89
+ path: entry.root,
90
+ message: `Layer ${entry.layer} must use plural root ${expectedRoot}.`,
91
+ });
92
+ }
93
+ if (!entry.entrypoint.startsWith(`${entry.root}/`)) {
94
+ findings.push({
95
+ code: 'FOUNDATION_LAYER_ENTRYPOINT_MISMATCH',
96
+ layer: entry.layer,
97
+ path: entry.entrypoint,
98
+ message: `Layer ${entry.layer} entrypoint must live under ${entry.root}.`,
99
+ });
100
+ }
101
+ for (const legacyRoot of entry.legacy_roots) {
102
+ if (legacyRoot.includes('/.codesdd') || legacyRoot.startsWith('.codesdd')) {
103
+ findings.push({
104
+ code: 'FOUNDATION_LAYER_FORBIDDEN_PROJECT_RUNTIME',
105
+ layer: entry.layer,
106
+ path: legacyRoot,
107
+ message: 'Foundation-like layer mappings must not use project-local .codesdd runtime paths.',
108
+ });
109
+ }
110
+ }
111
+ }
112
+ return {
113
+ valid: findings.length === 0,
114
+ findings,
115
+ };
116
+ }
117
+ //# sourceMappingURL=foundation-layer-manifest.js.map
@@ -0,0 +1,31 @@
1
+ type BackfillScope = 'discovery' | 'adr';
2
+ export interface GovernanceBackfillException {
3
+ scope: BackfillScope;
4
+ file: string;
5
+ id: string;
6
+ reason: string;
7
+ severity: 'warning' | 'skipped';
8
+ }
9
+ export interface GovernanceBackfillBucket {
10
+ inspected: number;
11
+ updated: number;
12
+ skipped: number;
13
+ exceptions: GovernanceBackfillException[];
14
+ }
15
+ export interface GovernanceBackfillReport {
16
+ generated_at: string;
17
+ write: boolean;
18
+ discovery: GovernanceBackfillBucket;
19
+ adr: GovernanceBackfillBucket;
20
+ }
21
+ export interface GovernanceBackfillOptions {
22
+ projectRoot: string;
23
+ discovery?: boolean;
24
+ adr?: boolean;
25
+ write?: boolean;
26
+ reportPath?: string;
27
+ nowIso?: string;
28
+ }
29
+ export declare function backfillGovernanceFrontmatter(options: GovernanceBackfillOptions): Promise<GovernanceBackfillReport>;
30
+ export {};
31
+ //# sourceMappingURL=governance-backfill.d.ts.map