sdd-agent-platform 0.4.2 → 0.5.1

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 (834) hide show
  1. package/README.md +34 -41
  2. package/node_modules/@sdd-agent-platform/core/dist/ai-tools.js +56 -73
  3. package/node_modules/@sdd-agent-platform/core/dist/ai-tools.js.map +1 -1
  4. package/node_modules/@sdd-agent-platform/core/dist/artifacts/ingestion.js +9 -64
  5. package/node_modules/@sdd-agent-platform/core/dist/artifacts/ingestion.js.map +1 -1
  6. package/node_modules/@sdd-agent-platform/core/dist/artifacts/sdd-evidence.js +1 -1
  7. package/node_modules/@sdd-agent-platform/core/dist/artifacts/sdd-evidence.js.map +1 -1
  8. package/node_modules/@sdd-agent-platform/core/dist/artifacts/sdd-result.js +17 -26
  9. package/node_modules/@sdd-agent-platform/core/dist/artifacts/sdd-result.js.map +1 -1
  10. package/node_modules/@sdd-agent-platform/core/dist/config/init-project.d.ts +8 -7
  11. package/node_modules/@sdd-agent-platform/core/dist/config/init-project.js +8 -12
  12. package/node_modules/@sdd-agent-platform/core/dist/config/init-project.js.map +1 -1
  13. package/node_modules/@sdd-agent-platform/core/dist/config/project-config.d.ts +1 -1
  14. package/node_modules/@sdd-agent-platform/core/dist/config/project-config.js +1 -1
  15. package/node_modules/@sdd-agent-platform/core/dist/config/project-config.js.map +1 -1
  16. package/node_modules/@sdd-agent-platform/core/dist/config/starter-documents.d.ts +3 -4
  17. package/node_modules/@sdd-agent-platform/core/dist/config/starter-documents.js +377 -411
  18. package/node_modules/@sdd-agent-platform/core/dist/config/starter-documents.js.map +1 -1
  19. package/node_modules/@sdd-agent-platform/core/dist/context/build-package.d.ts +1 -1
  20. package/node_modules/@sdd-agent-platform/core/dist/context/build-package.js +18 -25
  21. package/node_modules/@sdd-agent-platform/core/dist/context/build-package.js.map +1 -1
  22. package/node_modules/@sdd-agent-platform/core/dist/context/evidence-summary.js +8 -26
  23. package/node_modules/@sdd-agent-platform/core/dist/context/evidence-summary.js.map +1 -1
  24. package/node_modules/@sdd-agent-platform/core/dist/context/log-worker.js +2 -2
  25. package/node_modules/@sdd-agent-platform/core/dist/context/log-worker.js.map +1 -1
  26. package/node_modules/@sdd-agent-platform/core/dist/context-offload/contracts.d.ts +1 -1
  27. package/node_modules/@sdd-agent-platform/core/dist/contracts.d.ts +6 -1
  28. package/node_modules/@sdd-agent-platform/core/dist/contracts.js +5 -0
  29. package/node_modules/@sdd-agent-platform/core/dist/contracts.js.map +1 -1
  30. package/node_modules/@sdd-agent-platform/core/dist/delegation/model.d.ts +0 -3
  31. package/node_modules/@sdd-agent-platform/core/dist/delegation/validation.d.ts +0 -3
  32. package/node_modules/@sdd-agent-platform/core/dist/delegation/validation.js +4 -7
  33. package/node_modules/@sdd-agent-platform/core/dist/delegation/validation.js.map +1 -1
  34. package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/document-chain.js +3 -13
  35. package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/document-chain.js.map +1 -1
  36. package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/local-run-index.js +1 -9
  37. package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/local-run-index.js.map +1 -1
  38. package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/project.js +9 -9
  39. package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/project.js.map +1 -1
  40. package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/registries.js +1 -0
  41. package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/registries.js.map +1 -1
  42. package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/run-evidence.js +4 -4
  43. package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/run-evidence.js.map +1 -1
  44. package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/run-trust.js +24 -0
  45. package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/run-trust.js.map +1 -1
  46. package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/runtime-contracts.js +2 -2
  47. package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/runtime-contracts.js.map +1 -1
  48. package/node_modules/@sdd-agent-platform/core/dist/doctor/doctor.js +43 -180
  49. package/node_modules/@sdd-agent-platform/core/dist/doctor/doctor.js.map +1 -1
  50. package/node_modules/@sdd-agent-platform/core/dist/evidence/lookup.d.ts +1 -1
  51. package/node_modules/@sdd-agent-platform/core/dist/evidence/lookup.js +7 -14
  52. package/node_modules/@sdd-agent-platform/core/dist/evidence/lookup.js.map +1 -1
  53. package/node_modules/@sdd-agent-platform/core/dist/evidence-runtime/coordination.js +110 -0
  54. package/node_modules/@sdd-agent-platform/core/dist/evidence-runtime/coordination.js.map +1 -0
  55. package/node_modules/@sdd-agent-platform/core/dist/execution/background-executor.js +4 -4
  56. package/node_modules/@sdd-agent-platform/core/dist/execution/background-executor.js.map +1 -1
  57. package/node_modules/@sdd-agent-platform/core/dist/execution/foreground-subagents.js +3 -3
  58. package/node_modules/@sdd-agent-platform/core/dist/execution/foreground-subagents.js.map +1 -1
  59. package/node_modules/@sdd-agent-platform/core/dist/execution/host-invocation.js +85 -86
  60. package/node_modules/@sdd-agent-platform/core/dist/execution/host-invocation.js.map +1 -1
  61. package/node_modules/@sdd-agent-platform/core/dist/execution/resident-worker.js +2 -3
  62. package/node_modules/@sdd-agent-platform/core/dist/execution/resident-worker.js.map +1 -1
  63. package/node_modules/@sdd-agent-platform/core/dist/execution/stage-team-runtime.js +2 -2
  64. package/node_modules/@sdd-agent-platform/core/dist/execution/stage-team-runtime.js.map +1 -1
  65. package/node_modules/@sdd-agent-platform/core/dist/governance/policy.d.ts +1 -1
  66. package/node_modules/@sdd-agent-platform/core/dist/governance/policy.js +1 -1
  67. package/node_modules/@sdd-agent-platform/core/dist/governance/policy.js.map +1 -1
  68. package/node_modules/@sdd-agent-platform/core/dist/instructions.d.ts +1 -1
  69. package/node_modules/@sdd-agent-platform/core/dist/instructions.js +31 -67
  70. package/node_modules/@sdd-agent-platform/core/dist/instructions.js.map +1 -1
  71. package/node_modules/@sdd-agent-platform/core/dist/lifecycle/decision-gate.js +1 -1
  72. package/node_modules/@sdd-agent-platform/core/dist/lifecycle/decision-gate.js.map +1 -1
  73. package/node_modules/@sdd-agent-platform/core/dist/lifecycle/ship.d.ts +0 -1
  74. package/node_modules/@sdd-agent-platform/core/dist/lifecycle/ship.js +59 -85
  75. package/node_modules/@sdd-agent-platform/core/dist/lifecycle/ship.js.map +1 -1
  76. package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph/contracts.d.ts +159 -0
  77. package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph/contracts.js +7 -0
  78. package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph/contracts.js.map +1 -0
  79. package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph/kernel.d.ts +16 -0
  80. package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph/kernel.js +461 -0
  81. package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph/kernel.js.map +1 -0
  82. package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph.d.ts +2 -0
  83. package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph.js +3 -0
  84. package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph.js.map +1 -0
  85. package/node_modules/@sdd-agent-platform/core/dist/orchestration/contracts.d.ts +1 -1
  86. package/node_modules/@sdd-agent-platform/core/dist/orchestration/runtime.d.ts +2 -12
  87. package/node_modules/@sdd-agent-platform/core/dist/orchestration/runtime.js +32 -80
  88. package/node_modules/@sdd-agent-platform/core/dist/orchestration/runtime.js.map +1 -1
  89. package/node_modules/@sdd-agent-platform/core/dist/registries/agent-capability-catalog.d.ts +2 -5
  90. package/node_modules/@sdd-agent-platform/core/dist/registries/agent-capability-catalog.js +27 -69
  91. package/node_modules/@sdd-agent-platform/core/dist/registries/agent-capability-catalog.js.map +1 -1
  92. package/node_modules/@sdd-agent-platform/core/dist/registries/agent-registry.js +118 -34
  93. package/node_modules/@sdd-agent-platform/core/dist/registries/agent-registry.js.map +1 -1
  94. package/node_modules/@sdd-agent-platform/core/dist/registries/agent-runtime-static.js +1 -1
  95. package/node_modules/@sdd-agent-platform/core/dist/registries/agent-runtime-static.js.map +1 -1
  96. package/node_modules/@sdd-agent-platform/core/dist/registries/capability-sources.js +1 -1
  97. package/node_modules/@sdd-agent-platform/core/dist/registries/command-team-runtime.d.ts +1 -1
  98. package/node_modules/@sdd-agent-platform/core/dist/registries/command-team-runtime.js +8 -15
  99. package/node_modules/@sdd-agent-platform/core/dist/registries/command-team-runtime.js.map +1 -1
  100. package/node_modules/@sdd-agent-platform/core/dist/registries/eval-learning-context.js +4 -4
  101. package/node_modules/@sdd-agent-platform/core/dist/registries/eval-learning-context.js.map +1 -1
  102. package/node_modules/@sdd-agent-platform/core/dist/registries/plan-scout-domains.d.ts +13 -0
  103. package/node_modules/@sdd-agent-platform/core/dist/registries/plan-scout-domains.js +76 -0
  104. package/node_modules/@sdd-agent-platform/core/dist/registries/plan-scout-domains.js.map +1 -0
  105. package/node_modules/@sdd-agent-platform/core/dist/registries/query-status.js +2 -2
  106. package/node_modules/@sdd-agent-platform/core/dist/registries/query-status.js.map +1 -1
  107. package/node_modules/@sdd-agent-platform/core/dist/registries/skill-capabilities.js +7 -7
  108. package/node_modules/@sdd-agent-platform/core/dist/registries/skill-capabilities.js.map +1 -1
  109. package/node_modules/@sdd-agent-platform/core/dist/registries/tool-capabilities.js +4 -4
  110. package/node_modules/@sdd-agent-platform/core/dist/registries/tool-capabilities.js.map +1 -1
  111. package/node_modules/@sdd-agent-platform/core/dist/registries/tool-plugins.js +2 -2
  112. package/node_modules/@sdd-agent-platform/core/dist/registries/tool-plugins.js.map +1 -1
  113. package/node_modules/@sdd-agent-platform/core/dist/registries/worker-adapters.js +11 -11
  114. package/node_modules/@sdd-agent-platform/core/dist/registries/worker-adapters.js.map +1 -1
  115. package/node_modules/@sdd-agent-platform/core/dist/registries/workflow-gates.d.ts +1 -1
  116. package/node_modules/@sdd-agent-platform/core/dist/registries/workflow-gates.js +21 -21
  117. package/node_modules/@sdd-agent-platform/core/dist/registries/workflow-gates.js.map +1 -1
  118. package/node_modules/@sdd-agent-platform/core/dist/risk/consumer-diagnostics.js +2 -1
  119. package/node_modules/@sdd-agent-platform/core/dist/risk/consumer-diagnostics.js.map +1 -1
  120. package/node_modules/@sdd-agent-platform/core/dist/risk/kernel.js +6 -6
  121. package/node_modules/@sdd-agent-platform/core/dist/risk/kernel.js.map +1 -1
  122. package/node_modules/@sdd-agent-platform/core/dist/risk/legacy-adapters.js +11 -23
  123. package/node_modules/@sdd-agent-platform/core/dist/risk/legacy-adapters.js.map +1 -1
  124. package/node_modules/@sdd-agent-platform/core/dist/risk/workflow-gates.d.ts +2 -2
  125. package/node_modules/@sdd-agent-platform/core/dist/risk/workflow-gates.js +18 -20
  126. package/node_modules/@sdd-agent-platform/core/dist/risk/workflow-gates.js.map +1 -1
  127. package/node_modules/@sdd-agent-platform/core/dist/router/agent-runtime.d.ts +0 -2
  128. package/node_modules/@sdd-agent-platform/core/dist/router/route-projection.js +1 -1
  129. package/node_modules/@sdd-agent-platform/core/dist/router/route-projection.js.map +1 -1
  130. package/node_modules/@sdd-agent-platform/core/dist/router/routing.js +16 -48
  131. package/node_modules/@sdd-agent-platform/core/dist/router/routing.js.map +1 -1
  132. package/node_modules/@sdd-agent-platform/core/dist/router/runtime-import.js +11 -1
  133. package/node_modules/@sdd-agent-platform/core/dist/router/runtime-import.js.map +1 -1
  134. package/node_modules/@sdd-agent-platform/core/dist/router/runtime-validation.js +2 -2
  135. package/node_modules/@sdd-agent-platform/core/dist/router/runtime-validation.js.map +1 -1
  136. package/node_modules/@sdd-agent-platform/core/dist/router/stage-route-binding.d.ts +2 -2
  137. package/node_modules/@sdd-agent-platform/core/dist/router/stage-route-binding.js +20 -28
  138. package/node_modules/@sdd-agent-platform/core/dist/router/stage-route-binding.js.map +1 -1
  139. package/node_modules/@sdd-agent-platform/core/dist/router.d.ts +0 -1
  140. package/node_modules/@sdd-agent-platform/core/dist/router.js +0 -1
  141. package/node_modules/@sdd-agent-platform/core/dist/router.js.map +1 -1
  142. package/node_modules/@sdd-agent-platform/core/dist/run-state/artifacts.d.ts +6 -6
  143. package/node_modules/@sdd-agent-platform/core/dist/run-state/artifacts.js +13 -124
  144. package/node_modules/@sdd-agent-platform/core/dist/run-state/artifacts.js.map +1 -1
  145. package/node_modules/@sdd-agent-platform/core/dist/run-state/inspect-run.d.ts +2 -0
  146. package/node_modules/@sdd-agent-platform/core/dist/run-state/inspect-run.js +5 -7
  147. package/node_modules/@sdd-agent-platform/core/dist/run-state/inspect-run.js.map +1 -1
  148. package/node_modules/@sdd-agent-platform/core/dist/run-state/model.d.ts +28 -28
  149. package/node_modules/@sdd-agent-platform/core/dist/run-state/run-index.d.ts +3 -2
  150. package/node_modules/@sdd-agent-platform/core/dist/run-state/run-index.js +15 -66
  151. package/node_modules/@sdd-agent-platform/core/dist/run-state/run-index.js.map +1 -1
  152. package/node_modules/@sdd-agent-platform/core/dist/run-state/run-state.js +26 -36
  153. package/node_modules/@sdd-agent-platform/core/dist/run-state/run-state.js.map +1 -1
  154. package/node_modules/@sdd-agent-platform/core/dist/run-state/task-evidence.d.ts +0 -4
  155. package/node_modules/@sdd-agent-platform/core/dist/run-state/task-evidence.js +5 -51
  156. package/node_modules/@sdd-agent-platform/core/dist/run-state/task-evidence.js.map +1 -1
  157. package/node_modules/@sdd-agent-platform/core/dist/run-state.d.ts +0 -1
  158. package/node_modules/@sdd-agent-platform/core/dist/run-state.js +0 -1
  159. package/node_modules/@sdd-agent-platform/core/dist/run-state.js.map +1 -1
  160. package/node_modules/@sdd-agent-platform/core/dist/runtime-analysis/build.js +1 -1
  161. package/node_modules/@sdd-agent-platform/core/dist/runtime-analysis/build.js.map +1 -1
  162. package/node_modules/@sdd-agent-platform/core/dist/runtime-analysis/findings.js +7 -16
  163. package/node_modules/@sdd-agent-platform/core/dist/runtime-analysis/findings.js.map +1 -1
  164. package/node_modules/@sdd-agent-platform/core/dist/runtime-analysis/model.d.ts +1 -2
  165. package/node_modules/@sdd-agent-platform/core/dist/runtime-paths.d.ts +0 -1
  166. package/node_modules/@sdd-agent-platform/core/dist/runtime-paths.js +1 -4
  167. package/node_modules/@sdd-agent-platform/core/dist/runtime-paths.js.map +1 -1
  168. package/node_modules/@sdd-agent-platform/core/dist/runtime-projection-p0.d.ts +2 -2
  169. package/node_modules/@sdd-agent-platform/core/dist/runtime-projection-p0.js +11 -0
  170. package/node_modules/@sdd-agent-platform/core/dist/runtime-projection-p0.js.map +1 -1
  171. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/artifact-depth.d.ts +14 -0
  172. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/artifact-depth.js +179 -0
  173. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/artifact-depth.js.map +1 -0
  174. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/document-hashes.d.ts +0 -2
  175. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/document-hashes.js +10 -97
  176. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/document-hashes.js.map +1 -1
  177. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/run-binding.d.ts +1 -1
  178. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/run-binding.js +6 -8
  179. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/run-binding.js.map +1 -1
  180. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/task-parser.d.ts +5 -2
  181. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/task-parser.js +85 -68
  182. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/task-parser.js.map +1 -1
  183. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/task-rendering.js +2 -2
  184. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/task-rendering.js.map +1 -1
  185. package/node_modules/@sdd-agent-platform/core/dist/spec-entry.js +40 -0
  186. package/node_modules/@sdd-agent-platform/core/dist/spec-entry.js.map +1 -0
  187. package/node_modules/@sdd-agent-platform/core/dist/spec-manager-contracts.d.ts +12 -0
  188. package/node_modules/@sdd-agent-platform/core/dist/spec-manager-contracts.js +2 -0
  189. package/node_modules/@sdd-agent-platform/core/dist/spec-manager-contracts.js.map +1 -0
  190. package/node_modules/@sdd-agent-platform/core/dist/stage-artifacts.d.ts +2 -2
  191. package/node_modules/@sdd-agent-platform/core/dist/stage-artifacts.js +19 -26
  192. package/node_modules/@sdd-agent-platform/core/dist/stage-artifacts.js.map +1 -1
  193. package/node_modules/@sdd-agent-platform/core/dist/stage-collaboration-contracts.d.ts +1 -1
  194. package/node_modules/@sdd-agent-platform/core/dist/stage-collaboration-contracts.js +3 -6
  195. package/node_modules/@sdd-agent-platform/core/dist/stage-collaboration-contracts.js.map +1 -1
  196. package/node_modules/@sdd-agent-platform/core/dist/stage-collaboration.d.ts +111 -263
  197. package/node_modules/@sdd-agent-platform/core/dist/stage-collaboration.js +1272 -1124
  198. package/node_modules/@sdd-agent-platform/core/dist/stage-collaboration.js.map +1 -1
  199. package/node_modules/@sdd-agent-platform/core/dist/stage-runtime/runtime.js +5 -5
  200. package/node_modules/@sdd-agent-platform/core/dist/stage-runtime/runtime.js.map +1 -1
  201. package/node_modules/@sdd-agent-platform/core/dist/status/project-status.d.ts +1 -44
  202. package/node_modules/@sdd-agent-platform/core/dist/status/project-status.js +47 -170
  203. package/node_modules/@sdd-agent-platform/core/dist/status/project-status.js.map +1 -1
  204. package/node_modules/@sdd-agent-platform/core/dist/storage/runtime-store.js +73 -73
  205. package/node_modules/@sdd-agent-platform/core/dist/subagents/contracts.d.ts +1 -1
  206. package/node_modules/@sdd-agent-platform/core/dist/subagents/runtime.js +7 -7
  207. package/node_modules/@sdd-agent-platform/core/dist/subagents/runtime.js.map +1 -1
  208. package/node_modules/@sdd-agent-platform/core/dist/sync-back/apply.d.ts +1 -0
  209. package/node_modules/@sdd-agent-platform/core/dist/sync-back/apply.js +2 -0
  210. package/node_modules/@sdd-agent-platform/core/dist/sync-back/apply.js.map +1 -0
  211. package/node_modules/@sdd-agent-platform/core/dist/sync-back/inspect.d.ts +1 -0
  212. package/node_modules/@sdd-agent-platform/core/dist/sync-back/inspect.js +2 -0
  213. package/node_modules/@sdd-agent-platform/core/dist/sync-back/inspect.js.map +1 -0
  214. package/node_modules/@sdd-agent-platform/core/dist/sync-back.d.ts +1 -0
  215. package/node_modules/@sdd-agent-platform/core/dist/sync-back.js +2 -0
  216. package/node_modules/@sdd-agent-platform/core/dist/sync-back.js.map +1 -0
  217. package/node_modules/@sdd-agent-platform/core/dist/task-execution-contract.d.ts +167 -0
  218. package/node_modules/@sdd-agent-platform/core/dist/task-execution-contract.js +377 -0
  219. package/node_modules/@sdd-agent-platform/core/dist/task-execution-contract.js.map +1 -0
  220. package/node_modules/@sdd-agent-platform/core/dist/test-support/fixtures.js +329 -314
  221. package/node_modules/@sdd-agent-platform/core/dist/test-support/fixtures.js.map +1 -1
  222. package/node_modules/@sdd-agent-platform/core/dist/test-support/run-state.d.ts +1 -0
  223. package/node_modules/@sdd-agent-platform/core/dist/test-support/run-state.js +53 -7
  224. package/node_modules/@sdd-agent-platform/core/dist/test-support/run-state.js.map +1 -1
  225. package/node_modules/@sdd-agent-platform/core/dist/truth-reconciliation.js +9 -12
  226. package/node_modules/@sdd-agent-platform/core/dist/truth-reconciliation.js.map +1 -1
  227. package/node_modules/@sdd-agent-platform/core/dist/tsconfig.tsbuildinfo +1 -1
  228. package/node_modules/@sdd-agent-platform/core/dist/verification/goal-verify.d.ts +0 -48
  229. package/node_modules/@sdd-agent-platform/core/dist/verification/goal-verify.js +1 -520
  230. package/node_modules/@sdd-agent-platform/core/dist/verification/goal-verify.js.map +1 -1
  231. package/node_modules/@sdd-agent-platform/core/dist/verification/rendering.d.ts +5 -5
  232. package/node_modules/@sdd-agent-platform/core/dist/verification/rendering.js +14 -14
  233. package/node_modules/@sdd-agent-platform/core/dist/verification/rendering.js.map +1 -1
  234. package/node_modules/@sdd-agent-platform/core/dist/verification/single-task-loop.d.ts +1 -0
  235. package/node_modules/@sdd-agent-platform/core/dist/verification/single-task-loop.js +111 -159
  236. package/node_modules/@sdd-agent-platform/core/dist/verification/single-task-loop.js.map +1 -1
  237. package/node_modules/@sdd-agent-platform/core/dist/verification/task-evidence-judgment.d.ts +49 -0
  238. package/node_modules/@sdd-agent-platform/core/dist/verification/task-evidence-judgment.js +521 -0
  239. package/node_modules/@sdd-agent-platform/core/dist/verification/task-evidence-judgment.js.map +1 -0
  240. package/node_modules/@sdd-agent-platform/core/dist/verification/test-runtime.js +21 -21
  241. package/node_modules/@sdd-agent-platform/core/dist/verification/test-runtime.js.map +1 -1
  242. package/node_modules/@sdd-agent-platform/core/dist/verification/validation-wave.d.ts +0 -18
  243. package/node_modules/@sdd-agent-platform/core/dist/verification/validation-wave.js +5 -27
  244. package/node_modules/@sdd-agent-platform/core/dist/verification/validation-wave.js.map +1 -1
  245. package/node_modules/@sdd-agent-platform/core/dist/verification/verify-contract.js +45 -45
  246. package/node_modules/@sdd-agent-platform/core/dist/verification/verify-contract.js.map +1 -1
  247. package/node_modules/@sdd-agent-platform/core/dist/verification.d.ts +3 -3
  248. package/node_modules/@sdd-agent-platform/core/dist/verification.js +2 -2
  249. package/node_modules/@sdd-agent-platform/core/dist/verification.js.map +1 -1
  250. package/node_modules/@sdd-agent-platform/core/dist/work-units/contracts.d.ts +1 -1
  251. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/evidence-packet.js +9 -227
  252. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/evidence-packet.js.map +1 -1
  253. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/hard-checks.js +9 -50
  254. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/hard-checks.js.map +1 -1
  255. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/policy.js +4 -42
  256. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/policy.js.map +1 -1
  257. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/types.d.ts +2 -3
  258. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/affected-file-conflicts.d.ts +1 -0
  259. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/affected-file-conflicts.js +2 -1
  260. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/affected-file-conflicts.js.map +1 -1
  261. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/dependencies.js +1 -1
  262. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/latest-eligible-run.d.ts +1 -0
  263. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/latest-eligible-run.js +23 -63
  264. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/latest-eligible-run.js.map +1 -1
  265. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/resolve.d.ts +2 -2
  266. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/resolve.js +43 -65
  267. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/resolve.js.map +1 -1
  268. package/node_modules/@sdd-agent-platform/core/package.json +5 -2
  269. package/node_modules/@sdd-agent-platform/core/src/ai-tools.test.ts +238 -185
  270. package/node_modules/@sdd-agent-platform/core/src/ai-tools.ts +56 -73
  271. package/node_modules/@sdd-agent-platform/core/src/artifacts/ingestion.test.ts +189 -227
  272. package/node_modules/@sdd-agent-platform/core/src/artifacts/ingestion.ts +222 -278
  273. package/node_modules/@sdd-agent-platform/core/src/artifacts/sdd-evidence.test.ts +28 -28
  274. package/node_modules/@sdd-agent-platform/core/src/artifacts/sdd-evidence.ts +301 -301
  275. package/node_modules/@sdd-agent-platform/core/src/artifacts/sdd-result.test.ts +181 -181
  276. package/node_modules/@sdd-agent-platform/core/src/artifacts/sdd-result.ts +231 -240
  277. package/node_modules/@sdd-agent-platform/core/src/artifacts/templates.ts +99 -99
  278. package/node_modules/@sdd-agent-platform/core/src/artifacts.ts +4 -4
  279. package/node_modules/@sdd-agent-platform/core/src/coding-facts/contracts.ts +79 -79
  280. package/node_modules/@sdd-agent-platform/core/src/coding-facts.ts +1 -1
  281. package/node_modules/@sdd-agent-platform/core/src/config/init-project.test.ts +314 -318
  282. package/node_modules/@sdd-agent-platform/core/src/config/init-project.ts +128 -123
  283. package/node_modules/@sdd-agent-platform/core/src/config/project-config.ts +265 -265
  284. package/node_modules/@sdd-agent-platform/core/src/config/project-detection.ts +147 -147
  285. package/node_modules/@sdd-agent-platform/core/src/config/starter-documents.ts +400 -432
  286. package/node_modules/@sdd-agent-platform/core/src/context/budget.ts +30 -30
  287. package/node_modules/@sdd-agent-platform/core/src/context/build-package.ts +304 -311
  288. package/node_modules/@sdd-agent-platform/core/src/context/command-summary.ts +45 -45
  289. package/node_modules/@sdd-agent-platform/core/src/context/context-build.test.ts +188 -189
  290. package/node_modules/@sdd-agent-platform/core/src/context/evidence-summary.ts +144 -163
  291. package/node_modules/@sdd-agent-platform/core/src/context/log-worker.ts +48 -48
  292. package/node_modules/@sdd-agent-platform/core/src/context/source-refs.ts +41 -41
  293. package/node_modules/@sdd-agent-platform/core/src/context-offload/contracts.ts +47 -47
  294. package/node_modules/@sdd-agent-platform/core/src/context-offload/runtime.test.ts +71 -71
  295. package/node_modules/@sdd-agent-platform/core/src/context-offload/runtime.ts +178 -178
  296. package/node_modules/@sdd-agent-platform/core/src/context-offload.ts +2 -2
  297. package/node_modules/@sdd-agent-platform/core/src/context.ts +6 -6
  298. package/node_modules/@sdd-agent-platform/core/src/contracts/issues.ts +13 -13
  299. package/node_modules/@sdd-agent-platform/core/src/contracts.test.ts +9 -9
  300. package/node_modules/@sdd-agent-platform/core/src/contracts.ts +121 -116
  301. package/node_modules/@sdd-agent-platform/core/src/delegation/delegation.test.ts +183 -183
  302. package/node_modules/@sdd-agent-platform/core/src/delegation/model.ts +23 -26
  303. package/node_modules/@sdd-agent-platform/core/src/delegation/queue.ts +58 -58
  304. package/node_modules/@sdd-agent-platform/core/src/delegation/run-state.ts +14 -14
  305. package/node_modules/@sdd-agent-platform/core/src/delegation/state-machine.ts +90 -90
  306. package/node_modules/@sdd-agent-platform/core/src/delegation/validation.ts +124 -127
  307. package/node_modules/@sdd-agent-platform/core/src/delegation.ts +26 -26
  308. package/node_modules/@sdd-agent-platform/core/src/doctor/checks/ai-entries.ts +28 -28
  309. package/node_modules/@sdd-agent-platform/core/src/doctor/checks/document-chain.ts +104 -112
  310. package/node_modules/@sdd-agent-platform/core/src/doctor/checks/local-run-index.ts +19 -27
  311. package/node_modules/@sdd-agent-platform/core/src/doctor/checks/project.ts +84 -84
  312. package/node_modules/@sdd-agent-platform/core/src/doctor/checks/registries.ts +252 -251
  313. package/node_modules/@sdd-agent-platform/core/src/doctor/checks/run-evidence.ts +330 -330
  314. package/node_modules/@sdd-agent-platform/core/src/doctor/checks/run-records.ts +79 -79
  315. package/node_modules/@sdd-agent-platform/core/src/doctor/checks/run-trust.ts +128 -107
  316. package/node_modules/@sdd-agent-platform/core/src/doctor/checks/runtime-contracts.ts +300 -300
  317. package/node_modules/@sdd-agent-platform/core/src/doctor/doctor.test.ts +628 -755
  318. package/node_modules/@sdd-agent-platform/core/src/doctor/doctor.ts +301 -453
  319. package/node_modules/@sdd-agent-platform/core/src/doctor/model.ts +13 -13
  320. package/node_modules/@sdd-agent-platform/core/src/doctor/summary.ts +11 -11
  321. package/node_modules/@sdd-agent-platform/core/src/doctor.ts +2 -2
  322. package/node_modules/@sdd-agent-platform/core/src/evidence/lookup.ts +80 -88
  323. package/node_modules/@sdd-agent-platform/core/src/evidence-runtime/contracts.ts +48 -48
  324. package/node_modules/@sdd-agent-platform/core/src/evidence-runtime.ts +1 -1
  325. package/node_modules/@sdd-agent-platform/core/src/execution/agent-execution-records.ts +195 -195
  326. package/node_modules/@sdd-agent-platform/core/src/execution/background-executor.test.ts +187 -235
  327. package/node_modules/@sdd-agent-platform/core/src/execution/background-executor.ts +305 -305
  328. package/node_modules/@sdd-agent-platform/core/src/execution/foreground-subagents.test.ts +97 -106
  329. package/node_modules/@sdd-agent-platform/core/src/execution/foreground-subagents.ts +453 -453
  330. package/node_modules/@sdd-agent-platform/core/src/execution/host-invocation.ts +225 -226
  331. package/node_modules/@sdd-agent-platform/core/src/execution/resident-worker.test.ts +132 -143
  332. package/node_modules/@sdd-agent-platform/core/src/execution/resident-worker.ts +436 -437
  333. package/node_modules/@sdd-agent-platform/core/src/execution/stage-team-runtime.test.ts +102 -102
  334. package/node_modules/@sdd-agent-platform/core/src/execution/stage-team-runtime.ts +271 -271
  335. package/node_modules/@sdd-agent-platform/core/src/execution/wave-executor.test.ts +111 -121
  336. package/node_modules/@sdd-agent-platform/core/src/execution/wave-executor.ts +231 -231
  337. package/node_modules/@sdd-agent-platform/core/src/execution.ts +5 -5
  338. package/node_modules/@sdd-agent-platform/core/src/governance/policy.test.ts +57 -65
  339. package/node_modules/@sdd-agent-platform/core/src/governance/policy.ts +175 -175
  340. package/node_modules/@sdd-agent-platform/core/src/governance.ts +1 -1
  341. package/node_modules/@sdd-agent-platform/core/src/instructions.test.ts +80 -64
  342. package/node_modules/@sdd-agent-platform/core/src/instructions.ts +32 -68
  343. package/node_modules/@sdd-agent-platform/core/src/lifecycle/decision-gate.test.ts +174 -174
  344. package/node_modules/@sdd-agent-platform/core/src/lifecycle/decision-gate.ts +373 -373
  345. package/node_modules/@sdd-agent-platform/core/src/lifecycle/rendering.ts +29 -29
  346. package/node_modules/@sdd-agent-platform/core/src/lifecycle/risk-signals.ts +146 -146
  347. package/node_modules/@sdd-agent-platform/core/src/lifecycle/ship.test.ts +47 -47
  348. package/node_modules/@sdd-agent-platform/core/src/lifecycle/ship.ts +255 -280
  349. package/node_modules/@sdd-agent-platform/core/src/lifecycle-graph/contracts.ts +179 -0
  350. package/node_modules/@sdd-agent-platform/core/src/lifecycle-graph/kernel.ts +522 -0
  351. package/node_modules/@sdd-agent-platform/core/src/lifecycle-graph.ts +2 -0
  352. package/node_modules/@sdd-agent-platform/core/src/lifecycle.ts +4 -4
  353. package/node_modules/@sdd-agent-platform/core/src/orchestration/contracts.ts +50 -50
  354. package/node_modules/@sdd-agent-platform/core/src/orchestration/index.ts +2 -2
  355. package/node_modules/@sdd-agent-platform/core/src/orchestration/runtime.ts +331 -394
  356. package/node_modules/@sdd-agent-platform/core/src/path-safety.test.ts +22 -22
  357. package/node_modules/@sdd-agent-platform/core/src/phase8-contracts.test.ts +243 -242
  358. package/node_modules/@sdd-agent-platform/core/src/phase8-projection-compat.test.ts +152 -153
  359. package/node_modules/@sdd-agent-platform/core/src/phase8-risk-kernel.test.ts +277 -277
  360. package/node_modules/@sdd-agent-platform/core/src/phase9-lifecycle-graph.test.ts +103 -0
  361. package/node_modules/@sdd-agent-platform/core/src/planning/task-graph.test.ts +88 -88
  362. package/node_modules/@sdd-agent-platform/core/src/planning/task-graph.ts +222 -222
  363. package/node_modules/@sdd-agent-platform/core/src/planning/wave-plan.test.ts +79 -79
  364. package/node_modules/@sdd-agent-platform/core/src/planning/wave-plan.ts +160 -160
  365. package/node_modules/@sdd-agent-platform/core/src/planning.ts +2 -2
  366. package/node_modules/@sdd-agent-platform/core/src/registries/agent-capability-catalog.ts +426 -473
  367. package/node_modules/@sdd-agent-platform/core/src/registries/agent-registry.ts +230 -146
  368. package/node_modules/@sdd-agent-platform/core/src/registries/agent-runtime-static.ts +142 -142
  369. package/node_modules/@sdd-agent-platform/core/src/registries/capability-sources.ts +253 -253
  370. package/node_modules/@sdd-agent-platform/core/src/registries/command-team-runtime.ts +302 -309
  371. package/node_modules/@sdd-agent-platform/core/src/registries/eval-learning-context.ts +246 -246
  372. package/node_modules/@sdd-agent-platform/core/src/registries/plan-scout-domains.ts +89 -0
  373. package/node_modules/@sdd-agent-platform/core/src/registries/query-status.ts +119 -119
  374. package/node_modules/@sdd-agent-platform/core/src/registries/registries.test.ts +454 -445
  375. package/node_modules/@sdd-agent-platform/core/src/registries/skill-capabilities.ts +37 -37
  376. package/node_modules/@sdd-agent-platform/core/src/registries/tool-capabilities.ts +135 -135
  377. package/node_modules/@sdd-agent-platform/core/src/registries/tool-plugins.ts +132 -132
  378. package/node_modules/@sdd-agent-platform/core/src/registries/worker-adapters.ts +144 -144
  379. package/node_modules/@sdd-agent-platform/core/src/registries/workflow-gates.ts +111 -111
  380. package/node_modules/@sdd-agent-platform/core/src/registries.ts +42 -42
  381. package/node_modules/@sdd-agent-platform/core/src/risk/consumer-diagnostics.ts +98 -97
  382. package/node_modules/@sdd-agent-platform/core/src/risk/contracts.ts +63 -63
  383. package/node_modules/@sdd-agent-platform/core/src/risk/kernel.ts +233 -233
  384. package/node_modules/@sdd-agent-platform/core/src/risk/legacy-adapters.ts +251 -263
  385. package/node_modules/@sdd-agent-platform/core/src/risk/workflow-gates.ts +203 -205
  386. package/node_modules/@sdd-agent-platform/core/src/risk.ts +5 -5
  387. package/node_modules/@sdd-agent-platform/core/src/router/agent-runtime-config.ts +327 -327
  388. package/node_modules/@sdd-agent-platform/core/src/router/agent-runtime.ts +388 -390
  389. package/node_modules/@sdd-agent-platform/core/src/router/profile-resolution.ts +154 -154
  390. package/node_modules/@sdd-agent-platform/core/src/router/risk-policy.ts +33 -33
  391. package/node_modules/@sdd-agent-platform/core/src/router/route-cache.ts +100 -100
  392. package/node_modules/@sdd-agent-platform/core/src/router/route-projection.ts +356 -356
  393. package/node_modules/@sdd-agent-platform/core/src/router/route-sdd-task.test.ts +428 -665
  394. package/node_modules/@sdd-agent-platform/core/src/router/route-sdd-task.ts +2 -2
  395. package/node_modules/@sdd-agent-platform/core/src/router/routing-rules.ts +73 -73
  396. package/node_modules/@sdd-agent-platform/core/src/router/routing.ts +189 -223
  397. package/node_modules/@sdd-agent-platform/core/src/router/runtime-import.ts +464 -453
  398. package/node_modules/@sdd-agent-platform/core/src/router/runtime-inspection.ts +124 -124
  399. package/node_modules/@sdd-agent-platform/core/src/router/runtime-registry.ts +123 -123
  400. package/node_modules/@sdd-agent-platform/core/src/router/runtime-validation.ts +277 -277
  401. package/node_modules/@sdd-agent-platform/core/src/router/stage-route-binding.ts +273 -279
  402. package/node_modules/@sdd-agent-platform/core/src/router/team-mode.ts +170 -170
  403. package/node_modules/@sdd-agent-platform/core/src/router.ts +5 -6
  404. package/node_modules/@sdd-agent-platform/core/src/run-state/artifacts.ts +126 -240
  405. package/node_modules/@sdd-agent-platform/core/src/run-state/events.ts +27 -27
  406. package/node_modules/@sdd-agent-platform/core/src/run-state/inspect-run.ts +172 -172
  407. package/node_modules/@sdd-agent-platform/core/src/run-state/invocation-ledger.ts +109 -109
  408. package/node_modules/@sdd-agent-platform/core/src/run-state/model.ts +252 -253
  409. package/node_modules/@sdd-agent-platform/core/src/run-state/run-index.test.ts +80 -52
  410. package/node_modules/@sdd-agent-platform/core/src/run-state/run-index.ts +301 -352
  411. package/node_modules/@sdd-agent-platform/core/src/run-state/run-state.test.ts +70 -118
  412. package/node_modules/@sdd-agent-platform/core/src/run-state/run-state.ts +406 -416
  413. package/node_modules/@sdd-agent-platform/core/src/run-state/task-evidence.ts +198 -252
  414. package/node_modules/@sdd-agent-platform/core/src/run-state/timing.ts +146 -146
  415. package/node_modules/@sdd-agent-platform/core/src/run-state.ts +8 -9
  416. package/node_modules/@sdd-agent-platform/core/src/runtime-analysis/build.ts +60 -60
  417. package/node_modules/@sdd-agent-platform/core/src/runtime-analysis/findings.ts +249 -256
  418. package/node_modules/@sdd-agent-platform/core/src/runtime-analysis/model.ts +139 -140
  419. package/node_modules/@sdd-agent-platform/core/src/runtime-analysis.test.ts +65 -66
  420. package/node_modules/@sdd-agent-platform/core/src/runtime-analysis.ts +2 -2
  421. package/node_modules/@sdd-agent-platform/core/src/runtime-paths.ts +249 -253
  422. package/node_modules/@sdd-agent-platform/core/src/runtime-projection-p0.test.ts +101 -96
  423. package/node_modules/@sdd-agent-platform/core/src/runtime-projection-p0.ts +314 -292
  424. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/artifact-depth.test.ts +380 -0
  425. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/artifact-depth.ts +207 -0
  426. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/context.ts +111 -111
  427. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/document-hashes.ts +207 -306
  428. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/run-binding.ts +95 -97
  429. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/task-inspection.ts +39 -39
  430. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/task-parser.test.ts +467 -523
  431. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/task-parser.ts +738 -709
  432. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/task-rendering.ts +81 -81
  433. package/node_modules/@sdd-agent-platform/core/src/sdd-docs.ts +5 -5
  434. package/node_modules/@sdd-agent-platform/core/src/spec-manager-contracts.ts +13 -0
  435. package/node_modules/@sdd-agent-platform/core/src/stage-artifacts.ts +435 -450
  436. package/node_modules/@sdd-agent-platform/core/src/stage-collaboration-contracts.ts +316 -322
  437. package/node_modules/@sdd-agent-platform/core/src/stage-collaboration.test.ts +2963 -2902
  438. package/node_modules/@sdd-agent-platform/core/src/stage-collaboration.ts +5856 -5831
  439. package/node_modules/@sdd-agent-platform/core/src/stage-runtime/contracts.ts +40 -40
  440. package/node_modules/@sdd-agent-platform/core/src/stage-runtime/runtime.test.ts +209 -209
  441. package/node_modules/@sdd-agent-platform/core/src/stage-runtime/runtime.ts +360 -360
  442. package/node_modules/@sdd-agent-platform/core/src/stage-runtime.ts +2 -2
  443. package/node_modules/@sdd-agent-platform/core/src/status/project-status.test.ts +288 -511
  444. package/node_modules/@sdd-agent-platform/core/src/status/project-status.ts +651 -851
  445. package/node_modules/@sdd-agent-platform/core/src/status.ts +2 -2
  446. package/node_modules/@sdd-agent-platform/core/src/storage/json-io.ts +10 -10
  447. package/node_modules/@sdd-agent-platform/core/src/storage/runtime-store.test.ts +489 -681
  448. package/node_modules/@sdd-agent-platform/core/src/storage/runtime-store.ts +1981 -1981
  449. package/node_modules/@sdd-agent-platform/core/src/subagents/contracts.ts +45 -45
  450. package/node_modules/@sdd-agent-platform/core/src/subagents/runtime.test.ts +232 -232
  451. package/node_modules/@sdd-agent-platform/core/src/subagents/runtime.ts +307 -307
  452. package/node_modules/@sdd-agent-platform/core/src/subagents.ts +2 -2
  453. package/node_modules/@sdd-agent-platform/core/src/task-execution-contract.test.ts +141 -0
  454. package/node_modules/@sdd-agent-platform/core/src/task-execution-contract.ts +566 -0
  455. package/node_modules/@sdd-agent-platform/core/src/task-risk-profile.ts +193 -193
  456. package/node_modules/@sdd-agent-platform/core/src/test-support/fixtures.ts +413 -398
  457. package/node_modules/@sdd-agent-platform/core/src/test-support/run-state.ts +102 -56
  458. package/node_modules/@sdd-agent-platform/core/src/test-support.ts +2 -2
  459. package/node_modules/@sdd-agent-platform/core/src/truth-reconciliation.test.ts +72 -72
  460. package/node_modules/@sdd-agent-platform/core/src/truth-reconciliation.ts +9 -12
  461. package/node_modules/@sdd-agent-platform/core/src/verification/rendering.ts +137 -137
  462. package/node_modules/@sdd-agent-platform/core/src/verification/review-gate.test.ts +77 -84
  463. package/node_modules/@sdd-agent-platform/core/src/verification/review-gate.ts +77 -77
  464. package/node_modules/@sdd-agent-platform/core/src/verification/single-task-loop.ts +455 -506
  465. package/node_modules/@sdd-agent-platform/core/src/verification/{goal-verify.test.ts → task-evidence-judgment.test.ts} +261 -261
  466. package/node_modules/@sdd-agent-platform/core/src/verification/{goal-verify.ts → task-evidence-judgment.ts} +619 -619
  467. package/node_modules/@sdd-agent-platform/core/src/verification/test-runtime.ts +1190 -1190
  468. package/node_modules/@sdd-agent-platform/core/src/verification/validation-cache.ts +106 -106
  469. package/node_modules/@sdd-agent-platform/core/src/verification/validation-wave.ts +513 -556
  470. package/node_modules/@sdd-agent-platform/core/src/verification/verify-contract.ts +334 -334
  471. package/node_modules/@sdd-agent-platform/core/src/verification.ts +8 -8
  472. package/node_modules/@sdd-agent-platform/core/src/work-units/contracts.ts +26 -26
  473. package/node_modules/@sdd-agent-platform/core/src/work-units/runtime.test.ts +88 -88
  474. package/node_modules/@sdd-agent-platform/core/src/work-units/runtime.ts +112 -112
  475. package/node_modules/@sdd-agent-platform/core/src/work-units.ts +2 -2
  476. package/node_modules/@sdd-agent-platform/core/src/workflow-gate/evidence-packet.ts +190 -425
  477. package/node_modules/@sdd-agent-platform/core/src/workflow-gate/hard-checks.test.ts +169 -507
  478. package/node_modules/@sdd-agent-platform/core/src/workflow-gate/hard-checks.ts +136 -182
  479. package/node_modules/@sdd-agent-platform/core/src/workflow-gate/policy.test.ts +135 -174
  480. package/node_modules/@sdd-agent-platform/core/src/workflow-gate/policy.ts +153 -194
  481. package/node_modules/@sdd-agent-platform/core/src/workflow-gate/types.ts +111 -115
  482. package/node_modules/@sdd-agent-platform/core/src/workflow-state/affected-file-conflicts.ts +95 -93
  483. package/node_modules/@sdd-agent-platform/core/src/workflow-state/dependencies.test.ts +32 -32
  484. package/node_modules/@sdd-agent-platform/core/src/workflow-state/dependencies.ts +114 -114
  485. package/node_modules/@sdd-agent-platform/core/src/workflow-state/latest-eligible-run.ts +184 -224
  486. package/node_modules/@sdd-agent-platform/core/src/workflow-state/migration-recovery.ts +158 -158
  487. package/node_modules/@sdd-agent-platform/core/src/workflow-state/repair-contract.ts +77 -77
  488. package/node_modules/@sdd-agent-platform/core/src/workflow-state/resolve-task-run.ts +114 -114
  489. package/node_modules/@sdd-agent-platform/core/src/workflow-state/resolve.test.ts +969 -956
  490. package/node_modules/@sdd-agent-platform/core/src/workflow-state/resolve.ts +967 -992
  491. package/node_modules/@sdd-agent-platform/core/src/workflow-state/runtime-projections.ts +712 -712
  492. package/node_modules/@sdd-agent-platform/core/src/workflow-state.ts +2 -2
  493. package/node_modules/@sdd-agent-platform/core/src/worktree/isolation.ts +130 -130
  494. package/node_modules/@sdd-agent-platform/core/src/worktree/lifecycle.ts +269 -269
  495. package/node_modules/@sdd-agent-platform/core/src/worktree/worktree.test.ts +150 -150
  496. package/node_modules/@sdd-agent-platform/core/src/worktree.ts +2 -2
  497. package/node_modules/@sdd-agent-platform/core/tsconfig.json +15 -15
  498. package/package.json +2 -2
  499. package/packages/cli/dist/args.js +2 -2
  500. package/packages/cli/dist/args.js.map +1 -1
  501. package/packages/cli/dist/commands/ai-tools.js +2 -13
  502. package/packages/cli/dist/commands/ai-tools.js.map +1 -1
  503. package/packages/cli/dist/commands/{verifies.d.ts → artifact.d.ts} +1 -1
  504. package/packages/cli/dist/commands/artifact.js +168 -0
  505. package/packages/cli/dist/commands/artifact.js.map +1 -0
  506. package/packages/cli/dist/commands/context.js +1 -1
  507. package/packages/cli/dist/commands/context.js.map +1 -1
  508. package/packages/cli/dist/commands/evidence.js.map +1 -0
  509. package/packages/cli/dist/commands/execution.js +127 -49
  510. package/packages/cli/dist/commands/execution.js.map +1 -1
  511. package/packages/cli/dist/commands/governance.js +1 -1
  512. package/packages/cli/dist/commands/governance.js.map +1 -1
  513. package/packages/cli/dist/commands/init.js +1 -6
  514. package/packages/cli/dist/commands/init.js.map +1 -1
  515. package/packages/cli/dist/commands/instructions.d.ts +1 -1
  516. package/packages/cli/dist/commands/instructions.js +15 -1
  517. package/packages/cli/dist/commands/instructions.js.map +1 -1
  518. package/packages/cli/dist/commands/registry/runtime.js +63 -40
  519. package/packages/cli/dist/commands/registry/runtime.js.map +1 -1
  520. package/packages/cli/dist/commands/run.js +13 -52
  521. package/packages/cli/dist/commands/run.js.map +1 -1
  522. package/packages/cli/dist/commands/stage-close.d.ts +60 -0
  523. package/packages/cli/dist/commands/stage-close.js +270 -41
  524. package/packages/cli/dist/commands/stage-close.js.map +1 -1
  525. package/packages/cli/dist/commands/status.js +9 -68
  526. package/packages/cli/dist/commands/status.js.map +1 -1
  527. package/packages/cli/dist/commands/tasks.js.map +1 -1
  528. package/packages/cli/dist/dispatch.js +6 -26
  529. package/packages/cli/dist/dispatch.js.map +1 -1
  530. package/packages/cli/dist/help.js +153 -159
  531. package/packages/cli/dist/help.js.map +1 -1
  532. package/packages/cli/dist/renderers/artifacts.d.ts +5 -0
  533. package/packages/cli/dist/renderers/artifacts.js +43 -0
  534. package/packages/cli/dist/renderers/artifacts.js.map +1 -0
  535. package/packages/cli/dist/renderers/doctor.js +1 -2
  536. package/packages/cli/dist/renderers/doctor.js.map +1 -1
  537. package/packages/cli/dist/renderers/execution.js +1 -1
  538. package/packages/cli/dist/renderers/execution.js.map +1 -1
  539. package/packages/cli/dist/renderers/json.d.ts +0 -1
  540. package/packages/cli/dist/renderers/json.js +0 -3
  541. package/packages/cli/dist/renderers/json.js.map +1 -1
  542. package/packages/cli/dist/renderers/registry-runtime.d.ts +1 -2
  543. package/packages/cli/dist/renderers/registry-runtime.js +0 -20
  544. package/packages/cli/dist/renderers/registry-runtime.js.map +1 -1
  545. package/packages/cli/dist/renderers/router.js +1 -1
  546. package/packages/cli/dist/renderers/router.js.map +1 -1
  547. package/packages/cli/dist/renderers/workflow.d.ts +53 -0
  548. package/packages/cli/dist/renderers/workflow.js +93 -34
  549. package/packages/cli/dist/renderers/workflow.js.map +1 -1
  550. package/packages/cli/dist/tsconfig.tsbuildinfo +1 -1
  551. package/packages/cli/package.json +2 -2
  552. package/packages/core/dist/ai-tools.js +56 -73
  553. package/packages/core/dist/ai-tools.js.map +1 -1
  554. package/packages/core/dist/artifacts/ingestion.js +9 -64
  555. package/packages/core/dist/artifacts/ingestion.js.map +1 -1
  556. package/packages/core/dist/artifacts/sdd-evidence.js +1 -1
  557. package/packages/core/dist/artifacts/sdd-evidence.js.map +1 -1
  558. package/packages/core/dist/artifacts/sdd-result.js +17 -26
  559. package/packages/core/dist/artifacts/sdd-result.js.map +1 -1
  560. package/packages/core/dist/config/init-project.d.ts +8 -7
  561. package/packages/core/dist/config/init-project.js +8 -12
  562. package/packages/core/dist/config/init-project.js.map +1 -1
  563. package/packages/core/dist/config/project-config.d.ts +1 -1
  564. package/packages/core/dist/config/project-config.js +1 -1
  565. package/packages/core/dist/config/project-config.js.map +1 -1
  566. package/packages/core/dist/config/starter-documents.d.ts +3 -4
  567. package/packages/core/dist/config/starter-documents.js +377 -411
  568. package/packages/core/dist/config/starter-documents.js.map +1 -1
  569. package/packages/core/dist/context/build-package.d.ts +1 -1
  570. package/packages/core/dist/context/build-package.js +18 -25
  571. package/packages/core/dist/context/build-package.js.map +1 -1
  572. package/packages/core/dist/context/evidence-summary.js +8 -26
  573. package/packages/core/dist/context/evidence-summary.js.map +1 -1
  574. package/packages/core/dist/context/log-worker.js +2 -2
  575. package/packages/core/dist/context/log-worker.js.map +1 -1
  576. package/packages/core/dist/context-offload/contracts.d.ts +1 -1
  577. package/packages/core/dist/contracts.d.ts +6 -1
  578. package/packages/core/dist/contracts.js +5 -0
  579. package/packages/core/dist/contracts.js.map +1 -1
  580. package/packages/core/dist/delegation/model.d.ts +0 -3
  581. package/packages/core/dist/delegation/validation.d.ts +0 -3
  582. package/packages/core/dist/delegation/validation.js +4 -7
  583. package/packages/core/dist/delegation/validation.js.map +1 -1
  584. package/packages/core/dist/doctor/checks/document-chain.js +3 -13
  585. package/packages/core/dist/doctor/checks/document-chain.js.map +1 -1
  586. package/packages/core/dist/doctor/checks/local-run-index.js +1 -9
  587. package/packages/core/dist/doctor/checks/local-run-index.js.map +1 -1
  588. package/packages/core/dist/doctor/checks/project.js +9 -9
  589. package/packages/core/dist/doctor/checks/project.js.map +1 -1
  590. package/packages/core/dist/doctor/checks/registries.js +1 -0
  591. package/packages/core/dist/doctor/checks/registries.js.map +1 -1
  592. package/packages/core/dist/doctor/checks/run-evidence.js +4 -4
  593. package/packages/core/dist/doctor/checks/run-evidence.js.map +1 -1
  594. package/packages/core/dist/doctor/checks/run-trust.js +24 -0
  595. package/packages/core/dist/doctor/checks/run-trust.js.map +1 -1
  596. package/packages/core/dist/doctor/checks/runtime-contracts.js +2 -2
  597. package/packages/core/dist/doctor/checks/runtime-contracts.js.map +1 -1
  598. package/packages/core/dist/doctor/doctor.js +43 -180
  599. package/packages/core/dist/doctor/doctor.js.map +1 -1
  600. package/packages/core/dist/evidence/lookup.d.ts +1 -1
  601. package/packages/core/dist/evidence/lookup.js +7 -14
  602. package/packages/core/dist/evidence/lookup.js.map +1 -1
  603. package/packages/core/dist/evidence-runtime/coordination.js +110 -0
  604. package/packages/core/dist/evidence-runtime/coordination.js.map +1 -0
  605. package/packages/core/dist/execution/background-executor.js +4 -4
  606. package/packages/core/dist/execution/background-executor.js.map +1 -1
  607. package/packages/core/dist/execution/foreground-subagents.js +3 -3
  608. package/packages/core/dist/execution/foreground-subagents.js.map +1 -1
  609. package/packages/core/dist/execution/host-invocation.js +85 -86
  610. package/packages/core/dist/execution/host-invocation.js.map +1 -1
  611. package/packages/core/dist/execution/resident-worker.js +2 -3
  612. package/packages/core/dist/execution/resident-worker.js.map +1 -1
  613. package/packages/core/dist/execution/stage-team-runtime.js +2 -2
  614. package/packages/core/dist/execution/stage-team-runtime.js.map +1 -1
  615. package/packages/core/dist/governance/policy.d.ts +1 -1
  616. package/packages/core/dist/governance/policy.js +1 -1
  617. package/packages/core/dist/governance/policy.js.map +1 -1
  618. package/packages/core/dist/instructions.d.ts +1 -1
  619. package/packages/core/dist/instructions.js +31 -67
  620. package/packages/core/dist/instructions.js.map +1 -1
  621. package/packages/core/dist/lifecycle/decision-gate.js +1 -1
  622. package/packages/core/dist/lifecycle/decision-gate.js.map +1 -1
  623. package/packages/core/dist/lifecycle/ship.d.ts +0 -1
  624. package/packages/core/dist/lifecycle/ship.js +59 -85
  625. package/packages/core/dist/lifecycle/ship.js.map +1 -1
  626. package/packages/core/dist/lifecycle-graph/contracts.d.ts +159 -0
  627. package/packages/core/dist/lifecycle-graph/contracts.js +7 -0
  628. package/packages/core/dist/lifecycle-graph/contracts.js.map +1 -0
  629. package/packages/core/dist/lifecycle-graph/kernel.d.ts +16 -0
  630. package/packages/core/dist/lifecycle-graph/kernel.js +461 -0
  631. package/packages/core/dist/lifecycle-graph/kernel.js.map +1 -0
  632. package/packages/core/dist/lifecycle-graph.d.ts +2 -0
  633. package/packages/core/dist/lifecycle-graph.js +3 -0
  634. package/packages/core/dist/lifecycle-graph.js.map +1 -0
  635. package/packages/core/dist/orchestration/contracts.d.ts +1 -1
  636. package/packages/core/dist/orchestration/runtime.d.ts +2 -12
  637. package/packages/core/dist/orchestration/runtime.js +32 -80
  638. package/packages/core/dist/orchestration/runtime.js.map +1 -1
  639. package/packages/core/dist/registries/agent-capability-catalog.d.ts +2 -5
  640. package/packages/core/dist/registries/agent-capability-catalog.js +27 -69
  641. package/packages/core/dist/registries/agent-capability-catalog.js.map +1 -1
  642. package/packages/core/dist/registries/agent-registry.js +118 -34
  643. package/packages/core/dist/registries/agent-registry.js.map +1 -1
  644. package/packages/core/dist/registries/agent-runtime-static.js +1 -1
  645. package/packages/core/dist/registries/agent-runtime-static.js.map +1 -1
  646. package/packages/core/dist/registries/capability-sources.js +1 -1
  647. package/packages/core/dist/registries/command-team-runtime.d.ts +1 -1
  648. package/packages/core/dist/registries/command-team-runtime.js +8 -15
  649. package/packages/core/dist/registries/command-team-runtime.js.map +1 -1
  650. package/packages/core/dist/registries/eval-learning-context.js +4 -4
  651. package/packages/core/dist/registries/eval-learning-context.js.map +1 -1
  652. package/packages/core/dist/registries/plan-scout-domains.d.ts +13 -0
  653. package/packages/core/dist/registries/plan-scout-domains.js +76 -0
  654. package/packages/core/dist/registries/plan-scout-domains.js.map +1 -0
  655. package/packages/core/dist/registries/query-status.js +2 -2
  656. package/packages/core/dist/registries/query-status.js.map +1 -1
  657. package/packages/core/dist/registries/skill-capabilities.js +7 -7
  658. package/packages/core/dist/registries/skill-capabilities.js.map +1 -1
  659. package/packages/core/dist/registries/tool-capabilities.js +4 -4
  660. package/packages/core/dist/registries/tool-capabilities.js.map +1 -1
  661. package/packages/core/dist/registries/tool-plugins.js +2 -2
  662. package/packages/core/dist/registries/tool-plugins.js.map +1 -1
  663. package/packages/core/dist/registries/worker-adapters.js +11 -11
  664. package/packages/core/dist/registries/worker-adapters.js.map +1 -1
  665. package/packages/core/dist/registries/workflow-gates.d.ts +1 -1
  666. package/packages/core/dist/registries/workflow-gates.js +21 -21
  667. package/packages/core/dist/registries/workflow-gates.js.map +1 -1
  668. package/packages/core/dist/risk/consumer-diagnostics.js +2 -1
  669. package/packages/core/dist/risk/consumer-diagnostics.js.map +1 -1
  670. package/packages/core/dist/risk/kernel.js +6 -6
  671. package/packages/core/dist/risk/kernel.js.map +1 -1
  672. package/packages/core/dist/risk/legacy-adapters.js +11 -23
  673. package/packages/core/dist/risk/legacy-adapters.js.map +1 -1
  674. package/packages/core/dist/risk/workflow-gates.d.ts +2 -2
  675. package/packages/core/dist/risk/workflow-gates.js +18 -20
  676. package/packages/core/dist/risk/workflow-gates.js.map +1 -1
  677. package/packages/core/dist/router/agent-runtime.d.ts +0 -2
  678. package/packages/core/dist/router/route-projection.js +1 -1
  679. package/packages/core/dist/router/route-projection.js.map +1 -1
  680. package/packages/core/dist/router/routing.js +16 -48
  681. package/packages/core/dist/router/routing.js.map +1 -1
  682. package/packages/core/dist/router/runtime-import.js +11 -1
  683. package/packages/core/dist/router/runtime-import.js.map +1 -1
  684. package/packages/core/dist/router/runtime-validation.js +2 -2
  685. package/packages/core/dist/router/runtime-validation.js.map +1 -1
  686. package/packages/core/dist/router/stage-route-binding.d.ts +2 -2
  687. package/packages/core/dist/router/stage-route-binding.js +20 -28
  688. package/packages/core/dist/router/stage-route-binding.js.map +1 -1
  689. package/packages/core/dist/router.d.ts +0 -1
  690. package/packages/core/dist/router.js +0 -1
  691. package/packages/core/dist/router.js.map +1 -1
  692. package/packages/core/dist/run-state/artifacts.d.ts +6 -6
  693. package/packages/core/dist/run-state/artifacts.js +13 -124
  694. package/packages/core/dist/run-state/artifacts.js.map +1 -1
  695. package/packages/core/dist/run-state/inspect-run.d.ts +2 -0
  696. package/packages/core/dist/run-state/inspect-run.js +5 -7
  697. package/packages/core/dist/run-state/inspect-run.js.map +1 -1
  698. package/packages/core/dist/run-state/model.d.ts +28 -28
  699. package/packages/core/dist/run-state/run-index.d.ts +3 -2
  700. package/packages/core/dist/run-state/run-index.js +15 -66
  701. package/packages/core/dist/run-state/run-index.js.map +1 -1
  702. package/packages/core/dist/run-state/run-state.js +26 -36
  703. package/packages/core/dist/run-state/run-state.js.map +1 -1
  704. package/packages/core/dist/run-state/task-evidence.d.ts +0 -4
  705. package/packages/core/dist/run-state/task-evidence.js +5 -51
  706. package/packages/core/dist/run-state/task-evidence.js.map +1 -1
  707. package/packages/core/dist/run-state.d.ts +0 -1
  708. package/packages/core/dist/run-state.js +0 -1
  709. package/packages/core/dist/run-state.js.map +1 -1
  710. package/packages/core/dist/runtime-analysis/build.js +1 -1
  711. package/packages/core/dist/runtime-analysis/build.js.map +1 -1
  712. package/packages/core/dist/runtime-analysis/findings.js +7 -16
  713. package/packages/core/dist/runtime-analysis/findings.js.map +1 -1
  714. package/packages/core/dist/runtime-analysis/model.d.ts +1 -2
  715. package/packages/core/dist/runtime-paths.d.ts +0 -1
  716. package/packages/core/dist/runtime-paths.js +1 -4
  717. package/packages/core/dist/runtime-paths.js.map +1 -1
  718. package/packages/core/dist/runtime-projection-p0.d.ts +2 -2
  719. package/packages/core/dist/runtime-projection-p0.js +11 -0
  720. package/packages/core/dist/runtime-projection-p0.js.map +1 -1
  721. package/packages/core/dist/sdd-docs/artifact-depth.d.ts +14 -0
  722. package/packages/core/dist/sdd-docs/artifact-depth.js +179 -0
  723. package/packages/core/dist/sdd-docs/artifact-depth.js.map +1 -0
  724. package/packages/core/dist/sdd-docs/document-hashes.d.ts +0 -2
  725. package/packages/core/dist/sdd-docs/document-hashes.js +10 -97
  726. package/packages/core/dist/sdd-docs/document-hashes.js.map +1 -1
  727. package/packages/core/dist/sdd-docs/run-binding.d.ts +1 -1
  728. package/packages/core/dist/sdd-docs/run-binding.js +6 -8
  729. package/packages/core/dist/sdd-docs/run-binding.js.map +1 -1
  730. package/packages/core/dist/sdd-docs/task-parser.d.ts +5 -2
  731. package/packages/core/dist/sdd-docs/task-parser.js +85 -68
  732. package/packages/core/dist/sdd-docs/task-parser.js.map +1 -1
  733. package/packages/core/dist/sdd-docs/task-rendering.js +2 -2
  734. package/packages/core/dist/sdd-docs/task-rendering.js.map +1 -1
  735. package/packages/core/dist/spec-entry.js +40 -0
  736. package/packages/core/dist/spec-entry.js.map +1 -0
  737. package/packages/core/dist/spec-manager-contracts.d.ts +12 -0
  738. package/packages/core/dist/spec-manager-contracts.js +2 -0
  739. package/packages/core/dist/spec-manager-contracts.js.map +1 -0
  740. package/packages/core/dist/stage-artifacts.d.ts +2 -2
  741. package/packages/core/dist/stage-artifacts.js +19 -26
  742. package/packages/core/dist/stage-artifacts.js.map +1 -1
  743. package/packages/core/dist/stage-collaboration-contracts.d.ts +1 -1
  744. package/packages/core/dist/stage-collaboration-contracts.js +3 -6
  745. package/packages/core/dist/stage-collaboration-contracts.js.map +1 -1
  746. package/packages/core/dist/stage-collaboration.d.ts +111 -263
  747. package/packages/core/dist/stage-collaboration.js +1272 -1124
  748. package/packages/core/dist/stage-collaboration.js.map +1 -1
  749. package/packages/core/dist/stage-runtime/runtime.js +5 -5
  750. package/packages/core/dist/stage-runtime/runtime.js.map +1 -1
  751. package/packages/core/dist/status/project-status.d.ts +1 -44
  752. package/packages/core/dist/status/project-status.js +47 -170
  753. package/packages/core/dist/status/project-status.js.map +1 -1
  754. package/packages/core/dist/storage/runtime-store.js +73 -73
  755. package/packages/core/dist/subagents/contracts.d.ts +1 -1
  756. package/packages/core/dist/subagents/runtime.js +7 -7
  757. package/packages/core/dist/subagents/runtime.js.map +1 -1
  758. package/packages/core/dist/sync-back/apply.d.ts +1 -0
  759. package/packages/core/dist/sync-back/apply.js +2 -0
  760. package/packages/core/dist/sync-back/apply.js.map +1 -0
  761. package/packages/core/dist/sync-back/inspect.d.ts +1 -0
  762. package/packages/core/dist/sync-back/inspect.js +2 -0
  763. package/packages/core/dist/sync-back/inspect.js.map +1 -0
  764. package/packages/core/dist/sync-back.d.ts +1 -0
  765. package/packages/core/dist/sync-back.js +2 -0
  766. package/packages/core/dist/sync-back.js.map +1 -0
  767. package/packages/core/dist/task-execution-contract.d.ts +167 -0
  768. package/packages/core/dist/task-execution-contract.js +377 -0
  769. package/packages/core/dist/task-execution-contract.js.map +1 -0
  770. package/packages/core/dist/test-support/fixtures.js +329 -314
  771. package/packages/core/dist/test-support/fixtures.js.map +1 -1
  772. package/packages/core/dist/test-support/run-state.d.ts +1 -0
  773. package/packages/core/dist/test-support/run-state.js +53 -7
  774. package/packages/core/dist/test-support/run-state.js.map +1 -1
  775. package/packages/core/dist/truth-reconciliation.js +9 -12
  776. package/packages/core/dist/truth-reconciliation.js.map +1 -1
  777. package/packages/core/dist/tsconfig.tsbuildinfo +1 -1
  778. package/packages/core/dist/verification/goal-verify.d.ts +0 -48
  779. package/packages/core/dist/verification/goal-verify.js +1 -520
  780. package/packages/core/dist/verification/goal-verify.js.map +1 -1
  781. package/packages/core/dist/verification/rendering.d.ts +5 -5
  782. package/packages/core/dist/verification/rendering.js +14 -14
  783. package/packages/core/dist/verification/rendering.js.map +1 -1
  784. package/packages/core/dist/verification/single-task-loop.d.ts +1 -0
  785. package/packages/core/dist/verification/single-task-loop.js +111 -159
  786. package/packages/core/dist/verification/single-task-loop.js.map +1 -1
  787. package/packages/core/dist/verification/task-evidence-judgment.d.ts +49 -0
  788. package/packages/core/dist/verification/task-evidence-judgment.js +521 -0
  789. package/packages/core/dist/verification/task-evidence-judgment.js.map +1 -0
  790. package/packages/core/dist/verification/test-runtime.js +21 -21
  791. package/packages/core/dist/verification/test-runtime.js.map +1 -1
  792. package/packages/core/dist/verification/validation-wave.d.ts +0 -18
  793. package/packages/core/dist/verification/validation-wave.js +5 -27
  794. package/packages/core/dist/verification/validation-wave.js.map +1 -1
  795. package/packages/core/dist/verification/verify-contract.js +45 -45
  796. package/packages/core/dist/verification/verify-contract.js.map +1 -1
  797. package/packages/core/dist/verification.d.ts +3 -3
  798. package/packages/core/dist/verification.js +2 -2
  799. package/packages/core/dist/verification.js.map +1 -1
  800. package/packages/core/dist/work-units/contracts.d.ts +1 -1
  801. package/packages/core/dist/workflow-gate/evidence-packet.js +9 -227
  802. package/packages/core/dist/workflow-gate/evidence-packet.js.map +1 -1
  803. package/packages/core/dist/workflow-gate/hard-checks.js +9 -50
  804. package/packages/core/dist/workflow-gate/hard-checks.js.map +1 -1
  805. package/packages/core/dist/workflow-gate/policy.js +4 -42
  806. package/packages/core/dist/workflow-gate/policy.js.map +1 -1
  807. package/packages/core/dist/workflow-gate/types.d.ts +2 -3
  808. package/packages/core/dist/workflow-state/affected-file-conflicts.d.ts +1 -0
  809. package/packages/core/dist/workflow-state/affected-file-conflicts.js +2 -1
  810. package/packages/core/dist/workflow-state/affected-file-conflicts.js.map +1 -1
  811. package/packages/core/dist/workflow-state/dependencies.js +1 -1
  812. package/packages/core/dist/workflow-state/latest-eligible-run.d.ts +1 -0
  813. package/packages/core/dist/workflow-state/latest-eligible-run.js +23 -63
  814. package/packages/core/dist/workflow-state/latest-eligible-run.js.map +1 -1
  815. package/packages/core/dist/workflow-state/resolve.d.ts +2 -2
  816. package/packages/core/dist/workflow-state/resolve.js +43 -65
  817. package/packages/core/dist/workflow-state/resolve.js.map +1 -1
  818. package/packages/core/package.json +5 -2
  819. package/tsconfig.build.json +6 -7
  820. package/node_modules/@sdd-agent-platform/core/src/verification/single-task-loop.test.ts +0 -269
  821. package/node_modules/@sdd-agent-platform/core/src/verification/test-runtime.test.ts +0 -492
  822. package/node_modules/@sdd-agent-platform/core/src/verification/validation-wave.test.ts +0 -383
  823. package/node_modules/@sdd-agent-platform/core/src/verification/verify-contract.test.ts +0 -188
  824. package/packages/cli/dist/commands/lifecycle.d.ts +0 -6
  825. package/packages/cli/dist/commands/lifecycle.js +0 -125
  826. package/packages/cli/dist/commands/lifecycle.js.map +0 -1
  827. package/packages/cli/dist/commands/test.d.ts +0 -6
  828. package/packages/cli/dist/commands/test.js +0 -373
  829. package/packages/cli/dist/commands/test.js.map +0 -1
  830. package/packages/cli/dist/commands/verifies.js +0 -87
  831. package/packages/cli/dist/commands/verifies.js.map +0 -1
  832. package/packages/cli/dist/commands/verify.d.ts +0 -6
  833. package/packages/cli/dist/commands/verify.js +0 -330
  834. package/packages/cli/dist/commands/verify.js.map +0 -1
