sdd-agent-platform 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (698) hide show
  1. package/README.md +24 -28
  2. package/node_modules/@sdd-agent-platform/core/dist/ai-tools.js +84 -103
  3. package/node_modules/@sdd-agent-platform/core/dist/ai-tools.js.map +1 -1
  4. package/node_modules/@sdd-agent-platform/core/dist/config/init-project.d.ts +10 -6
  5. package/node_modules/@sdd-agent-platform/core/dist/config/init-project.js +7 -8
  6. package/node_modules/@sdd-agent-platform/core/dist/config/init-project.js.map +1 -1
  7. package/node_modules/@sdd-agent-platform/core/dist/config/project-config.d.ts +3 -1
  8. package/node_modules/@sdd-agent-platform/core/dist/config/project-config.js +7 -3
  9. package/node_modules/@sdd-agent-platform/core/dist/config/project-config.js.map +1 -1
  10. package/node_modules/@sdd-agent-platform/core/dist/config/starter-documents.d.ts +0 -1
  11. package/node_modules/@sdd-agent-platform/core/dist/config/starter-documents.js +374 -421
  12. package/node_modules/@sdd-agent-platform/core/dist/config/starter-documents.js.map +1 -1
  13. package/node_modules/@sdd-agent-platform/core/dist/context/build-package.d.ts +1 -1
  14. package/node_modules/@sdd-agent-platform/core/dist/context/build-package.js +7 -19
  15. package/node_modules/@sdd-agent-platform/core/dist/context/build-package.js.map +1 -1
  16. package/node_modules/@sdd-agent-platform/core/dist/contracts.d.ts +7 -1
  17. package/node_modules/@sdd-agent-platform/core/dist/contracts.js +6 -0
  18. package/node_modules/@sdd-agent-platform/core/dist/contracts.js.map +1 -1
  19. package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/document-chain.js +2 -12
  20. package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/document-chain.js.map +1 -1
  21. package/node_modules/@sdd-agent-platform/core/dist/doctor/doctor.js +1 -18
  22. package/node_modules/@sdd-agent-platform/core/dist/doctor/doctor.js.map +1 -1
  23. package/node_modules/@sdd-agent-platform/core/dist/evidence/lookup.d.ts +1 -1
  24. package/node_modules/@sdd-agent-platform/core/dist/evidence/lookup.js +1 -1
  25. package/node_modules/@sdd-agent-platform/core/dist/evidence/lookup.js.map +1 -1
  26. package/node_modules/@sdd-agent-platform/core/dist/evidence-runtime/contracts.d.ts +0 -1
  27. package/node_modules/@sdd-agent-platform/core/dist/evidence-runtime/coordination.js +110 -0
  28. package/node_modules/@sdd-agent-platform/core/dist/evidence-runtime/coordination.js.map +1 -0
  29. package/node_modules/@sdd-agent-platform/core/dist/execution/host-invocation.js +83 -83
  30. package/node_modules/@sdd-agent-platform/core/dist/instructions.d.ts +1 -1
  31. package/node_modules/@sdd-agent-platform/core/dist/instructions.js +37 -80
  32. package/node_modules/@sdd-agent-platform/core/dist/instructions.js.map +1 -1
  33. package/node_modules/@sdd-agent-platform/core/dist/lifecycle/ship.js +58 -68
  34. package/node_modules/@sdd-agent-platform/core/dist/lifecycle/ship.js.map +1 -1
  35. package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph/contracts.d.ts +159 -0
  36. package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph/contracts.js +7 -0
  37. package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph/contracts.js.map +1 -0
  38. package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph/kernel.d.ts +16 -0
  39. package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph/kernel.js +461 -0
  40. package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph/kernel.js.map +1 -0
  41. package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph.d.ts +2 -0
  42. package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph.js +3 -0
  43. package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph.js.map +1 -0
  44. package/node_modules/@sdd-agent-platform/core/dist/orchestration/contracts.d.ts +1 -1
  45. package/node_modules/@sdd-agent-platform/core/dist/orchestration/runtime.js +21 -28
  46. package/node_modules/@sdd-agent-platform/core/dist/orchestration/runtime.js.map +1 -1
  47. package/node_modules/@sdd-agent-platform/core/dist/registries/agent-registry.js +124 -40
  48. package/node_modules/@sdd-agent-platform/core/dist/registries/agent-registry.js.map +1 -1
  49. package/node_modules/@sdd-agent-platform/core/dist/registries/command-team-runtime.d.ts +1 -1
  50. package/node_modules/@sdd-agent-platform/core/dist/registries/command-team-runtime.js +6 -13
  51. package/node_modules/@sdd-agent-platform/core/dist/registries/command-team-runtime.js.map +1 -1
  52. package/node_modules/@sdd-agent-platform/core/dist/registries/plan-scout-domains.d.ts +13 -0
  53. package/node_modules/@sdd-agent-platform/core/dist/registries/plan-scout-domains.js +76 -0
  54. package/node_modules/@sdd-agent-platform/core/dist/registries/plan-scout-domains.js.map +1 -0
  55. package/node_modules/@sdd-agent-platform/core/dist/registries/skill-capabilities.js +7 -7
  56. package/node_modules/@sdd-agent-platform/core/dist/registries/skill-capabilities.js.map +1 -1
  57. package/node_modules/@sdd-agent-platform/core/dist/registries/tool-capabilities.js +6 -6
  58. package/node_modules/@sdd-agent-platform/core/dist/registries/tool-capabilities.js.map +1 -1
  59. package/node_modules/@sdd-agent-platform/core/dist/registries/workflow-gates.d.ts +1 -1
  60. package/node_modules/@sdd-agent-platform/core/dist/registries/workflow-gates.js +18 -18
  61. package/node_modules/@sdd-agent-platform/core/dist/registries/workflow-gates.js.map +1 -1
  62. package/node_modules/@sdd-agent-platform/core/dist/risk/consumer-diagnostics.js +2 -1
  63. package/node_modules/@sdd-agent-platform/core/dist/risk/consumer-diagnostics.js.map +1 -1
  64. package/node_modules/@sdd-agent-platform/core/dist/risk/contracts.d.ts +2 -2
  65. package/node_modules/@sdd-agent-platform/core/dist/risk/kernel.js +7 -7
  66. package/node_modules/@sdd-agent-platform/core/dist/risk/kernel.js.map +1 -1
  67. package/node_modules/@sdd-agent-platform/core/dist/risk/legacy-adapters.js +12 -27
  68. package/node_modules/@sdd-agent-platform/core/dist/risk/legacy-adapters.js.map +1 -1
  69. package/node_modules/@sdd-agent-platform/core/dist/risk/workflow-gates.js +6 -6
  70. package/node_modules/@sdd-agent-platform/core/dist/risk/workflow-gates.js.map +1 -1
  71. package/node_modules/@sdd-agent-platform/core/dist/router/agent-runtime-config.js +1 -1
  72. package/node_modules/@sdd-agent-platform/core/dist/router/agent-runtime-config.js.map +1 -1
  73. package/node_modules/@sdd-agent-platform/core/dist/router/routing.js +2 -4
  74. package/node_modules/@sdd-agent-platform/core/dist/router/routing.js.map +1 -1
  75. package/node_modules/@sdd-agent-platform/core/dist/router/runtime-import.d.ts +28 -0
  76. package/node_modules/@sdd-agent-platform/core/dist/router/runtime-import.js +383 -0
  77. package/node_modules/@sdd-agent-platform/core/dist/router/runtime-import.js.map +1 -0
  78. package/node_modules/@sdd-agent-platform/core/dist/router/stage-route-binding.d.ts +37 -0
  79. package/node_modules/@sdd-agent-platform/core/dist/router/stage-route-binding.js +227 -0
  80. package/node_modules/@sdd-agent-platform/core/dist/router/stage-route-binding.js.map +1 -0
  81. package/node_modules/@sdd-agent-platform/core/dist/router.d.ts +1 -0
  82. package/node_modules/@sdd-agent-platform/core/dist/router.js +1 -0
  83. package/node_modules/@sdd-agent-platform/core/dist/router.js.map +1 -1
  84. package/node_modules/@sdd-agent-platform/core/dist/run-state/artifacts.d.ts +16 -0
  85. package/node_modules/@sdd-agent-platform/core/dist/run-state/artifacts.js +6 -0
  86. package/node_modules/@sdd-agent-platform/core/dist/run-state/artifacts.js.map +1 -1
  87. package/node_modules/@sdd-agent-platform/core/dist/run-state/model.d.ts +20 -0
  88. package/node_modules/@sdd-agent-platform/core/dist/run-state/run-state.js +7 -7
  89. package/node_modules/@sdd-agent-platform/core/dist/run-state/run-state.js.map +1 -1
  90. package/node_modules/@sdd-agent-platform/core/dist/run-state/task-evidence.d.ts +1 -2
  91. package/node_modules/@sdd-agent-platform/core/dist/run-state/task-evidence.js +2 -9
  92. package/node_modules/@sdd-agent-platform/core/dist/run-state/task-evidence.js.map +1 -1
  93. package/node_modules/@sdd-agent-platform/core/dist/run-state/timing.d.ts +8 -0
  94. package/node_modules/@sdd-agent-platform/core/dist/run-state/timing.js +131 -0
  95. package/node_modules/@sdd-agent-platform/core/dist/run-state/timing.js.map +1 -0
  96. package/node_modules/@sdd-agent-platform/core/dist/runtime-analysis/build.js +1 -4
  97. package/node_modules/@sdd-agent-platform/core/dist/runtime-analysis/build.js.map +1 -1
  98. package/node_modules/@sdd-agent-platform/core/dist/runtime-analysis/findings.js +0 -39
  99. package/node_modules/@sdd-agent-platform/core/dist/runtime-analysis/findings.js.map +1 -1
  100. package/node_modules/@sdd-agent-platform/core/dist/runtime-analysis/model.d.ts +1 -17
  101. package/node_modules/@sdd-agent-platform/core/dist/runtime-paths.d.ts +10 -0
  102. package/node_modules/@sdd-agent-platform/core/dist/runtime-paths.js +65 -0
  103. package/node_modules/@sdd-agent-platform/core/dist/runtime-paths.js.map +1 -1
  104. package/node_modules/@sdd-agent-platform/core/dist/runtime-projection-p0.d.ts +64 -0
  105. package/node_modules/@sdd-agent-platform/core/dist/runtime-projection-p0.js +211 -0
  106. package/node_modules/@sdd-agent-platform/core/dist/runtime-projection-p0.js.map +1 -0
  107. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/artifact-depth.d.ts +14 -0
  108. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/artifact-depth.js +179 -0
  109. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/artifact-depth.js.map +1 -0
  110. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/task-parser.d.ts +5 -1
  111. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/task-parser.js +60 -22
  112. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/task-parser.js.map +1 -1
  113. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/task-rendering.js +2 -2
  114. package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/task-rendering.js.map +1 -1
  115. package/node_modules/@sdd-agent-platform/core/dist/spec-entry.js +40 -0
  116. package/node_modules/@sdd-agent-platform/core/dist/spec-entry.js.map +1 -0
  117. package/node_modules/@sdd-agent-platform/core/dist/spec-manager-contracts.d.ts +12 -0
  118. package/node_modules/@sdd-agent-platform/core/dist/spec-manager-contracts.js +2 -0
  119. package/node_modules/@sdd-agent-platform/core/dist/spec-manager-contracts.js.map +1 -0
  120. package/node_modules/@sdd-agent-platform/core/dist/stage-artifacts.d.ts +55 -0
  121. package/node_modules/@sdd-agent-platform/core/dist/stage-artifacts.js +315 -0
  122. package/node_modules/@sdd-agent-platform/core/dist/stage-artifacts.js.map +1 -0
  123. package/node_modules/@sdd-agent-platform/core/dist/stage-collaboration-contracts.d.ts +55 -0
  124. package/node_modules/@sdd-agent-platform/core/dist/stage-collaboration-contracts.js +238 -0
  125. package/node_modules/@sdd-agent-platform/core/dist/stage-collaboration-contracts.js.map +1 -0
  126. package/node_modules/@sdd-agent-platform/core/dist/stage-collaboration.d.ts +736 -0
  127. package/node_modules/@sdd-agent-platform/core/dist/stage-collaboration.js +4018 -0
  128. package/node_modules/@sdd-agent-platform/core/dist/stage-collaboration.js.map +1 -0
  129. package/node_modules/@sdd-agent-platform/core/dist/stage-runtime/runtime.js +8 -1
  130. package/node_modules/@sdd-agent-platform/core/dist/stage-runtime/runtime.js.map +1 -1
  131. package/node_modules/@sdd-agent-platform/core/dist/status/project-status.js +25 -1
  132. package/node_modules/@sdd-agent-platform/core/dist/status/project-status.js.map +1 -1
  133. package/node_modules/@sdd-agent-platform/core/dist/storage/runtime-store.d.ts +170 -18
  134. package/node_modules/@sdd-agent-platform/core/dist/storage/runtime-store.js +597 -85
  135. package/node_modules/@sdd-agent-platform/core/dist/storage/runtime-store.js.map +1 -1
  136. package/node_modules/@sdd-agent-platform/core/dist/sync-back/apply.d.ts +1 -17
  137. package/node_modules/@sdd-agent-platform/core/dist/sync-back/apply.js +1 -242
  138. package/node_modules/@sdd-agent-platform/core/dist/sync-back/apply.js.map +1 -1
  139. package/node_modules/@sdd-agent-platform/core/dist/sync-back/inspect.d.ts +1 -110
  140. package/node_modules/@sdd-agent-platform/core/dist/sync-back/inspect.js +1 -496
  141. package/node_modules/@sdd-agent-platform/core/dist/sync-back/inspect.js.map +1 -1
  142. package/node_modules/@sdd-agent-platform/core/dist/sync-back.d.ts +1 -2
  143. package/node_modules/@sdd-agent-platform/core/dist/sync-back.js +1 -2
  144. package/node_modules/@sdd-agent-platform/core/dist/sync-back.js.map +1 -1
  145. package/node_modules/@sdd-agent-platform/core/dist/task-execution-contract.d.ts +167 -0
  146. package/node_modules/@sdd-agent-platform/core/dist/task-execution-contract.js +377 -0
  147. package/node_modules/@sdd-agent-platform/core/dist/task-execution-contract.js.map +1 -0
  148. package/node_modules/@sdd-agent-platform/core/dist/test-support/fixtures.js +329 -314
  149. package/node_modules/@sdd-agent-platform/core/dist/test-support/fixtures.js.map +1 -1
  150. package/node_modules/@sdd-agent-platform/core/dist/test-support/run-state.d.ts +1 -0
  151. package/node_modules/@sdd-agent-platform/core/dist/test-support/run-state.js +31 -0
  152. package/node_modules/@sdd-agent-platform/core/dist/test-support/run-state.js.map +1 -1
  153. package/node_modules/@sdd-agent-platform/core/dist/truth-reconciliation.d.ts +44 -0
  154. package/node_modules/@sdd-agent-platform/core/dist/truth-reconciliation.js +135 -0
  155. package/node_modules/@sdd-agent-platform/core/dist/truth-reconciliation.js.map +1 -0
  156. package/node_modules/@sdd-agent-platform/core/dist/tsconfig.tsbuildinfo +1 -1
  157. package/node_modules/@sdd-agent-platform/core/dist/verification/goal-verify.d.ts +0 -49
  158. package/node_modules/@sdd-agent-platform/core/dist/verification/goal-verify.js +1 -545
  159. package/node_modules/@sdd-agent-platform/core/dist/verification/goal-verify.js.map +1 -1
  160. package/node_modules/@sdd-agent-platform/core/dist/verification/rendering.d.ts +5 -7
  161. package/node_modules/@sdd-agent-platform/core/dist/verification/rendering.js +15 -55
  162. package/node_modules/@sdd-agent-platform/core/dist/verification/rendering.js.map +1 -1
  163. package/node_modules/@sdd-agent-platform/core/dist/verification/single-task-loop.js +1 -40
  164. package/node_modules/@sdd-agent-platform/core/dist/verification/single-task-loop.js.map +1 -1
  165. package/node_modules/@sdd-agent-platform/core/dist/verification/task-evidence-judgment.d.ts +49 -0
  166. package/node_modules/@sdd-agent-platform/core/dist/verification/task-evidence-judgment.js +521 -0
  167. package/node_modules/@sdd-agent-platform/core/dist/verification/task-evidence-judgment.js.map +1 -0
  168. package/node_modules/@sdd-agent-platform/core/dist/verification/test-runtime.d.ts +12 -2
  169. package/node_modules/@sdd-agent-platform/core/dist/verification/test-runtime.js +247 -112
  170. package/node_modules/@sdd-agent-platform/core/dist/verification/test-runtime.js.map +1 -1
  171. package/node_modules/@sdd-agent-platform/core/dist/verification/validation-cache.d.ts +26 -0
  172. package/node_modules/@sdd-agent-platform/core/dist/verification/validation-cache.js +73 -0
  173. package/node_modules/@sdd-agent-platform/core/dist/verification/validation-cache.js.map +1 -0
  174. package/node_modules/@sdd-agent-platform/core/dist/verification/verify-contract.d.ts +1 -1
  175. package/node_modules/@sdd-agent-platform/core/dist/verification/verify-contract.js +49 -72
  176. package/node_modules/@sdd-agent-platform/core/dist/verification/verify-contract.js.map +1 -1
  177. package/node_modules/@sdd-agent-platform/core/dist/verification.d.ts +3 -3
  178. package/node_modules/@sdd-agent-platform/core/dist/verification.js +2 -2
  179. package/node_modules/@sdd-agent-platform/core/dist/verification.js.map +1 -1
  180. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/evidence-packet.js +2 -7
  181. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/evidence-packet.js.map +1 -1
  182. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/hard-checks.js +0 -7
  183. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/hard-checks.js.map +1 -1
  184. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/policy.js +2 -4
  185. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/policy.js.map +1 -1
  186. package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/types.d.ts +3 -5
  187. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/latest-eligible-run.js +30 -4
  188. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/latest-eligible-run.js.map +1 -1
  189. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/migration-recovery.d.ts +40 -0
  190. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/migration-recovery.js +110 -0
  191. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/migration-recovery.js.map +1 -0
  192. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/repair-contract.d.ts +12 -0
  193. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/repair-contract.js +63 -0
  194. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/repair-contract.js.map +1 -0
  195. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/resolve-task-run.d.ts +21 -0
  196. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/resolve-task-run.js +95 -0
  197. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/resolve-task-run.js.map +1 -0
  198. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/resolve.d.ts +55 -5
  199. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/resolve.js +518 -36
  200. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/resolve.js.map +1 -1
  201. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/runtime-projections.d.ts +228 -0
  202. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/runtime-projections.js +452 -0
  203. package/node_modules/@sdd-agent-platform/core/dist/workflow-state/runtime-projections.js.map +1 -0
  204. package/node_modules/@sdd-agent-platform/core/package.json +6 -3
  205. package/node_modules/@sdd-agent-platform/core/src/ai-tools.test.ts +238 -137
  206. package/node_modules/@sdd-agent-platform/core/src/ai-tools.ts +84 -103
  207. package/node_modules/@sdd-agent-platform/core/src/artifacts/ingestion.test.ts +189 -189
  208. package/node_modules/@sdd-agent-platform/core/src/artifacts/ingestion.ts +222 -222
  209. package/node_modules/@sdd-agent-platform/core/src/artifacts/sdd-evidence.test.ts +28 -28
  210. package/node_modules/@sdd-agent-platform/core/src/artifacts/sdd-evidence.ts +302 -302
  211. package/node_modules/@sdd-agent-platform/core/src/artifacts/sdd-result.test.ts +181 -181
  212. package/node_modules/@sdd-agent-platform/core/src/artifacts/sdd-result.ts +231 -231
  213. package/node_modules/@sdd-agent-platform/core/src/artifacts/templates.ts +99 -99
  214. package/node_modules/@sdd-agent-platform/core/src/artifacts.ts +4 -4
  215. package/node_modules/@sdd-agent-platform/core/src/coding-facts/contracts.ts +79 -79
  216. package/node_modules/@sdd-agent-platform/core/src/coding-facts.ts +1 -1
  217. package/node_modules/@sdd-agent-platform/core/src/config/init-project.test.ts +314 -306
  218. package/node_modules/@sdd-agent-platform/core/src/config/init-project.ts +128 -120
  219. package/node_modules/@sdd-agent-platform/core/src/config/project-config.ts +265 -259
  220. package/node_modules/@sdd-agent-platform/core/src/config/project-detection.ts +147 -147
  221. package/node_modules/@sdd-agent-platform/core/src/config/starter-documents.ts +400 -445
  222. package/node_modules/@sdd-agent-platform/core/src/context/budget.ts +30 -30
  223. package/node_modules/@sdd-agent-platform/core/src/context/build-package.ts +305 -317
  224. package/node_modules/@sdd-agent-platform/core/src/context/command-summary.ts +45 -45
  225. package/node_modules/@sdd-agent-platform/core/src/context/context-build.test.ts +188 -188
  226. package/node_modules/@sdd-agent-platform/core/src/context/evidence-summary.ts +144 -144
  227. package/node_modules/@sdd-agent-platform/core/src/context/log-worker.ts +48 -48
  228. package/node_modules/@sdd-agent-platform/core/src/context/source-refs.ts +41 -41
  229. package/node_modules/@sdd-agent-platform/core/src/context-offload/contracts.ts +47 -47
  230. package/node_modules/@sdd-agent-platform/core/src/context-offload/runtime.test.ts +71 -71
  231. package/node_modules/@sdd-agent-platform/core/src/context-offload/runtime.ts +178 -178
  232. package/node_modules/@sdd-agent-platform/core/src/context-offload.ts +2 -2
  233. package/node_modules/@sdd-agent-platform/core/src/context.ts +6 -6
  234. package/node_modules/@sdd-agent-platform/core/src/contracts/issues.ts +13 -13
  235. package/node_modules/@sdd-agent-platform/core/src/contracts.test.ts +9 -9
  236. package/node_modules/@sdd-agent-platform/core/src/contracts.ts +121 -115
  237. package/node_modules/@sdd-agent-platform/core/src/delegation/delegation.test.ts +183 -183
  238. package/node_modules/@sdd-agent-platform/core/src/delegation/model.ts +23 -23
  239. package/node_modules/@sdd-agent-platform/core/src/delegation/queue.ts +58 -58
  240. package/node_modules/@sdd-agent-platform/core/src/delegation/run-state.ts +14 -14
  241. package/node_modules/@sdd-agent-platform/core/src/delegation/state-machine.ts +90 -90
  242. package/node_modules/@sdd-agent-platform/core/src/delegation/validation.ts +124 -124
  243. package/node_modules/@sdd-agent-platform/core/src/delegation.ts +26 -26
  244. package/node_modules/@sdd-agent-platform/core/src/doctor/checks/ai-entries.ts +28 -28
  245. package/node_modules/@sdd-agent-platform/core/src/doctor/checks/document-chain.ts +104 -112
  246. package/node_modules/@sdd-agent-platform/core/src/doctor/checks/local-run-index.ts +27 -27
  247. package/node_modules/@sdd-agent-platform/core/src/doctor/checks/project.ts +84 -84
  248. package/node_modules/@sdd-agent-platform/core/src/doctor/checks/registries.ts +252 -252
  249. package/node_modules/@sdd-agent-platform/core/src/doctor/checks/run-evidence.ts +330 -330
  250. package/node_modules/@sdd-agent-platform/core/src/doctor/checks/run-records.ts +79 -79
  251. package/node_modules/@sdd-agent-platform/core/src/doctor/checks/run-trust.ts +128 -128
  252. package/node_modules/@sdd-agent-platform/core/src/doctor/checks/runtime-contracts.ts +300 -300
  253. package/node_modules/@sdd-agent-platform/core/src/doctor/doctor.test.ts +627 -657
  254. package/node_modules/@sdd-agent-platform/core/src/doctor/doctor.ts +301 -318
  255. package/node_modules/@sdd-agent-platform/core/src/doctor/model.ts +13 -13
  256. package/node_modules/@sdd-agent-platform/core/src/doctor/summary.ts +11 -11
  257. package/node_modules/@sdd-agent-platform/core/src/doctor.ts +2 -2
  258. package/node_modules/@sdd-agent-platform/core/src/evidence/lookup.ts +80 -80
  259. package/node_modules/@sdd-agent-platform/core/src/evidence-runtime/contracts.ts +48 -49
  260. package/node_modules/@sdd-agent-platform/core/src/evidence-runtime.ts +1 -1
  261. package/node_modules/@sdd-agent-platform/core/src/execution/agent-execution-records.ts +195 -195
  262. package/node_modules/@sdd-agent-platform/core/src/execution/background-executor.test.ts +187 -187
  263. package/node_modules/@sdd-agent-platform/core/src/execution/background-executor.ts +305 -305
  264. package/node_modules/@sdd-agent-platform/core/src/execution/foreground-subagents.test.ts +97 -97
  265. package/node_modules/@sdd-agent-platform/core/src/execution/foreground-subagents.ts +453 -453
  266. package/node_modules/@sdd-agent-platform/core/src/execution/host-invocation.ts +225 -225
  267. package/node_modules/@sdd-agent-platform/core/src/execution/resident-worker.test.ts +132 -132
  268. package/node_modules/@sdd-agent-platform/core/src/execution/resident-worker.ts +436 -436
  269. package/node_modules/@sdd-agent-platform/core/src/execution/stage-team-runtime.test.ts +102 -102
  270. package/node_modules/@sdd-agent-platform/core/src/execution/stage-team-runtime.ts +271 -271
  271. package/node_modules/@sdd-agent-platform/core/src/execution/wave-executor.test.ts +111 -111
  272. package/node_modules/@sdd-agent-platform/core/src/execution/wave-executor.ts +231 -231
  273. package/node_modules/@sdd-agent-platform/core/src/execution.ts +5 -5
  274. package/node_modules/@sdd-agent-platform/core/src/governance/policy.test.ts +57 -57
  275. package/node_modules/@sdd-agent-platform/core/src/governance/policy.ts +175 -175
  276. package/node_modules/@sdd-agent-platform/core/src/governance.ts +1 -1
  277. package/node_modules/@sdd-agent-platform/core/src/instructions.test.ts +80 -49
  278. package/node_modules/@sdd-agent-platform/core/src/instructions.ts +38 -81
  279. package/node_modules/@sdd-agent-platform/core/src/lifecycle/decision-gate.test.ts +174 -174
  280. package/node_modules/@sdd-agent-platform/core/src/lifecycle/decision-gate.ts +373 -373
  281. package/node_modules/@sdd-agent-platform/core/src/lifecycle/rendering.ts +29 -29
  282. package/node_modules/@sdd-agent-platform/core/src/lifecycle/risk-signals.ts +146 -146
  283. package/node_modules/@sdd-agent-platform/core/src/lifecycle/ship.test.ts +47 -0
  284. package/node_modules/@sdd-agent-platform/core/src/lifecycle/ship.ts +255 -263
  285. package/node_modules/@sdd-agent-platform/core/src/lifecycle-graph/contracts.ts +179 -0
  286. package/node_modules/@sdd-agent-platform/core/src/lifecycle-graph/kernel.ts +522 -0
  287. package/node_modules/@sdd-agent-platform/core/src/lifecycle-graph.ts +2 -0
  288. package/node_modules/@sdd-agent-platform/core/src/lifecycle.ts +4 -4
  289. package/node_modules/@sdd-agent-platform/core/src/orchestration/contracts.ts +50 -50
  290. package/node_modules/@sdd-agent-platform/core/src/orchestration/index.ts +2 -2
  291. package/node_modules/@sdd-agent-platform/core/src/orchestration/runtime.ts +331 -342
  292. package/node_modules/@sdd-agent-platform/core/src/path-safety.test.ts +22 -22
  293. package/node_modules/@sdd-agent-platform/core/src/phase8-contracts.test.ts +243 -243
  294. package/node_modules/@sdd-agent-platform/core/src/phase8-projection-compat.test.ts +152 -153
  295. package/node_modules/@sdd-agent-platform/core/src/phase8-risk-kernel.test.ts +277 -277
  296. package/node_modules/@sdd-agent-platform/core/src/phase9-lifecycle-graph.test.ts +103 -0
  297. package/node_modules/@sdd-agent-platform/core/src/planning/task-graph.test.ts +88 -88
  298. package/node_modules/@sdd-agent-platform/core/src/planning/task-graph.ts +222 -222
  299. package/node_modules/@sdd-agent-platform/core/src/planning/wave-plan.test.ts +79 -79
  300. package/node_modules/@sdd-agent-platform/core/src/planning/wave-plan.ts +160 -160
  301. package/node_modules/@sdd-agent-platform/core/src/planning.ts +2 -2
  302. package/node_modules/@sdd-agent-platform/core/src/registries/agent-capability-catalog.ts +426 -426
  303. package/node_modules/@sdd-agent-platform/core/src/registries/agent-registry.ts +230 -146
  304. package/node_modules/@sdd-agent-platform/core/src/registries/agent-runtime-static.ts +142 -142
  305. package/node_modules/@sdd-agent-platform/core/src/registries/capability-sources.ts +253 -253
  306. package/node_modules/@sdd-agent-platform/core/src/registries/command-team-runtime.ts +302 -309
  307. package/node_modules/@sdd-agent-platform/core/src/registries/eval-learning-context.ts +246 -246
  308. package/node_modules/@sdd-agent-platform/core/src/registries/plan-scout-domains.ts +89 -0
  309. package/node_modules/@sdd-agent-platform/core/src/registries/query-status.ts +119 -119
  310. package/node_modules/@sdd-agent-platform/core/src/registries/registries.test.ts +454 -429
  311. package/node_modules/@sdd-agent-platform/core/src/registries/skill-capabilities.ts +37 -37
  312. package/node_modules/@sdd-agent-platform/core/src/registries/tool-capabilities.ts +135 -135
  313. package/node_modules/@sdd-agent-platform/core/src/registries/tool-plugins.ts +132 -132
  314. package/node_modules/@sdd-agent-platform/core/src/registries/worker-adapters.ts +144 -144
  315. package/node_modules/@sdd-agent-platform/core/src/registries/workflow-gates.ts +111 -111
  316. package/node_modules/@sdd-agent-platform/core/src/registries.ts +42 -42
  317. package/node_modules/@sdd-agent-platform/core/src/risk/consumer-diagnostics.ts +98 -97
  318. package/node_modules/@sdd-agent-platform/core/src/risk/contracts.ts +63 -63
  319. package/node_modules/@sdd-agent-platform/core/src/risk/kernel.ts +233 -233
  320. package/node_modules/@sdd-agent-platform/core/src/risk/legacy-adapters.ts +251 -266
  321. package/node_modules/@sdd-agent-platform/core/src/risk/workflow-gates.ts +203 -203
  322. package/node_modules/@sdd-agent-platform/core/src/risk.ts +5 -5
  323. package/node_modules/@sdd-agent-platform/core/src/router/agent-runtime-config.ts +327 -327
  324. package/node_modules/@sdd-agent-platform/core/src/router/agent-runtime.ts +388 -388
  325. package/node_modules/@sdd-agent-platform/core/src/router/profile-resolution.ts +154 -154
  326. package/node_modules/@sdd-agent-platform/core/src/router/risk-policy.ts +33 -33
  327. package/node_modules/@sdd-agent-platform/core/src/router/route-cache.ts +100 -100
  328. package/node_modules/@sdd-agent-platform/core/src/router/route-projection.ts +356 -356
  329. package/node_modules/@sdd-agent-platform/core/src/router/route-sdd-task.test.ts +428 -428
  330. package/node_modules/@sdd-agent-platform/core/src/router/route-sdd-task.ts +2 -2
  331. package/node_modules/@sdd-agent-platform/core/src/router/routing-rules.ts +73 -73
  332. package/node_modules/@sdd-agent-platform/core/src/router/routing.ts +189 -191
  333. package/node_modules/@sdd-agent-platform/core/src/router/runtime-import.ts +464 -0
  334. package/node_modules/@sdd-agent-platform/core/src/router/runtime-inspection.ts +124 -124
  335. package/node_modules/@sdd-agent-platform/core/src/router/runtime-registry.ts +123 -123
  336. package/node_modules/@sdd-agent-platform/core/src/router/runtime-validation.ts +277 -277
  337. package/node_modules/@sdd-agent-platform/core/src/router/stage-route-binding.ts +273 -0
  338. package/node_modules/@sdd-agent-platform/core/src/router/team-mode.ts +170 -170
  339. package/node_modules/@sdd-agent-platform/core/src/router.ts +5 -4
  340. package/node_modules/@sdd-agent-platform/core/src/run-state/artifacts.ts +126 -118
  341. package/node_modules/@sdd-agent-platform/core/src/run-state/events.ts +27 -27
  342. package/node_modules/@sdd-agent-platform/core/src/run-state/inspect-run.ts +172 -172
  343. package/node_modules/@sdd-agent-platform/core/src/run-state/invocation-ledger.ts +109 -109
  344. package/node_modules/@sdd-agent-platform/core/src/run-state/model.ts +252 -230
  345. package/node_modules/@sdd-agent-platform/core/src/run-state/run-index.test.ts +52 -52
  346. package/node_modules/@sdd-agent-platform/core/src/run-state/run-index.ts +356 -356
  347. package/node_modules/@sdd-agent-platform/core/src/run-state/run-state.test.ts +70 -70
  348. package/node_modules/@sdd-agent-platform/core/src/run-state/run-state.ts +406 -406
  349. package/node_modules/@sdd-agent-platform/core/src/run-state/task-evidence.ts +198 -206
  350. package/node_modules/@sdd-agent-platform/core/src/run-state/timing.ts +146 -0
  351. package/node_modules/@sdd-agent-platform/core/src/run-state.ts +8 -8
  352. package/node_modules/@sdd-agent-platform/core/src/runtime-analysis/build.ts +60 -63
  353. package/node_modules/@sdd-agent-platform/core/src/runtime-analysis/findings.ts +257 -296
  354. package/node_modules/@sdd-agent-platform/core/src/runtime-analysis/model.ts +140 -152
  355. package/node_modules/@sdd-agent-platform/core/src/runtime-analysis.test.ts +66 -68
  356. package/node_modules/@sdd-agent-platform/core/src/runtime-analysis.ts +2 -2
  357. package/node_modules/@sdd-agent-platform/core/src/runtime-paths.ts +253 -176
  358. package/node_modules/@sdd-agent-platform/core/src/runtime-projection-p0.test.ts +101 -0
  359. package/node_modules/@sdd-agent-platform/core/src/runtime-projection-p0.ts +314 -0
  360. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/artifact-depth.test.ts +380 -0
  361. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/artifact-depth.ts +207 -0
  362. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/context.ts +111 -111
  363. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/document-hashes.ts +207 -207
  364. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/run-binding.ts +95 -95
  365. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/task-inspection.ts +39 -39
  366. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/task-parser.test.ts +467 -401
  367. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/task-parser.ts +738 -694
  368. package/node_modules/@sdd-agent-platform/core/src/sdd-docs/task-rendering.ts +81 -81
  369. package/node_modules/@sdd-agent-platform/core/src/sdd-docs.ts +5 -5
  370. package/node_modules/@sdd-agent-platform/core/src/spec-manager-contracts.ts +13 -0
  371. package/node_modules/@sdd-agent-platform/core/src/stage-artifacts.ts +435 -0
  372. package/node_modules/@sdd-agent-platform/core/src/stage-collaboration-contracts.ts +316 -0
  373. package/node_modules/@sdd-agent-platform/core/src/stage-collaboration.test.ts +2964 -0
  374. package/node_modules/@sdd-agent-platform/core/src/stage-collaboration.ts +5856 -0
  375. package/node_modules/@sdd-agent-platform/core/src/stage-runtime/contracts.ts +40 -40
  376. package/node_modules/@sdd-agent-platform/core/src/stage-runtime/runtime.test.ts +209 -209
  377. package/node_modules/@sdd-agent-platform/core/src/stage-runtime/runtime.ts +360 -352
  378. package/node_modules/@sdd-agent-platform/core/src/stage-runtime.ts +2 -2
  379. package/node_modules/@sdd-agent-platform/core/src/status/project-status.test.ts +288 -288
  380. package/node_modules/@sdd-agent-platform/core/src/status/project-status.ts +651 -625
  381. package/node_modules/@sdd-agent-platform/core/src/status.ts +2 -2
  382. package/node_modules/@sdd-agent-platform/core/src/storage/json-io.ts +10 -10
  383. package/node_modules/@sdd-agent-platform/core/src/storage/runtime-store.test.ts +489 -489
  384. package/node_modules/@sdd-agent-platform/core/src/storage/runtime-store.ts +1981 -1175
  385. package/node_modules/@sdd-agent-platform/core/src/subagents/contracts.ts +45 -45
  386. package/node_modules/@sdd-agent-platform/core/src/subagents/runtime.test.ts +232 -232
  387. package/node_modules/@sdd-agent-platform/core/src/subagents/runtime.ts +307 -307
  388. package/node_modules/@sdd-agent-platform/core/src/subagents.ts +2 -2
  389. package/node_modules/@sdd-agent-platform/core/src/task-execution-contract.test.ts +141 -0
  390. package/node_modules/@sdd-agent-platform/core/src/task-execution-contract.ts +566 -0
  391. package/node_modules/@sdd-agent-platform/core/src/task-risk-profile.ts +193 -193
  392. package/node_modules/@sdd-agent-platform/core/src/test-support/fixtures.ts +413 -398
  393. package/node_modules/@sdd-agent-platform/core/src/test-support/run-state.ts +102 -70
  394. package/node_modules/@sdd-agent-platform/core/src/test-support.ts +2 -2
  395. package/node_modules/@sdd-agent-platform/core/src/truth-reconciliation.test.ts +72 -0
  396. package/node_modules/@sdd-agent-platform/core/src/truth-reconciliation.ts +174 -0
  397. package/node_modules/@sdd-agent-platform/core/src/verification/rendering.ts +137 -181
  398. package/node_modules/@sdd-agent-platform/core/src/verification/review-gate.test.ts +77 -77
  399. package/node_modules/@sdd-agent-platform/core/src/verification/review-gate.ts +77 -77
  400. package/node_modules/@sdd-agent-platform/core/src/verification/single-task-loop.ts +455 -494
  401. package/node_modules/@sdd-agent-platform/core/src/verification/{goal-verify.test.ts → task-evidence-judgment.test.ts} +261 -335
  402. package/node_modules/@sdd-agent-platform/core/src/verification/{goal-verify.ts → task-evidence-judgment.ts} +619 -648
  403. package/node_modules/@sdd-agent-platform/core/src/verification/test-runtime.ts +1190 -1032
  404. package/node_modules/@sdd-agent-platform/core/src/verification/validation-cache.ts +106 -0
  405. package/node_modules/@sdd-agent-platform/core/src/verification/validation-wave.ts +513 -513
  406. package/node_modules/@sdd-agent-platform/core/src/verification/verify-contract.ts +334 -358
  407. package/node_modules/@sdd-agent-platform/core/src/verification.ts +8 -8
  408. package/node_modules/@sdd-agent-platform/core/src/work-units/contracts.ts +26 -26
  409. package/node_modules/@sdd-agent-platform/core/src/work-units/runtime.test.ts +88 -88
  410. package/node_modules/@sdd-agent-platform/core/src/work-units/runtime.ts +112 -112
  411. package/node_modules/@sdd-agent-platform/core/src/work-units.ts +2 -2
  412. package/node_modules/@sdd-agent-platform/core/src/workflow-gate/evidence-packet.ts +190 -196
  413. package/node_modules/@sdd-agent-platform/core/src/workflow-gate/hard-checks.test.ts +169 -171
  414. package/node_modules/@sdd-agent-platform/core/src/workflow-gate/hard-checks.ts +136 -143
  415. package/node_modules/@sdd-agent-platform/core/src/workflow-gate/policy.test.ts +135 -137
  416. package/node_modules/@sdd-agent-platform/core/src/workflow-gate/policy.ts +153 -155
  417. package/node_modules/@sdd-agent-platform/core/src/workflow-gate/types.ts +111 -114
  418. package/node_modules/@sdd-agent-platform/core/src/workflow-state/affected-file-conflicts.ts +95 -95
  419. package/node_modules/@sdd-agent-platform/core/src/workflow-state/dependencies.test.ts +32 -32
  420. package/node_modules/@sdd-agent-platform/core/src/workflow-state/dependencies.ts +114 -114
  421. package/node_modules/@sdd-agent-platform/core/src/workflow-state/latest-eligible-run.ts +184 -156
  422. package/node_modules/@sdd-agent-platform/core/src/workflow-state/migration-recovery.ts +158 -0
  423. package/node_modules/@sdd-agent-platform/core/src/workflow-state/repair-contract.ts +77 -0
  424. package/node_modules/@sdd-agent-platform/core/src/workflow-state/resolve-task-run.ts +114 -0
  425. package/node_modules/@sdd-agent-platform/core/src/workflow-state/resolve.test.ts +970 -464
  426. package/node_modules/@sdd-agent-platform/core/src/workflow-state/resolve.ts +967 -363
  427. package/node_modules/@sdd-agent-platform/core/src/workflow-state/runtime-projections.ts +712 -0
  428. package/node_modules/@sdd-agent-platform/core/src/workflow-state.ts +2 -2
  429. package/node_modules/@sdd-agent-platform/core/src/worktree/isolation.ts +130 -130
  430. package/node_modules/@sdd-agent-platform/core/src/worktree/lifecycle.ts +269 -269
  431. package/node_modules/@sdd-agent-platform/core/src/worktree/worktree.test.ts +150 -150
  432. package/node_modules/@sdd-agent-platform/core/src/worktree.ts +2 -2
  433. package/node_modules/@sdd-agent-platform/core/tsconfig.json +15 -15
  434. package/package.json +2 -2
  435. package/packages/cli/dist/args.js +1 -1
  436. package/packages/cli/dist/args.js.map +1 -1
  437. package/packages/cli/dist/commands/context.js +1 -1
  438. package/packages/cli/dist/commands/context.js.map +1 -1
  439. package/packages/cli/dist/commands/evidence.js.map +1 -0
  440. package/packages/cli/dist/commands/execution.js +126 -0
  441. package/packages/cli/dist/commands/execution.js.map +1 -1
  442. package/packages/cli/dist/commands/instructions.d.ts +1 -1
  443. package/packages/cli/dist/commands/instructions.js +15 -1
  444. package/packages/cli/dist/commands/instructions.js.map +1 -1
  445. package/packages/cli/dist/commands/registry/runtime.js +70 -1
  446. package/packages/cli/dist/commands/registry/runtime.js.map +1 -1
  447. package/packages/cli/dist/commands/run.js +12 -1
  448. package/packages/cli/dist/commands/run.js.map +1 -1
  449. package/packages/cli/dist/commands/stage-close.d.ts +66 -0
  450. package/packages/cli/dist/commands/stage-close.js +524 -0
  451. package/packages/cli/dist/commands/stage-close.js.map +1 -0
  452. package/packages/cli/dist/commands/status.js +8 -1
  453. package/packages/cli/dist/commands/status.js.map +1 -1
  454. package/packages/cli/dist/commands/tasks.js.map +1 -1
  455. package/packages/cli/dist/dispatch.js +6 -31
  456. package/packages/cli/dist/dispatch.js.map +1 -1
  457. package/packages/cli/dist/help.js +153 -158
  458. package/packages/cli/dist/help.js.map +1 -1
  459. package/packages/cli/dist/renderers/workflow.d.ts +51 -2
  460. package/packages/cli/dist/renderers/workflow.js.map +1 -1
  461. package/packages/cli/dist/skill-import-args.d.ts +10 -0
  462. package/packages/cli/dist/skill-import-args.js +47 -0
  463. package/packages/cli/dist/skill-import-args.js.map +1 -0
  464. package/packages/cli/dist/tsconfig.tsbuildinfo +1 -1
  465. package/packages/cli/package.json +2 -2
  466. package/packages/core/dist/ai-tools.js +84 -103
  467. package/packages/core/dist/ai-tools.js.map +1 -1
  468. package/packages/core/dist/config/init-project.d.ts +10 -6
  469. package/packages/core/dist/config/init-project.js +7 -8
  470. package/packages/core/dist/config/init-project.js.map +1 -1
  471. package/packages/core/dist/config/project-config.d.ts +3 -1
  472. package/packages/core/dist/config/project-config.js +7 -3
  473. package/packages/core/dist/config/project-config.js.map +1 -1
  474. package/packages/core/dist/config/starter-documents.d.ts +0 -1
  475. package/packages/core/dist/config/starter-documents.js +374 -421
  476. package/packages/core/dist/config/starter-documents.js.map +1 -1
  477. package/packages/core/dist/context/build-package.d.ts +1 -1
  478. package/packages/core/dist/context/build-package.js +7 -19
  479. package/packages/core/dist/context/build-package.js.map +1 -1
  480. package/packages/core/dist/contracts.d.ts +7 -1
  481. package/packages/core/dist/contracts.js +6 -0
  482. package/packages/core/dist/contracts.js.map +1 -1
  483. package/packages/core/dist/doctor/checks/document-chain.js +2 -12
  484. package/packages/core/dist/doctor/checks/document-chain.js.map +1 -1
  485. package/packages/core/dist/doctor/doctor.js +1 -18
  486. package/packages/core/dist/doctor/doctor.js.map +1 -1
  487. package/packages/core/dist/evidence/lookup.d.ts +1 -1
  488. package/packages/core/dist/evidence/lookup.js +1 -1
  489. package/packages/core/dist/evidence/lookup.js.map +1 -1
  490. package/packages/core/dist/evidence-runtime/contracts.d.ts +0 -1
  491. package/packages/core/dist/evidence-runtime/coordination.js +110 -0
  492. package/packages/core/dist/evidence-runtime/coordination.js.map +1 -0
  493. package/packages/core/dist/execution/host-invocation.js +83 -83
  494. package/packages/core/dist/instructions.d.ts +1 -1
  495. package/packages/core/dist/instructions.js +37 -80
  496. package/packages/core/dist/instructions.js.map +1 -1
  497. package/packages/core/dist/lifecycle/ship.js +58 -68
  498. package/packages/core/dist/lifecycle/ship.js.map +1 -1
  499. package/packages/core/dist/lifecycle-graph/contracts.d.ts +159 -0
  500. package/packages/core/dist/lifecycle-graph/contracts.js +7 -0
  501. package/packages/core/dist/lifecycle-graph/contracts.js.map +1 -0
  502. package/packages/core/dist/lifecycle-graph/kernel.d.ts +16 -0
  503. package/packages/core/dist/lifecycle-graph/kernel.js +461 -0
  504. package/packages/core/dist/lifecycle-graph/kernel.js.map +1 -0
  505. package/packages/core/dist/lifecycle-graph.d.ts +2 -0
  506. package/packages/core/dist/lifecycle-graph.js +3 -0
  507. package/packages/core/dist/lifecycle-graph.js.map +1 -0
  508. package/packages/core/dist/orchestration/contracts.d.ts +1 -1
  509. package/packages/core/dist/orchestration/runtime.js +21 -28
  510. package/packages/core/dist/orchestration/runtime.js.map +1 -1
  511. package/packages/core/dist/registries/agent-registry.js +124 -40
  512. package/packages/core/dist/registries/agent-registry.js.map +1 -1
  513. package/packages/core/dist/registries/command-team-runtime.d.ts +1 -1
  514. package/packages/core/dist/registries/command-team-runtime.js +6 -13
  515. package/packages/core/dist/registries/command-team-runtime.js.map +1 -1
  516. package/packages/core/dist/registries/plan-scout-domains.d.ts +13 -0
  517. package/packages/core/dist/registries/plan-scout-domains.js +76 -0
  518. package/packages/core/dist/registries/plan-scout-domains.js.map +1 -0
  519. package/packages/core/dist/registries/skill-capabilities.js +7 -7
  520. package/packages/core/dist/registries/skill-capabilities.js.map +1 -1
  521. package/packages/core/dist/registries/tool-capabilities.js +6 -6
  522. package/packages/core/dist/registries/tool-capabilities.js.map +1 -1
  523. package/packages/core/dist/registries/workflow-gates.d.ts +1 -1
  524. package/packages/core/dist/registries/workflow-gates.js +18 -18
  525. package/packages/core/dist/registries/workflow-gates.js.map +1 -1
  526. package/packages/core/dist/risk/consumer-diagnostics.js +2 -1
  527. package/packages/core/dist/risk/consumer-diagnostics.js.map +1 -1
  528. package/packages/core/dist/risk/contracts.d.ts +2 -2
  529. package/packages/core/dist/risk/kernel.js +7 -7
  530. package/packages/core/dist/risk/kernel.js.map +1 -1
  531. package/packages/core/dist/risk/legacy-adapters.js +12 -27
  532. package/packages/core/dist/risk/legacy-adapters.js.map +1 -1
  533. package/packages/core/dist/risk/workflow-gates.js +6 -6
  534. package/packages/core/dist/risk/workflow-gates.js.map +1 -1
  535. package/packages/core/dist/router/agent-runtime-config.js +1 -1
  536. package/packages/core/dist/router/agent-runtime-config.js.map +1 -1
  537. package/packages/core/dist/router/routing.js +2 -4
  538. package/packages/core/dist/router/routing.js.map +1 -1
  539. package/packages/core/dist/router/runtime-import.d.ts +28 -0
  540. package/packages/core/dist/router/runtime-import.js +383 -0
  541. package/packages/core/dist/router/runtime-import.js.map +1 -0
  542. package/packages/core/dist/router/stage-route-binding.d.ts +37 -0
  543. package/packages/core/dist/router/stage-route-binding.js +227 -0
  544. package/packages/core/dist/router/stage-route-binding.js.map +1 -0
  545. package/packages/core/dist/router.d.ts +1 -0
  546. package/packages/core/dist/router.js +1 -0
  547. package/packages/core/dist/router.js.map +1 -1
  548. package/packages/core/dist/run-state/artifacts.d.ts +16 -0
  549. package/packages/core/dist/run-state/artifacts.js +6 -0
  550. package/packages/core/dist/run-state/artifacts.js.map +1 -1
  551. package/packages/core/dist/run-state/model.d.ts +20 -0
  552. package/packages/core/dist/run-state/run-state.js +7 -7
  553. package/packages/core/dist/run-state/run-state.js.map +1 -1
  554. package/packages/core/dist/run-state/task-evidence.d.ts +1 -2
  555. package/packages/core/dist/run-state/task-evidence.js +2 -9
  556. package/packages/core/dist/run-state/task-evidence.js.map +1 -1
  557. package/packages/core/dist/run-state/timing.d.ts +8 -0
  558. package/packages/core/dist/run-state/timing.js +131 -0
  559. package/packages/core/dist/run-state/timing.js.map +1 -0
  560. package/packages/core/dist/runtime-analysis/build.js +1 -4
  561. package/packages/core/dist/runtime-analysis/build.js.map +1 -1
  562. package/packages/core/dist/runtime-analysis/findings.js +0 -39
  563. package/packages/core/dist/runtime-analysis/findings.js.map +1 -1
  564. package/packages/core/dist/runtime-analysis/model.d.ts +1 -17
  565. package/packages/core/dist/runtime-paths.d.ts +10 -0
  566. package/packages/core/dist/runtime-paths.js +65 -0
  567. package/packages/core/dist/runtime-paths.js.map +1 -1
  568. package/packages/core/dist/runtime-projection-p0.d.ts +64 -0
  569. package/packages/core/dist/runtime-projection-p0.js +211 -0
  570. package/packages/core/dist/runtime-projection-p0.js.map +1 -0
  571. package/packages/core/dist/sdd-docs/artifact-depth.d.ts +14 -0
  572. package/packages/core/dist/sdd-docs/artifact-depth.js +179 -0
  573. package/packages/core/dist/sdd-docs/artifact-depth.js.map +1 -0
  574. package/packages/core/dist/sdd-docs/task-parser.d.ts +5 -1
  575. package/packages/core/dist/sdd-docs/task-parser.js +60 -22
  576. package/packages/core/dist/sdd-docs/task-parser.js.map +1 -1
  577. package/packages/core/dist/sdd-docs/task-rendering.js +2 -2
  578. package/packages/core/dist/sdd-docs/task-rendering.js.map +1 -1
  579. package/packages/core/dist/spec-entry.js +40 -0
  580. package/packages/core/dist/spec-entry.js.map +1 -0
  581. package/packages/core/dist/spec-manager-contracts.d.ts +12 -0
  582. package/packages/core/dist/spec-manager-contracts.js +2 -0
  583. package/packages/core/dist/spec-manager-contracts.js.map +1 -0
  584. package/packages/core/dist/stage-artifacts.d.ts +55 -0
  585. package/packages/core/dist/stage-artifacts.js +315 -0
  586. package/packages/core/dist/stage-artifacts.js.map +1 -0
  587. package/packages/core/dist/stage-collaboration-contracts.d.ts +55 -0
  588. package/packages/core/dist/stage-collaboration-contracts.js +238 -0
  589. package/packages/core/dist/stage-collaboration-contracts.js.map +1 -0
  590. package/packages/core/dist/stage-collaboration.d.ts +736 -0
  591. package/packages/core/dist/stage-collaboration.js +4018 -0
  592. package/packages/core/dist/stage-collaboration.js.map +1 -0
  593. package/packages/core/dist/stage-runtime/runtime.js +8 -1
  594. package/packages/core/dist/stage-runtime/runtime.js.map +1 -1
  595. package/packages/core/dist/status/project-status.js +25 -1
  596. package/packages/core/dist/status/project-status.js.map +1 -1
  597. package/packages/core/dist/storage/runtime-store.d.ts +170 -18
  598. package/packages/core/dist/storage/runtime-store.js +597 -85
  599. package/packages/core/dist/storage/runtime-store.js.map +1 -1
  600. package/packages/core/dist/sync-back/apply.d.ts +1 -17
  601. package/packages/core/dist/sync-back/apply.js +1 -242
  602. package/packages/core/dist/sync-back/apply.js.map +1 -1
  603. package/packages/core/dist/sync-back/inspect.d.ts +1 -110
  604. package/packages/core/dist/sync-back/inspect.js +1 -496
  605. package/packages/core/dist/sync-back/inspect.js.map +1 -1
  606. package/packages/core/dist/sync-back.d.ts +1 -2
  607. package/packages/core/dist/sync-back.js +1 -2
  608. package/packages/core/dist/sync-back.js.map +1 -1
  609. package/packages/core/dist/task-execution-contract.d.ts +167 -0
  610. package/packages/core/dist/task-execution-contract.js +377 -0
  611. package/packages/core/dist/task-execution-contract.js.map +1 -0
  612. package/packages/core/dist/test-support/fixtures.js +329 -314
  613. package/packages/core/dist/test-support/fixtures.js.map +1 -1
  614. package/packages/core/dist/test-support/run-state.d.ts +1 -0
  615. package/packages/core/dist/test-support/run-state.js +31 -0
  616. package/packages/core/dist/test-support/run-state.js.map +1 -1
  617. package/packages/core/dist/truth-reconciliation.d.ts +44 -0
  618. package/packages/core/dist/truth-reconciliation.js +135 -0
  619. package/packages/core/dist/truth-reconciliation.js.map +1 -0
  620. package/packages/core/dist/tsconfig.tsbuildinfo +1 -1
  621. package/packages/core/dist/verification/goal-verify.d.ts +0 -49
  622. package/packages/core/dist/verification/goal-verify.js +1 -545
  623. package/packages/core/dist/verification/goal-verify.js.map +1 -1
  624. package/packages/core/dist/verification/rendering.d.ts +5 -7
  625. package/packages/core/dist/verification/rendering.js +15 -55
  626. package/packages/core/dist/verification/rendering.js.map +1 -1
  627. package/packages/core/dist/verification/single-task-loop.js +1 -40
  628. package/packages/core/dist/verification/single-task-loop.js.map +1 -1
  629. package/packages/core/dist/verification/task-evidence-judgment.d.ts +49 -0
  630. package/packages/core/dist/verification/task-evidence-judgment.js +521 -0
  631. package/packages/core/dist/verification/task-evidence-judgment.js.map +1 -0
  632. package/packages/core/dist/verification/test-runtime.d.ts +12 -2
  633. package/packages/core/dist/verification/test-runtime.js +247 -112
  634. package/packages/core/dist/verification/test-runtime.js.map +1 -1
  635. package/packages/core/dist/verification/validation-cache.d.ts +26 -0
  636. package/packages/core/dist/verification/validation-cache.js +73 -0
  637. package/packages/core/dist/verification/validation-cache.js.map +1 -0
  638. package/packages/core/dist/verification/verify-contract.d.ts +1 -1
  639. package/packages/core/dist/verification/verify-contract.js +49 -72
  640. package/packages/core/dist/verification/verify-contract.js.map +1 -1
  641. package/packages/core/dist/verification.d.ts +3 -3
  642. package/packages/core/dist/verification.js +2 -2
  643. package/packages/core/dist/verification.js.map +1 -1
  644. package/packages/core/dist/workflow-gate/evidence-packet.js +2 -7
  645. package/packages/core/dist/workflow-gate/evidence-packet.js.map +1 -1
  646. package/packages/core/dist/workflow-gate/hard-checks.js +0 -7
  647. package/packages/core/dist/workflow-gate/hard-checks.js.map +1 -1
  648. package/packages/core/dist/workflow-gate/policy.js +2 -4
  649. package/packages/core/dist/workflow-gate/policy.js.map +1 -1
  650. package/packages/core/dist/workflow-gate/types.d.ts +3 -5
  651. package/packages/core/dist/workflow-state/latest-eligible-run.js +30 -4
  652. package/packages/core/dist/workflow-state/latest-eligible-run.js.map +1 -1
  653. package/packages/core/dist/workflow-state/migration-recovery.d.ts +40 -0
  654. package/packages/core/dist/workflow-state/migration-recovery.js +110 -0
  655. package/packages/core/dist/workflow-state/migration-recovery.js.map +1 -0
  656. package/packages/core/dist/workflow-state/repair-contract.d.ts +12 -0
  657. package/packages/core/dist/workflow-state/repair-contract.js +63 -0
  658. package/packages/core/dist/workflow-state/repair-contract.js.map +1 -0
  659. package/packages/core/dist/workflow-state/resolve-task-run.d.ts +21 -0
  660. package/packages/core/dist/workflow-state/resolve-task-run.js +95 -0
  661. package/packages/core/dist/workflow-state/resolve-task-run.js.map +1 -0
  662. package/packages/core/dist/workflow-state/resolve.d.ts +55 -5
  663. package/packages/core/dist/workflow-state/resolve.js +518 -36
  664. package/packages/core/dist/workflow-state/resolve.js.map +1 -1
  665. package/packages/core/dist/workflow-state/runtime-projections.d.ts +228 -0
  666. package/packages/core/dist/workflow-state/runtime-projections.js +452 -0
  667. package/packages/core/dist/workflow-state/runtime-projections.js.map +1 -0
  668. package/packages/core/package.json +6 -3
  669. package/tsconfig.build.json +6 -7
  670. package/node_modules/@sdd-agent-platform/core/dist/doctor/render.d.ts +0 -2
  671. package/node_modules/@sdd-agent-platform/core/dist/doctor/render.js +0 -44
  672. package/node_modules/@sdd-agent-platform/core/dist/doctor/render.js.map +0 -1
  673. package/node_modules/@sdd-agent-platform/core/src/sync-back/apply.ts +0 -270
  674. package/node_modules/@sdd-agent-platform/core/src/sync-back/inspect.ts +0 -655
  675. package/node_modules/@sdd-agent-platform/core/src/sync-back/sync-back.test.ts +0 -569
  676. package/node_modules/@sdd-agent-platform/core/src/sync-back.ts +0 -2
  677. package/node_modules/@sdd-agent-platform/core/src/verification/single-task-loop.test.ts +0 -255
  678. package/node_modules/@sdd-agent-platform/core/src/verification/test-runtime.test.ts +0 -439
  679. package/node_modules/@sdd-agent-platform/core/src/verification/validation-wave.test.ts +0 -341
  680. package/node_modules/@sdd-agent-platform/core/src/verification/verify-contract.test.ts +0 -204
  681. package/packages/cli/dist/commands/lifecycle.d.ts +0 -6
  682. package/packages/cli/dist/commands/lifecycle.js +0 -112
  683. package/packages/cli/dist/commands/lifecycle.js.map +0 -1
  684. package/packages/cli/dist/commands/sync-back.d.ts +0 -6
  685. package/packages/cli/dist/commands/sync-back.js +0 -82
  686. package/packages/cli/dist/commands/sync-back.js.map +0 -1
  687. package/packages/cli/dist/commands/test.d.ts +0 -6
  688. package/packages/cli/dist/commands/test.js +0 -195
  689. package/packages/cli/dist/commands/test.js.map +0 -1
  690. package/packages/cli/dist/commands/verifies.d.ts +0 -6
  691. package/packages/cli/dist/commands/verifies.js +0 -85
  692. package/packages/cli/dist/commands/verifies.js.map +0 -1
  693. package/packages/cli/dist/commands/verify.d.ts +0 -6
  694. package/packages/cli/dist/commands/verify.js +0 -134
  695. package/packages/cli/dist/commands/verify.js.map +0 -1
  696. package/packages/core/dist/doctor/render.d.ts +0 -2
  697. package/packages/core/dist/doctor/render.js +0 -44
  698. package/packages/core/dist/doctor/render.js.map +0 -1
