@devtrack-solution/codesdd 1.2.2 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) hide show
  1. package/.sdd/skills/curated/api-clean-flask-langgraph/SKILL.md +17 -17
  2. package/.sdd/skills/curated/devtrack-api/SKILL.md +160 -28
  3. package/.sdd/skills/curated/devtrack-api/agents/openai.yaml +1 -1
  4. package/.sdd/skills/curated/devtrack-api/references/architecture-governance.md +8 -7
  5. package/.sdd/skills/curated/devtrack-api/references/consumer-sync-policy.md +93 -0
  6. package/.sdd/skills/curated/devtrack-api/references/contract-pack.yaml +317 -0
  7. package/.sdd/skills/curated/devtrack-api/references/field-validation-protocol.md +95 -0
  8. package/.sdd/skills/curated/devtrack-api/references/foundation-layout.md +295 -0
  9. package/.sdd/skills/curated/devtrack-api/references/implementation-checklist.md +4 -4
  10. package/.sdd/skills/curated/devtrack-api/references/imports-lint.md +4 -0
  11. package/.sdd/skills/curated/devtrack-api/references/testing-validation.md +2 -2
  12. package/LICENSE +1 -1
  13. package/README.md +243 -51
  14. package/bin/codesdd.js +3 -2
  15. package/dist/cli/index.d.ts +2 -2
  16. package/dist/cli/index.js +11 -558
  17. package/dist/cli/program.d.ts +14 -0
  18. package/dist/cli/program.js +645 -0
  19. package/dist/commands/change.js +5 -5
  20. package/dist/commands/completion.d.ts +1 -1
  21. package/dist/commands/completion.js +9 -2
  22. package/dist/commands/config.js +159 -20
  23. package/dist/commands/feedback.js +1 -1
  24. package/dist/commands/schema.d.ts +63 -0
  25. package/dist/commands/schema.js +12 -12
  26. package/dist/commands/sdd/backlog.d.ts +3 -0
  27. package/dist/commands/sdd/backlog.js +54 -0
  28. package/dist/commands/sdd/execution.js +147 -16
  29. package/dist/commands/sdd/plugin.d.ts +3 -0
  30. package/dist/commands/sdd/plugin.js +153 -0
  31. package/dist/commands/sdd/shared.js +2 -23
  32. package/dist/commands/sdd/skills.js +7 -0
  33. package/dist/commands/sdd.js +69 -12
  34. package/dist/commands/spec.js +9 -9
  35. package/dist/commands/validate.js +6 -6
  36. package/dist/commands/workflow/instructions.js +6 -6
  37. package/dist/commands/workflow/new-change.js +3 -3
  38. package/dist/commands/workflow/shared.d.ts +1 -1
  39. package/dist/commands/workflow/shared.js +4 -4
  40. package/dist/core/archive.js +15 -5
  41. package/dist/core/artifact-graph/instruction-loader.d.ts +1 -1
  42. package/dist/core/artifact-graph/instruction-loader.js +3 -3
  43. package/dist/core/artifact-graph/resolver.d.ts +4 -4
  44. package/dist/core/artifact-graph/resolver.js +6 -6
  45. package/dist/core/branding.js +3 -3
  46. package/dist/core/cli/command-matrix.js +10 -1
  47. package/dist/core/cli-command-quality.d.ts +27 -0
  48. package/dist/core/cli-command-quality.js +171 -0
  49. package/dist/core/command-generation/adapters/costrict.d.ts +1 -1
  50. package/dist/core/command-generation/adapters/costrict.js +2 -2
  51. package/dist/core/command-generation/types.d.ts +1 -1
  52. package/dist/core/completions/command-registry.d.ts +1 -1
  53. package/dist/core/completions/command-registry.js +155 -12
  54. package/dist/core/completions/completion-provider.d.ts +14 -1
  55. package/dist/core/completions/completion-provider.js +29 -1
  56. package/dist/core/completions/generators/bash-generator.d.ts +1 -1
  57. package/dist/core/completions/generators/bash-generator.js +20 -12
  58. package/dist/core/completions/generators/fish-generator.d.ts +9 -1
  59. package/dist/core/completions/generators/fish-generator.js +39 -25
  60. package/dist/core/completions/generators/powershell-generator.d.ts +1 -1
  61. package/dist/core/completions/generators/powershell-generator.js +21 -11
  62. package/dist/core/completions/generators/zsh-generator.d.ts +3 -6
  63. package/dist/core/completions/generators/zsh-generator.js +21 -42
  64. package/dist/core/completions/installers/bash-installer.js +6 -6
  65. package/dist/core/completions/installers/fish-installer.js +1 -1
  66. package/dist/core/completions/installers/powershell-installer.js +14 -14
  67. package/dist/core/completions/installers/zsh-installer.d.ts +7 -1
  68. package/dist/core/completions/installers/zsh-installer.js +36 -8
  69. package/dist/core/completions/templates/bash-templates.d.ts +1 -1
  70. package/dist/core/completions/templates/bash-templates.js +12 -6
  71. package/dist/core/completions/templates/fish-templates.d.ts +2 -2
  72. package/dist/core/completions/templates/fish-templates.js +20 -9
  73. package/dist/core/completions/templates/powershell-templates.d.ts +1 -1
  74. package/dist/core/completions/templates/powershell-templates.js +13 -4
  75. package/dist/core/completions/templates/zsh-templates.d.ts +1 -1
  76. package/dist/core/completions/templates/zsh-templates.js +18 -9
  77. package/dist/core/config-schema.d.ts +3 -1
  78. package/dist/core/config-schema.js +26 -1
  79. package/dist/core/config.d.ts +3 -3
  80. package/dist/core/config.js +4 -4
  81. package/dist/core/global-config.d.ts +41 -12
  82. package/dist/core/global-config.js +344 -27
  83. package/dist/core/index.d.ts +1 -1
  84. package/dist/core/index.js +2 -2
  85. package/dist/core/init.d.ts +6 -1
  86. package/dist/core/init.js +99 -77
  87. package/dist/core/legacy-cleanup.d.ts +17 -17
  88. package/dist/core/legacy-cleanup.js +96 -79
  89. package/dist/core/list.js +18 -4
  90. package/dist/core/migration.d.ts +3 -1
  91. package/dist/core/migration.js +7 -8
  92. package/dist/core/parsers/change-parser.js +1 -1
  93. package/dist/core/parsers/markdown-parser.js +2 -2
  94. package/dist/core/profile-sync-drift.d.ts +1 -1
  95. package/dist/core/profile-sync-drift.js +13 -13
  96. package/dist/core/project-config.d.ts +4 -4
  97. package/dist/core/project-config.js +11 -11
  98. package/dist/core/schemas/change.schema.d.ts +1 -1
  99. package/dist/core/schemas/change.schema.js +1 -1
  100. package/dist/core/schemas/spec.schema.d.ts +1 -1
  101. package/dist/core/schemas/spec.schema.js +1 -1
  102. package/dist/core/sdd/adr.js +23 -1
  103. package/dist/core/sdd/agent-binding.d.ts +346 -0
  104. package/dist/core/sdd/agent-binding.js +343 -0
  105. package/dist/core/sdd/backlog-cli.d.ts +16 -0
  106. package/dist/core/sdd/backlog-cli.js +146 -0
  107. package/dist/core/sdd/backlog-conflict-policy.d.ts +58 -0
  108. package/dist/core/sdd/backlog-conflict-policy.js +230 -0
  109. package/dist/core/sdd/backlog-projection.d.ts +8 -0
  110. package/dist/core/sdd/backlog-projection.js +89 -0
  111. package/dist/core/sdd/backlog-provider-contract.d.ts +252 -0
  112. package/dist/core/sdd/backlog-provider-contract.js +158 -0
  113. package/dist/core/sdd/bootstrap.js +2 -2
  114. package/dist/core/sdd/check.d.ts +42 -0
  115. package/dist/core/sdd/check.js +22 -22
  116. package/dist/core/sdd/contract.d.ts +13 -0
  117. package/dist/core/sdd/contract.js +36 -0
  118. package/dist/core/sdd/coordination/coordination-adapters.d.ts +38 -0
  119. package/dist/core/sdd/coordination/coordination-adapters.js +139 -1
  120. package/dist/core/sdd/deepagent-contracts.d.ts +276 -0
  121. package/dist/core/sdd/deepagent-contracts.js +173 -0
  122. package/dist/core/sdd/deepagents/adr-governor.d.ts +2 -0
  123. package/dist/core/sdd/deepagents/adr-governor.js +30 -0
  124. package/dist/core/sdd/deepagents/backend.d.ts +63 -0
  125. package/dist/core/sdd/deepagents/backend.js +174 -0
  126. package/dist/core/sdd/deepagents/codesdd-tools.d.ts +39 -0
  127. package/dist/core/sdd/deepagents/codesdd-tools.js +83 -0
  128. package/dist/core/sdd/deepagents/evidence-mapper.d.ts +86 -0
  129. package/dist/core/sdd/deepagents/evidence-mapper.js +178 -0
  130. package/dist/core/sdd/deepagents/model-provider.d.ts +53 -0
  131. package/dist/core/sdd/deepagents/model-provider.js +379 -0
  132. package/dist/core/sdd/deepagents/policy-enforcement.d.ts +30 -0
  133. package/dist/core/sdd/deepagents/policy-enforcement.js +90 -0
  134. package/dist/core/sdd/deepagents/policy.d.ts +75 -0
  135. package/dist/core/sdd/deepagents/policy.js +358 -0
  136. package/dist/core/sdd/deepagents/quality-witness.d.ts +3 -0
  137. package/dist/core/sdd/deepagents/quality-witness.js +77 -0
  138. package/dist/core/sdd/deepagents/reversa-subagents.d.ts +75 -0
  139. package/dist/core/sdd/deepagents/reversa-subagents.js +182 -0
  140. package/dist/core/sdd/deepagents/runtime-factory.d.ts +90 -0
  141. package/dist/core/sdd/deepagents/runtime-factory.js +231 -0
  142. package/dist/core/sdd/deepagents/runtime-loader.d.ts +16 -0
  143. package/dist/core/sdd/deepagents/runtime-loader.js +65 -0
  144. package/dist/core/sdd/default-bootstrap-files.d.ts +2 -2
  145. package/dist/core/sdd/default-bootstrap-files.js +36 -2
  146. package/dist/core/sdd/default-skills.d.ts +30 -0
  147. package/dist/core/sdd/default-skills.js +181 -5
  148. package/dist/core/sdd/devtrack-api-appliance.d.ts +84 -0
  149. package/dist/core/sdd/devtrack-api-appliance.js +257 -0
  150. package/dist/core/sdd/devtrack-api-architecture.d.ts +31 -0
  151. package/dist/core/sdd/devtrack-api-architecture.js +608 -0
  152. package/dist/core/sdd/devtrack-api-import-boundary.d.ts +19 -0
  153. package/dist/core/sdd/devtrack-api-import-boundary.js +32 -0
  154. package/dist/core/sdd/diagnose.d.ts +59 -0
  155. package/dist/core/sdd/diagnose.js +37 -37
  156. package/dist/core/sdd/docs-sync.js +33 -5
  157. package/dist/core/sdd/domain/post-active-validation.d.ts +7 -0
  158. package/dist/core/sdd/domain/post-active-validation.js +61 -0
  159. package/dist/core/sdd/domain/transition-engine.js +1 -0
  160. package/dist/core/sdd/entity-reference.d.ts +5 -0
  161. package/dist/core/sdd/entity-reference.js +22 -0
  162. package/dist/core/sdd/governance-backfill.d.ts +31 -0
  163. package/dist/core/sdd/governance-backfill.js +359 -0
  164. package/dist/core/sdd/governance-parser.d.ts +21 -0
  165. package/dist/core/sdd/governance-parser.js +91 -0
  166. package/dist/core/sdd/governance-schemas.d.ts +245 -0
  167. package/dist/core/sdd/governance-schemas.js +143 -0
  168. package/dist/core/sdd/{import-openspec.d.ts → import-legacy-spec.d.ts} +7 -7
  169. package/dist/core/sdd/{import-openspec.js → import-legacy-spec.js} +21 -29
  170. package/dist/core/sdd/init.d.ts +3 -0
  171. package/dist/core/sdd/init.js +6 -3
  172. package/dist/core/sdd/json-schema.js +100 -6
  173. package/dist/core/sdd/knowledge-graph.d.ts +45 -0
  174. package/dist/core/sdd/knowledge-graph.js +288 -0
  175. package/dist/core/sdd/legacy-operations.js +431 -43
  176. package/dist/core/sdd/lenses.d.ts +1 -0
  177. package/dist/core/sdd/lenses.js +29 -1
  178. package/dist/core/sdd/migrate-workspace.js +56 -2
  179. package/dist/core/sdd/migrate.d.ts +1 -1
  180. package/dist/core/sdd/migrate.js +36 -2
  181. package/dist/core/sdd/package-structure-gate.d.ts +83 -0
  182. package/dist/core/sdd/package-structure-gate.js +362 -0
  183. package/dist/core/sdd/parallel-feat-automation.d.ts +152 -0
  184. package/dist/core/sdd/parallel-feat-automation.js +212 -0
  185. package/dist/core/sdd/plugin-broker.d.ts +558 -0
  186. package/dist/core/sdd/plugin-broker.js +482 -0
  187. package/dist/core/sdd/plugin-certification.d.ts +79 -0
  188. package/dist/core/sdd/plugin-certification.js +453 -0
  189. package/dist/core/sdd/plugin-cli.d.ts +109 -0
  190. package/dist/core/sdd/plugin-cli.js +198 -0
  191. package/dist/core/sdd/plugin-evidence.d.ts +275 -0
  192. package/dist/core/sdd/plugin-evidence.js +307 -0
  193. package/dist/core/sdd/plugin-manifest.d.ts +164 -0
  194. package/dist/core/sdd/plugin-manifest.js +215 -0
  195. package/dist/core/sdd/plugin-policy-pack.d.ts +88 -0
  196. package/dist/core/sdd/plugin-policy-pack.js +236 -0
  197. package/dist/core/sdd/plugin-policy.d.ts +68 -0
  198. package/dist/core/sdd/plugin-policy.js +212 -0
  199. package/dist/core/sdd/plugin-registry.d.ts +311 -0
  200. package/dist/core/sdd/plugin-registry.js +138 -0
  201. package/dist/core/sdd/plugin-skill-binding.d.ts +151 -0
  202. package/dist/core/sdd/plugin-skill-binding.js +339 -0
  203. package/dist/core/sdd/quality-artifact-manifest-validator.d.ts +28 -0
  204. package/dist/core/sdd/quality-artifact-manifest-validator.js +167 -0
  205. package/dist/core/sdd/quality-evidence-renderer.d.ts +65 -0
  206. package/dist/core/sdd/quality-evidence-renderer.js +218 -0
  207. package/dist/core/sdd/quality-scenario-runner.d.ts +42 -0
  208. package/dist/core/sdd/quality-scenario-runner.js +613 -0
  209. package/dist/core/sdd/quality-validation.d.ts +547 -0
  210. package/dist/core/sdd/quality-validation.js +239 -0
  211. package/dist/core/sdd/resolve-project-root.d.ts +2 -2
  212. package/dist/core/sdd/resolve-project-root.js +11 -5
  213. package/dist/core/sdd/sanitize.d.ts +30 -1
  214. package/dist/core/sdd/sanitize.js +23 -23
  215. package/dist/core/sdd/services/agent-run.service.d.ts +65 -0
  216. package/dist/core/sdd/services/agent-run.service.js +189 -0
  217. package/dist/core/sdd/services/breakdown.service.js +2 -1
  218. package/dist/core/sdd/services/context.service.js +18 -16
  219. package/dist/core/sdd/services/debate.service.js +15 -2
  220. package/dist/core/sdd/services/feature-lint.service.d.ts +22 -0
  221. package/dist/core/sdd/services/feature-lint.service.js +105 -5
  222. package/dist/core/sdd/services/finalize.service.d.ts +80 -0
  223. package/dist/core/sdd/services/finalize.service.js +323 -24
  224. package/dist/core/sdd/services/frontend-gap.service.js +22 -7
  225. package/dist/core/sdd/services/governance-control-plane-runtime-adapters.d.ts +17 -0
  226. package/dist/core/sdd/services/governance-control-plane-runtime-adapters.js +38 -0
  227. package/dist/core/sdd/services/governance-control-plane.service.d.ts +66 -0
  228. package/dist/core/sdd/services/governance-control-plane.service.js +134 -0
  229. package/dist/core/sdd/services/ingest-deposito.service.js +1 -1
  230. package/dist/core/sdd/services/legacy-capability.service.d.ts +10 -7
  231. package/dist/core/sdd/services/legacy-capability.service.js +38 -21
  232. package/dist/core/sdd/services/mcp-runtime.service.d.ts +123 -8
  233. package/dist/core/sdd/services/mcp-runtime.service.js +1085 -33
  234. package/dist/core/sdd/services/onboard.service.js +2 -1
  235. package/dist/core/sdd/services/rebuild.service.js +6 -1
  236. package/dist/core/sdd/services/skills-sync.service.d.ts +17 -5
  237. package/dist/core/sdd/services/skills-sync.service.js +55 -2
  238. package/dist/core/sdd/services/start.service.js +6 -4
  239. package/dist/core/sdd/skill-bundles-curation-schema.d.ts +66 -0
  240. package/dist/core/sdd/skill-bundles-curation-schema.js +52 -0
  241. package/dist/core/sdd/skill-evidence.d.ts +19 -0
  242. package/dist/core/sdd/skill-evidence.js +38 -0
  243. package/dist/core/sdd/skill-policy-pool.d.ts +46 -0
  244. package/dist/core/sdd/skill-policy-pool.js +185 -0
  245. package/dist/core/sdd/state.d.ts +22 -0
  246. package/dist/core/sdd/state.js +66 -41
  247. package/dist/core/sdd/structural-health.d.ts +42 -42
  248. package/dist/core/sdd/types.d.ts +33 -7
  249. package/dist/core/sdd/types.js +17 -0
  250. package/dist/core/sdd/upgrade-to-codesdd.d.ts +45 -0
  251. package/dist/core/sdd/upgrade-to-codesdd.js +179 -0
  252. package/dist/core/sdd/workspace-schemas.d.ts +285 -14
  253. package/dist/core/sdd/workspace-schemas.js +148 -0
  254. package/dist/core/sdd/write-manifest.js +22 -4
  255. package/dist/core/shared/skill-generation.d.ts +1 -1
  256. package/dist/core/shared/skill-generation.js +15 -15
  257. package/dist/core/shared/tool-detection.d.ts +3 -3
  258. package/dist/core/shared/tool-detection.js +14 -14
  259. package/dist/core/specs-apply.js +6 -6
  260. package/dist/core/templates/index.d.ts +1 -1
  261. package/dist/core/templates/index.js +1 -1
  262. package/dist/core/templates/workflows/apply-change.js +14 -14
  263. package/dist/core/templates/workflows/archive-change.js +32 -32
  264. package/dist/core/templates/workflows/bulk-archive-change.js +25 -25
  265. package/dist/core/templates/workflows/continue-change.js +12 -12
  266. package/dist/core/templates/workflows/explore.js +29 -29
  267. package/dist/core/templates/workflows/feedback.js +6 -6
  268. package/dist/core/templates/workflows/ff-change.js +24 -24
  269. package/dist/core/templates/workflows/new-change.js +20 -20
  270. package/dist/core/templates/workflows/onboard.js +33 -33
  271. package/dist/core/templates/workflows/propose.js +23 -23
  272. package/dist/core/templates/workflows/sdd.js +8 -8
  273. package/dist/core/templates/workflows/sync-specs.js +19 -19
  274. package/dist/core/templates/workflows/verify-change.js +17 -17
  275. package/dist/core/update.d.ts +2 -2
  276. package/dist/core/update.js +16 -15
  277. package/dist/core/validation/constants.d.ts +1 -1
  278. package/dist/core/validation/constants.js +1 -1
  279. package/dist/core/view.js +11 -11
  280. package/dist/telemetry/config.d.ts +2 -1
  281. package/dist/telemetry/config.js +17 -8
  282. package/dist/telemetry/index.d.ts +10 -2
  283. package/dist/telemetry/index.js +40 -7
  284. package/dist/ui/ascii-patterns.d.ts +2 -2
  285. package/dist/ui/ascii-patterns.js +2 -2
  286. package/dist/ui/welcome-screen.js +2 -2
  287. package/dist/utils/change-metadata.d.ts +4 -4
  288. package/dist/utils/change-metadata.js +6 -6
  289. package/dist/utils/change-utils.d.ts +3 -3
  290. package/dist/utils/change-utils.js +5 -5
  291. package/dist/utils/file-system.js +1 -1
  292. package/dist/utils/interactive.js +1 -1
  293. package/dist/utils/item-discovery.js +4 -4
  294. package/dist/utils/legacy-spec-compat.d.ts +2 -0
  295. package/dist/utils/legacy-spec-compat.js +2 -0
  296. package/dist/utils/shell-detection.d.ts +1 -0
  297. package/dist/utils/shell-detection.js +16 -0
  298. package/package.json +27 -17
  299. package/schemas/sdd/1-spec.schema.json +1 -1
  300. package/schemas/sdd/2-plan.schema.json +73 -1
  301. package/schemas/sdd/3-tasks.schema.json +73 -1
  302. package/schemas/sdd/4-changelog.schema.json +1 -1
  303. package/schemas/sdd/5-quality.schema.json +442 -2
  304. package/schemas/sdd/adr.schema.json +148 -0
  305. package/schemas/sdd/agent-binding-adapter.schema.json +210 -0
  306. package/schemas/sdd/agent-binding-resolution.schema.json +338 -0
  307. package/schemas/sdd/backlog-projection-plan.schema.json +180 -0
  308. package/schemas/sdd/backlog-provider-contract.schema.json +260 -0
  309. package/schemas/sdd/codesdd-plugin.schema.json +474 -0
  310. package/schemas/sdd/debate.schema.json +244 -0
  311. package/schemas/sdd/deepagent-decision-evidence.schema.json +58 -0
  312. package/schemas/sdd/deepagent-env-contract.schema.json +143 -0
  313. package/schemas/sdd/deepagent-quality-evidence.schema.json +108 -0
  314. package/schemas/sdd/deepagent-run-evidence.schema.json +192 -0
  315. package/schemas/sdd/deepagent-run-plan.schema.json +197 -0
  316. package/schemas/sdd/deepagent-run-request.schema.json +321 -0
  317. package/schemas/sdd/deepagent-subagent-evidence.schema.json +110 -0
  318. package/schemas/sdd/deepagent-tool-call-evidence.schema.json +78 -0
  319. package/schemas/sdd/discarded.schema.json +127 -0
  320. package/schemas/sdd/epic.schema.json +147 -0
  321. package/schemas/sdd/insight.schema.json +136 -0
  322. package/schemas/sdd/parallel-feat-automation-plan.schema.json +215 -0
  323. package/schemas/sdd/parallel-feat-automation-request.schema.json +109 -0
  324. package/schemas/sdd/plugin-artifact-manifest.schema.json +150 -0
  325. package/schemas/sdd/plugin-compliance-index.schema.json +136 -0
  326. package/schemas/sdd/plugin-dry-run-plan.schema.json +260 -0
  327. package/schemas/sdd/plugin-evidence-manifest.schema.json +569 -0
  328. package/schemas/sdd/plugin-policy-evaluation.schema.json +92 -0
  329. package/schemas/sdd/plugin-policy-pack-evaluation.schema.json +94 -0
  330. package/schemas/sdd/plugin-policy-pack.schema.json +196 -0
  331. package/schemas/sdd/plugin-registry.schema.json +558 -0
  332. package/schemas/sdd/plugin-rollback-manifest.schema.json +87 -0
  333. package/schemas/sdd/plugin-runtime-invocation-plan.schema.json +845 -0
  334. package/schemas/sdd/plugin-skill-binding-resolution.schema.json +305 -0
  335. package/schemas/sdd/plugin-skill-binding.schema.json +88 -0
  336. package/schemas/sdd/plugin-validation-manifest.schema.json +123 -0
  337. package/schemas/sdd/quality-architecture-schema.schema.json +216 -0
  338. package/schemas/sdd/quality-evidence-bundle.schema.json +1228 -0
  339. package/schemas/sdd/quality-run.schema.json +197 -0
  340. package/schemas/sdd/quality-scenario.schema.json +252 -0
  341. package/schemas/sdd/workspace-catalog.schema.json +9841 -22
  342. package/schemas/spec-driven/schema.yaml +4 -4
  343. package/schemas/spec-driven/templates/proposal.md +1 -1
  344. package/dist/utils/openspec-compat.d.ts +0 -2
  345. package/dist/utils/openspec-compat.js +0 -2