@@ -1,473 +1,426 @@
1
- import { AGENT_CAPABILITY_CATALOG_CONTRACT_VERSION } from '../contracts.js';
2
- import { parseProjectConfig } from '../config/project-config.js';
3
- import { getProjectConfigPath } from '../runtime-paths.js';
4
- import { readFile } from 'node:fs/promises';
5
-
6
- export type WorkflowCapabilityDomain = 'norm_discovery' | 'uncertainty_resolution' | 'performance_planning' | 'verification_design' | 'evidence_collection' | 'truth_alignment_review' | 'release_summary' | 'context_curation';
7
- export type ProfessionalCapabilityDomain = 'solution-design' | 'architecture-design' | 'backend-engineering' | 'frontend-engineering' | 'db-data-engineering' | 'testing-quality-engineering' | 'security-engineering' | 'performance-engineering' | 'observability-engineering' | 'release-engineering' | 'ui-ux-product-design';
8
- export type AgentCapabilityDomain = WorkflowCapabilityDomain | ProfessionalCapabilityDomain;
9
- export type AgentCapabilityDomainGroup = 'workflow' | 'professional';
10
- export const REQUIRED_PROFESSIONAL_CAPABILITY_DOMAINS: ProfessionalCapabilityDomain[] = [
11
- 'solution-design',
12
- 'architecture-design',
13
- 'backend-engineering',
14
- 'frontend-engineering',
15
- 'db-data-engineering',
16
- 'testing-quality-engineering',
17
- 'security-engineering',
18
- 'performance-engineering',
19
- 'observability-engineering',
20
- 'release-engineering',
21
- 'ui-ux-product-design'
22
- ];
23
- export type AgentCapabilityStage = 'spec' | 'plan' | 'tasks' | 'verifies' | 'test' | 'do' | 'verify' | 'goal-verify' | 'ship';
24
- export type CapabilityLifecycleHook = 'spec.capability_review' | 'plan.capability_strategy' | 'tasks.capability_topology' | 'do.capability_execution' | 'test.capability_validation' | 'goal_verify.capability_truth_alignment' | 'ship.capability_release_risk';
25
- export type AgentCapabilityAuthority = 'advisory_only' | 'gate_evidence' | 'validation_runner';
26
- export type MaterialPackLoadPolicy = 'route_when_triggered' | 'summary_only' | 'never_inline';
27
- export type AgentCapabilityMaterialPolicy = 'metadata_only' | 'route_baseline_pack' | 'runtime_evidence_required';
28
- export type AgentCapabilityEvidenceExpectation = 'advisory_note' | 'candidate_evidence' | 'accepted_runtime_evidence';
29
- export type MaterialPackSourceKind = 'sdd_runtime_contract' | 'sdd_native_baseline';
30
-
31
- export interface AgentCapabilityMaterialPack {
32
- id: string;
33
- summary: string;
34
- domains: AgentCapabilityDomain[];
35
- triggerStages: AgentCapabilityStage[];
36
- triggerKeywords: string[];
37
- loadPolicy: MaterialPackLoadPolicy;
38
- sourceId: string;
39
- sourceVersion: string;
40
- sourceKind: MaterialPackSourceKind;
41
- contextBudget: 'tiny' | 'small' | 'medium';
42
- expectedOutputs: string[];
43
- forbiddenUses: string[];
44
- }
45
-
46
- export interface AgentCapabilityCatalogEntry {
47
- version: typeof AGENT_CAPABILITY_CATALOG_CONTRACT_VERSION;
48
- id: string;
49
- domain: AgentCapabilityDomain;
50
- domainGroup: AgentCapabilityDomainGroup;
51
- stages: AgentCapabilityStage[];
52
- inputs: string[];
53
- outputs: string[];
54
- authority: AgentCapabilityAuthority;
55
- materialPolicy: AgentCapabilityMaterialPolicy;
56
- evidenceExpectation: AgentCapabilityEvidenceExpectation;
57
- lifecycleHooks: CapabilityLifecycleHook[];
58
- routing: {
59
- riskTags: string[];
60
- projectStackTags: string[];
61
- confidenceThreshold: number;
62
- materialPackIds: string[];
63
- };
64
- provenance: {
65
- sourceId: string;
66
- sourceVersion: string;
67
- quarantineRequired: boolean;
68
- };
69
- finalAuthority: 'sdd_contract' | 'sdd_gate';
70
- }
71
-
72
- export interface CapabilityCommandMapping {
73
- command: AgentCapabilityStage;
74
- requiredDomains: AgentCapabilityDomain[];
75
- optionalDomains: AgentCapabilityDomain[];
76
- forbiddenAuthority: AgentCapabilityAuthority[];
77
- materialPolicy: MaterialPackLoadPolicy;
78
- }
79
-
80
- export interface AgentCapabilityCatalog {
81
- version: typeof AGENT_CAPABILITY_CATALOG_CONTRACT_VERSION;
82
- capabilities: AgentCapabilityCatalogEntry[];
83
- materialPacks: AgentCapabilityMaterialPack[];
84
- commandMappings: CapabilityCommandMapping[];
85
- }
86
-
87
- export interface AgentCapabilityCatalogValidation {
88
- version: typeof AGENT_CAPABILITY_CATALOG_CONTRACT_VERSION;
89
- valid: boolean;
90
- issues: string[];
91
- catalog: AgentCapabilityCatalog;
92
- }
93
-
94
- const MATERIAL_PACKS: AgentCapabilityMaterialPack[] = [
95
- materialPack(
96
- 'project-norms',
97
- ['norm_discovery', 'context_curation'],
98
- 'Project conventions, coding standards, and existing-spec alignment cues.',
99
- ['spec', 'plan', 'tasks'],
100
- ['规范', 'convention', 'standard', 'style', 'compatibility'],
101
- 'route_when_triggered',
102
- 'project_context_pack',
103
- 'sdd_runtime_contract',
104
- 'small',
105
- ['norm alignment note', 'coding convention cue'],
106
- ['lifecycle gate authority', 'stage completion decision', 'truth-alignment gate authority', 'ship readiness pass']
107
- ),
108
- materialPack(
109
- 'uncertainty-map',
110
- ['uncertainty_resolution', 'context_curation'],
111
- 'Decision-boundary prompts for resolving unknowns from repo evidence before asking the user.',
112
- ['spec', 'plan'],
113
- ['uncertain', 'unknown', 'ambiguous', '不确定', '边界'],
114
- 'summary_only',
115
- 'harness_learning',
116
- 'sdd_runtime_contract',
117
- 'tiny',
118
- ['resolved assumption note', 'question checkpoint'],
119
- ['lifecycle gate authority', 'stage completion decision', 'truth-alignment gate authority', 'ship readiness pass']
120
- ),
121
- materialPack(
122
- 'performance-risk',
123
- ['performance_planning', 'context_curation'],
124
- 'Planning checks for token, context, IO, runtime, and validation cost risks.',
125
- ['plan', 'tasks'],
126
- ['performance', 'token', 'context', 'latency', 'cost', '性能'],
127
- 'summary_only',
128
- 'skill_agent_eval',
129
- 'sdd_runtime_contract',
130
- 'tiny',
131
- ['performance risk note', 'context budget note'],
132
- ['lifecycle gate authority', 'stage completion decision', 'truth-alignment gate authority', 'ship readiness pass']
133
- ),
134
- materialPack(
135
- 'verification-design',
136
- ['verification_design', 'evidence_collection'],
137
- 'Acceptance-to-evidence design patterns for verify.md and runtime evidence handoff.',
138
- ['verifies', 'test', 'verify'],
139
- ['verify', 'evidence', 'validation', 'acceptance', '验收'],
140
- 'route_when_triggered',
141
- 'verify_contract',
142
- 'sdd_runtime_contract',
143
- 'small',
144
- ['verification matrix', 'evidence requirement'],
145
- ['lifecycle gate authority', 'stage completion decision', 'truth-alignment gate authority', 'ship readiness pass']
146
- ),
147
- materialPack(
148
- 'truth-alignment-risk',
149
- ['truth_alignment_review', 'release_summary'],
150
- 'Risk checks for aligning accepted goal verification reality with declared SDD truth before release.',
151
- ['goal-verify', 'ship'],
152
- ['truth-alignment', 'goal-verify', 'ship', 'release', '发布'],
153
- 'summary_only',
154
- 'governance_policy',
155
- 'sdd_runtime_contract',
156
- 'tiny',
157
- ['truth alignment risk note', 'release readiness concern'],
158
- ['lifecycle gate authority', 'stage completion decision', 'truth-alignment gate authority', 'ship readiness pass']
159
- ),
160
- professionalMaterialPack('baseline-solution-design', 'solution-design', 'Problem framing, option tradeoff, scope boundary, and success criteria review.', ['spec', 'plan'], ['solution', 'scope', 'tradeoff', 'goal', '方案'], ['problem framing', 'option tradeoff', 'scope boundary'], 'small'),
161
- professionalMaterialPack('baseline-architecture-design', 'architecture-design', 'System boundary, component responsibility, integration, and runtime constraint review.', ['plan', 'tasks'], ['architecture', 'boundary', 'integration', 'component', '架构'], ['architecture decision note', 'component boundary note', 'handoff risk'], 'small'),
162
- professionalMaterialPack('baseline-backend-engineering', 'backend-engineering', 'API, service, domain logic, error handling, and backend validation review.', ['plan', 'tasks', 'do', 'test'], ['backend', 'api', 'service', 'domain', '后端'], ['backend implementation note', 'API risk note', 'validation need'], 'small'),
163
- professionalMaterialPack('baseline-frontend-engineering', 'frontend-engineering', 'Component boundary, UI state, browser behavior, accessibility, and frontend validation review.', ['plan', 'tasks', 'do', 'test'], ['frontend', 'component', 'browser', 'accessibility', '前端'], ['frontend implementation note', 'interaction state risk', 'browser validation need'], 'small'),
164
- professionalMaterialPack('baseline-db-data-engineering', 'db-data-engineering', 'Schema, query, migration, data integrity, rollback, and data-safety review.', ['plan', 'tasks', 'do', 'test', 'ship'], ['database', 'schema', 'migration', 'query', '数据'], ['data safety note', 'migration risk', 'rollback consideration'], 'small'),
165
- professionalMaterialPack('baseline-testing-quality-engineering', 'testing-quality-engineering', 'Acceptance coverage, test strategy, evidence quality, and regression-risk review.', ['verifies', 'test', 'verify'], ['test', 'quality', 'coverage', 'acceptance', '测试'], ['test strategy', 'coverage gap', 'evidence requirement'], 'small'),
166
- professionalMaterialPack('baseline-security-engineering', 'security-engineering', 'Trust boundary, secret handling, permissions, abuse case, and security evidence review.', ['spec', 'plan', 'tasks', 'do', 'test', 'ship'], ['security', 'secret', 'permission', 'auth', '安全'], ['security risk note', 'abuse case', 'security evidence requirement'], 'small'),
167
- professionalMaterialPack('baseline-performance-engineering', 'performance-engineering', 'Hot path, latency, resource use, benchmark, and capacity-risk review.', ['plan', 'tasks', 'do', 'test', 'ship'], ['performance', 'latency', 'resource', 'benchmark', '性能'], ['performance risk note', 'benchmark need', 'capacity consideration'], 'small'),
168
- professionalMaterialPack('baseline-observability-engineering', 'observability-engineering', 'Logging, metrics, tracing, diagnostic signal, and operator-readiness review.', ['plan', 'tasks', 'do', 'test', 'ship'], ['observability', 'logging', 'metrics', 'tracing', '可观测'], ['logging/metrics/tracing need', 'diagnostic gap', 'operability note'], 'small'),
169
- professionalMaterialPack('baseline-release-engineering', 'release-engineering', 'Release scope, CI state, deployment risk, rollback, and readiness review.', ['tasks', 'test', 'goal-verify', 'ship'], ['release', 'ci', 'deploy', 'rollback', '发布'], ['release readiness note', 'deployment risk', 'ship blocker'], 'small'),
170
- professionalMaterialPack('baseline-ui-ux-product-design', 'ui-ux-product-design', 'User journey, interaction state, UX acceptance, accessibility, and design evidence review.', ['spec', 'plan', 'tasks', 'do', 'test'], ['ui', 'ux', 'design', 'figma', '交互'], ['UX acceptance note', 'interaction gap', 'design evidence requirement'], 'small')
171
- ];
172
-
173
- const CAPABILITIES: AgentCapabilityCatalogEntry[] = [
174
- workflowCapability('cap.norm-discovery', 'norm_discovery', ['spec', 'plan', 'tasks'], ['user request', 'project docs', 'existing specs', 'affected files'], ['norm alignment finding', 'scope constraint'], 'advisory_only', ['compatibility', 'style', 'architecture'], ['project-norms'], 'project_context_pack'),
175
- workflowCapability('cap.uncertainty-resolution', 'uncertainty_resolution', ['spec', 'plan'], ['user request', 'repo evidence', 'open gaps'], ['resolved assumption', 'question checkpoint', 'blocked gap'], 'advisory_only', ['ambiguous', 'high_risk'], ['uncertainty-map'], 'harness_learning'),
176
- workflowCapability('cap.performance-planning', 'performance_planning', ['plan', 'tasks'], ['target design', 'runtime path', 'context usage', 'validation cost'], ['performance impact note', 'token risk note', 'validation cost control'], 'advisory_only', ['performance', 'context_budget', 'token_risk'], ['performance-risk'], 'skill_agent_eval'),
177
- workflowCapability('cap.verification-design', 'verification_design', ['verifies', 'test', 'verify'], ['tasks.md', 'verify.md', 'acceptance refs', 'runtime evidence'], ['verification matrix', 'evidence requirement', 'policy boundary'], 'gate_evidence', ['acceptance', 'evidence', 'policy'], ['verification-design'], 'verify_contract'),
178
- workflowCapability('cap.evidence-collection', 'evidence_collection', ['test', 'do', 'verify'], ['validation command', 'artifact refs', 'run state'], ['command evidence', 'artifact ref', 'provenance ref'], 'validation_runner', ['validation', 'runtime_evidence'], ['verification-design'], 'test_runtime'),
179
- workflowCapability('cap.truth-alignment-review', 'truth_alignment_review', ['goal-verify', 'ship'], ['goal-verify decision', 'truthAlignment projection', 'declared truth refs'], ['truth alignment risk note', 'reconciliation requirement'], 'gate_evidence', ['shared_state', 'semantic_update'], ['truth-alignment-risk'], 'governance_policy'),
180
- workflowCapability('cap.release-summary', 'release_summary', ['ship'], ['task status', 'doctor report', 'pack output', 'git state'], ['release readiness summary', 'blocked release gap'], 'advisory_only', ['release', 'external_state'], ['truth-alignment-risk'], 'governance_policy'),
181
- workflowCapability('cap.context-curation', 'context_curation', ['spec', 'plan', 'do', 'verify', 'ship'], ['material packs', 'context budget', 'run summaries'], ['context pack selection', 'excluded material list'], 'advisory_only', ['context_budget', 'prompt_bloat'], ['project-norms', 'uncertainty-map', 'performance-risk'], 'project_context_pack'),
182
- professionalCapability('cap.solution-design', 'solution-design', ['spec', 'plan'], ['spec.capability_review', 'plan.capability_strategy'], ['user goal', 'constraints', 'success criteria'], ['problem framing', 'solution option tradeoff', 'scope boundary'], ['architecture', 'ambiguous'], ['baseline-solution-design', 'project-norms', 'uncertainty-map']),
183
- professionalCapability('cap.architecture-design', 'architecture-design', ['plan', 'tasks'], ['plan.capability_strategy', 'tasks.capability_topology'], ['system boundaries', 'integration points', 'runtime constraints'], ['architecture decision', 'component boundary', 'handoff risk'], ['architecture', 'source_boundary'], ['baseline-architecture-design', 'project-norms', 'performance-risk']),
184
- professionalCapability('cap.backend-engineering', 'backend-engineering', ['plan', 'tasks', 'do', 'test'], ['plan.capability_strategy', 'tasks.capability_topology', 'do.capability_execution', 'test.capability_validation'], ['API contracts', 'service logic', 'runtime path'], ['backend implementation note', 'API risk note', 'validation need'], ['api-schema', 'runtime_state'], ['baseline-backend-engineering', 'project-norms', 'verification-design']),
185
- professionalCapability('cap.frontend-engineering', 'frontend-engineering', ['spec', 'plan', 'tasks', 'do', 'test'], ['spec.capability_review', 'plan.capability_strategy', 'tasks.capability_topology', 'do.capability_execution', 'test.capability_validation'], ['UI state', 'component boundary', 'browser behavior'], ['frontend implementation note', 'interaction state risk', 'browser validation need'], ['frontend', 'accessibility'], ['baseline-frontend-engineering', 'project-norms', 'verification-design']),
186
- professionalCapability('cap.db-data-engineering', 'db-data-engineering', ['plan', 'tasks', 'do', 'test', 'ship'], ['plan.capability_strategy', 'tasks.capability_topology', 'do.capability_execution', 'test.capability_validation', 'ship.capability_release_risk'], ['schema change', 'query path', 'migration plan'], ['data safety note', 'migration risk', 'rollback consideration'], ['database', 'data-loss'], ['baseline-db-data-engineering', 'project-norms', 'verification-design']),
187
- professionalCapability('cap.testing-quality-engineering', 'testing-quality-engineering', ['verifies', 'test', 'verify'], ['tasks.capability_topology', 'test.capability_validation'], ['acceptance refs', 'test command', 'quality risk'], ['test strategy', 'coverage gap', 'evidence requirement'], ['validation', 'acceptance'], ['baseline-testing-quality-engineering', 'verification-design']),
188
- professionalCapability('cap.security-engineering', 'security-engineering', ['spec', 'plan', 'tasks', 'do', 'test', 'ship'], ['spec.capability_review', 'plan.capability_strategy', 'tasks.capability_topology', 'do.capability_execution', 'test.capability_validation', 'ship.capability_release_risk'], ['trust boundary', 'secret handling', 'permission model'], ['security risk note', 'abuse case', 'security evidence requirement'], ['security', 'token_secret'], ['baseline-security-engineering', 'project-norms', 'verification-design']),
189
- professionalCapability('cap.performance-engineering', 'performance-engineering', ['plan', 'tasks', 'do', 'test', 'ship'], ['plan.capability_strategy', 'tasks.capability_topology', 'do.capability_execution', 'test.capability_validation', 'ship.capability_release_risk'], ['hot path', 'resource use', 'latency constraint'], ['performance risk note', 'benchmark need', 'capacity consideration'], ['performance', 'context_budget'], ['baseline-performance-engineering', 'performance-risk', 'verification-design']),
190
- professionalCapability('cap.observability-engineering', 'observability-engineering', ['plan', 'tasks', 'do', 'test', 'ship'], ['plan.capability_strategy', 'tasks.capability_topology', 'do.capability_execution', 'test.capability_validation', 'ship.capability_release_risk'], ['runtime signal', 'failure mode', 'operator need'], ['logging/metrics/tracing need', 'diagnostic gap', 'operability note'], ['observability', 'runtime_state'], ['baseline-observability-engineering', 'project-norms', 'verification-design']),
191
- professionalCapability('cap.release-engineering', 'release-engineering', ['tasks', 'test', 'goal-verify', 'ship'], ['tasks.capability_topology', 'test.capability_validation', 'goal_verify.capability_truth_alignment', 'ship.capability_release_risk'], ['release scope', 'CI state', 'rollback need'], ['release readiness note', 'deployment risk', 'ship blocker'], ['release', 'ci-build'], ['baseline-release-engineering', 'truth-alignment-risk', 'verification-design']),
192
- professionalCapability('cap.ui-ux-product-design', 'ui-ux-product-design', ['spec', 'plan', 'tasks', 'do', 'test'], ['spec.capability_review', 'plan.capability_strategy', 'tasks.capability_topology', 'do.capability_execution', 'test.capability_validation'], ['user journey', 'interaction state', 'design constraint'], ['UX acceptance note', 'interaction gap', 'design evidence requirement'], ['ui-ux', 'accessibility'], ['baseline-ui-ux-product-design', 'project-norms', 'uncertainty-map'])
193
- ];
194
-
195
- const COMMAND_MAPPINGS: CapabilityCommandMapping[] = [
196
- { command: 'spec', requiredDomains: ['norm_discovery', 'uncertainty_resolution'], optionalDomains: ['context_curation'], forbiddenAuthority: ['validation_runner'], materialPolicy: 'summary_only' },
197
- { command: 'plan', requiredDomains: ['norm_discovery', 'performance_planning'], optionalDomains: ['uncertainty_resolution', 'context_curation'], forbiddenAuthority: ['validation_runner'], materialPolicy: 'summary_only' },
198
- { command: 'verifies', requiredDomains: ['verification_design'], optionalDomains: ['context_curation'], forbiddenAuthority: ['validation_runner'], materialPolicy: 'route_when_triggered' },
199
- { command: 'test', requiredDomains: ['evidence_collection'], optionalDomains: ['verification_design'], forbiddenAuthority: [], materialPolicy: 'route_when_triggered' },
200
- { command: 'verify', requiredDomains: ['verification_design', 'evidence_collection'], optionalDomains: ['context_curation'], forbiddenAuthority: [], materialPolicy: 'route_when_triggered' },
201
- { command: 'goal-verify', requiredDomains: ['truth_alignment_review'], optionalDomains: ['context_curation'], forbiddenAuthority: ['validation_runner'], materialPolicy: 'summary_only' },
202
- { command: 'ship', requiredDomains: ['release_summary', 'truth_alignment_review'], optionalDomains: ['context_curation'], forbiddenAuthority: ['validation_runner'], materialPolicy: 'summary_only' }
203
- ];
204
-
205
- export async function inspectAgentCapabilityCatalog(projectRoot: string): Promise<AgentCapabilityCatalog> {
206
- await assertProjectConfigReadable(projectRoot);
207
- return {
208
- version: AGENT_CAPABILITY_CATALOG_CONTRACT_VERSION,
209
- capabilities: [...CAPABILITIES].sort((left, right) => left.id.localeCompare(right.id)),
210
- materialPacks: [...MATERIAL_PACKS].sort((left, right) => left.id.localeCompare(right.id)),
211
- commandMappings: [...COMMAND_MAPPINGS].sort((left, right) => left.command.localeCompare(right.command))
212
- };
213
- }
214
-
215
- export async function validateAgentCapabilityCatalog(projectRoot: string): Promise<AgentCapabilityCatalogValidation> {
216
- const catalog = await inspectAgentCapabilityCatalog(projectRoot);
217
- const issues = validateCatalog(catalog);
218
- return {
219
- version: AGENT_CAPABILITY_CATALOG_CONTRACT_VERSION,
220
- valid: issues.length === 0,
221
- issues,
222
- catalog
223
- };
224
- }
225
-
226
- function workflowCapability(id: string, domain: WorkflowCapabilityDomain, stages: AgentCapabilityStage[], inputs: string[], outputs: string[], authority: AgentCapabilityAuthority, riskTags: string[], materialPackIds: string[], sourceId: string): AgentCapabilityCatalogEntry {
227
- return capability(id, domain, 'workflow', stages, inputs, outputs, authority, riskTags, materialPackIds, sourceId);
228
- }
229
-
230
- function professionalCapability(id: string, domain: ProfessionalCapabilityDomain, stages: AgentCapabilityStage[], lifecycleHooks: CapabilityLifecycleHook[], inputs: string[], outputs: string[], riskTags: string[], materialPackIds: string[]): AgentCapabilityCatalogEntry {
231
- return capability(id, domain, 'professional', stages, inputs, outputs, 'advisory_only', riskTags, materialPackIds, 'sdd_professional_baseline', lifecycleHooks);
232
- }
233
-
234
- function capability(id: string, domain: AgentCapabilityDomain, domainGroup: AgentCapabilityDomainGroup, stages: AgentCapabilityStage[], inputs: string[], outputs: string[], authority: AgentCapabilityAuthority, riskTags: string[], materialPackIds: string[], sourceId: string, lifecycleHooks: CapabilityLifecycleHook[] = hooksForStages(stages)): AgentCapabilityCatalogEntry {
235
- return {
236
- version: AGENT_CAPABILITY_CATALOG_CONTRACT_VERSION,
237
- id,
238
- domain,
239
- domainGroup,
240
- stages,
241
- inputs,
242
- outputs,
243
- authority,
244
- materialPolicy: capabilityMaterialPolicy(authority),
245
- evidenceExpectation: capabilityEvidenceExpectation(authority),
246
- lifecycleHooks,
247
- routing: {
248
- riskTags,
249
- projectStackTags: projectStackTagsForDomain(domain),
250
- confidenceThreshold: 0.65,
251
- materialPackIds
252
- },
253
- provenance: {
254
- sourceId,
255
- sourceVersion: '0.3.0',
256
- quarantineRequired: false
257
- },
258
- finalAuthority: authority === 'validation_runner' || authority === 'gate_evidence' ? 'sdd_gate' : 'sdd_contract'
259
- };
260
- }
261
-
262
- function capabilityMaterialPolicy(authority: AgentCapabilityAuthority): AgentCapabilityMaterialPolicy {
263
- return authority === 'validation_runner' ? 'runtime_evidence_required' : 'route_baseline_pack';
264
- }
265
-
266
- function capabilityEvidenceExpectation(authority: AgentCapabilityAuthority): AgentCapabilityEvidenceExpectation {
267
- if (authority === 'validation_runner' || authority === 'gate_evidence') {
268
- return 'accepted_runtime_evidence';
269
- }
270
- return 'candidate_evidence';
271
- }
272
-
273
- function hooksForStages(stages: AgentCapabilityStage[]): CapabilityLifecycleHook[] {
274
- const hooks = stages.flatMap((stage) => {
275
- if (stage === 'spec') {
276
- return ['spec.capability_review' as const];
277
- }
278
- if (stage === 'plan') {
279
- return ['plan.capability_strategy' as const];
280
- }
281
- if (stage === 'tasks' || stage === 'verifies' || stage === 'verify') {
282
- return ['tasks.capability_topology' as const];
283
- }
284
- if (stage === 'do') {
285
- return ['do.capability_execution' as const];
286
- }
287
- if (stage === 'test') {
288
- return ['test.capability_validation' as const];
289
- }
290
- if (stage === 'goal-verify') {
291
- return ['goal_verify.capability_truth_alignment' as const];
292
- }
293
- if (stage === 'ship') {
294
- return ['ship.capability_release_risk' as const];
295
- }
296
- return [];
297
- });
298
- return uniqueSorted(hooks);
299
- }
300
-
301
- function projectStackTagsForDomain(domain: AgentCapabilityDomain): string[] {
302
- if (domain === 'frontend-engineering' || domain === 'ui-ux-product-design') {
303
- return ['frontend', 'browser', 'component', 'tsx', 'jsx', 'css'];
304
- }
305
- if (domain === 'backend-engineering') {
306
- return ['backend', 'api', 'controller', 'service', 'java', 'go', 'python'];
307
- }
308
- if (domain === 'db-data-engineering') {
309
- return ['sql', 'database', 'migration', 'prisma'];
310
- }
311
- if (domain === 'testing-quality-engineering') {
312
- return ['test', 'spec', 'playwright', 'vitest', 'jest'];
313
- }
314
- if (domain === 'security-engineering') {
315
- return ['security', 'auth', 'secret', 'permission'];
316
- }
317
- if (domain === 'performance-engineering') {
318
- return ['performance', 'latency', 'benchmark', 'resource'];
319
- }
320
- if (domain === 'observability-engineering') {
321
- return ['observability', 'logging', 'metrics', 'tracing'];
322
- }
323
- if (domain === 'release-engineering') {
324
- return ['release', 'ci', 'deploy', 'rollback'];
325
- }
326
- return ['generic'];
327
- }
328
-
329
- function materialPack(id: string, domains: AgentCapabilityDomain[], summary: string, triggerStages: AgentCapabilityStage[], triggerKeywords: string[], loadPolicy: MaterialPackLoadPolicy, sourceId: string, sourceKind: MaterialPackSourceKind, contextBudget: AgentCapabilityMaterialPack['contextBudget'], expectedOutputs: string[], forbiddenUses: string[]): AgentCapabilityMaterialPack {
330
- return {
331
- id,
332
- summary,
333
- domains,
334
- triggerStages,
335
- triggerKeywords,
336
- loadPolicy,
337
- sourceId,
338
- sourceVersion: '0.4.2',
339
- sourceKind,
340
- contextBudget,
341
- expectedOutputs,
342
- forbiddenUses
343
- };
344
- }
345
-
346
- function professionalMaterialPack(id: string, domain: ProfessionalCapabilityDomain, summary: string, triggerStages: AgentCapabilityStage[], triggerKeywords: string[], expectedOutputs: string[], contextBudget: AgentCapabilityMaterialPack['contextBudget']): AgentCapabilityMaterialPack {
347
- return materialPack(
348
- id,
349
- [domain],
350
- summary,
351
- triggerStages,
352
- triggerKeywords,
353
- 'route_when_triggered',
354
- 'sdd_professional_baseline',
355
- 'sdd_native_baseline',
356
- contextBudget,
357
- expectedOutputs,
358
- ['lifecycle gate authority', 'stage completion decision', 'truth-alignment gate authority', 'ship readiness pass', 'host-specific skill projection']
359
- );
360
- }
361
-
362
-
363
- function validateCatalog(catalog: AgentCapabilityCatalog): string[] {
364
- const requiredHooks: CapabilityLifecycleHook[] = ['spec.capability_review', 'plan.capability_strategy', 'tasks.capability_topology', 'do.capability_execution', 'test.capability_validation', 'goal_verify.capability_truth_alignment', 'ship.capability_release_risk'];
365
- const issues: string[] = [];
366
- const packById = new Map(catalog.materialPacks.map((pack) => [pack.id, pack]));
367
- const packIds = new Set(packById.keys());
368
- const domains = new Set(catalog.capabilities.map((entry) => entry.domain));
369
- const professionalDomains = new Set(catalog.capabilities.filter((entry) => entry.domainGroup === 'professional').map((entry) => entry.domain));
370
- const professionalBaselineDomains = new Set<ProfessionalCapabilityDomain>();
371
- for (const pack of catalog.materialPacks) {
372
- if (pack.domains.length === 0) {
373
- issues.push(`${pack.id}: domains are required.`);
374
- }
375
- if (pack.triggerStages.length === 0 || pack.triggerKeywords.length === 0) {
376
- issues.push(`${pack.id}: trigger stages and keywords are required.`);
377
- }
378
- if (!pack.sourceId || !pack.sourceVersion) {
379
- issues.push(`${pack.id}: source provenance is required.`);
380
- }
381
- if (pack.expectedOutputs.length === 0 || pack.forbiddenUses.length === 0) {
382
- issues.push(`${pack.id}: expected outputs and forbidden uses are required.`);
383
- }
384
- if (pack.sourceKind === 'sdd_native_baseline') {
385
- if (!pack.forbiddenUses.includes('host-specific skill projection')) {
386
- issues.push(`${pack.id}: SDD-native baseline packs must forbid host-specific skill projection.`);
387
- }
388
- for (const domain of pack.domains) {
389
- if (isRequiredProfessionalDomain(domain)) {
390
- professionalBaselineDomains.add(domain);
391
- } else {
392
- issues.push(`${pack.id}: SDD-native baseline packs must target professional domains.`);
393
- }
394
- }
395
- }
396
- }
397
- for (const capability of catalog.capabilities) {
398
- if (capability.stages.length === 0) {
399
- issues.push(`${capability.id}: stages are required.`);
400
- }
401
- if (capability.inputs.length === 0 || capability.outputs.length === 0) {
402
- issues.push(`${capability.id}: inputs and outputs are required.`);
403
- }
404
- if (!capability.materialPolicy || !capability.evidenceExpectation) {
405
- issues.push(`${capability.id}: material policy and evidence expectation are required.`);
406
- }
407
- if (capability.lifecycleHooks.length === 0) {
408
- issues.push(`${capability.id}: lifecycle hooks are required.`);
409
- }
410
- if (capability.routing.projectStackTags.length === 0) {
411
- issues.push(`${capability.id}: project stack tags are required.`);
412
- }
413
- if (capability.routing.confidenceThreshold <= 0 || capability.routing.confidenceThreshold > 1) {
414
- issues.push(`${capability.id}: confidence threshold must be within (0, 1].`);
415
- }
416
- for (const packId of capability.routing.materialPackIds) {
417
- if (!packIds.has(packId)) {
418
- issues.push(`${capability.id}: unknown material pack ${packId}.`);
419
- }
420
- }
421
- if (capability.domainGroup === 'professional') {
422
- if (capability.authority !== 'advisory_only') {
423
- issues.push(`${capability.id}: professional capabilities must remain advisory_only.`);
424
- }
425
- const hasDomainBaselinePack = capability.routing.materialPackIds.some((packId) => {
426
- const pack = packById.get(packId);
427
- return pack?.sourceKind === 'sdd_native_baseline' && pack.domains.includes(capability.domain);
428
- });
429
- if (!hasDomainBaselinePack) {
430
- issues.push(`${capability.id}: professional capability must reference an SDD-native baseline pack for ${capability.domain}.`);
431
- }
432
- }
433
- }
434
- for (const domain of REQUIRED_PROFESSIONAL_CAPABILITY_DOMAINS) {
435
- if (!professionalDomains.has(domain)) {
436
- issues.push(`required professional domain ${domain} is missing.`);
437
- }
438
- if (!professionalBaselineDomains.has(domain)) {
439
- issues.push(`required professional domain ${domain} has no SDD-native baseline pack.`);
440
- }
441
- }
442
- const professionalHooks = new Set(catalog.capabilities.filter((entry) => entry.domainGroup === 'professional').flatMap((entry) => entry.lifecycleHooks));
443
- for (const hook of requiredHooks) {
444
- if (!professionalHooks.has(hook)) {
445
- issues.push(`professional lifecycle hook ${hook} is missing.`);
446
- }
447
- }
448
- for (const mapping of catalog.commandMappings) {
449
- for (const domain of mapping.requiredDomains) {
450
- if (!domains.has(domain)) {
451
- issues.push(`${mapping.command}: required domain ${domain} is missing.`);
452
- }
453
- }
454
- if (mapping.materialPolicy === 'never_inline') {
455
- issues.push(`${mapping.command}: command mappings may not request never_inline as the active loading policy.`);
456
- }
457
- }
458
- return issues;
459
- }
460
-
461
- function uniqueSorted<T extends string>(values: T[]): T[] {
462
- return [...new Set(values)].sort((left, right) => left.localeCompare(right));
463
- }
464
-
465
- function isRequiredProfessionalDomain(domain: AgentCapabilityDomain): domain is ProfessionalCapabilityDomain {
466
- return REQUIRED_PROFESSIONAL_CAPABILITY_DOMAINS.includes(domain as ProfessionalCapabilityDomain);
467
- }
468
-
469
- async function assertProjectConfigReadable(projectRoot: string): Promise<void> {
470
- const configPath = getProjectConfigPath(projectRoot);
471
- const raw = await readFile(configPath, 'utf8');
472
- parseProjectConfig(raw, configPath);
473
- }
1
+ import { AGENT_CAPABILITY_CATALOG_CONTRACT_VERSION } from '../contracts.js';
2
+ import { parseProjectConfig } from '../config/project-config.js';
3
+ import { getProjectConfigPath } from '../runtime-paths.js';
4
+ import { readFile } from 'node:fs/promises';
5
+
6
+ export type WorkflowCapabilityDomain = 'norm_discovery' | 'uncertainty_resolution' | 'performance_planning' | 'verification_design' | 'evidence_collection' | 'sync_back_risk_review' | 'release_summary' | 'context_curation';
7
+ export type ProfessionalCapabilityDomain = 'solution-design' | 'architecture-design' | 'backend-engineering' | 'frontend-engineering' | 'db-data-engineering' | 'testing-quality-engineering' | 'security-engineering' | 'performance-engineering' | 'observability-engineering' | 'release-engineering' | 'ui-ux-product-design';
8
+ export type AgentCapabilityDomain = WorkflowCapabilityDomain | ProfessionalCapabilityDomain;
9
+ export type AgentCapabilityDomainGroup = 'workflow' | 'professional';
10
+ export const REQUIRED_PROFESSIONAL_CAPABILITY_DOMAINS: ProfessionalCapabilityDomain[] = [
11
+ 'solution-design',
12
+ 'architecture-design',
13
+ 'backend-engineering',
14
+ 'frontend-engineering',
15
+ 'db-data-engineering',
16
+ 'testing-quality-engineering',
17
+ 'security-engineering',
18
+ 'performance-engineering',
19
+ 'observability-engineering',
20
+ 'release-engineering',
21
+ 'ui-ux-product-design'
22
+ ];
23
+ export type AgentCapabilityStage = 'spec' | 'plan' | 'tasks' | 'verifies' | 'test' | 'do' | 'verify' | 'sync-back' | 'ship';
24
+ export type AgentCapabilityAuthority = 'advisory_only' | 'gate_evidence' | 'validation_runner';
25
+ export type MaterialPackLoadPolicy = 'route_when_triggered' | 'summary_only' | 'never_inline';
26
+ export type AgentCapabilityMaterialPolicy = 'metadata_only' | 'route_baseline_pack' | 'runtime_evidence_required';
27
+ export type AgentCapabilityEvidenceExpectation = 'advisory_note' | 'candidate_evidence' | 'accepted_runtime_evidence';
28
+ export type MaterialPackSourceKind = 'sdd_runtime_contract' | 'sdd_native_baseline';
29
+
30
+ export interface AgentCapabilityMaterialPack {
31
+ id: string;
32
+ summary: string;
33
+ domains: AgentCapabilityDomain[];
34
+ triggerStages: AgentCapabilityStage[];
35
+ triggerKeywords: string[];
36
+ loadPolicy: MaterialPackLoadPolicy;
37
+ sourceId: string;
38
+ sourceVersion: string;
39
+ sourceKind: MaterialPackSourceKind;
40
+ contextBudget: 'tiny' | 'small' | 'medium';
41
+ expectedOutputs: string[];
42
+ forbiddenUses: string[];
43
+ }
44
+
45
+ export interface AgentCapabilityCatalogEntry {
46
+ version: typeof AGENT_CAPABILITY_CATALOG_CONTRACT_VERSION;
47
+ id: string;
48
+ domain: AgentCapabilityDomain;
49
+ domainGroup: AgentCapabilityDomainGroup;
50
+ stages: AgentCapabilityStage[];
51
+ inputs: string[];
52
+ outputs: string[];
53
+ authority: AgentCapabilityAuthority;
54
+ materialPolicy: AgentCapabilityMaterialPolicy;
55
+ evidenceExpectation: AgentCapabilityEvidenceExpectation;
56
+ routing: {
57
+ riskTags: string[];
58
+ projectStackTags: string[];
59
+ confidenceThreshold: number;
60
+ materialPackIds: string[];
61
+ };
62
+ provenance: {
63
+ sourceId: string;
64
+ sourceVersion: string;
65
+ quarantineRequired: boolean;
66
+ };
67
+ }
68
+
69
+ export interface CapabilityCommandMapping {
70
+ command: AgentCapabilityStage;
71
+ requiredDomains: AgentCapabilityDomain[];
72
+ optionalDomains: AgentCapabilityDomain[];
73
+ forbiddenAuthority: AgentCapabilityAuthority[];
74
+ materialPolicy: MaterialPackLoadPolicy;
75
+ }
76
+
77
+ export interface AgentCapabilityCatalog {
78
+ version: typeof AGENT_CAPABILITY_CATALOG_CONTRACT_VERSION;
79
+ capabilities: AgentCapabilityCatalogEntry[];
80
+ materialPacks: AgentCapabilityMaterialPack[];
81
+ commandMappings: CapabilityCommandMapping[];
82
+ }
83
+
84
+ export interface AgentCapabilityCatalogValidation {
85
+ version: typeof AGENT_CAPABILITY_CATALOG_CONTRACT_VERSION;
86
+ valid: boolean;
87
+ issues: string[];
88
+ catalog: AgentCapabilityCatalog;
89
+ }
90
+
91
+ const MATERIAL_PACKS: AgentCapabilityMaterialPack[] = [
92
+ materialPack(
93
+ 'project-norms',
94
+ ['norm_discovery', 'context_curation'],
95
+ 'Project conventions, coding standards, and existing-spec alignment cues.',
96
+ ['spec', 'plan', 'tasks'],
97
+ ['规范', 'convention', 'standard', 'style', 'compatibility'],
98
+ 'route_when_triggered',
99
+ 'project_context_pack',
100
+ 'sdd_runtime_contract',
101
+ 'small',
102
+ ['norm alignment note', 'coding convention cue'],
103
+ ['lifecycle gate authority', 'stage completion decision', 'sync-back apply decision', 'ship readiness pass']
104
+ ),
105
+ materialPack(
106
+ 'uncertainty-map',
107
+ ['uncertainty_resolution', 'context_curation'],
108
+ 'Decision-boundary prompts for resolving unknowns from repo evidence before asking the user.',
109
+ ['spec', 'plan'],
110
+ ['uncertain', 'unknown', 'ambiguous', '不确定', '边界'],
111
+ 'summary_only',
112
+ 'harness_learning',
113
+ 'sdd_runtime_contract',
114
+ 'tiny',
115
+ ['resolved assumption note', 'question checkpoint'],
116
+ ['lifecycle gate authority', 'stage completion decision', 'sync-back apply decision', 'ship readiness pass']
117
+ ),
118
+ materialPack(
119
+ 'performance-risk',
120
+ ['performance_planning', 'context_curation'],
121
+ 'Planning checks for token, context, IO, runtime, and validation cost risks.',
122
+ ['plan', 'tasks'],
123
+ ['performance', 'token', 'context', 'latency', 'cost', '性能'],
124
+ 'summary_only',
125
+ 'skill_agent_eval',
126
+ 'sdd_runtime_contract',
127
+ 'tiny',
128
+ ['performance risk note', 'context budget note'],
129
+ ['lifecycle gate authority', 'stage completion decision', 'sync-back apply decision', 'ship readiness pass']
130
+ ),
131
+ materialPack(
132
+ 'verification-design',
133
+ ['verification_design', 'evidence_collection'],
134
+ 'Acceptance-to-evidence design patterns for verify.md and runtime evidence handoff.',
135
+ ['verifies', 'test', 'verify'],
136
+ ['verify', 'evidence', 'validation', 'acceptance', '验收'],
137
+ 'route_when_triggered',
138
+ 'verify_contract',
139
+ 'sdd_runtime_contract',
140
+ 'small',
141
+ ['verification matrix', 'evidence requirement'],
142
+ ['lifecycle gate authority', 'stage completion decision', 'sync-back apply decision', 'ship readiness pass']
143
+ ),
144
+ materialPack(
145
+ 'sync-back-risk',
146
+ ['sync_back_risk_review', 'release_summary'],
147
+ 'Risk checks for applying semantic completion back into tasks and release state.',
148
+ ['sync-back', 'ship'],
149
+ ['sync-back', 'ship', 'release', 'apply', '发布'],
150
+ 'summary_only',
151
+ 'governance_policy',
152
+ 'sdd_runtime_contract',
153
+ 'tiny',
154
+ ['apply risk note', 'release readiness concern'],
155
+ ['lifecycle gate authority', 'stage completion decision', 'sync-back apply decision', 'ship readiness pass']
156
+ ),
157
+ professionalMaterialPack('baseline-solution-design', 'solution-design', 'Problem framing, option tradeoff, scope boundary, and success criteria review.', ['spec', 'plan'], ['solution', 'scope', 'tradeoff', 'goal', '方案'], ['problem framing', 'option tradeoff', 'scope boundary'], 'small'),
158
+ professionalMaterialPack('baseline-architecture-design', 'architecture-design', 'System boundary, component responsibility, integration, and runtime constraint review.', ['plan', 'tasks'], ['architecture', 'boundary', 'integration', 'component', '架构'], ['architecture decision note', 'component boundary note', 'handoff risk'], 'small'),
159
+ professionalMaterialPack('baseline-backend-engineering', 'backend-engineering', 'API, service, domain logic, error handling, and backend validation review.', ['plan', 'tasks', 'do', 'test'], ['backend', 'api', 'service', 'domain', '后端'], ['backend implementation note', 'API risk note', 'validation need'], 'small'),
160
+ professionalMaterialPack('baseline-frontend-engineering', 'frontend-engineering', 'Component boundary, UI state, browser behavior, accessibility, and frontend validation review.', ['plan', 'tasks', 'do', 'test'], ['frontend', 'component', 'browser', 'accessibility', '前端'], ['frontend implementation note', 'interaction state risk', 'browser validation need'], 'small'),
161
+ professionalMaterialPack('baseline-db-data-engineering', 'db-data-engineering', 'Schema, query, migration, data integrity, rollback, and data-safety review.', ['plan', 'tasks', 'do', 'test', 'ship'], ['database', 'schema', 'migration', 'query', '数据'], ['data safety note', 'migration risk', 'rollback consideration'], 'small'),
162
+ professionalMaterialPack('baseline-testing-quality-engineering', 'testing-quality-engineering', 'Acceptance coverage, test strategy, evidence quality, and regression-risk review.', ['verifies', 'test', 'verify'], ['test', 'quality', 'coverage', 'acceptance', '测试'], ['test strategy', 'coverage gap', 'evidence requirement'], 'small'),
163
+ professionalMaterialPack('baseline-security-engineering', 'security-engineering', 'Trust boundary, secret handling, permissions, abuse case, and security evidence review.', ['spec', 'plan', 'tasks', 'do', 'test', 'ship'], ['security', 'secret', 'permission', 'auth', '安全'], ['security risk note', 'abuse case', 'security evidence requirement'], 'small'),
164
+ professionalMaterialPack('baseline-performance-engineering', 'performance-engineering', 'Hot path, latency, resource use, benchmark, and capacity-risk review.', ['plan', 'tasks', 'do', 'test', 'ship'], ['performance', 'latency', 'resource', 'benchmark', '性能'], ['performance risk note', 'benchmark need', 'capacity consideration'], 'small'),
165
+ professionalMaterialPack('baseline-observability-engineering', 'observability-engineering', 'Logging, metrics, tracing, diagnostic signal, and operator-readiness review.', ['plan', 'tasks', 'do', 'test', 'ship'], ['observability', 'logging', 'metrics', 'tracing', '可观测'], ['logging/metrics/tracing need', 'diagnostic gap', 'operability note'], 'small'),
166
+ professionalMaterialPack('baseline-release-engineering', 'release-engineering', 'Release scope, CI state, deployment risk, rollback, and readiness review.', ['tasks', 'test', 'sync-back', 'ship'], ['release', 'ci', 'deploy', 'rollback', '发布'], ['release readiness note', 'deployment risk', 'ship blocker'], 'small'),
167
+ professionalMaterialPack('baseline-ui-ux-product-design', 'ui-ux-product-design', 'User journey, interaction state, UX acceptance, accessibility, and design evidence review.', ['spec', 'plan', 'tasks', 'do', 'test'], ['ui', 'ux', 'design', 'figma', '交互'], ['UX acceptance note', 'interaction gap', 'design evidence requirement'], 'small')
168
+ ];
169
+
170
+ const CAPABILITIES: AgentCapabilityCatalogEntry[] = [
171
+ workflowCapability('cap.norm-discovery', 'norm_discovery', ['spec', 'plan', 'tasks'], ['user request', 'project docs', 'existing specs', 'affected files'], ['norm alignment finding', 'scope constraint'], 'advisory_only', ['compatibility', 'style', 'architecture'], ['project-norms'], 'project_context_pack'),
172
+ workflowCapability('cap.uncertainty-resolution', 'uncertainty_resolution', ['spec', 'plan'], ['user request', 'repo evidence', 'open gaps'], ['resolved assumption', 'question checkpoint', 'blocked gap'], 'advisory_only', ['ambiguous', 'high_risk'], ['uncertainty-map'], 'harness_learning'),
173
+ workflowCapability('cap.performance-planning', 'performance_planning', ['plan', 'tasks'], ['target design', 'runtime path', 'context usage', 'validation cost'], ['performance impact note', 'token risk note', 'validation cost control'], 'advisory_only', ['performance', 'context_budget', 'token_risk'], ['performance-risk'], 'skill_agent_eval'),
174
+ workflowCapability('cap.verification-design', 'verification_design', ['verifies', 'test', 'verify'], ['tasks.md', 'verify.md', 'acceptance refs', 'runtime evidence'], ['verification matrix', 'evidence requirement', 'policy boundary'], 'gate_evidence', ['acceptance', 'evidence', 'policy'], ['verification-design'], 'verify_contract'),
175
+ workflowCapability('cap.evidence-collection', 'evidence_collection', ['test', 'do', 'verify'], ['validation command', 'artifact refs', 'run state'], ['command evidence', 'artifact ref', 'provenance ref'], 'validation_runner', ['validation', 'runtime_evidence'], ['verification-design'], 'test_runtime'),
176
+ workflowCapability('cap.sync-back-risk-review', 'sync_back_risk_review', ['sync-back'], ['verify decision', 'sync-back proposal', 'tasks.md'], ['apply risk note', 'approval requirement'], 'gate_evidence', ['shared_state', 'semantic_update'], ['sync-back-risk'], 'governance_policy'),
177
+ workflowCapability('cap.release-summary', 'release_summary', ['ship'], ['task status', 'doctor report', 'pack output', 'git state'], ['release readiness summary', 'blocked release gap'], 'advisory_only', ['release', 'external_state'], ['sync-back-risk'], 'governance_policy'),
178
+ workflowCapability('cap.context-curation', 'context_curation', ['spec', 'plan', 'do', 'verify', 'ship'], ['material packs', 'context budget', 'run summaries'], ['context pack selection', 'excluded material list'], 'advisory_only', ['context_budget', 'prompt_bloat'], ['project-norms', 'uncertainty-map', 'performance-risk'], 'project_context_pack'),
179
+ professionalCapability('cap.solution-design', 'solution-design', ['spec', 'plan'], ['user goal', 'constraints', 'success criteria'], ['problem framing', 'solution option tradeoff', 'scope boundary'], ['architecture', 'ambiguous'], ['baseline-solution-design', 'project-norms', 'uncertainty-map']),
180
+ professionalCapability('cap.architecture-design', 'architecture-design', ['plan', 'tasks'], ['system boundaries', 'integration points', 'runtime constraints'], ['architecture decision', 'component boundary', 'handoff risk'], ['architecture', 'source_boundary'], ['baseline-architecture-design', 'project-norms', 'performance-risk']),
181
+ professionalCapability('cap.backend-engineering', 'backend-engineering', ['plan', 'tasks', 'do', 'test'], ['API contracts', 'service logic', 'runtime path'], ['backend implementation note', 'API risk note', 'validation need'], ['api-schema', 'runtime_state'], ['baseline-backend-engineering', 'project-norms', 'verification-design']),
182
+ professionalCapability('cap.frontend-engineering', 'frontend-engineering', ['plan', 'tasks', 'do', 'test'], ['UI state', 'component boundary', 'browser behavior'], ['frontend implementation note', 'interaction state risk', 'browser validation need'], ['frontend', 'accessibility'], ['baseline-frontend-engineering', 'project-norms', 'verification-design']),
183
+ professionalCapability('cap.db-data-engineering', 'db-data-engineering', ['plan', 'tasks', 'do', 'test', 'ship'], ['schema change', 'query path', 'migration plan'], ['data safety note', 'migration risk', 'rollback consideration'], ['database', 'data-loss'], ['baseline-db-data-engineering', 'project-norms', 'verification-design']),
184
+ professionalCapability('cap.testing-quality-engineering', 'testing-quality-engineering', ['verifies', 'test', 'verify'], ['acceptance refs', 'test command', 'quality risk'], ['test strategy', 'coverage gap', 'evidence requirement'], ['validation', 'acceptance'], ['baseline-testing-quality-engineering', 'verification-design']),
185
+ professionalCapability('cap.security-engineering', 'security-engineering', ['spec', 'plan', 'tasks', 'do', 'test', 'ship'], ['trust boundary', 'secret handling', 'permission model'], ['security risk note', 'abuse case', 'security evidence requirement'], ['security', 'token_secret'], ['baseline-security-engineering', 'project-norms', 'verification-design']),
186
+ professionalCapability('cap.performance-engineering', 'performance-engineering', ['plan', 'tasks', 'do', 'test', 'ship'], ['hot path', 'resource use', 'latency constraint'], ['performance risk note', 'benchmark need', 'capacity consideration'], ['performance', 'context_budget'], ['baseline-performance-engineering', 'performance-risk', 'verification-design']),
187
+ professionalCapability('cap.observability-engineering', 'observability-engineering', ['plan', 'tasks', 'do', 'test', 'ship'], ['runtime signal', 'failure mode', 'operator need'], ['logging/metrics/tracing need', 'diagnostic gap', 'operability note'], ['observability', 'runtime_state'], ['baseline-observability-engineering', 'project-norms', 'verification-design']),
188
+ professionalCapability('cap.release-engineering', 'release-engineering', ['tasks', 'test', 'sync-back', 'ship'], ['release scope', 'CI state', 'rollback need'], ['release readiness note', 'deployment risk', 'ship blocker'], ['release', 'ci-build'], ['baseline-release-engineering', 'sync-back-risk', 'verification-design']),
189
+ professionalCapability('cap.ui-ux-product-design', 'ui-ux-product-design', ['spec', 'plan', 'tasks', 'do', 'test'], ['user journey', 'interaction state', 'design constraint'], ['UX acceptance note', 'interaction gap', 'design evidence requirement'], ['ui-ux', 'accessibility'], ['baseline-ui-ux-product-design', 'project-norms', 'uncertainty-map'])
190
+ ];
191
+
192
+ const COMMAND_MAPPINGS: CapabilityCommandMapping[] = [
193
+ { command: 'spec', requiredDomains: ['norm_discovery', 'uncertainty_resolution'], optionalDomains: ['context_curation'], forbiddenAuthority: ['validation_runner'], materialPolicy: 'summary_only' },
194
+ { command: 'plan', requiredDomains: ['norm_discovery', 'performance_planning'], optionalDomains: ['uncertainty_resolution', 'context_curation'], forbiddenAuthority: ['validation_runner'], materialPolicy: 'summary_only' },
195
+ { command: 'verifies', requiredDomains: ['verification_design'], optionalDomains: ['context_curation'], forbiddenAuthority: ['validation_runner'], materialPolicy: 'route_when_triggered' },
196
+ { command: 'test', requiredDomains: ['evidence_collection'], optionalDomains: ['verification_design'], forbiddenAuthority: [], materialPolicy: 'route_when_triggered' },
197
+ { command: 'verify', requiredDomains: ['verification_design', 'evidence_collection'], optionalDomains: ['context_curation'], forbiddenAuthority: [], materialPolicy: 'route_when_triggered' },
198
+ { command: 'sync-back', requiredDomains: ['sync_back_risk_review'], optionalDomains: ['context_curation'], forbiddenAuthority: ['validation_runner'], materialPolicy: 'summary_only' },
199
+ { command: 'ship', requiredDomains: ['release_summary', 'sync_back_risk_review'], optionalDomains: ['context_curation'], forbiddenAuthority: ['validation_runner'], materialPolicy: 'summary_only' }
200
+ ];
201
+
202
+ export async function inspectAgentCapabilityCatalog(projectRoot: string): Promise<AgentCapabilityCatalog> {
203
+ await assertProjectConfigReadable(projectRoot);
204
+ return {
205
+ version: AGENT_CAPABILITY_CATALOG_CONTRACT_VERSION,
206
+ capabilities: [...CAPABILITIES].sort((left, right) => left.id.localeCompare(right.id)),
207
+ materialPacks: [...MATERIAL_PACKS].sort((left, right) => left.id.localeCompare(right.id)),
208
+ commandMappings: [...COMMAND_MAPPINGS].sort((left, right) => left.command.localeCompare(right.command))
209
+ };
210
+ }
211
+
212
+ export async function validateAgentCapabilityCatalog(projectRoot: string): Promise<AgentCapabilityCatalogValidation> {
213
+ const catalog = await inspectAgentCapabilityCatalog(projectRoot);
214
+ const issues = validateCatalog(catalog);
215
+ return {
216
+ version: AGENT_CAPABILITY_CATALOG_CONTRACT_VERSION,
217
+ valid: issues.length === 0,
218
+ issues,
219
+ catalog
220
+ };
221
+ }
222
+
223
+ function workflowCapability(id: string, domain: WorkflowCapabilityDomain, stages: AgentCapabilityStage[], inputs: string[], outputs: string[], authority: AgentCapabilityAuthority, riskTags: string[], materialPackIds: string[], sourceId: string): AgentCapabilityCatalogEntry {
224
+ return capability(id, domain, 'workflow', stages, inputs, outputs, authority, riskTags, materialPackIds, sourceId);
225
+ }
226
+
227
+ function professionalCapability(id: string, domain: ProfessionalCapabilityDomain, stages: AgentCapabilityStage[], inputs: string[], outputs: string[], riskTags: string[], materialPackIds: string[]): AgentCapabilityCatalogEntry {
228
+ return capability(id, domain, 'professional', stages, inputs, outputs, 'advisory_only', riskTags, materialPackIds, 'sdd_professional_baseline');
229
+ }
230
+
231
+ function capability(id: string, domain: AgentCapabilityDomain, domainGroup: AgentCapabilityDomainGroup, stages: AgentCapabilityStage[], inputs: string[], outputs: string[], authority: AgentCapabilityAuthority, riskTags: string[], materialPackIds: string[], sourceId: string): AgentCapabilityCatalogEntry {
232
+ return {
233
+ version: AGENT_CAPABILITY_CATALOG_CONTRACT_VERSION,
234
+ id,
235
+ domain,
236
+ domainGroup,
237
+ stages,
238
+ inputs,
239
+ outputs,
240
+ authority,
241
+ materialPolicy: capabilityMaterialPolicy(authority),
242
+ evidenceExpectation: capabilityEvidenceExpectation(authority),
243
+ routing: {
244
+ riskTags,
245
+ projectStackTags: projectStackTagsForDomain(domain),
246
+ confidenceThreshold: 0.65,
247
+ materialPackIds
248
+ },
249
+ provenance: {
250
+ sourceId,
251
+ sourceVersion: '0.3.0',
252
+ quarantineRequired: false
253
+ }
254
+ };
255
+ }
256
+
257
+ function capabilityMaterialPolicy(authority: AgentCapabilityAuthority): AgentCapabilityMaterialPolicy {
258
+ return authority === 'validation_runner' ? 'runtime_evidence_required' : 'route_baseline_pack';
259
+ }
260
+
261
+ function capabilityEvidenceExpectation(authority: AgentCapabilityAuthority): AgentCapabilityEvidenceExpectation {
262
+ if (authority === 'validation_runner' || authority === 'gate_evidence') {
263
+ return 'accepted_runtime_evidence';
264
+ }
265
+ return 'candidate_evidence';
266
+ }
267
+
268
+ function projectStackTagsForDomain(domain: AgentCapabilityDomain): string[] {
269
+ if (domain === 'frontend-engineering' || domain === 'ui-ux-product-design') {
270
+ return ['frontend', 'browser', 'component', 'tsx', 'jsx', 'css'];
271
+ }
272
+ if (domain === 'backend-engineering') {
273
+ return ['backend', 'api', 'controller', 'service', 'java', 'go', 'python'];
274
+ }
275
+ if (domain === 'db-data-engineering') {
276
+ return ['sql', 'database', 'migration', 'prisma'];
277
+ }
278
+ if (domain === 'testing-quality-engineering') {
279
+ return ['test', 'spec', 'playwright', 'vitest', 'jest'];
280
+ }
281
+ if (domain === 'security-engineering') {
282
+ return ['security', 'auth', 'secret', 'permission'];
283
+ }
284
+ if (domain === 'performance-engineering') {
285
+ return ['performance', 'latency', 'benchmark', 'resource'];
286
+ }
287
+ if (domain === 'observability-engineering') {
288
+ return ['observability', 'logging', 'metrics', 'tracing'];
289
+ }
290
+ if (domain === 'release-engineering') {
291
+ return ['release', 'ci', 'deploy', 'rollback'];
292
+ }
293
+ return ['generic'];
294
+ }
295
+
296
+ function materialPack(id: string, domains: AgentCapabilityDomain[], summary: string, triggerStages: AgentCapabilityStage[], triggerKeywords: string[], loadPolicy: MaterialPackLoadPolicy, sourceId: string, sourceKind: MaterialPackSourceKind, contextBudget: AgentCapabilityMaterialPack['contextBudget'], expectedOutputs: string[], forbiddenUses: string[]): AgentCapabilityMaterialPack {
297
+ return {
298
+ id,
299
+ summary,
300
+ domains,
301
+ triggerStages,
302
+ triggerKeywords,
303
+ loadPolicy,
304
+ sourceId,
305
+ sourceVersion: '0.4.1',
306
+ sourceKind,
307
+ contextBudget,
308
+ expectedOutputs,
309
+ forbiddenUses
310
+ };
311
+ }
312
+
313
+ function professionalMaterialPack(id: string, domain: ProfessionalCapabilityDomain, summary: string, triggerStages: AgentCapabilityStage[], triggerKeywords: string[], expectedOutputs: string[], contextBudget: AgentCapabilityMaterialPack['contextBudget']): AgentCapabilityMaterialPack {
314
+ return materialPack(
315
+ id,
316
+ [domain],
317
+ summary,
318
+ triggerStages,
319
+ triggerKeywords,
320
+ 'route_when_triggered',
321
+ 'sdd_professional_baseline',
322
+ 'sdd_native_baseline',
323
+ contextBudget,
324
+ expectedOutputs,
325
+ ['lifecycle gate authority', 'stage completion decision', 'sync-back apply decision', 'ship readiness pass', 'host-specific skill projection']
326
+ );
327
+ }
328
+
329
+
330
+ function validateCatalog(catalog: AgentCapabilityCatalog): string[] {
331
+ const issues: string[] = [];
332
+ const packById = new Map(catalog.materialPacks.map((pack) => [pack.id, pack]));
333
+ const packIds = new Set(packById.keys());
334
+ const domains = new Set(catalog.capabilities.map((entry) => entry.domain));
335
+ const professionalDomains = new Set(catalog.capabilities.filter((entry) => entry.domainGroup === 'professional').map((entry) => entry.domain));
336
+ const professionalBaselineDomains = new Set<ProfessionalCapabilityDomain>();
337
+ for (const pack of catalog.materialPacks) {
338
+ if (pack.domains.length === 0) {
339
+ issues.push(`${pack.id}: domains are required.`);
340
+ }
341
+ if (pack.triggerStages.length === 0 || pack.triggerKeywords.length === 0) {
342
+ issues.push(`${pack.id}: trigger stages and keywords are required.`);
343
+ }
344
+ if (!pack.sourceId || !pack.sourceVersion) {
345
+ issues.push(`${pack.id}: source provenance is required.`);
346
+ }
347
+ if (pack.expectedOutputs.length === 0 || pack.forbiddenUses.length === 0) {
348
+ issues.push(`${pack.id}: expected outputs and forbidden uses are required.`);
349
+ }
350
+ if (pack.sourceKind === 'sdd_native_baseline') {
351
+ if (!pack.forbiddenUses.includes('host-specific skill projection')) {
352
+ issues.push(`${pack.id}: SDD-native baseline packs must forbid host-specific skill projection.`);
353
+ }
354
+ for (const domain of pack.domains) {
355
+ if (isRequiredProfessionalDomain(domain)) {
356
+ professionalBaselineDomains.add(domain);
357
+ } else {
358
+ issues.push(`${pack.id}: SDD-native baseline packs must target professional domains.`);
359
+ }
360
+ }
361
+ }
362
+ }
363
+ for (const capability of catalog.capabilities) {
364
+ if (capability.stages.length === 0) {
365
+ issues.push(`${capability.id}: stages are required.`);
366
+ }
367
+ if (capability.inputs.length === 0 || capability.outputs.length === 0) {
368
+ issues.push(`${capability.id}: inputs and outputs are required.`);
369
+ }
370
+ if (!capability.materialPolicy || !capability.evidenceExpectation) {
371
+ issues.push(`${capability.id}: material policy and evidence expectation are required.`);
372
+ }
373
+ if (capability.routing.projectStackTags.length === 0) {
374
+ issues.push(`${capability.id}: project stack tags are required.`);
375
+ }
376
+ if (capability.routing.confidenceThreshold <= 0 || capability.routing.confidenceThreshold > 1) {
377
+ issues.push(`${capability.id}: confidence threshold must be within (0, 1].`);
378
+ }
379
+ for (const packId of capability.routing.materialPackIds) {
380
+ if (!packIds.has(packId)) {
381
+ issues.push(`${capability.id}: unknown material pack ${packId}.`);
382
+ }
383
+ }
384
+ if (capability.domainGroup === 'professional') {
385
+ if (capability.authority !== 'advisory_only') {
386
+ issues.push(`${capability.id}: professional capabilities must remain advisory_only.`);
387
+ }
388
+ const hasDomainBaselinePack = capability.routing.materialPackIds.some((packId) => {
389
+ const pack = packById.get(packId);
390
+ return pack?.sourceKind === 'sdd_native_baseline' && pack.domains.includes(capability.domain);
391
+ });
392
+ if (!hasDomainBaselinePack) {
393
+ issues.push(`${capability.id}: professional capability must reference an SDD-native baseline pack for ${capability.domain}.`);
394
+ }
395
+ }
396
+ }
397
+ for (const domain of REQUIRED_PROFESSIONAL_CAPABILITY_DOMAINS) {
398
+ if (!professionalDomains.has(domain)) {
399
+ issues.push(`required professional domain ${domain} is missing.`);
400
+ }
401
+ if (!professionalBaselineDomains.has(domain)) {
402
+ issues.push(`required professional domain ${domain} has no SDD-native baseline pack.`);
403
+ }
404
+ }
405
+ for (const mapping of catalog.commandMappings) {
406
+ for (const domain of mapping.requiredDomains) {
407
+ if (!domains.has(domain)) {
408
+ issues.push(`${mapping.command}: required domain ${domain} is missing.`);
409
+ }
410
+ }
411
+ if (mapping.materialPolicy === 'never_inline') {
412
+ issues.push(`${mapping.command}: command mappings may not request never_inline as the active loading policy.`);
413
+ }
414
+ }
415
+ return issues;
416
+ }
417
+
418
+ function isRequiredProfessionalDomain(domain: AgentCapabilityDomain): domain is ProfessionalCapabilityDomain {
419
+ return REQUIRED_PROFESSIONAL_CAPABILITY_DOMAINS.includes(domain as ProfessionalCapabilityDomain);
420
+ }
421
+
422
+ async function assertProjectConfigReadable(projectRoot: string): Promise<void> {
423
+ const configPath = getProjectConfigPath(projectRoot);
424
+ const raw = await readFile(configPath, 'utf8');
425
+ parseProjectConfig(raw, configPath);
426
+ }