@@ -1,341 +0,0 @@
1
- import test from 'node:test';
2
- import assert from 'node:assert/strict';
3
- import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
4
- import { tmpdir } from 'node:os';
5
- import path from 'node:path';
6
-
7
- import { evaluateAndRecordWorkflowGateDecision } from '../workflow-gate/evidence-packet.js';
8
- import { initProject } from '../config/init-project.js';
9
- import { writeBranchDocs } from '../test-support/fixtures.js';
10
- import { listRuntimeAcceptanceEvidenceMaps, listRuntimeValidationEnvironmentSessions, listRuntimeValidationWaveRuns, listRuntimeWorkflowGateDecisions, recordRuntimeDurableGap } from '../storage/runtime-store.js';
11
- import { readRunState, writeRunState } from '../run-state/run-state.js';
12
- import { readTaskEvidenceView } from '../run-state/task-evidence.js';
13
- import { writeVerifyContract } from './verify-contract.js';
14
- import { planValidationWave, renderValidationWaveResult, runValidationWave } from './validation-wave.js';
15
-
16
- function taskMarkdown(taskId: string, command: string, wave: number): string {
17
- return `### ${taskId}: Validation wave task
18
-
19
- \`\`\`sdd-task
20
- id: ${taskId}
21
- status: pending
22
- wave: ${wave}
23
- depends_on: []
24
- acceptance_refs:
25
- - AC-${taskId}
26
- plan_refs:
27
- - "§4 Target Design Overview"
28
- affected_files:
29
- - docs/${taskId.toLowerCase()}.md
30
- validation:
31
- - ${command} => AC-${taskId}
32
- risk: []
33
- \`\`\`
34
-
35
- #### Boundary
36
-
37
- Stay in validation fixtures.
38
-
39
- #### Acceptance
40
-
41
- - AC-${taskId}: Validation evidence is mapped.
42
- `;
43
- }
44
-
45
- function batchTaskMarkdown(taskId: string, command: string, batchId: string): string {
46
- return `### ${taskId}: Batch validation task
47
-
48
- \`\`\`sdd-task
49
- id: ${taskId}
50
- status: pending
51
- wave: 1
52
- depends_on: []
53
- acceptance_refs:
54
- - AC-${taskId}
55
- plan_refs:
56
- - "§4 Target Design Overview"
57
- affected_files:
58
- - docs/${taskId.toLowerCase()}.md
59
- change_surface: docs_only
60
- implementation_wave: docs-wave-1
61
- validation_batch: ${batchId}
62
- validation_timing: batch_end
63
- requires_verify_before_next: false
64
- validation:
65
- - ${command} => AC-${taskId}
66
- risk: []
67
- \`\`\`
68
-
69
- #### Boundary
70
-
71
- Stay in validation fixtures.
72
-
73
- #### Acceptance
74
-
75
- - AC-${taskId}: Batch validation evidence is mapped.
76
- `;
77
- }
78
-
79
- test('validation wave plans multiple tasks from tasks and verify contracts', async () => {
80
- const root = await mkdtemp(path.join(tmpdir(), 'sdd-validation-wave-plan-'));
81
- try {
82
- await initProject(root);
83
- await writeBranchDocs(root, 'feature', `# Tasks
84
-
85
- ${taskMarkdown('T1', 'node -e "process.stdout.write(\'one\')"', 1)}
86
- ${taskMarkdown('T2', 'node -e "process.stdout.write(\'two\')"', 1)}`);
87
- await writeVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
88
-
89
- const plan = await planValidationWave(root, { branch: 'feature', wave: 1 });
90
-
91
- assert.equal(plan.status, 'READY');
92
- assert.deepEqual(plan.taskIds, ['T1', 'T2']);
93
- assert.deepEqual(plan.tasks.map((task) => task.acceptanceRefs[0]), ['AC-T1', 'AC-T2']);
94
- } finally {
95
- await rm(root, { recursive: true, force: true });
96
- }
97
- });
98
-
99
- test('validation wave blocks explicitly requested tasks missing from verify batches', async () => {
100
- const root = await mkdtemp(path.join(tmpdir(), 'sdd-validation-wave-explicit-missing-verify-'));
101
- try {
102
- await initProject(root);
103
- await writeBranchDocs(root, 'feature', `# Tasks
104
-
105
- ${batchTaskMarkdown('T1', 'node -e "process.stdout.write(\'one\')"', 'docs-batch-a')}
106
- ${batchTaskMarkdown('T2', 'node -e "process.stdout.write(\'two\')"', 'docs-batch-b')}`);
107
- await writeVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
108
- const verifyPath = path.join(root, 'specs', 'feature', 'verify.md');
109
- await writeFile(verifyPath, (await readFile(verifyPath, 'utf8')).replace(' - "T2"', ' - "T-missing"'), 'utf8');
110
-
111
- const plan = await planValidationWave(root, { branch: 'feature', taskIds: ['T1', 'T2'] });
112
-
113
- assert.equal(plan.status, 'BLOCKED');
114
- assert.deepEqual(plan.taskIds, ['T1']);
115
- assert.match(plan.blockers.join('\n'), /Task T2 was requested but is not covered by verify\.md verification batches/);
116
- } finally {
117
- await rm(root, { recursive: true, force: true });
118
- }
119
- });
120
-
121
- test('validation batch plan consumes verify batch declarations', async () => {
122
- const root = await mkdtemp(path.join(tmpdir(), 'sdd-validation-batch-plan-'));
123
- try {
124
- await initProject(root);
125
- await writeBranchDocs(root, 'feature', `# Tasks
126
-
127
- ${batchTaskMarkdown('T1', 'node -e "process.stdout.write(\'one\')"', 'docs-batch-a')}
128
- ${batchTaskMarkdown('T2', 'node -e "process.stdout.write(\'two\')"', 'docs-batch-a')}
129
- ${batchTaskMarkdown('T3', 'node -e "process.stdout.write(\'three\')"', 'docs-batch-b')}`);
130
- await writeVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
131
-
132
- const plan = await planValidationWave(root, { branch: 'feature', batchId: 'docs-batch-a' });
133
-
134
- assert.equal(plan.status, 'READY');
135
- assert.equal(plan.batchId, 'docs-batch-a');
136
- assert.deepEqual(plan.taskIds, ['T1', 'T2']);
137
- assert.deepEqual(plan.verifyBatches.map((batch) => batch.id), ['docs-batch-a']);
138
- assert.equal(plan.verifyBatches[0]?.timing, 'batch_end');
139
- assert.deepEqual(plan.verifyBatches[0]?.checks, ['node -e "process.stdout.write(\'one\')"', 'node -e "process.stdout.write(\'two\')"']);
140
- assert.deepEqual(plan.verifyBatches[0]?.acceptanceMapping, { T1: ['AC-T1'], T2: ['AC-T2'] });
141
- } finally {
142
- await rm(root, { recursive: true, force: true });
143
- }
144
- });
145
-
146
- test('validation batch plan blocks backend validation forbidden by verify batch', async () => {
147
- const root = await mkdtemp(path.join(tmpdir(), 'sdd-validation-batch-forbidden-'));
148
- try {
149
- await initProject(root);
150
- await writeBranchDocs(root, 'feature', `# Tasks
151
-
152
- ${batchTaskMarkdown('T1', 'mvn test', 'frontend-batch').replace('change_surface: docs_only', 'change_surface: frontend_only')}`);
153
- await writeVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
154
-
155
- const plan = await planValidationWave(root, { branch: 'feature', batchId: 'frontend-batch' });
156
-
157
- assert.equal(plan.status, 'BLOCKED');
158
- assert.equal(plan.verifyBatches[0]?.forbiddenValidation.includes('maven_compile'), true);
159
- assert.equal(plan.blockers.some((blocker) => blocker.includes('backend build validation forbidden')), true);
160
- } finally {
161
- await rm(root, { recursive: true, force: true });
162
- }
163
- });
164
-
165
- test('validation wave records shared environment session and acceptance maps', async () => {
166
- const root = await mkdtemp(path.join(tmpdir(), 'sdd-validation-wave-run-'));
167
- try {
168
- await initProject(root);
169
- await writeBranchDocs(root, 'feature', `# Tasks
170
-
171
- ${taskMarkdown('T1', 'node -e "process.stdout.write(\'one\')"', 1)}
172
- ${taskMarkdown('T2', 'node -e "process.stdout.write(\'two\')"', 1)}`);
173
- await writeVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
174
-
175
- const result = await runValidationWave(root, { branch: 'feature', wave: 1, approved: true });
176
- const waves = await listRuntimeValidationWaveRuns(root, { partition: 'feature', waveRunId: result.waveRunId });
177
- const sessions = await listRuntimeValidationEnvironmentSessions(root, { partition: 'feature', waveRunId: result.waveRunId });
178
- const maps = await listRuntimeAcceptanceEvidenceMaps(root, { partition: 'feature', waveRunId: result.waveRunId });
179
- const evidence = await readTaskEvidenceView(root, { branch: 'feature', taskId: 'T1' });
180
-
181
- assert.equal(result.status, 'PASS');
182
- assert.equal(result.taskResults.length, 2);
183
- assert.equal(waves[0].environmentSessionId, result.environmentSessionId);
184
- assert.equal(sessions[0].sessionId, result.environmentSessionId);
185
- assert.equal(new Set(maps.map((map) => map.taskId)).size, 2);
186
- assert.equal(maps.every((map) => map.status === 'complete'), true);
187
- assert.match(renderValidationWaveResult(result), /acceptance_maps=2/);
188
- assert.equal(evidence.validation.validationWaves.length, 1);
189
- assert.equal(evidence.validation.environmentSessions.length, 1);
190
- assert.equal(evidence.validation.acceptanceEvidenceMaps.some((map) => map.acceptanceRef === 'AC-T1'), true);
191
- const workflowGateScope = (result.workflowGateDecision?.payload as { workflowScope?: { waveRunId: string | null; taskIds: string[]; runIds: string[]; evidenceRefs: string[] } } | undefined)?.workflowScope;
192
- const wavePayloadScope = (waves[0].payload as { workflowScope?: unknown }).workflowScope as typeof workflowGateScope;
193
- const gateDecisions = await listRuntimeWorkflowGateDecisions(root, { partition: 'feature', decisionKind: 'validation_wave' });
194
- const expectedEvidenceRefs = result.taskResults.flatMap((taskResult) => [taskResult.validationArtifact, taskResult.indexArtifact].filter((ref): ref is string => Boolean(ref))).sort();
195
-
196
- assert.equal(workflowGateScope?.waveRunId, result.waveRunId);
197
- assert.deepEqual(workflowGateScope?.taskIds, ['T1', 'T2']);
198
- assert.deepEqual(workflowGateScope?.runIds, result.taskResults.map((taskResult) => taskResult.runId).sort());
199
- assert.deepEqual(workflowGateScope?.evidenceRefs, expectedEvidenceRefs);
200
- assert.deepEqual(wavePayloadScope, workflowGateScope);
201
- assert.equal(gateDecisions.some((decision) => decision.decisionId === result.workflowGateDecision?.decisionId), true);
202
- } finally {
203
- await rm(root, { recursive: true, force: true });
204
- }
205
- });
206
-
207
- test('validation wave gate evaluates durable gaps across the whole wave', async () => {
208
- const root = await mkdtemp(path.join(tmpdir(), 'sdd-validation-wave-durable-gap-'));
209
- try {
210
- await initProject(root);
211
- await writeBranchDocs(root, 'feature', `# Tasks
212
-
213
- ${taskMarkdown('T1', 'node -e "process.stdout.write(\'one\')"', 1)}
214
- ${taskMarkdown('T2', 'node -e "process.stdout.write(\'two\')"', 1)}`);
215
- await writeVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
216
-
217
- const result = await runValidationWave(root, { branch: 'feature', wave: 1, approved: true });
218
- const secondTask = result.taskResults.find((taskResult) => taskResult.taskId === 'T2');
219
- assert.ok(result.workflowGateDecision);
220
- assert.ok(secondTask);
221
- await recordRuntimeDurableGap(root, {
222
- gapId: 'gap-T2-blocking',
223
- partition: 'feature',
224
- taskId: 'T2',
225
- runId: secondTask.runId,
226
- stage: 'test',
227
- gate: 'validation_wave',
228
- source: 'runtime',
229
- category: 'validation',
230
- severity: 'blocking',
231
- status: 'open',
232
- message: 'Second task blocking gap should block the wave gate.',
233
- recommendation: 'Resolve T2 before passing the wave.',
234
- evidenceRefs: [],
235
- proposalRefs: [],
236
- sourceRefs: [],
237
- payload: {}
238
- });
239
- await writeRunState(root, { ...await readRunState(root, secondTask.runId), status: 'blocked' });
240
-
241
- const expectedEvidenceRefs = result.taskResults.flatMap((taskResult) => [taskResult.validationArtifact, taskResult.indexArtifact].filter((ref): ref is string => Boolean(ref)));
242
- const { decision } = await evaluateAndRecordWorkflowGateDecision(root, {
243
- branch: 'feature',
244
- taskId: result.taskResults[0]?.taskId ?? null,
245
- runId: result.taskResults[0]?.runId ?? null,
246
- decisionKind: 'validation_wave',
247
- waveRunId: result.waveRunId,
248
- taskIds: result.plan.taskIds,
249
- runIds: result.taskResults.map((taskResult) => taskResult.runId),
250
- evidenceRefs: expectedEvidenceRefs
251
- });
252
-
253
- assert.equal(decision.status, 'BLOCKED');
254
- assert.match(JSON.stringify(decision.hardBlocks), /durable_gap_blocking/);
255
- assert.match(JSON.stringify(decision.hardBlocks), /gap-T2-blocking/);
256
- assert.match(JSON.stringify(decision.hardBlocks), /run_rejected/);
257
- } finally {
258
- await rm(root, { recursive: true, force: true });
259
- }
260
- });
261
-
262
-
263
- test('validation wave blocks parser task gaps before command execution', async () => {
264
- const root = await mkdtemp(path.join(tmpdir(), 'sdd-validation-wave-task-gaps-'));
265
- try {
266
- await initProject(root);
267
- await writeBranchDocs(root, 'feature', `# Tasks
268
-
269
- ${batchTaskMarkdown('T1', './mvnw test', 'frontend-batch').replace('affected_files:\n - docs/t1.md', 'affected_files:\n - app/src/main/webapp/index.jsp')}`);
270
- await writeVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
271
-
272
- const result = await runValidationWave(root, { branch: 'feature', batchId: 'frontend-batch' });
273
-
274
- assert.equal(result.status, 'BLOCKED');
275
- assert.equal(result.taskResults.length, 0);
276
- assert.match(result.gaps.join('\n'), /frontend-only but declares backend build validation/);
277
- } finally {
278
- await rm(root, { recursive: true, force: true });
279
- }
280
- });
281
-
282
- test('validation wave rerun preserves explicit wave boundary when selected tasks share a batch', async () => {
283
- const root = await mkdtemp(path.join(tmpdir(), 'sdd-validation-wave-rerun-wave-boundary-'));
284
- try {
285
- await initProject(root);
286
- await writeBranchDocs(root, 'feature', `# Tasks
287
-
288
- ${batchTaskMarkdown('T1', 'node -e "process.stdout.write(\'one\')"', 'docs-batch-a')
289
- .replace('validation_timing: batch_end', 'validation_timing: wave_end')
290
- .replace('requires_verify_before_next: false', 'requires_verify_before_next: true')}`);
291
- await writeVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
292
-
293
- const result = await runValidationWave(root, { branch: 'feature', wave: 1 });
294
-
295
- assert.equal(result.status, 'BLOCKED');
296
- assert.equal(result.plan.selectionBoundary, 'wave');
297
- assert.equal(result.plan.batchId, 'docs-batch-a');
298
- assert.match(result.next, /sdd test wave --branch feature --wave 1/);
299
- assert.doesNotMatch(result.next, /sdd test batch docs-batch-a/);
300
- } finally {
301
- await rm(root, { recursive: true, force: true });
302
- }
303
- });
304
-
305
- test('validation wave uses verify acceptance mapping for runtime coverage', async () => {
306
- const root = await mkdtemp(path.join(tmpdir(), 'sdd-validation-wave-acceptance-mapping-'));
307
- try {
308
- await initProject(root);
309
- await writeBranchDocs(root, 'feature', `# Tasks
310
-
311
- ${batchTaskMarkdown('T1', 'node -e "process.stdout.write(\'one\')"', 'docs-batch-a').replace(' - node -e "process.stdout.write(\'one\')" => AC-T1', ' - node -e "process.stdout.write(\'one\')"')}`);
312
- await writeVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
313
-
314
- const result = await runValidationWave(root, { branch: 'feature', batchId: 'docs-batch-a', approved: true });
315
-
316
- assert.equal(result.status, 'PASS');
317
- assert.equal(result.acceptanceEvidence.some((map) => map.taskId === 'T1' && map.acceptanceRef === 'AC-T1' && map.status === 'complete'), true);
318
- } finally {
319
- await rm(root, { recursive: true, force: true });
320
- }
321
- });
322
-
323
-
324
- test('validation wave blocks missing verify without generating runtime evidence', async () => {
325
- const root = await mkdtemp(path.join(tmpdir(), 'sdd-validation-wave-blocked-'));
326
- try {
327
- await initProject(root);
328
- await writeBranchDocs(root, 'feature', `# Tasks
329
-
330
- ${taskMarkdown('T1', 'node -e "process.stdout.write(\'one\')"', 1)}`);
331
-
332
- const result = await runValidationWave(root, { branch: 'feature', wave: 1 });
333
-
334
- assert.equal(result.status, 'BLOCKED');
335
- assert.equal(result.taskResults.length, 0);
336
- assert.match(result.gaps.join('\n'), /verify\.md contract is BLOCKED/);
337
- assert.match(result.next, /sdd test wave --branch feature --wave 1/);
338
- } finally {
339
- await rm(root, { recursive: true, force: true });
340
- }
341
- });
@@ -1,204 +0,0 @@
1
- import test from 'node:test';
2
- import assert from 'node:assert/strict';
3
- import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
4
- import { tmpdir } from 'node:os';
5
- import path from 'node:path';
6
-
7
- import { validTaskMarkdown, writeBranchDocs } from '../test-support/fixtures.js';
8
- import { inspectVerifyContract, writeVerifyContract } from './verify-contract.js';
9
-
10
-
11
- test('inspectVerifyContract blocks when verify document is missing', async () => {
12
- const root = await mkdtemp(path.join(tmpdir(), 'sdd-verify-contract-missing-'));
13
- try {
14
- await writeBranchDocs(root, 'feature', validTaskMarkdown('T1', []));
15
-
16
- const inspection = await inspectVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
17
-
18
- assert.equal(inspection.status, 'BLOCKED');
19
- assert.equal(inspection.exists, false);
20
- assert.equal(inspection.taskCount, 1);
21
- assert.equal(inspection.issues.some((issue) => issue.field === 'verify.md' && issue.level === 'FAIL'), true);
22
- } finally {
23
- await rm(root, { recursive: true, force: true });
24
- }
25
- });
26
-
27
- test('writeVerifyContract creates task-derived verify contract', async () => {
28
- const root = await mkdtemp(path.join(tmpdir(), 'sdd-verify-contract-write-'));
29
- try {
30
- await writeBranchDocs(root, 'feature', validTaskMarkdown('T1', []));
31
-
32
- const written = await writeVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
33
- const inspection = await inspectVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
34
-
35
- assert.equal(written.status, 'created');
36
- assert.match(written.content, /contract: sdd-verify-doc-v1/);
37
- assert.match(written.content, /verification_batches:/);
38
- assert.match(written.content, /id: \"task-T1\"/);
39
- assert.match(written.content, /failure_policy:\n repair_flow: deferred/);
40
- assert.match(written.content, /\| T1 \|/);
41
- assert.match(written.content, /author_role: verification-designer/);
42
- assert.match(written.content, /independent_from_roles:\n - task-planner\n - implementer/);
43
- assert.equal(inspection.status, 'PASS');
44
- assert.equal(inspection.exists, true);
45
- assert.equal(inspection.issues.length, 0);
46
- assert.equal(inspection.authorRole, 'verification-designer');
47
- assert.deepEqual(inspection.independentFromRoles, ['task-planner', 'implementer']);
48
- } finally {
49
- await rm(root, { recursive: true, force: true });
50
- }
51
- });
52
-
53
- test('writeVerifyContract groups tasks by validation_batch', async () => {
54
- const root = await mkdtemp(path.join(tmpdir(), 'sdd-verify-contract-batch-'));
55
- try {
56
- await writeBranchDocs(root, 'feature', `# Tasks
57
-
58
- ### T1: UI copy
59
-
60
- \`\`\`sdd-task
61
- id: T1
62
- status: pending
63
- wave: 1
64
- depends_on: []
65
- acceptance_refs:
66
- - AC-T1-copy
67
- affected_files:
68
- - app/src/main/webapp/index.jsp
69
- change_surface: frontend_only
70
- implementation_wave: ui-wave-1
71
- validation_batch: ui-render-wave-1
72
- validation_timing: batch_end
73
- requires_verify_before_next: false
74
- validation:
75
- - browser/manual check copy => AC-T1-copy
76
- required_artifacts:
77
- - artifacts/ui-render-wave-1.md
78
- risk: []
79
- \`\`\`
80
-
81
- #### Boundary
82
-
83
- Only UI copy.
84
-
85
- #### Acceptance
86
-
87
- - Copy renders.
88
-
89
- ### T2: UI image
90
-
91
- \`\`\`sdd-task
92
- id: T2
93
- status: pending
94
- wave: 1
95
- depends_on: []
96
- acceptance_refs:
97
- - AC-T2-image
98
- affected_files:
99
- - app/src/main/webapp/assets/banner.svg
100
- change_surface: frontend_only
101
- implementation_wave: ui-wave-1
102
- validation_batch: ui-render-wave-1
103
- validation_timing: batch_end
104
- requires_verify_before_next: false
105
- validation:
106
- - browser/manual check image => AC-T2-image
107
- required_artifacts:
108
- - artifacts/ui-render-wave-1.md
109
- risk: []
110
- \`\`\`
111
-
112
- #### Boundary
113
-
114
- Only UI image.
115
-
116
- #### Acceptance
117
-
118
- - Image renders.
119
- `);
120
-
121
- const written = await writeVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
122
-
123
- assert.match(written.content, /id: \"ui-render-wave-1\"/);
124
- assert.match(written.content, /timing: batch_end/);
125
- assert.match(written.content, /change_surface: frontend_only/);
126
- assert.match(written.content, /forbidden_validation:\n - \"maven_compile\"\n - \"gradle_build\"/);
127
- assert.match(written.content, /T1:\n - \"AC-T1-copy\"/);
128
- assert.match(written.content, /T2:\n - \"AC-T2-image\"/);
129
- } finally {
130
- await rm(root, { recursive: true, force: true });
131
- }
132
- });
133
-
134
- test('inspectVerifyContract warns when verify document is stale', async () => {
135
- const root = await mkdtemp(path.join(tmpdir(), 'sdd-verify-contract-stale-'));
136
- try {
137
- await writeBranchDocs(root, 'feature', validTaskMarkdown('T1', []));
138
- await writeVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
139
- await writeFile(path.join(root, 'specs', 'feature', 'tasks.md'), validTaskMarkdown('T2', []), 'utf8');
140
-
141
- const inspection = await inspectVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
142
-
143
- assert.equal(inspection.status, 'WARN');
144
- assert.equal(inspection.issues.some((issue) => issue.field === 'based_on_tasks_contract_hash'), true);
145
- assert.equal(inspection.issues.some((issue) => issue.field === 'tasks' && /T2/.test(issue.message)), true);
146
- } finally {
147
- await rm(root, { recursive: true, force: true });
148
- }
149
- });
150
-
151
- test('inspectVerifyContract blocks legacy verify documents without tasks contract hash', async () => {
152
- const root = await mkdtemp(path.join(tmpdir(), 'sdd-verify-contract-legacy-'));
153
- try {
154
- await writeBranchDocs(root, 'feature', validTaskMarkdown('T1', []));
155
- const written = await writeVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
156
- await writeFile(path.join(root, 'specs', 'feature', 'verify.md'), written.content.replace(/^based_on_tasks_contract_hash: .+\n/m, ''), 'utf8');
157
-
158
- const inspection = await inspectVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
159
-
160
- assert.equal(inspection.status, 'BLOCKED');
161
- assert.equal(inspection.issues.some((issue) => issue.field === 'based_on_tasks_contract_hash' && issue.level === 'FAIL'), true);
162
- } finally {
163
- await rm(root, { recursive: true, force: true });
164
- }
165
- });
166
-
167
- test('writeVerifyContract upgrades legacy verify documents without force', async () => {
168
- const root = await mkdtemp(path.join(tmpdir(), 'sdd-verify-contract-upgrade-'));
169
- try {
170
- await writeBranchDocs(root, 'feature', validTaskMarkdown('T1', []));
171
- const written = await writeVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
172
- await writeFile(path.join(root, 'specs', 'feature', 'verify.md'), written.content.replace(/^based_on_tasks_contract_hash: .+\n/m, ''), 'utf8');
173
-
174
- const upgraded = await writeVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
175
- const inspection = await inspectVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
176
-
177
- assert.equal(upgraded.status, 'updated');
178
- assert.match(upgraded.content, /based_on_tasks_contract_hash: /);
179
- assert.equal(inspection.status, 'PASS');
180
- } finally {
181
- await rm(root, { recursive: true, force: true });
182
- }
183
- });
184
-
185
- test('writeVerifyContract preserves stale bound verify documents without force', async () => {
186
- const root = await mkdtemp(path.join(tmpdir(), 'sdd-verify-contract-preserve-stale-'));
187
- try {
188
- await writeBranchDocs(root, 'feature', validTaskMarkdown('T1', []));
189
- const written = await writeVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
190
- const verifyPath = path.join(root, 'specs', 'feature', 'verify.md');
191
- const initial = await readFile(verifyPath, 'utf8');
192
- await writeFile(path.join(root, 'specs', 'feature', 'tasks.md'), validTaskMarkdown('T2', []), 'utf8');
193
-
194
- const preserved = await writeVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
195
- const inspection = await inspectVerifyContract(root, { branch: 'feature', branchSource: 'cli_option' });
196
-
197
- assert.equal(written.status, 'created');
198
- assert.equal(preserved.status, 'unchanged');
199
- assert.equal(preserved.content, initial);
200
- assert.equal(inspection.status, 'WARN');
201
- } finally {
202
- await rm(root, { recursive: true, force: true });
203
- }
204
- });
@@ -1,6 +0,0 @@
1
- export interface CliResult {
2
- exitCode: number;
3
- output?: string;
4
- error?: string;
5
- }
6
- export declare function handleLifecycleCommand(projectRoot: string, command: string | undefined, subcommand: string | undefined, rest: string[]): Promise<CliResult | null>;
@@ -1,112 +0,0 @@
1
- import { readFile } from 'node:fs/promises';
2
- import { evaluateLifecycleDecisionGate, recordLifecycleDecision } from '@sdd-agent-platform/core/lifecycle';
3
- import { renderLifecycleDecisionGate } from '@sdd-agent-platform/core/lifecycle';
4
- import { extractLifecycleRiskSignalsFromText } from '@sdd-agent-platform/core/lifecycle';
5
- import { readOption, readRepeatedOptions } from '../options.js';
6
- import { renderLifecycleRiskExtraction } from '../renderers/lifecycle.js';
7
- export async function handleLifecycleCommand(projectRoot, command, subcommand, rest) {
8
- if (command !== 'lifecycle' || subcommand !== 'decide') {
9
- return null;
10
- }
11
- const lifecycleInput = await readLifecycleSignalOptions(rest);
12
- if (lifecycleInput.error) {
13
- return {
14
- exitCode: 2,
15
- error: lifecycleInput.error
16
- };
17
- }
18
- const result = evaluateLifecycleDecisionGate(lifecycleInput.signals);
19
- const runId = readOption(rest, '--run');
20
- if (runId) {
21
- await recordLifecycleDecision(projectRoot, runId, result.record);
22
- }
23
- const json = rest.includes('--json');
24
- return {
25
- exitCode: 0,
26
- output: json
27
- ? JSON.stringify({ riskExtraction: lifecycleInput.riskExtraction, ...result, recordedRunId: runId ?? null }, null, 2)
28
- : `${renderLifecycleRiskExtraction(lifecycleInput.riskExtraction)}${renderLifecycleDecisionGate(result)}${runId ? `\nrecorded_run=${runId}` : ''}`
29
- };
30
- }
31
- async function readLifecycleSignalOptions(args) {
32
- const directSafe = args.includes('--direct-safe');
33
- const riskTags = readRepeatedOptions(args, '--risk');
34
- const contracts = readRepeatedOptions(args, '--contract');
35
- const permissions = readRepeatedOptions(args, '--permission');
36
- const fromText = readOption(args, '--from-text');
37
- const fromFile = readOption(args, '--from-file');
38
- if (fromText && fromFile) {
39
- return { signals: {}, riskExtraction: null, error: 'Usage: sdd lifecycle decide accepts only one of --from-text or --from-file' };
40
- }
41
- const riskExtraction = fromText
42
- ? extractLifecycleRiskSignalsFromText(fromText, 'from_text')
43
- : fromFile
44
- ? extractLifecycleRiskSignalsFromText(await readFile(fromFile, 'utf8'), 'from_file')
45
- : null;
46
- const extracted = riskExtraction?.signals ?? {};
47
- const signals = {
48
- intent_clarity: directSafe ? 'high' : readSignalClarity(args, '--intent') ?? 'medium',
49
- acceptance_clarity: directSafe ? 'high' : readSignalClarity(args, '--acceptance') ?? 'medium',
50
- estimated_change_size: directSafe ? 'tiny' : readEstimatedChangeSize(args, '--size') ?? 'small',
51
- task_count_estimate: Number(readOption(args, '--tasks') ?? (directSafe ? '1' : '1')),
52
- file_count_estimate: Number(readOption(args, '--files') ?? (directSafe ? '1' : '1')),
53
- affected_layers: readRepeatedOptions(args, '--layer'),
54
- affected_contracts: uniqueCliStrings([...contracts, ...(extracted.affected_contracts ?? [])]),
55
- dependency_fanout: readDependencyFanout(args, '--fanout') ?? 'local',
56
- impact_confidence: directSafe ? 'high' : extracted.impact_confidence ?? readImpactConfidence(args, '--impact-confidence') ?? 'medium',
57
- risk_tags: uniqueCliStrings([...riskTags, ...(extracted.risk_tags ?? [])]),
58
- reversibility: directSafe ? 'reversible' : extracted.reversibility ?? readReversibility(args, '--reversibility') ?? 'unknown',
59
- validation_clarity: directSafe ? 'clear' : extracted.validation_clarity ?? readValidationClarity(args, '--validation') ?? 'partial',
60
- validation_available: directSafe || args.includes('--validation-available'),
61
- validation_cost: directSafe ? 'cheap' : readValidationCost(args, '--validation-cost') ?? 'unknown',
62
- policy_hits: readRepeatedOptions(args, '--policy'),
63
- permission_required: permissions,
64
- requires_agents: args.includes('--requires-agents'),
65
- handoff_count: Number(readOption(args, '--handoffs') ?? '0'),
66
- artifact_dependency: args.includes('--artifact-dependency'),
67
- runtime_recovery_need: args.includes('--runtime-recovery'),
68
- orchestration_uncertainty: directSafe ? 'low' : readOrchestrationUncertainty(args, '--orchestration') ?? 'medium',
69
- human_checkpoint_required: args.includes('--checkpoint'),
70
- approval_reason: readRepeatedOptions(args, '--approval-reason'),
71
- source_artifacts: uniqueCliStrings([...readRepeatedOptions(args, '--source-artifact'), ...(fromFile ? [fromFile] : [])]),
72
- can_scout_impact: !args.includes('--cannot-scout-impact'),
73
- architecture_decision_required: args.includes('--architecture') || Boolean(extracted.architecture_decision_required),
74
- external_unknown: args.includes('--external-unknown') || Boolean(extracted.external_unknown)
75
- };
76
- return { signals, riskExtraction };
77
- }
78
- function uniqueCliStrings(values) {
79
- return Array.from(new Set(values.filter((value) => value.length > 0)));
80
- }
81
- function readSignalClarity(args, name) {
82
- const value = readOption(args, name);
83
- return value === 'high' || value === 'medium' || value === 'low' ? value : null;
84
- }
85
- function readEstimatedChangeSize(args, name) {
86
- const value = readOption(args, name);
87
- return value === 'tiny' || value === 'small' || value === 'medium' || value === 'large' ? value : null;
88
- }
89
- function readImpactConfidence(args, name) {
90
- return readSignalClarity(args, name);
91
- }
92
- function readValidationClarity(args, name) {
93
- const value = readOption(args, name);
94
- return value === 'clear' || value === 'partial' || value === 'unclear' ? value : null;
95
- }
96
- function readValidationCost(args, name) {
97
- const value = readOption(args, name);
98
- return value === 'cheap' || value === 'moderate' || value === 'expensive' || value === 'unknown' ? value : null;
99
- }
100
- function readDependencyFanout(args, name) {
101
- const value = readOption(args, name);
102
- return value === 'none' || value === 'local' || value === 'multi_component' || value === 'unknown' ? value : null;
103
- }
104
- function readReversibility(args, name) {
105
- const value = readOption(args, name);
106
- return value === 'reversible' || value === 'irreversible' || value === 'unknown' ? value : null;
107
- }
108
- function readOrchestrationUncertainty(args, name) {
109
- const value = readOption(args, name);
110
- return value === 'low' || value === 'medium' || value === 'high' ? value : null;
111
- }
112
- //# sourceMappingURL=lifecycle.js.map