@@ -0,0 +1,1228 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "schema_version": {
6
+ "type": "number",
7
+ "const": 1
8
+ },
9
+ "run": {
10
+ "type": "object",
11
+ "properties": {
12
+ "schema_version": {
13
+ "type": "number",
14
+ "const": 1
15
+ },
16
+ "run_id": {
17
+ "type": "string",
18
+ "pattern": "^qrun-[0-9]{8}t[0-9]{6}z-[a-z0-9-]+$"
19
+ },
20
+ "scenario_ref": {
21
+ "type": "string",
22
+ "pattern": "^QVAL-\\d{4}$"
23
+ },
24
+ "feature_ref": {
25
+ "type": "string",
26
+ "pattern": "^FEAT-\\d{4}$"
27
+ },
28
+ "started_at": {
29
+ "type": "string",
30
+ "format": "date-time",
31
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
32
+ },
33
+ "finished_at": {
34
+ "type": "string",
35
+ "format": "date-time",
36
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
37
+ },
38
+ "mode": {
39
+ "type": "string",
40
+ "enum": [
41
+ "dry_run",
42
+ "apply_sandbox",
43
+ "runtime",
44
+ "traceability"
45
+ ]
46
+ },
47
+ "status": {
48
+ "type": "string",
49
+ "enum": [
50
+ "passed",
51
+ "warning",
52
+ "failed",
53
+ "blocked"
54
+ ]
55
+ },
56
+ "plugin_ref": {
57
+ "type": "object",
58
+ "properties": {
59
+ "id": {
60
+ "type": "string",
61
+ "minLength": 1
62
+ },
63
+ "version": {
64
+ "type": "string",
65
+ "minLength": 1
66
+ },
67
+ "capability": {
68
+ "type": "string",
69
+ "minLength": 1
70
+ }
71
+ },
72
+ "required": [
73
+ "id",
74
+ "version",
75
+ "capability"
76
+ ],
77
+ "additionalProperties": false
78
+ },
79
+ "command": {
80
+ "type": "object",
81
+ "properties": {
82
+ "argv": {
83
+ "minItems": 1,
84
+ "type": "array",
85
+ "items": {
86
+ "type": "string",
87
+ "minLength": 1
88
+ }
89
+ },
90
+ "cwd": {
91
+ "default": ".",
92
+ "type": "string",
93
+ "minLength": 1
94
+ },
95
+ "env_keys": {
96
+ "default": [],
97
+ "type": "array",
98
+ "items": {
99
+ "type": "string",
100
+ "minLength": 1
101
+ }
102
+ }
103
+ },
104
+ "required": [
105
+ "argv",
106
+ "cwd",
107
+ "env_keys"
108
+ ],
109
+ "additionalProperties": false
110
+ },
111
+ "schema_versions": {
112
+ "default": {},
113
+ "type": "object",
114
+ "propertyNames": {
115
+ "type": "string"
116
+ },
117
+ "additionalProperties": {
118
+ "type": "string"
119
+ }
120
+ },
121
+ "artifacts": {
122
+ "default": [],
123
+ "type": "array",
124
+ "items": {
125
+ "type": "string",
126
+ "minLength": 1
127
+ }
128
+ },
129
+ "findings": {
130
+ "default": [],
131
+ "type": "array",
132
+ "items": {
133
+ "type": "object",
134
+ "properties": {
135
+ "code": {
136
+ "type": "string",
137
+ "pattern": "^[A-Z][A-Z0-9_]*$"
138
+ },
139
+ "severity": {
140
+ "type": "string",
141
+ "enum": [
142
+ "info",
143
+ "warn",
144
+ "error",
145
+ "blocker"
146
+ ]
147
+ },
148
+ "message": {
149
+ "type": "string",
150
+ "minLength": 1
151
+ },
152
+ "remediation": {
153
+ "type": "string",
154
+ "minLength": 1
155
+ },
156
+ "path": {
157
+ "type": "string",
158
+ "minLength": 1
159
+ },
160
+ "gate_id": {
161
+ "type": "string",
162
+ "minLength": 1
163
+ }
164
+ },
165
+ "required": [
166
+ "code",
167
+ "severity",
168
+ "message",
169
+ "remediation"
170
+ ],
171
+ "additionalProperties": false
172
+ }
173
+ },
174
+ "evidence_bundle_path": {
175
+ "type": "string",
176
+ "minLength": 1
177
+ },
178
+ "metadata": {
179
+ "default": {},
180
+ "type": "object",
181
+ "propertyNames": {
182
+ "type": "string"
183
+ },
184
+ "additionalProperties": {}
185
+ }
186
+ },
187
+ "required": [
188
+ "schema_version",
189
+ "run_id",
190
+ "scenario_ref",
191
+ "feature_ref",
192
+ "started_at",
193
+ "mode",
194
+ "status",
195
+ "command",
196
+ "schema_versions",
197
+ "artifacts",
198
+ "findings",
199
+ "metadata"
200
+ ],
201
+ "additionalProperties": false
202
+ },
203
+ "scenario": {
204
+ "type": "object",
205
+ "properties": {
206
+ "schema_version": {
207
+ "type": "number",
208
+ "const": 1
209
+ },
210
+ "id": {
211
+ "type": "string",
212
+ "pattern": "^QVAL-\\d{4}$"
213
+ },
214
+ "title": {
215
+ "type": "string",
216
+ "minLength": 10
217
+ },
218
+ "feature_ref": {
219
+ "type": "string",
220
+ "pattern": "^FEAT-\\d{4}$"
221
+ },
222
+ "mode": {
223
+ "type": "string",
224
+ "enum": [
225
+ "dry_run",
226
+ "apply_sandbox",
227
+ "runtime",
228
+ "traceability"
229
+ ]
230
+ },
231
+ "intent": {
232
+ "type": "string",
233
+ "minLength": 30
234
+ },
235
+ "authority": {
236
+ "minItems": 1,
237
+ "type": "array",
238
+ "items": {
239
+ "type": "object",
240
+ "properties": {
241
+ "type": {
242
+ "type": "string",
243
+ "enum": [
244
+ "adr",
245
+ "skill",
246
+ "foundation",
247
+ "debate",
248
+ "epic",
249
+ "feature",
250
+ "schema"
251
+ ]
252
+ },
253
+ "ref": {
254
+ "type": "string",
255
+ "minLength": 1
256
+ },
257
+ "path": {
258
+ "type": "string",
259
+ "minLength": 1
260
+ },
261
+ "version": {
262
+ "type": "string",
263
+ "minLength": 1
264
+ },
265
+ "update_policy": {
266
+ "type": "string",
267
+ "minLength": 1
268
+ }
269
+ },
270
+ "required": [
271
+ "type",
272
+ "ref",
273
+ "update_policy"
274
+ ],
275
+ "additionalProperties": false
276
+ }
277
+ },
278
+ "input": {
279
+ "type": "object",
280
+ "properties": {
281
+ "prompt": {
282
+ "type": "string",
283
+ "minLength": 1
284
+ },
285
+ "fixture_path": {
286
+ "type": "string",
287
+ "minLength": 1
288
+ },
289
+ "payload": {
290
+ "default": {},
291
+ "type": "object",
292
+ "propertyNames": {
293
+ "type": "string"
294
+ },
295
+ "additionalProperties": {}
296
+ }
297
+ },
298
+ "required": [
299
+ "payload"
300
+ ],
301
+ "additionalProperties": false
302
+ },
303
+ "expected_artifacts": {
304
+ "default": [],
305
+ "type": "array",
306
+ "items": {
307
+ "type": "object",
308
+ "properties": {
309
+ "path_pattern": {
310
+ "type": "string",
311
+ "minLength": 1
312
+ },
313
+ "required": {
314
+ "default": true,
315
+ "type": "boolean"
316
+ },
317
+ "artifact_class": {
318
+ "type": "string",
319
+ "minLength": 1
320
+ },
321
+ "checksum_required": {
322
+ "default": false,
323
+ "type": "boolean"
324
+ }
325
+ },
326
+ "required": [
327
+ "path_pattern",
328
+ "required",
329
+ "artifact_class",
330
+ "checksum_required"
331
+ ],
332
+ "additionalProperties": false
333
+ }
334
+ },
335
+ "gates": {
336
+ "minItems": 1,
337
+ "type": "array",
338
+ "items": {
339
+ "type": "object",
340
+ "properties": {
341
+ "id": {
342
+ "type": "string",
343
+ "minLength": 1
344
+ },
345
+ "type": {
346
+ "type": "string",
347
+ "enum": [
348
+ "schema",
349
+ "filesystem",
350
+ "import",
351
+ "runtime",
352
+ "evidence",
353
+ "certification",
354
+ "drift"
355
+ ]
356
+ },
357
+ "severity": {
358
+ "default": "warn",
359
+ "type": "string",
360
+ "enum": [
361
+ "warn",
362
+ "fail"
363
+ ]
364
+ },
365
+ "issue_codes": {
366
+ "default": [],
367
+ "type": "array",
368
+ "items": {
369
+ "type": "string",
370
+ "pattern": "^[A-Z][A-Z0-9_]*$"
371
+ }
372
+ },
373
+ "remediation": {
374
+ "type": "string",
375
+ "minLength": 1
376
+ }
377
+ },
378
+ "required": [
379
+ "id",
380
+ "type",
381
+ "severity",
382
+ "issue_codes",
383
+ "remediation"
384
+ ],
385
+ "additionalProperties": false
386
+ }
387
+ },
388
+ "negative_variants": {
389
+ "default": [],
390
+ "type": "array",
391
+ "items": {
392
+ "type": "object",
393
+ "properties": {
394
+ "id": {
395
+ "type": "string",
396
+ "minLength": 1
397
+ },
398
+ "description": {
399
+ "type": "string",
400
+ "minLength": 10
401
+ },
402
+ "expected_issue_codes": {
403
+ "minItems": 1,
404
+ "type": "array",
405
+ "items": {
406
+ "type": "string",
407
+ "pattern": "^[A-Z][A-Z0-9_]*$"
408
+ }
409
+ }
410
+ },
411
+ "required": [
412
+ "id",
413
+ "description",
414
+ "expected_issue_codes"
415
+ ],
416
+ "additionalProperties": false
417
+ }
418
+ },
419
+ "allowed_nondeterminism": {
420
+ "default": [],
421
+ "type": "array",
422
+ "items": {
423
+ "type": "string",
424
+ "minLength": 1
425
+ }
426
+ },
427
+ "required_evidence": {
428
+ "minItems": 1,
429
+ "type": "array",
430
+ "items": {
431
+ "type": "string",
432
+ "minLength": 1
433
+ }
434
+ }
435
+ },
436
+ "required": [
437
+ "schema_version",
438
+ "id",
439
+ "title",
440
+ "mode",
441
+ "intent",
442
+ "authority",
443
+ "input",
444
+ "expected_artifacts",
445
+ "gates",
446
+ "negative_variants",
447
+ "allowed_nondeterminism",
448
+ "required_evidence"
449
+ ],
450
+ "additionalProperties": false
451
+ },
452
+ "architecture_schema": {
453
+ "type": "object",
454
+ "properties": {
455
+ "schema_version": {
456
+ "type": "number",
457
+ "const": 1
458
+ },
459
+ "id": {
460
+ "type": "string",
461
+ "pattern": "^ARCH-GATE-[a-z0-9][a-z0-9-]*$"
462
+ },
463
+ "title": {
464
+ "type": "string",
465
+ "minLength": 10
466
+ },
467
+ "stack": {
468
+ "type": "string",
469
+ "minLength": 1
470
+ },
471
+ "authority": {
472
+ "minItems": 1,
473
+ "type": "array",
474
+ "items": {
475
+ "type": "object",
476
+ "properties": {
477
+ "type": {
478
+ "type": "string",
479
+ "enum": [
480
+ "adr",
481
+ "skill",
482
+ "foundation",
483
+ "debate",
484
+ "epic",
485
+ "feature",
486
+ "schema"
487
+ ]
488
+ },
489
+ "ref": {
490
+ "type": "string",
491
+ "minLength": 1
492
+ },
493
+ "path": {
494
+ "type": "string",
495
+ "minLength": 1
496
+ },
497
+ "version": {
498
+ "type": "string",
499
+ "minLength": 1
500
+ },
501
+ "update_policy": {
502
+ "type": "string",
503
+ "minLength": 1
504
+ }
505
+ },
506
+ "required": [
507
+ "type",
508
+ "ref",
509
+ "update_policy"
510
+ ],
511
+ "additionalProperties": false
512
+ }
513
+ },
514
+ "applies_to": {
515
+ "type": "object",
516
+ "properties": {
517
+ "plugin": {
518
+ "type": "string",
519
+ "minLength": 1
520
+ },
521
+ "capability": {
522
+ "type": "string",
523
+ "minLength": 1
524
+ },
525
+ "project_kind": {
526
+ "type": "string",
527
+ "minLength": 1
528
+ }
529
+ },
530
+ "additionalProperties": false
531
+ },
532
+ "layers": {
533
+ "type": "object",
534
+ "propertyNames": {
535
+ "type": "string",
536
+ "minLength": 1
537
+ },
538
+ "additionalProperties": {
539
+ "type": "object",
540
+ "properties": {
541
+ "path_patterns": {
542
+ "minItems": 1,
543
+ "type": "array",
544
+ "items": {
545
+ "type": "string",
546
+ "minLength": 1
547
+ }
548
+ },
549
+ "allowed_file_patterns": {
550
+ "default": [],
551
+ "type": "array",
552
+ "items": {
553
+ "type": "string",
554
+ "minLength": 1
555
+ }
556
+ },
557
+ "forbidden_file_patterns": {
558
+ "default": [],
559
+ "type": "array",
560
+ "items": {
561
+ "type": "string",
562
+ "minLength": 1
563
+ }
564
+ },
565
+ "allowed_imports": {
566
+ "default": [],
567
+ "type": "array",
568
+ "items": {
569
+ "type": "string",
570
+ "minLength": 1
571
+ }
572
+ },
573
+ "forbidden_imports": {
574
+ "default": [],
575
+ "type": "array",
576
+ "items": {
577
+ "type": "string",
578
+ "minLength": 1
579
+ }
580
+ },
581
+ "required_evidence": {
582
+ "default": [],
583
+ "type": "array",
584
+ "items": {
585
+ "type": "string",
586
+ "minLength": 1
587
+ }
588
+ }
589
+ },
590
+ "required": [
591
+ "path_patterns",
592
+ "allowed_file_patterns",
593
+ "forbidden_file_patterns",
594
+ "allowed_imports",
595
+ "forbidden_imports",
596
+ "required_evidence"
597
+ ],
598
+ "additionalProperties": false
599
+ }
600
+ },
601
+ "exceptions": {
602
+ "type": "object",
603
+ "properties": {
604
+ "require_adr": {
605
+ "default": true,
606
+ "type": "boolean"
607
+ },
608
+ "require_expiration": {
609
+ "default": true,
610
+ "type": "boolean"
611
+ },
612
+ "allowed_refs": {
613
+ "default": [],
614
+ "type": "array",
615
+ "items": {
616
+ "type": "string",
617
+ "minLength": 1
618
+ }
619
+ }
620
+ },
621
+ "required": [
622
+ "require_adr",
623
+ "require_expiration",
624
+ "allowed_refs"
625
+ ],
626
+ "additionalProperties": false
627
+ },
628
+ "update_policy": {
629
+ "type": "object",
630
+ "properties": {
631
+ "owner": {
632
+ "type": "string",
633
+ "minLength": 1
634
+ },
635
+ "review_trigger": {
636
+ "type": "string",
637
+ "minLength": 1
638
+ },
639
+ "stale_after_days": {
640
+ "type": "integer",
641
+ "exclusiveMinimum": 0,
642
+ "maximum": 9007199254740991
643
+ }
644
+ },
645
+ "required": [
646
+ "owner",
647
+ "review_trigger"
648
+ ],
649
+ "additionalProperties": false
650
+ }
651
+ },
652
+ "required": [
653
+ "schema_version",
654
+ "id",
655
+ "title",
656
+ "stack",
657
+ "authority",
658
+ "applies_to",
659
+ "layers",
660
+ "exceptions",
661
+ "update_policy"
662
+ ],
663
+ "additionalProperties": false
664
+ },
665
+ "artifact_manifest": {
666
+ "type": "object",
667
+ "properties": {
668
+ "schema_version": {
669
+ "type": "number",
670
+ "const": 1
671
+ },
672
+ "operation_id": {
673
+ "type": "string",
674
+ "pattern": "^[a-z0-9][a-z0-9-]*$"
675
+ },
676
+ "generated_at": {
677
+ "type": "string",
678
+ "format": "date-time",
679
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
680
+ },
681
+ "feature_ref": {
682
+ "type": "string",
683
+ "pattern": "^FEAT-\\d{4}$"
684
+ },
685
+ "plugin_ref": {
686
+ "type": "object",
687
+ "properties": {
688
+ "id": {
689
+ "type": "string",
690
+ "minLength": 1
691
+ },
692
+ "version": {
693
+ "type": "string",
694
+ "minLength": 1
695
+ }
696
+ },
697
+ "required": [
698
+ "id",
699
+ "version"
700
+ ],
701
+ "additionalProperties": false
702
+ },
703
+ "capability": {
704
+ "type": "string",
705
+ "minLength": 1
706
+ },
707
+ "mode": {
708
+ "type": "string",
709
+ "enum": [
710
+ "dry-run",
711
+ "apply",
712
+ "rollback"
713
+ ]
714
+ },
715
+ "status": {
716
+ "type": "string",
717
+ "enum": [
718
+ "planned",
719
+ "applied",
720
+ "rolled_back",
721
+ "failed"
722
+ ]
723
+ },
724
+ "artifacts": {
725
+ "default": [],
726
+ "type": "array",
727
+ "items": {
728
+ "type": "object",
729
+ "properties": {
730
+ "path": {
731
+ "type": "string",
732
+ "minLength": 1
733
+ },
734
+ "operation": {
735
+ "type": "string",
736
+ "enum": [
737
+ "planned",
738
+ "created",
739
+ "modified",
740
+ "deleted",
741
+ "unchanged",
742
+ "validated"
743
+ ]
744
+ },
745
+ "reason": {
746
+ "type": "string",
747
+ "minLength": 1
748
+ },
749
+ "checksum_before": {
750
+ "type": "string"
751
+ },
752
+ "checksum_after": {
753
+ "type": "string"
754
+ },
755
+ "content_type": {
756
+ "type": "string"
757
+ }
758
+ },
759
+ "required": [
760
+ "path",
761
+ "operation",
762
+ "reason"
763
+ ],
764
+ "additionalProperties": false
765
+ }
766
+ },
767
+ "validation_evidence": {
768
+ "default": [],
769
+ "type": "array",
770
+ "items": {
771
+ "type": "object",
772
+ "properties": {
773
+ "command": {
774
+ "type": "string",
775
+ "minLength": 1
776
+ },
777
+ "status": {
778
+ "type": "string",
779
+ "enum": [
780
+ "pending",
781
+ "passed",
782
+ "failed",
783
+ "skipped"
784
+ ]
785
+ },
786
+ "evidence_ref": {
787
+ "type": "string"
788
+ }
789
+ },
790
+ "required": [
791
+ "command",
792
+ "status"
793
+ ],
794
+ "additionalProperties": false
795
+ }
796
+ }
797
+ },
798
+ "required": [
799
+ "schema_version",
800
+ "operation_id",
801
+ "generated_at",
802
+ "feature_ref",
803
+ "plugin_ref",
804
+ "capability",
805
+ "mode",
806
+ "status",
807
+ "artifacts",
808
+ "validation_evidence"
809
+ ],
810
+ "additionalProperties": false
811
+ },
812
+ "validation_manifest": {
813
+ "type": "object",
814
+ "properties": {
815
+ "schema_version": {
816
+ "type": "number",
817
+ "const": 1
818
+ },
819
+ "operation_id": {
820
+ "type": "string",
821
+ "pattern": "^[a-z0-9][a-z0-9-]*$"
822
+ },
823
+ "generated_at": {
824
+ "type": "string",
825
+ "format": "date-time",
826
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
827
+ },
828
+ "feature_ref": {
829
+ "type": "string",
830
+ "pattern": "^FEAT-\\d{4}$"
831
+ },
832
+ "plugin_ref": {
833
+ "type": "object",
834
+ "properties": {
835
+ "id": {
836
+ "type": "string",
837
+ "minLength": 1
838
+ },
839
+ "version": {
840
+ "type": "string",
841
+ "minLength": 1
842
+ }
843
+ },
844
+ "required": [
845
+ "id",
846
+ "version"
847
+ ],
848
+ "additionalProperties": false
849
+ },
850
+ "capability": {
851
+ "type": "string",
852
+ "minLength": 1
853
+ },
854
+ "status": {
855
+ "type": "string",
856
+ "enum": [
857
+ "pending",
858
+ "passed",
859
+ "failed",
860
+ "partial"
861
+ ]
862
+ },
863
+ "validations": {
864
+ "default": [],
865
+ "type": "array",
866
+ "items": {
867
+ "type": "object",
868
+ "properties": {
869
+ "command": {
870
+ "type": "string",
871
+ "minLength": 1
872
+ },
873
+ "status": {
874
+ "type": "string",
875
+ "enum": [
876
+ "pending",
877
+ "passed",
878
+ "failed",
879
+ "skipped"
880
+ ]
881
+ },
882
+ "evidence_ref": {
883
+ "type": "string"
884
+ },
885
+ "coverage": {
886
+ "type": "object",
887
+ "properties": {
888
+ "statements": {
889
+ "type": "number",
890
+ "minimum": 0,
891
+ "maximum": 100
892
+ },
893
+ "branches": {
894
+ "type": "number",
895
+ "minimum": 0,
896
+ "maximum": 100
897
+ },
898
+ "functions": {
899
+ "type": "number",
900
+ "minimum": 0,
901
+ "maximum": 100
902
+ },
903
+ "lines": {
904
+ "type": "number",
905
+ "minimum": 0,
906
+ "maximum": 100
907
+ }
908
+ },
909
+ "additionalProperties": false
910
+ }
911
+ },
912
+ "required": [
913
+ "command",
914
+ "status"
915
+ ],
916
+ "additionalProperties": false
917
+ }
918
+ }
919
+ },
920
+ "required": [
921
+ "schema_version",
922
+ "operation_id",
923
+ "generated_at",
924
+ "feature_ref",
925
+ "plugin_ref",
926
+ "capability",
927
+ "status",
928
+ "validations"
929
+ ],
930
+ "additionalProperties": false
931
+ },
932
+ "compliance_index": {
933
+ "type": "object",
934
+ "properties": {
935
+ "schema_version": {
936
+ "type": "number",
937
+ "const": 1
938
+ },
939
+ "generated_at": {
940
+ "type": "string",
941
+ "format": "date-time",
942
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
943
+ },
944
+ "feature_ref": {
945
+ "type": "string",
946
+ "pattern": "^FEAT-\\d{4}$"
947
+ },
948
+ "operation_id": {
949
+ "type": "string",
950
+ "pattern": "^[a-z0-9][a-z0-9-]*$"
951
+ },
952
+ "plugin_ref": {
953
+ "type": "object",
954
+ "properties": {
955
+ "id": {
956
+ "type": "string",
957
+ "minLength": 1
958
+ },
959
+ "version": {
960
+ "type": "string",
961
+ "minLength": 1
962
+ }
963
+ },
964
+ "required": [
965
+ "id",
966
+ "version"
967
+ ],
968
+ "additionalProperties": false
969
+ },
970
+ "capability": {
971
+ "type": "string",
972
+ "minLength": 1
973
+ },
974
+ "score": {
975
+ "type": "number",
976
+ "minimum": 0,
977
+ "maximum": 100
978
+ },
979
+ "decision": {
980
+ "type": "string",
981
+ "enum": [
982
+ "compliant",
983
+ "warning",
984
+ "non-compliant"
985
+ ]
986
+ },
987
+ "criteria": {
988
+ "minItems": 1,
989
+ "type": "array",
990
+ "items": {
991
+ "type": "object",
992
+ "properties": {
993
+ "id": {
994
+ "type": "string",
995
+ "minLength": 1
996
+ },
997
+ "label": {
998
+ "type": "string",
999
+ "minLength": 1
1000
+ },
1001
+ "status": {
1002
+ "type": "string",
1003
+ "enum": [
1004
+ "pass",
1005
+ "warn",
1006
+ "fail"
1007
+ ]
1008
+ },
1009
+ "score": {
1010
+ "type": "number",
1011
+ "minimum": 0
1012
+ },
1013
+ "max_score": {
1014
+ "type": "number",
1015
+ "exclusiveMinimum": 0
1016
+ },
1017
+ "evidence": {
1018
+ "type": "string",
1019
+ "minLength": 1
1020
+ },
1021
+ "issues": {
1022
+ "default": [],
1023
+ "type": "array",
1024
+ "items": {
1025
+ "type": "string",
1026
+ "minLength": 1
1027
+ }
1028
+ }
1029
+ },
1030
+ "required": [
1031
+ "id",
1032
+ "label",
1033
+ "status",
1034
+ "score",
1035
+ "max_score",
1036
+ "evidence",
1037
+ "issues"
1038
+ ],
1039
+ "additionalProperties": false
1040
+ }
1041
+ },
1042
+ "evidence_refs": {
1043
+ "default": [],
1044
+ "type": "array",
1045
+ "items": {
1046
+ "type": "string",
1047
+ "minLength": 1
1048
+ }
1049
+ }
1050
+ },
1051
+ "required": [
1052
+ "schema_version",
1053
+ "generated_at",
1054
+ "feature_ref",
1055
+ "operation_id",
1056
+ "plugin_ref",
1057
+ "capability",
1058
+ "score",
1059
+ "decision",
1060
+ "criteria",
1061
+ "evidence_refs"
1062
+ ],
1063
+ "additionalProperties": false
1064
+ },
1065
+ "filesystem_snapshot": {
1066
+ "type": "object",
1067
+ "properties": {
1068
+ "root": {
1069
+ "default": ".",
1070
+ "type": "string",
1071
+ "minLength": 1
1072
+ },
1073
+ "files": {
1074
+ "default": [],
1075
+ "type": "array",
1076
+ "items": {
1077
+ "type": "object",
1078
+ "properties": {
1079
+ "path": {
1080
+ "type": "string",
1081
+ "minLength": 1
1082
+ },
1083
+ "size_bytes": {
1084
+ "type": "integer",
1085
+ "minimum": 0,
1086
+ "maximum": 9007199254740991
1087
+ },
1088
+ "sha256": {
1089
+ "type": "string",
1090
+ "minLength": 1
1091
+ }
1092
+ },
1093
+ "required": [
1094
+ "path",
1095
+ "size_bytes"
1096
+ ],
1097
+ "additionalProperties": false
1098
+ }
1099
+ }
1100
+ },
1101
+ "required": [
1102
+ "root",
1103
+ "files"
1104
+ ],
1105
+ "additionalProperties": false
1106
+ },
1107
+ "import_graph": {
1108
+ "type": "object",
1109
+ "properties": {
1110
+ "nodes": {
1111
+ "default": [],
1112
+ "type": "array",
1113
+ "items": {
1114
+ "type": "string",
1115
+ "minLength": 1
1116
+ }
1117
+ },
1118
+ "edges": {
1119
+ "default": [],
1120
+ "type": "array",
1121
+ "items": {
1122
+ "type": "object",
1123
+ "properties": {
1124
+ "from": {
1125
+ "type": "string",
1126
+ "minLength": 1
1127
+ },
1128
+ "to": {
1129
+ "type": "string",
1130
+ "minLength": 1
1131
+ },
1132
+ "kind": {
1133
+ "default": "relative",
1134
+ "type": "string",
1135
+ "enum": [
1136
+ "relative",
1137
+ "package",
1138
+ "alias"
1139
+ ]
1140
+ }
1141
+ },
1142
+ "required": [
1143
+ "from",
1144
+ "to",
1145
+ "kind"
1146
+ ],
1147
+ "additionalProperties": false
1148
+ }
1149
+ }
1150
+ },
1151
+ "required": [
1152
+ "nodes",
1153
+ "edges"
1154
+ ],
1155
+ "additionalProperties": false
1156
+ },
1157
+ "command_log_ref": {
1158
+ "type": "string",
1159
+ "minLength": 1
1160
+ },
1161
+ "exceptions": {
1162
+ "default": [],
1163
+ "type": "array",
1164
+ "items": {
1165
+ "type": "object",
1166
+ "properties": {
1167
+ "ref": {
1168
+ "type": "string",
1169
+ "minLength": 1
1170
+ },
1171
+ "reason": {
1172
+ "type": "string",
1173
+ "minLength": 1
1174
+ },
1175
+ "expires_at": {
1176
+ "type": "string",
1177
+ "format": "date-time",
1178
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
1179
+ },
1180
+ "compensating_control": {
1181
+ "type": "string",
1182
+ "minLength": 1
1183
+ }
1184
+ },
1185
+ "required": [
1186
+ "ref",
1187
+ "reason",
1188
+ "compensating_control"
1189
+ ],
1190
+ "additionalProperties": false
1191
+ }
1192
+ },
1193
+ "checksums": {
1194
+ "default": [],
1195
+ "type": "array",
1196
+ "items": {
1197
+ "type": "object",
1198
+ "properties": {
1199
+ "path": {
1200
+ "type": "string",
1201
+ "minLength": 1
1202
+ },
1203
+ "sha256": {
1204
+ "type": "string",
1205
+ "minLength": 1
1206
+ }
1207
+ },
1208
+ "required": [
1209
+ "path",
1210
+ "sha256"
1211
+ ],
1212
+ "additionalProperties": false
1213
+ }
1214
+ }
1215
+ },
1216
+ "required": [
1217
+ "schema_version",
1218
+ "run",
1219
+ "scenario",
1220
+ "filesystem_snapshot",
1221
+ "import_graph",
1222
+ "exceptions",
1223
+ "checksums"
1224
+ ],
1225
+ "additionalProperties": false,
1226
+ "title": "CodeSDD Quality Evidence Bundle",
1227
+ "description": "Machine-readable evidence bundle contract tying scenario, run, artifacts, checksums, findings, and exceptions together."
1228
+ }