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.
- package/README.md +24 -28
- package/node_modules/@sdd-agent-platform/core/dist/ai-tools.js +84 -103
- package/node_modules/@sdd-agent-platform/core/dist/ai-tools.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/config/init-project.d.ts +10 -6
- package/node_modules/@sdd-agent-platform/core/dist/config/init-project.js +7 -8
- package/node_modules/@sdd-agent-platform/core/dist/config/init-project.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/config/project-config.d.ts +3 -1
- package/node_modules/@sdd-agent-platform/core/dist/config/project-config.js +7 -3
- package/node_modules/@sdd-agent-platform/core/dist/config/project-config.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/config/starter-documents.d.ts +0 -1
- package/node_modules/@sdd-agent-platform/core/dist/config/starter-documents.js +374 -421
- package/node_modules/@sdd-agent-platform/core/dist/config/starter-documents.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/context/build-package.d.ts +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/context/build-package.js +7 -19
- package/node_modules/@sdd-agent-platform/core/dist/context/build-package.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/contracts.d.ts +7 -1
- package/node_modules/@sdd-agent-platform/core/dist/contracts.js +6 -0
- package/node_modules/@sdd-agent-platform/core/dist/contracts.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/document-chain.js +2 -12
- package/node_modules/@sdd-agent-platform/core/dist/doctor/checks/document-chain.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/doctor/doctor.js +1 -18
- package/node_modules/@sdd-agent-platform/core/dist/doctor/doctor.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/evidence/lookup.d.ts +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/evidence/lookup.js +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/evidence/lookup.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/evidence-runtime/contracts.d.ts +0 -1
- package/node_modules/@sdd-agent-platform/core/dist/evidence-runtime/coordination.js +110 -0
- package/node_modules/@sdd-agent-platform/core/dist/evidence-runtime/coordination.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/execution/host-invocation.js +83 -83
- package/node_modules/@sdd-agent-platform/core/dist/instructions.d.ts +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/instructions.js +37 -80
- package/node_modules/@sdd-agent-platform/core/dist/instructions.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/lifecycle/ship.js +58 -68
- package/node_modules/@sdd-agent-platform/core/dist/lifecycle/ship.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph/contracts.d.ts +159 -0
- package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph/contracts.js +7 -0
- package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph/contracts.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph/kernel.d.ts +16 -0
- package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph/kernel.js +461 -0
- package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph/kernel.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph.d.ts +2 -0
- package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph.js +3 -0
- package/node_modules/@sdd-agent-platform/core/dist/lifecycle-graph.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/orchestration/contracts.d.ts +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/orchestration/runtime.js +21 -28
- package/node_modules/@sdd-agent-platform/core/dist/orchestration/runtime.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/registries/agent-registry.js +124 -40
- package/node_modules/@sdd-agent-platform/core/dist/registries/agent-registry.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/registries/command-team-runtime.d.ts +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/registries/command-team-runtime.js +6 -13
- package/node_modules/@sdd-agent-platform/core/dist/registries/command-team-runtime.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/registries/plan-scout-domains.d.ts +13 -0
- package/node_modules/@sdd-agent-platform/core/dist/registries/plan-scout-domains.js +76 -0
- package/node_modules/@sdd-agent-platform/core/dist/registries/plan-scout-domains.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/registries/skill-capabilities.js +7 -7
- package/node_modules/@sdd-agent-platform/core/dist/registries/skill-capabilities.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/registries/tool-capabilities.js +6 -6
- package/node_modules/@sdd-agent-platform/core/dist/registries/tool-capabilities.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/registries/workflow-gates.d.ts +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/registries/workflow-gates.js +18 -18
- package/node_modules/@sdd-agent-platform/core/dist/registries/workflow-gates.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/risk/consumer-diagnostics.js +2 -1
- package/node_modules/@sdd-agent-platform/core/dist/risk/consumer-diagnostics.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/risk/contracts.d.ts +2 -2
- package/node_modules/@sdd-agent-platform/core/dist/risk/kernel.js +7 -7
- package/node_modules/@sdd-agent-platform/core/dist/risk/kernel.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/risk/legacy-adapters.js +12 -27
- package/node_modules/@sdd-agent-platform/core/dist/risk/legacy-adapters.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/risk/workflow-gates.js +6 -6
- package/node_modules/@sdd-agent-platform/core/dist/risk/workflow-gates.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/router/agent-runtime-config.js +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/router/agent-runtime-config.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/router/routing.js +2 -4
- package/node_modules/@sdd-agent-platform/core/dist/router/routing.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/router/runtime-import.d.ts +28 -0
- package/node_modules/@sdd-agent-platform/core/dist/router/runtime-import.js +383 -0
- package/node_modules/@sdd-agent-platform/core/dist/router/runtime-import.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/router/stage-route-binding.d.ts +37 -0
- package/node_modules/@sdd-agent-platform/core/dist/router/stage-route-binding.js +227 -0
- package/node_modules/@sdd-agent-platform/core/dist/router/stage-route-binding.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/router.d.ts +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/router.js +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/router.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/run-state/artifacts.d.ts +16 -0
- package/node_modules/@sdd-agent-platform/core/dist/run-state/artifacts.js +6 -0
- package/node_modules/@sdd-agent-platform/core/dist/run-state/artifacts.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/run-state/model.d.ts +20 -0
- package/node_modules/@sdd-agent-platform/core/dist/run-state/run-state.js +7 -7
- package/node_modules/@sdd-agent-platform/core/dist/run-state/run-state.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/run-state/task-evidence.d.ts +1 -2
- package/node_modules/@sdd-agent-platform/core/dist/run-state/task-evidence.js +2 -9
- package/node_modules/@sdd-agent-platform/core/dist/run-state/task-evidence.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/run-state/timing.d.ts +8 -0
- package/node_modules/@sdd-agent-platform/core/dist/run-state/timing.js +131 -0
- package/node_modules/@sdd-agent-platform/core/dist/run-state/timing.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/runtime-analysis/build.js +1 -4
- package/node_modules/@sdd-agent-platform/core/dist/runtime-analysis/build.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/runtime-analysis/findings.js +0 -39
- package/node_modules/@sdd-agent-platform/core/dist/runtime-analysis/findings.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/runtime-analysis/model.d.ts +1 -17
- package/node_modules/@sdd-agent-platform/core/dist/runtime-paths.d.ts +10 -0
- package/node_modules/@sdd-agent-platform/core/dist/runtime-paths.js +65 -0
- package/node_modules/@sdd-agent-platform/core/dist/runtime-paths.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/runtime-projection-p0.d.ts +64 -0
- package/node_modules/@sdd-agent-platform/core/dist/runtime-projection-p0.js +211 -0
- package/node_modules/@sdd-agent-platform/core/dist/runtime-projection-p0.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/artifact-depth.d.ts +14 -0
- package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/artifact-depth.js +179 -0
- package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/artifact-depth.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/task-parser.d.ts +5 -1
- package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/task-parser.js +60 -22
- package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/task-parser.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/task-rendering.js +2 -2
- package/node_modules/@sdd-agent-platform/core/dist/sdd-docs/task-rendering.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/spec-entry.js +40 -0
- package/node_modules/@sdd-agent-platform/core/dist/spec-entry.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/spec-manager-contracts.d.ts +12 -0
- package/node_modules/@sdd-agent-platform/core/dist/spec-manager-contracts.js +2 -0
- package/node_modules/@sdd-agent-platform/core/dist/spec-manager-contracts.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/stage-artifacts.d.ts +55 -0
- package/node_modules/@sdd-agent-platform/core/dist/stage-artifacts.js +315 -0
- package/node_modules/@sdd-agent-platform/core/dist/stage-artifacts.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/stage-collaboration-contracts.d.ts +55 -0
- package/node_modules/@sdd-agent-platform/core/dist/stage-collaboration-contracts.js +238 -0
- package/node_modules/@sdd-agent-platform/core/dist/stage-collaboration-contracts.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/stage-collaboration.d.ts +736 -0
- package/node_modules/@sdd-agent-platform/core/dist/stage-collaboration.js +4018 -0
- package/node_modules/@sdd-agent-platform/core/dist/stage-collaboration.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/stage-runtime/runtime.js +8 -1
- package/node_modules/@sdd-agent-platform/core/dist/stage-runtime/runtime.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/status/project-status.js +25 -1
- package/node_modules/@sdd-agent-platform/core/dist/status/project-status.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/storage/runtime-store.d.ts +170 -18
- package/node_modules/@sdd-agent-platform/core/dist/storage/runtime-store.js +597 -85
- package/node_modules/@sdd-agent-platform/core/dist/storage/runtime-store.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/sync-back/apply.d.ts +1 -17
- package/node_modules/@sdd-agent-platform/core/dist/sync-back/apply.js +1 -242
- package/node_modules/@sdd-agent-platform/core/dist/sync-back/apply.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/sync-back/inspect.d.ts +1 -110
- package/node_modules/@sdd-agent-platform/core/dist/sync-back/inspect.js +1 -496
- package/node_modules/@sdd-agent-platform/core/dist/sync-back/inspect.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/sync-back.d.ts +1 -2
- package/node_modules/@sdd-agent-platform/core/dist/sync-back.js +1 -2
- package/node_modules/@sdd-agent-platform/core/dist/sync-back.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/task-execution-contract.d.ts +167 -0
- package/node_modules/@sdd-agent-platform/core/dist/task-execution-contract.js +377 -0
- package/node_modules/@sdd-agent-platform/core/dist/task-execution-contract.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/test-support/fixtures.js +329 -314
- package/node_modules/@sdd-agent-platform/core/dist/test-support/fixtures.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/test-support/run-state.d.ts +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/test-support/run-state.js +31 -0
- package/node_modules/@sdd-agent-platform/core/dist/test-support/run-state.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/truth-reconciliation.d.ts +44 -0
- package/node_modules/@sdd-agent-platform/core/dist/truth-reconciliation.js +135 -0
- package/node_modules/@sdd-agent-platform/core/dist/truth-reconciliation.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/verification/goal-verify.d.ts +0 -49
- package/node_modules/@sdd-agent-platform/core/dist/verification/goal-verify.js +1 -545
- package/node_modules/@sdd-agent-platform/core/dist/verification/goal-verify.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/verification/rendering.d.ts +5 -7
- package/node_modules/@sdd-agent-platform/core/dist/verification/rendering.js +15 -55
- package/node_modules/@sdd-agent-platform/core/dist/verification/rendering.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/verification/single-task-loop.js +1 -40
- package/node_modules/@sdd-agent-platform/core/dist/verification/single-task-loop.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/verification/task-evidence-judgment.d.ts +49 -0
- package/node_modules/@sdd-agent-platform/core/dist/verification/task-evidence-judgment.js +521 -0
- package/node_modules/@sdd-agent-platform/core/dist/verification/task-evidence-judgment.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/verification/test-runtime.d.ts +12 -2
- package/node_modules/@sdd-agent-platform/core/dist/verification/test-runtime.js +247 -112
- package/node_modules/@sdd-agent-platform/core/dist/verification/test-runtime.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/verification/validation-cache.d.ts +26 -0
- package/node_modules/@sdd-agent-platform/core/dist/verification/validation-cache.js +73 -0
- package/node_modules/@sdd-agent-platform/core/dist/verification/validation-cache.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/verification/verify-contract.d.ts +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/verification/verify-contract.js +49 -72
- package/node_modules/@sdd-agent-platform/core/dist/verification/verify-contract.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/verification.d.ts +3 -3
- package/node_modules/@sdd-agent-platform/core/dist/verification.js +2 -2
- package/node_modules/@sdd-agent-platform/core/dist/verification.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/evidence-packet.js +2 -7
- package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/evidence-packet.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/hard-checks.js +0 -7
- package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/hard-checks.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/policy.js +2 -4
- package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/policy.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/workflow-gate/types.d.ts +3 -5
- package/node_modules/@sdd-agent-platform/core/dist/workflow-state/latest-eligible-run.js +30 -4
- package/node_modules/@sdd-agent-platform/core/dist/workflow-state/latest-eligible-run.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/workflow-state/migration-recovery.d.ts +40 -0
- package/node_modules/@sdd-agent-platform/core/dist/workflow-state/migration-recovery.js +110 -0
- package/node_modules/@sdd-agent-platform/core/dist/workflow-state/migration-recovery.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/workflow-state/repair-contract.d.ts +12 -0
- package/node_modules/@sdd-agent-platform/core/dist/workflow-state/repair-contract.js +63 -0
- package/node_modules/@sdd-agent-platform/core/dist/workflow-state/repair-contract.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/workflow-state/resolve-task-run.d.ts +21 -0
- package/node_modules/@sdd-agent-platform/core/dist/workflow-state/resolve-task-run.js +95 -0
- package/node_modules/@sdd-agent-platform/core/dist/workflow-state/resolve-task-run.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/dist/workflow-state/resolve.d.ts +55 -5
- package/node_modules/@sdd-agent-platform/core/dist/workflow-state/resolve.js +518 -36
- package/node_modules/@sdd-agent-platform/core/dist/workflow-state/resolve.js.map +1 -1
- package/node_modules/@sdd-agent-platform/core/dist/workflow-state/runtime-projections.d.ts +228 -0
- package/node_modules/@sdd-agent-platform/core/dist/workflow-state/runtime-projections.js +452 -0
- package/node_modules/@sdd-agent-platform/core/dist/workflow-state/runtime-projections.js.map +1 -0
- package/node_modules/@sdd-agent-platform/core/package.json +6 -3
- package/node_modules/@sdd-agent-platform/core/src/ai-tools.test.ts +238 -137
- package/node_modules/@sdd-agent-platform/core/src/ai-tools.ts +84 -103
- package/node_modules/@sdd-agent-platform/core/src/artifacts/ingestion.test.ts +189 -189
- package/node_modules/@sdd-agent-platform/core/src/artifacts/ingestion.ts +222 -222
- package/node_modules/@sdd-agent-platform/core/src/artifacts/sdd-evidence.test.ts +28 -28
- package/node_modules/@sdd-agent-platform/core/src/artifacts/sdd-evidence.ts +302 -302
- package/node_modules/@sdd-agent-platform/core/src/artifacts/sdd-result.test.ts +181 -181
- package/node_modules/@sdd-agent-platform/core/src/artifacts/sdd-result.ts +231 -231
- package/node_modules/@sdd-agent-platform/core/src/artifacts/templates.ts +99 -99
- package/node_modules/@sdd-agent-platform/core/src/artifacts.ts +4 -4
- package/node_modules/@sdd-agent-platform/core/src/coding-facts/contracts.ts +79 -79
- package/node_modules/@sdd-agent-platform/core/src/coding-facts.ts +1 -1
- package/node_modules/@sdd-agent-platform/core/src/config/init-project.test.ts +314 -306
- package/node_modules/@sdd-agent-platform/core/src/config/init-project.ts +128 -120
- package/node_modules/@sdd-agent-platform/core/src/config/project-config.ts +265 -259
- package/node_modules/@sdd-agent-platform/core/src/config/project-detection.ts +147 -147
- package/node_modules/@sdd-agent-platform/core/src/config/starter-documents.ts +400 -445
- package/node_modules/@sdd-agent-platform/core/src/context/budget.ts +30 -30
- package/node_modules/@sdd-agent-platform/core/src/context/build-package.ts +305 -317
- package/node_modules/@sdd-agent-platform/core/src/context/command-summary.ts +45 -45
- package/node_modules/@sdd-agent-platform/core/src/context/context-build.test.ts +188 -188
- package/node_modules/@sdd-agent-platform/core/src/context/evidence-summary.ts +144 -144
- package/node_modules/@sdd-agent-platform/core/src/context/log-worker.ts +48 -48
- package/node_modules/@sdd-agent-platform/core/src/context/source-refs.ts +41 -41
- package/node_modules/@sdd-agent-platform/core/src/context-offload/contracts.ts +47 -47
- package/node_modules/@sdd-agent-platform/core/src/context-offload/runtime.test.ts +71 -71
- package/node_modules/@sdd-agent-platform/core/src/context-offload/runtime.ts +178 -178
- package/node_modules/@sdd-agent-platform/core/src/context-offload.ts +2 -2
- package/node_modules/@sdd-agent-platform/core/src/context.ts +6 -6
- package/node_modules/@sdd-agent-platform/core/src/contracts/issues.ts +13 -13
- package/node_modules/@sdd-agent-platform/core/src/contracts.test.ts +9 -9
- package/node_modules/@sdd-agent-platform/core/src/contracts.ts +121 -115
- package/node_modules/@sdd-agent-platform/core/src/delegation/delegation.test.ts +183 -183
- package/node_modules/@sdd-agent-platform/core/src/delegation/model.ts +23 -23
- package/node_modules/@sdd-agent-platform/core/src/delegation/queue.ts +58 -58
- package/node_modules/@sdd-agent-platform/core/src/delegation/run-state.ts +14 -14
- package/node_modules/@sdd-agent-platform/core/src/delegation/state-machine.ts +90 -90
- package/node_modules/@sdd-agent-platform/core/src/delegation/validation.ts +124 -124
- package/node_modules/@sdd-agent-platform/core/src/delegation.ts +26 -26
- package/node_modules/@sdd-agent-platform/core/src/doctor/checks/ai-entries.ts +28 -28
- package/node_modules/@sdd-agent-platform/core/src/doctor/checks/document-chain.ts +104 -112
- package/node_modules/@sdd-agent-platform/core/src/doctor/checks/local-run-index.ts +27 -27
- package/node_modules/@sdd-agent-platform/core/src/doctor/checks/project.ts +84 -84
- package/node_modules/@sdd-agent-platform/core/src/doctor/checks/registries.ts +252 -252
- package/node_modules/@sdd-agent-platform/core/src/doctor/checks/run-evidence.ts +330 -330
- package/node_modules/@sdd-agent-platform/core/src/doctor/checks/run-records.ts +79 -79
- package/node_modules/@sdd-agent-platform/core/src/doctor/checks/run-trust.ts +128 -128
- package/node_modules/@sdd-agent-platform/core/src/doctor/checks/runtime-contracts.ts +300 -300
- package/node_modules/@sdd-agent-platform/core/src/doctor/doctor.test.ts +627 -657
- package/node_modules/@sdd-agent-platform/core/src/doctor/doctor.ts +301 -318
- package/node_modules/@sdd-agent-platform/core/src/doctor/model.ts +13 -13
- package/node_modules/@sdd-agent-platform/core/src/doctor/summary.ts +11 -11
- package/node_modules/@sdd-agent-platform/core/src/doctor.ts +2 -2
- package/node_modules/@sdd-agent-platform/core/src/evidence/lookup.ts +80 -80
- package/node_modules/@sdd-agent-platform/core/src/evidence-runtime/contracts.ts +48 -49
- package/node_modules/@sdd-agent-platform/core/src/evidence-runtime.ts +1 -1
- package/node_modules/@sdd-agent-platform/core/src/execution/agent-execution-records.ts +195 -195
- package/node_modules/@sdd-agent-platform/core/src/execution/background-executor.test.ts +187 -187
- package/node_modules/@sdd-agent-platform/core/src/execution/background-executor.ts +305 -305
- package/node_modules/@sdd-agent-platform/core/src/execution/foreground-subagents.test.ts +97 -97
- package/node_modules/@sdd-agent-platform/core/src/execution/foreground-subagents.ts +453 -453
- package/node_modules/@sdd-agent-platform/core/src/execution/host-invocation.ts +225 -225
- package/node_modules/@sdd-agent-platform/core/src/execution/resident-worker.test.ts +132 -132
- package/node_modules/@sdd-agent-platform/core/src/execution/resident-worker.ts +436 -436
- package/node_modules/@sdd-agent-platform/core/src/execution/stage-team-runtime.test.ts +102 -102
- package/node_modules/@sdd-agent-platform/core/src/execution/stage-team-runtime.ts +271 -271
- package/node_modules/@sdd-agent-platform/core/src/execution/wave-executor.test.ts +111 -111
- package/node_modules/@sdd-agent-platform/core/src/execution/wave-executor.ts +231 -231
- package/node_modules/@sdd-agent-platform/core/src/execution.ts +5 -5
- package/node_modules/@sdd-agent-platform/core/src/governance/policy.test.ts +57 -57
- package/node_modules/@sdd-agent-platform/core/src/governance/policy.ts +175 -175
- package/node_modules/@sdd-agent-platform/core/src/governance.ts +1 -1
- package/node_modules/@sdd-agent-platform/core/src/instructions.test.ts +80 -49
- package/node_modules/@sdd-agent-platform/core/src/instructions.ts +38 -81
- package/node_modules/@sdd-agent-platform/core/src/lifecycle/decision-gate.test.ts +174 -174
- package/node_modules/@sdd-agent-platform/core/src/lifecycle/decision-gate.ts +373 -373
- package/node_modules/@sdd-agent-platform/core/src/lifecycle/rendering.ts +29 -29
- package/node_modules/@sdd-agent-platform/core/src/lifecycle/risk-signals.ts +146 -146
- package/node_modules/@sdd-agent-platform/core/src/lifecycle/ship.test.ts +47 -0
- package/node_modules/@sdd-agent-platform/core/src/lifecycle/ship.ts +255 -263
- package/node_modules/@sdd-agent-platform/core/src/lifecycle-graph/contracts.ts +179 -0
- package/node_modules/@sdd-agent-platform/core/src/lifecycle-graph/kernel.ts +522 -0
- package/node_modules/@sdd-agent-platform/core/src/lifecycle-graph.ts +2 -0
- package/node_modules/@sdd-agent-platform/core/src/lifecycle.ts +4 -4
- package/node_modules/@sdd-agent-platform/core/src/orchestration/contracts.ts +50 -50
- package/node_modules/@sdd-agent-platform/core/src/orchestration/index.ts +2 -2
- package/node_modules/@sdd-agent-platform/core/src/orchestration/runtime.ts +331 -342
- package/node_modules/@sdd-agent-platform/core/src/path-safety.test.ts +22 -22
- package/node_modules/@sdd-agent-platform/core/src/phase8-contracts.test.ts +243 -243
- package/node_modules/@sdd-agent-platform/core/src/phase8-projection-compat.test.ts +152 -153
- package/node_modules/@sdd-agent-platform/core/src/phase8-risk-kernel.test.ts +277 -277
- package/node_modules/@sdd-agent-platform/core/src/phase9-lifecycle-graph.test.ts +103 -0
- package/node_modules/@sdd-agent-platform/core/src/planning/task-graph.test.ts +88 -88
- package/node_modules/@sdd-agent-platform/core/src/planning/task-graph.ts +222 -222
- package/node_modules/@sdd-agent-platform/core/src/planning/wave-plan.test.ts +79 -79
- package/node_modules/@sdd-agent-platform/core/src/planning/wave-plan.ts +160 -160
- package/node_modules/@sdd-agent-platform/core/src/planning.ts +2 -2
- package/node_modules/@sdd-agent-platform/core/src/registries/agent-capability-catalog.ts +426 -426
- package/node_modules/@sdd-agent-platform/core/src/registries/agent-registry.ts +230 -146
- package/node_modules/@sdd-agent-platform/core/src/registries/agent-runtime-static.ts +142 -142
- package/node_modules/@sdd-agent-platform/core/src/registries/capability-sources.ts +253 -253
- package/node_modules/@sdd-agent-platform/core/src/registries/command-team-runtime.ts +302 -309
- package/node_modules/@sdd-agent-platform/core/src/registries/eval-learning-context.ts +246 -246
- package/node_modules/@sdd-agent-platform/core/src/registries/plan-scout-domains.ts +89 -0
- package/node_modules/@sdd-agent-platform/core/src/registries/query-status.ts +119 -119
- package/node_modules/@sdd-agent-platform/core/src/registries/registries.test.ts +454 -429
- package/node_modules/@sdd-agent-platform/core/src/registries/skill-capabilities.ts +37 -37
- package/node_modules/@sdd-agent-platform/core/src/registries/tool-capabilities.ts +135 -135
- package/node_modules/@sdd-agent-platform/core/src/registries/tool-plugins.ts +132 -132
- package/node_modules/@sdd-agent-platform/core/src/registries/worker-adapters.ts +144 -144
- package/node_modules/@sdd-agent-platform/core/src/registries/workflow-gates.ts +111 -111
- package/node_modules/@sdd-agent-platform/core/src/registries.ts +42 -42
- package/node_modules/@sdd-agent-platform/core/src/risk/consumer-diagnostics.ts +98 -97
- package/node_modules/@sdd-agent-platform/core/src/risk/contracts.ts +63 -63
- package/node_modules/@sdd-agent-platform/core/src/risk/kernel.ts +233 -233
- package/node_modules/@sdd-agent-platform/core/src/risk/legacy-adapters.ts +251 -266
- package/node_modules/@sdd-agent-platform/core/src/risk/workflow-gates.ts +203 -203
- package/node_modules/@sdd-agent-platform/core/src/risk.ts +5 -5
- package/node_modules/@sdd-agent-platform/core/src/router/agent-runtime-config.ts +327 -327
- package/node_modules/@sdd-agent-platform/core/src/router/agent-runtime.ts +388 -388
- package/node_modules/@sdd-agent-platform/core/src/router/profile-resolution.ts +154 -154
- package/node_modules/@sdd-agent-platform/core/src/router/risk-policy.ts +33 -33
- package/node_modules/@sdd-agent-platform/core/src/router/route-cache.ts +100 -100
- package/node_modules/@sdd-agent-platform/core/src/router/route-projection.ts +356 -356
- package/node_modules/@sdd-agent-platform/core/src/router/route-sdd-task.test.ts +428 -428
- package/node_modules/@sdd-agent-platform/core/src/router/route-sdd-task.ts +2 -2
- package/node_modules/@sdd-agent-platform/core/src/router/routing-rules.ts +73 -73
- package/node_modules/@sdd-agent-platform/core/src/router/routing.ts +189 -191
- package/node_modules/@sdd-agent-platform/core/src/router/runtime-import.ts +464 -0
- package/node_modules/@sdd-agent-platform/core/src/router/runtime-inspection.ts +124 -124
- package/node_modules/@sdd-agent-platform/core/src/router/runtime-registry.ts +123 -123
- package/node_modules/@sdd-agent-platform/core/src/router/runtime-validation.ts +277 -277
- package/node_modules/@sdd-agent-platform/core/src/router/stage-route-binding.ts +273 -0
- package/node_modules/@sdd-agent-platform/core/src/router/team-mode.ts +170 -170
- package/node_modules/@sdd-agent-platform/core/src/router.ts +5 -4
- package/node_modules/@sdd-agent-platform/core/src/run-state/artifacts.ts +126 -118
- package/node_modules/@sdd-agent-platform/core/src/run-state/events.ts +27 -27
- package/node_modules/@sdd-agent-platform/core/src/run-state/inspect-run.ts +172 -172
- package/node_modules/@sdd-agent-platform/core/src/run-state/invocation-ledger.ts +109 -109
- package/node_modules/@sdd-agent-platform/core/src/run-state/model.ts +252 -230
- package/node_modules/@sdd-agent-platform/core/src/run-state/run-index.test.ts +52 -52
- package/node_modules/@sdd-agent-platform/core/src/run-state/run-index.ts +356 -356
- package/node_modules/@sdd-agent-platform/core/src/run-state/run-state.test.ts +70 -70
- package/node_modules/@sdd-agent-platform/core/src/run-state/run-state.ts +406 -406
- package/node_modules/@sdd-agent-platform/core/src/run-state/task-evidence.ts +198 -206
- package/node_modules/@sdd-agent-platform/core/src/run-state/timing.ts +146 -0
- package/node_modules/@sdd-agent-platform/core/src/run-state.ts +8 -8
- package/node_modules/@sdd-agent-platform/core/src/runtime-analysis/build.ts +60 -63
- package/node_modules/@sdd-agent-platform/core/src/runtime-analysis/findings.ts +257 -296
- package/node_modules/@sdd-agent-platform/core/src/runtime-analysis/model.ts +140 -152
- package/node_modules/@sdd-agent-platform/core/src/runtime-analysis.test.ts +66 -68
- package/node_modules/@sdd-agent-platform/core/src/runtime-analysis.ts +2 -2
- package/node_modules/@sdd-agent-platform/core/src/runtime-paths.ts +253 -176
- package/node_modules/@sdd-agent-platform/core/src/runtime-projection-p0.test.ts +101 -0
- package/node_modules/@sdd-agent-platform/core/src/runtime-projection-p0.ts +314 -0
- package/node_modules/@sdd-agent-platform/core/src/sdd-docs/artifact-depth.test.ts +380 -0
- package/node_modules/@sdd-agent-platform/core/src/sdd-docs/artifact-depth.ts +207 -0
- package/node_modules/@sdd-agent-platform/core/src/sdd-docs/context.ts +111 -111
- package/node_modules/@sdd-agent-platform/core/src/sdd-docs/document-hashes.ts +207 -207
- package/node_modules/@sdd-agent-platform/core/src/sdd-docs/run-binding.ts +95 -95
- package/node_modules/@sdd-agent-platform/core/src/sdd-docs/task-inspection.ts +39 -39
- package/node_modules/@sdd-agent-platform/core/src/sdd-docs/task-parser.test.ts +467 -401
- package/node_modules/@sdd-agent-platform/core/src/sdd-docs/task-parser.ts +738 -694
- package/node_modules/@sdd-agent-platform/core/src/sdd-docs/task-rendering.ts +81 -81
- package/node_modules/@sdd-agent-platform/core/src/sdd-docs.ts +5 -5
- package/node_modules/@sdd-agent-platform/core/src/spec-manager-contracts.ts +13 -0
- package/node_modules/@sdd-agent-platform/core/src/stage-artifacts.ts +435 -0
- package/node_modules/@sdd-agent-platform/core/src/stage-collaboration-contracts.ts +316 -0
- package/node_modules/@sdd-agent-platform/core/src/stage-collaboration.test.ts +2964 -0
- package/node_modules/@sdd-agent-platform/core/src/stage-collaboration.ts +5856 -0
- package/node_modules/@sdd-agent-platform/core/src/stage-runtime/contracts.ts +40 -40
- package/node_modules/@sdd-agent-platform/core/src/stage-runtime/runtime.test.ts +209 -209
- package/node_modules/@sdd-agent-platform/core/src/stage-runtime/runtime.ts +360 -352
- package/node_modules/@sdd-agent-platform/core/src/stage-runtime.ts +2 -2
- package/node_modules/@sdd-agent-platform/core/src/status/project-status.test.ts +288 -288
- package/node_modules/@sdd-agent-platform/core/src/status/project-status.ts +651 -625
- package/node_modules/@sdd-agent-platform/core/src/status.ts +2 -2
- package/node_modules/@sdd-agent-platform/core/src/storage/json-io.ts +10 -10
- package/node_modules/@sdd-agent-platform/core/src/storage/runtime-store.test.ts +489 -489
- package/node_modules/@sdd-agent-platform/core/src/storage/runtime-store.ts +1981 -1175
- package/node_modules/@sdd-agent-platform/core/src/subagents/contracts.ts +45 -45
- package/node_modules/@sdd-agent-platform/core/src/subagents/runtime.test.ts +232 -232
- package/node_modules/@sdd-agent-platform/core/src/subagents/runtime.ts +307 -307
- package/node_modules/@sdd-agent-platform/core/src/subagents.ts +2 -2
- package/node_modules/@sdd-agent-platform/core/src/task-execution-contract.test.ts +141 -0
- package/node_modules/@sdd-agent-platform/core/src/task-execution-contract.ts +566 -0
- package/node_modules/@sdd-agent-platform/core/src/task-risk-profile.ts +193 -193
- package/node_modules/@sdd-agent-platform/core/src/test-support/fixtures.ts +413 -398
- package/node_modules/@sdd-agent-platform/core/src/test-support/run-state.ts +102 -70
- package/node_modules/@sdd-agent-platform/core/src/test-support.ts +2 -2
- package/node_modules/@sdd-agent-platform/core/src/truth-reconciliation.test.ts +72 -0
- package/node_modules/@sdd-agent-platform/core/src/truth-reconciliation.ts +174 -0
- package/node_modules/@sdd-agent-platform/core/src/verification/rendering.ts +137 -181
- package/node_modules/@sdd-agent-platform/core/src/verification/review-gate.test.ts +77 -77
- package/node_modules/@sdd-agent-platform/core/src/verification/review-gate.ts +77 -77
- package/node_modules/@sdd-agent-platform/core/src/verification/single-task-loop.ts +455 -494
- package/node_modules/@sdd-agent-platform/core/src/verification/{goal-verify.test.ts → task-evidence-judgment.test.ts} +261 -335
- package/node_modules/@sdd-agent-platform/core/src/verification/{goal-verify.ts → task-evidence-judgment.ts} +619 -648
- package/node_modules/@sdd-agent-platform/core/src/verification/test-runtime.ts +1190 -1032
- package/node_modules/@sdd-agent-platform/core/src/verification/validation-cache.ts +106 -0
- package/node_modules/@sdd-agent-platform/core/src/verification/validation-wave.ts +513 -513
- package/node_modules/@sdd-agent-platform/core/src/verification/verify-contract.ts +334 -358
- package/node_modules/@sdd-agent-platform/core/src/verification.ts +8 -8
- package/node_modules/@sdd-agent-platform/core/src/work-units/contracts.ts +26 -26
- package/node_modules/@sdd-agent-platform/core/src/work-units/runtime.test.ts +88 -88
- package/node_modules/@sdd-agent-platform/core/src/work-units/runtime.ts +112 -112
- package/node_modules/@sdd-agent-platform/core/src/work-units.ts +2 -2
- package/node_modules/@sdd-agent-platform/core/src/workflow-gate/evidence-packet.ts +190 -196
- package/node_modules/@sdd-agent-platform/core/src/workflow-gate/hard-checks.test.ts +169 -171
- package/node_modules/@sdd-agent-platform/core/src/workflow-gate/hard-checks.ts +136 -143
- package/node_modules/@sdd-agent-platform/core/src/workflow-gate/policy.test.ts +135 -137
- package/node_modules/@sdd-agent-platform/core/src/workflow-gate/policy.ts +153 -155
- package/node_modules/@sdd-agent-platform/core/src/workflow-gate/types.ts +111 -114
- package/node_modules/@sdd-agent-platform/core/src/workflow-state/affected-file-conflicts.ts +95 -95
- package/node_modules/@sdd-agent-platform/core/src/workflow-state/dependencies.test.ts +32 -32
- package/node_modules/@sdd-agent-platform/core/src/workflow-state/dependencies.ts +114 -114
- package/node_modules/@sdd-agent-platform/core/src/workflow-state/latest-eligible-run.ts +184 -156
- package/node_modules/@sdd-agent-platform/core/src/workflow-state/migration-recovery.ts +158 -0
- package/node_modules/@sdd-agent-platform/core/src/workflow-state/repair-contract.ts +77 -0
- package/node_modules/@sdd-agent-platform/core/src/workflow-state/resolve-task-run.ts +114 -0
- package/node_modules/@sdd-agent-platform/core/src/workflow-state/resolve.test.ts +970 -464
- package/node_modules/@sdd-agent-platform/core/src/workflow-state/resolve.ts +967 -363
- package/node_modules/@sdd-agent-platform/core/src/workflow-state/runtime-projections.ts +712 -0
- package/node_modules/@sdd-agent-platform/core/src/workflow-state.ts +2 -2
- package/node_modules/@sdd-agent-platform/core/src/worktree/isolation.ts +130 -130
- package/node_modules/@sdd-agent-platform/core/src/worktree/lifecycle.ts +269 -269
- package/node_modules/@sdd-agent-platform/core/src/worktree/worktree.test.ts +150 -150
- package/node_modules/@sdd-agent-platform/core/src/worktree.ts +2 -2
- package/node_modules/@sdd-agent-platform/core/tsconfig.json +15 -15
- package/package.json +2 -2
- package/packages/cli/dist/args.js +1 -1
- package/packages/cli/dist/args.js.map +1 -1
- package/packages/cli/dist/commands/context.js +1 -1
- package/packages/cli/dist/commands/context.js.map +1 -1
- package/packages/cli/dist/commands/evidence.js.map +1 -0
- package/packages/cli/dist/commands/execution.js +126 -0
- package/packages/cli/dist/commands/execution.js.map +1 -1
- package/packages/cli/dist/commands/instructions.d.ts +1 -1
- package/packages/cli/dist/commands/instructions.js +15 -1
- package/packages/cli/dist/commands/instructions.js.map +1 -1
- package/packages/cli/dist/commands/registry/runtime.js +70 -1
- package/packages/cli/dist/commands/registry/runtime.js.map +1 -1
- package/packages/cli/dist/commands/run.js +12 -1
- package/packages/cli/dist/commands/run.js.map +1 -1
- package/packages/cli/dist/commands/stage-close.d.ts +66 -0
- package/packages/cli/dist/commands/stage-close.js +524 -0
- package/packages/cli/dist/commands/stage-close.js.map +1 -0
- package/packages/cli/dist/commands/status.js +8 -1
- package/packages/cli/dist/commands/status.js.map +1 -1
- package/packages/cli/dist/commands/tasks.js.map +1 -1
- package/packages/cli/dist/dispatch.js +6 -31
- package/packages/cli/dist/dispatch.js.map +1 -1
- package/packages/cli/dist/help.js +153 -158
- package/packages/cli/dist/help.js.map +1 -1
- package/packages/cli/dist/renderers/workflow.d.ts +51 -2
- package/packages/cli/dist/renderers/workflow.js.map +1 -1
- package/packages/cli/dist/skill-import-args.d.ts +10 -0
- package/packages/cli/dist/skill-import-args.js +47 -0
- package/packages/cli/dist/skill-import-args.js.map +1 -0
- package/packages/cli/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/cli/package.json +2 -2
- package/packages/core/dist/ai-tools.js +84 -103
- package/packages/core/dist/ai-tools.js.map +1 -1
- package/packages/core/dist/config/init-project.d.ts +10 -6
- package/packages/core/dist/config/init-project.js +7 -8
- package/packages/core/dist/config/init-project.js.map +1 -1
- package/packages/core/dist/config/project-config.d.ts +3 -1
- package/packages/core/dist/config/project-config.js +7 -3
- package/packages/core/dist/config/project-config.js.map +1 -1
- package/packages/core/dist/config/starter-documents.d.ts +0 -1
- package/packages/core/dist/config/starter-documents.js +374 -421
- package/packages/core/dist/config/starter-documents.js.map +1 -1
- package/packages/core/dist/context/build-package.d.ts +1 -1
- package/packages/core/dist/context/build-package.js +7 -19
- package/packages/core/dist/context/build-package.js.map +1 -1
- package/packages/core/dist/contracts.d.ts +7 -1
- package/packages/core/dist/contracts.js +6 -0
- package/packages/core/dist/contracts.js.map +1 -1
- package/packages/core/dist/doctor/checks/document-chain.js +2 -12
- package/packages/core/dist/doctor/checks/document-chain.js.map +1 -1
- package/packages/core/dist/doctor/doctor.js +1 -18
- package/packages/core/dist/doctor/doctor.js.map +1 -1
- package/packages/core/dist/evidence/lookup.d.ts +1 -1
- package/packages/core/dist/evidence/lookup.js +1 -1
- package/packages/core/dist/evidence/lookup.js.map +1 -1
- package/packages/core/dist/evidence-runtime/contracts.d.ts +0 -1
- package/packages/core/dist/evidence-runtime/coordination.js +110 -0
- package/packages/core/dist/evidence-runtime/coordination.js.map +1 -0
- package/packages/core/dist/execution/host-invocation.js +83 -83
- package/packages/core/dist/instructions.d.ts +1 -1
- package/packages/core/dist/instructions.js +37 -80
- package/packages/core/dist/instructions.js.map +1 -1
- package/packages/core/dist/lifecycle/ship.js +58 -68
- package/packages/core/dist/lifecycle/ship.js.map +1 -1
- package/packages/core/dist/lifecycle-graph/contracts.d.ts +159 -0
- package/packages/core/dist/lifecycle-graph/contracts.js +7 -0
- package/packages/core/dist/lifecycle-graph/contracts.js.map +1 -0
- package/packages/core/dist/lifecycle-graph/kernel.d.ts +16 -0
- package/packages/core/dist/lifecycle-graph/kernel.js +461 -0
- package/packages/core/dist/lifecycle-graph/kernel.js.map +1 -0
- package/packages/core/dist/lifecycle-graph.d.ts +2 -0
- package/packages/core/dist/lifecycle-graph.js +3 -0
- package/packages/core/dist/lifecycle-graph.js.map +1 -0
- package/packages/core/dist/orchestration/contracts.d.ts +1 -1
- package/packages/core/dist/orchestration/runtime.js +21 -28
- package/packages/core/dist/orchestration/runtime.js.map +1 -1
- package/packages/core/dist/registries/agent-registry.js +124 -40
- package/packages/core/dist/registries/agent-registry.js.map +1 -1
- package/packages/core/dist/registries/command-team-runtime.d.ts +1 -1
- package/packages/core/dist/registries/command-team-runtime.js +6 -13
- package/packages/core/dist/registries/command-team-runtime.js.map +1 -1
- package/packages/core/dist/registries/plan-scout-domains.d.ts +13 -0
- package/packages/core/dist/registries/plan-scout-domains.js +76 -0
- package/packages/core/dist/registries/plan-scout-domains.js.map +1 -0
- package/packages/core/dist/registries/skill-capabilities.js +7 -7
- package/packages/core/dist/registries/skill-capabilities.js.map +1 -1
- package/packages/core/dist/registries/tool-capabilities.js +6 -6
- package/packages/core/dist/registries/tool-capabilities.js.map +1 -1
- package/packages/core/dist/registries/workflow-gates.d.ts +1 -1
- package/packages/core/dist/registries/workflow-gates.js +18 -18
- package/packages/core/dist/registries/workflow-gates.js.map +1 -1
- package/packages/core/dist/risk/consumer-diagnostics.js +2 -1
- package/packages/core/dist/risk/consumer-diagnostics.js.map +1 -1
- package/packages/core/dist/risk/contracts.d.ts +2 -2
- package/packages/core/dist/risk/kernel.js +7 -7
- package/packages/core/dist/risk/kernel.js.map +1 -1
- package/packages/core/dist/risk/legacy-adapters.js +12 -27
- package/packages/core/dist/risk/legacy-adapters.js.map +1 -1
- package/packages/core/dist/risk/workflow-gates.js +6 -6
- package/packages/core/dist/risk/workflow-gates.js.map +1 -1
- package/packages/core/dist/router/agent-runtime-config.js +1 -1
- package/packages/core/dist/router/agent-runtime-config.js.map +1 -1
- package/packages/core/dist/router/routing.js +2 -4
- package/packages/core/dist/router/routing.js.map +1 -1
- package/packages/core/dist/router/runtime-import.d.ts +28 -0
- package/packages/core/dist/router/runtime-import.js +383 -0
- package/packages/core/dist/router/runtime-import.js.map +1 -0
- package/packages/core/dist/router/stage-route-binding.d.ts +37 -0
- package/packages/core/dist/router/stage-route-binding.js +227 -0
- package/packages/core/dist/router/stage-route-binding.js.map +1 -0
- package/packages/core/dist/router.d.ts +1 -0
- package/packages/core/dist/router.js +1 -0
- package/packages/core/dist/router.js.map +1 -1
- package/packages/core/dist/run-state/artifacts.d.ts +16 -0
- package/packages/core/dist/run-state/artifacts.js +6 -0
- package/packages/core/dist/run-state/artifacts.js.map +1 -1
- package/packages/core/dist/run-state/model.d.ts +20 -0
- package/packages/core/dist/run-state/run-state.js +7 -7
- package/packages/core/dist/run-state/run-state.js.map +1 -1
- package/packages/core/dist/run-state/task-evidence.d.ts +1 -2
- package/packages/core/dist/run-state/task-evidence.js +2 -9
- package/packages/core/dist/run-state/task-evidence.js.map +1 -1
- package/packages/core/dist/run-state/timing.d.ts +8 -0
- package/packages/core/dist/run-state/timing.js +131 -0
- package/packages/core/dist/run-state/timing.js.map +1 -0
- package/packages/core/dist/runtime-analysis/build.js +1 -4
- package/packages/core/dist/runtime-analysis/build.js.map +1 -1
- package/packages/core/dist/runtime-analysis/findings.js +0 -39
- package/packages/core/dist/runtime-analysis/findings.js.map +1 -1
- package/packages/core/dist/runtime-analysis/model.d.ts +1 -17
- package/packages/core/dist/runtime-paths.d.ts +10 -0
- package/packages/core/dist/runtime-paths.js +65 -0
- package/packages/core/dist/runtime-paths.js.map +1 -1
- package/packages/core/dist/runtime-projection-p0.d.ts +64 -0
- package/packages/core/dist/runtime-projection-p0.js +211 -0
- package/packages/core/dist/runtime-projection-p0.js.map +1 -0
- package/packages/core/dist/sdd-docs/artifact-depth.d.ts +14 -0
- package/packages/core/dist/sdd-docs/artifact-depth.js +179 -0
- package/packages/core/dist/sdd-docs/artifact-depth.js.map +1 -0
- package/packages/core/dist/sdd-docs/task-parser.d.ts +5 -1
- package/packages/core/dist/sdd-docs/task-parser.js +60 -22
- package/packages/core/dist/sdd-docs/task-parser.js.map +1 -1
- package/packages/core/dist/sdd-docs/task-rendering.js +2 -2
- package/packages/core/dist/sdd-docs/task-rendering.js.map +1 -1
- package/packages/core/dist/spec-entry.js +40 -0
- package/packages/core/dist/spec-entry.js.map +1 -0
- package/packages/core/dist/spec-manager-contracts.d.ts +12 -0
- package/packages/core/dist/spec-manager-contracts.js +2 -0
- package/packages/core/dist/spec-manager-contracts.js.map +1 -0
- package/packages/core/dist/stage-artifacts.d.ts +55 -0
- package/packages/core/dist/stage-artifacts.js +315 -0
- package/packages/core/dist/stage-artifacts.js.map +1 -0
- package/packages/core/dist/stage-collaboration-contracts.d.ts +55 -0
- package/packages/core/dist/stage-collaboration-contracts.js +238 -0
- package/packages/core/dist/stage-collaboration-contracts.js.map +1 -0
- package/packages/core/dist/stage-collaboration.d.ts +736 -0
- package/packages/core/dist/stage-collaboration.js +4018 -0
- package/packages/core/dist/stage-collaboration.js.map +1 -0
- package/packages/core/dist/stage-runtime/runtime.js +8 -1
- package/packages/core/dist/stage-runtime/runtime.js.map +1 -1
- package/packages/core/dist/status/project-status.js +25 -1
- package/packages/core/dist/status/project-status.js.map +1 -1
- package/packages/core/dist/storage/runtime-store.d.ts +170 -18
- package/packages/core/dist/storage/runtime-store.js +597 -85
- package/packages/core/dist/storage/runtime-store.js.map +1 -1
- package/packages/core/dist/sync-back/apply.d.ts +1 -17
- package/packages/core/dist/sync-back/apply.js +1 -242
- package/packages/core/dist/sync-back/apply.js.map +1 -1
- package/packages/core/dist/sync-back/inspect.d.ts +1 -110
- package/packages/core/dist/sync-back/inspect.js +1 -496
- package/packages/core/dist/sync-back/inspect.js.map +1 -1
- package/packages/core/dist/sync-back.d.ts +1 -2
- package/packages/core/dist/sync-back.js +1 -2
- package/packages/core/dist/sync-back.js.map +1 -1
- package/packages/core/dist/task-execution-contract.d.ts +167 -0
- package/packages/core/dist/task-execution-contract.js +377 -0
- package/packages/core/dist/task-execution-contract.js.map +1 -0
- package/packages/core/dist/test-support/fixtures.js +329 -314
- package/packages/core/dist/test-support/fixtures.js.map +1 -1
- package/packages/core/dist/test-support/run-state.d.ts +1 -0
- package/packages/core/dist/test-support/run-state.js +31 -0
- package/packages/core/dist/test-support/run-state.js.map +1 -1
- package/packages/core/dist/truth-reconciliation.d.ts +44 -0
- package/packages/core/dist/truth-reconciliation.js +135 -0
- package/packages/core/dist/truth-reconciliation.js.map +1 -0
- package/packages/core/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/core/dist/verification/goal-verify.d.ts +0 -49
- package/packages/core/dist/verification/goal-verify.js +1 -545
- package/packages/core/dist/verification/goal-verify.js.map +1 -1
- package/packages/core/dist/verification/rendering.d.ts +5 -7
- package/packages/core/dist/verification/rendering.js +15 -55
- package/packages/core/dist/verification/rendering.js.map +1 -1
- package/packages/core/dist/verification/single-task-loop.js +1 -40
- package/packages/core/dist/verification/single-task-loop.js.map +1 -1
- package/packages/core/dist/verification/task-evidence-judgment.d.ts +49 -0
- package/packages/core/dist/verification/task-evidence-judgment.js +521 -0
- package/packages/core/dist/verification/task-evidence-judgment.js.map +1 -0
- package/packages/core/dist/verification/test-runtime.d.ts +12 -2
- package/packages/core/dist/verification/test-runtime.js +247 -112
- package/packages/core/dist/verification/test-runtime.js.map +1 -1
- package/packages/core/dist/verification/validation-cache.d.ts +26 -0
- package/packages/core/dist/verification/validation-cache.js +73 -0
- package/packages/core/dist/verification/validation-cache.js.map +1 -0
- package/packages/core/dist/verification/verify-contract.d.ts +1 -1
- package/packages/core/dist/verification/verify-contract.js +49 -72
- package/packages/core/dist/verification/verify-contract.js.map +1 -1
- package/packages/core/dist/verification.d.ts +3 -3
- package/packages/core/dist/verification.js +2 -2
- package/packages/core/dist/verification.js.map +1 -1
- package/packages/core/dist/workflow-gate/evidence-packet.js +2 -7
- package/packages/core/dist/workflow-gate/evidence-packet.js.map +1 -1
- package/packages/core/dist/workflow-gate/hard-checks.js +0 -7
- package/packages/core/dist/workflow-gate/hard-checks.js.map +1 -1
- package/packages/core/dist/workflow-gate/policy.js +2 -4
- package/packages/core/dist/workflow-gate/policy.js.map +1 -1
- package/packages/core/dist/workflow-gate/types.d.ts +3 -5
- package/packages/core/dist/workflow-state/latest-eligible-run.js +30 -4
- package/packages/core/dist/workflow-state/latest-eligible-run.js.map +1 -1
- package/packages/core/dist/workflow-state/migration-recovery.d.ts +40 -0
- package/packages/core/dist/workflow-state/migration-recovery.js +110 -0
- package/packages/core/dist/workflow-state/migration-recovery.js.map +1 -0
- package/packages/core/dist/workflow-state/repair-contract.d.ts +12 -0
- package/packages/core/dist/workflow-state/repair-contract.js +63 -0
- package/packages/core/dist/workflow-state/repair-contract.js.map +1 -0
- package/packages/core/dist/workflow-state/resolve-task-run.d.ts +21 -0
- package/packages/core/dist/workflow-state/resolve-task-run.js +95 -0
- package/packages/core/dist/workflow-state/resolve-task-run.js.map +1 -0
- package/packages/core/dist/workflow-state/resolve.d.ts +55 -5
- package/packages/core/dist/workflow-state/resolve.js +518 -36
- package/packages/core/dist/workflow-state/resolve.js.map +1 -1
- package/packages/core/dist/workflow-state/runtime-projections.d.ts +228 -0
- package/packages/core/dist/workflow-state/runtime-projections.js +452 -0
- package/packages/core/dist/workflow-state/runtime-projections.js.map +1 -0
- package/packages/core/package.json +6 -3
- package/tsconfig.build.json +6 -7
- package/node_modules/@sdd-agent-platform/core/dist/doctor/render.d.ts +0 -2
- package/node_modules/@sdd-agent-platform/core/dist/doctor/render.js +0 -44
- package/node_modules/@sdd-agent-platform/core/dist/doctor/render.js.map +0 -1
- package/node_modules/@sdd-agent-platform/core/src/sync-back/apply.ts +0 -270
- package/node_modules/@sdd-agent-platform/core/src/sync-back/inspect.ts +0 -655
- package/node_modules/@sdd-agent-platform/core/src/sync-back/sync-back.test.ts +0 -569
- package/node_modules/@sdd-agent-platform/core/src/sync-back.ts +0 -2
- package/node_modules/@sdd-agent-platform/core/src/verification/single-task-loop.test.ts +0 -255
- package/node_modules/@sdd-agent-platform/core/src/verification/test-runtime.test.ts +0 -439
- package/node_modules/@sdd-agent-platform/core/src/verification/validation-wave.test.ts +0 -341
- package/node_modules/@sdd-agent-platform/core/src/verification/verify-contract.test.ts +0 -204
- package/packages/cli/dist/commands/lifecycle.d.ts +0 -6
- package/packages/cli/dist/commands/lifecycle.js +0 -112
- package/packages/cli/dist/commands/lifecycle.js.map +0 -1
- package/packages/cli/dist/commands/sync-back.d.ts +0 -6
- package/packages/cli/dist/commands/sync-back.js +0 -82
- package/packages/cli/dist/commands/sync-back.js.map +0 -1
- package/packages/cli/dist/commands/test.d.ts +0 -6
- package/packages/cli/dist/commands/test.js +0 -195
- package/packages/cli/dist/commands/test.js.map +0 -1
- package/packages/cli/dist/commands/verifies.d.ts +0 -6
- package/packages/cli/dist/commands/verifies.js +0 -85
- package/packages/cli/dist/commands/verifies.js.map +0 -1
- package/packages/cli/dist/commands/verify.d.ts +0 -6
- package/packages/cli/dist/commands/verify.js +0 -134
- package/packages/cli/dist/commands/verify.js.map +0 -1
- package/packages/core/dist/doctor/render.d.ts +0 -2
- package/packages/core/dist/doctor/render.js +0 -44
- package/packages/core/dist/doctor/render.js.map +0 -1
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
|
|
5
|
+
import type { RuntimeProjectionEnvelope, RuntimeProjectionStaleness, RuntimeRef } from './contracts.js';
|
|
6
|
+
import { branchToSafePartition, normalizePortablePath } from './path-safety.js';
|
|
7
|
+
import { hashDocumentContent } from './sdd-docs/document-hashes.js';
|
|
8
|
+
import { listRuntimeProjections, readRuntimeProjectionEnvelope, recordRuntimeProjectionEnvelope, runtimeProjectionStaleness, type RuntimeProjectionEnvelopeWriteResult } from './storage/runtime-store.js';
|
|
9
|
+
import {
|
|
10
|
+
NEXT_INTENT_PROJECTION_TYPE,
|
|
11
|
+
TASK_ORCHESTRATION_PROJECTION_TYPE,
|
|
12
|
+
VALIDATION_UNIT_PROJECTION_TYPE,
|
|
13
|
+
WORKFLOW_CURRENT_STATE_PROJECTION_TYPE
|
|
14
|
+
} from './workflow-state/runtime-projections.js';
|
|
15
|
+
import {
|
|
16
|
+
DIAGNOSTIC_PROJECTION_TYPE,
|
|
17
|
+
EVIDENCE_SELECTION_PROJECTION_TYPE,
|
|
18
|
+
LIFECYCLE_GRAPH_INSTANCE_PROJECTION_TYPE,
|
|
19
|
+
LIFECYCLE_ROUTE_PROJECTION_TYPE,
|
|
20
|
+
STAGE_WORK_ORDER_PROJECTION_TYPE
|
|
21
|
+
} from './lifecycle-graph.js';
|
|
22
|
+
|
|
23
|
+
export const RUNTIME_PROJECTION_P0_CONTRACT_VERSION = 'phase9.19-runtime-sqlite-contract-projection-p0-v1' as const;
|
|
24
|
+
export const RUNTIME_REF_HASH_REGISTRY_PROJECTION_TYPE = 'phase9_19_ref_hash_registry';
|
|
25
|
+
export const RUNTIME_REF_HASH_REGISTRY_PRODUCER_VERSION = 'phase9.19-ref-hash-registry-v1';
|
|
26
|
+
export const STAGE_ROUTE_BINDING_PROJECTION_TYPE = 'phase9_18_stage_route_binding';
|
|
27
|
+
export const STAGE_ROUTE_BINDING_PRODUCER_VERSION = 'phase9.18-stage-route-binding-v1';
|
|
28
|
+
export const TRUTH_RECONCILIATION_PROJECTION_TYPE = 'phase9_21_truth_reconciliation';
|
|
29
|
+
|
|
30
|
+
export type RuntimeProjectionP0Key =
|
|
31
|
+
| 'lifecycleDecisions'
|
|
32
|
+
| 'riskSignals'
|
|
33
|
+
| 'stageRuns'
|
|
34
|
+
| 'stageHandoffs'
|
|
35
|
+
| 'gates'
|
|
36
|
+
| 'gapBlockers'
|
|
37
|
+
| 'evidenceItems'
|
|
38
|
+
| 'evidenceSets'
|
|
39
|
+
| 'selectionPointers'
|
|
40
|
+
| 'workflowCurrentState'
|
|
41
|
+
| 'taskOrchestration'
|
|
42
|
+
| 'validationUnits'
|
|
43
|
+
| 'truthAlignment'
|
|
44
|
+
| 'truthReconciliation'
|
|
45
|
+
| 'stageRouteBindings'
|
|
46
|
+
| 'nextIntent'
|
|
47
|
+
| 'lifecycleGraphInstances'
|
|
48
|
+
| 'lifecycleRoutes'
|
|
49
|
+
| 'stageWorkOrders'
|
|
50
|
+
| 'evidenceSelections'
|
|
51
|
+
| 'diagnosticProjections'
|
|
52
|
+
| 'auditEvents';
|
|
53
|
+
|
|
54
|
+
export type RuntimeProjectionP0Storage = 'sqlite' | 'sqlite-ref-hash-only' | 'sqlite-projection';
|
|
55
|
+
export type RuntimeProjectionP0HealthStatus = 'pass' | 'warn' | 'blocked';
|
|
56
|
+
export type RuntimeRefFreshnessStatus = 'fresh' | 'stale' | 'missing' | 'unhashed' | 'unsafe' | 'not_file_backed';
|
|
57
|
+
|
|
58
|
+
export interface RuntimeProjectionP0InventoryItem {
|
|
59
|
+
key: RuntimeProjectionP0Key;
|
|
60
|
+
storage: RuntimeProjectionP0Storage;
|
|
61
|
+
primitive: string;
|
|
62
|
+
writer: 'runtime';
|
|
63
|
+
responsibility: string;
|
|
64
|
+
consumers: string[];
|
|
65
|
+
markdownBodyAuthority: false;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface RuntimeRefFreshness {
|
|
69
|
+
ref: RuntimeRef;
|
|
70
|
+
normalizedRef: string;
|
|
71
|
+
expectedHash: string | null;
|
|
72
|
+
currentHash: string | null;
|
|
73
|
+
status: RuntimeRefFreshnessStatus;
|
|
74
|
+
reason: string;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface RuntimeRefHashRegistryProjection {
|
|
78
|
+
contract: typeof RUNTIME_PROJECTION_P0_CONTRACT_VERSION;
|
|
79
|
+
branch: string;
|
|
80
|
+
refs: RuntimeRefFreshness[];
|
|
81
|
+
status: 'fresh' | 'blocked';
|
|
82
|
+
staleRefs: RuntimeRef[];
|
|
83
|
+
reasons: string[];
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export interface RuntimeProjectionP0Diagnostic {
|
|
87
|
+
contract: typeof RUNTIME_PROJECTION_P0_CONTRACT_VERSION;
|
|
88
|
+
branch: string;
|
|
89
|
+
status: RuntimeProjectionP0HealthStatus;
|
|
90
|
+
inventory: RuntimeProjectionP0InventoryItem[];
|
|
91
|
+
projectionCounts: Record<string, number>;
|
|
92
|
+
refHashRegistry: {
|
|
93
|
+
projectionType: typeof RUNTIME_REF_HASH_REGISTRY_PROJECTION_TYPE;
|
|
94
|
+
envelopeStaleness: RuntimeProjectionStaleness;
|
|
95
|
+
status: RuntimeRefHashRegistryProjection['status'] | 'missing';
|
|
96
|
+
staleRefs: RuntimeRef[];
|
|
97
|
+
reasons: string[];
|
|
98
|
+
};
|
|
99
|
+
reasons: string[];
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export const RUNTIME_PROJECTION_P0_INVENTORY: readonly RuntimeProjectionP0InventoryItem[] = [
|
|
103
|
+
inventoryItem('lifecycleDecisions', 'sqlite', 'projections:phase8_lifecycle_risk_decision', 'Lifecycle/risk authority created only by /sdd or /sdd:spec.', ['router', 'stage-close', 'status', 'doctor']),
|
|
104
|
+
inventoryItem('riskSignals', 'sqlite', 'projections:phase8_lifecycle_risk_decision', 'Risk signal snapshot and lifecycle policy output for routing and gates.', ['router', 'workflow-gate', 'status']),
|
|
105
|
+
inventoryItem('stageRuns', 'sqlite', 'projections:phase8_stage_run', 'Runtime-owned stage run state and terminal health.', ['status', 'stage-close', 'ship']),
|
|
106
|
+
inventoryItem('stageHandoffs', 'sqlite', 'projections:phase8_workflow_handoff', 'Runtime handoff packet between completed stages and next runtime stage.', ['status', 'stage-close']),
|
|
107
|
+
inventoryItem('gates', 'sqlite', 'workflow_gate_decisions', 'Hard gate decisions and policy outcomes.', ['workflow-gate', 'status', 'ship']),
|
|
108
|
+
inventoryItem('gapBlockers', 'sqlite', 'durable_gaps', 'Mutable gap/blocker lifecycle with runtime status authority.', ['doctor', 'status', 'stage-close']),
|
|
109
|
+
inventoryItem('evidenceItems', 'sqlite-ref-hash-only', 'stage_artifacts/artifact_payloads', 'Agent-authored Markdown evidence registered by ref, hash, contract, producer, and status.', ['workflow-gate', 'stage-close', 'doctor']),
|
|
110
|
+
inventoryItem('evidenceSets', 'sqlite-ref-hash-only', 'evidence_sets/evidence_set_items', 'Accepted evidence sets selected by refs and digests, not Markdown bodies.', ['workflow-gate', 'ship', 'status']),
|
|
111
|
+
inventoryItem('selectionPointers', 'sqlite', 'selection_pointers', 'Active accepted evidence pointer for downstream consumers.', ['workflow-gate', 'latest-eligible-run', 'ship']),
|
|
112
|
+
inventoryItem('workflowCurrentState', 'sqlite-projection', `projections:${WORKFLOW_CURRENT_STATE_PROJECTION_TYPE}`, 'Runtime-owned lifecycle, task, and validation-unit current state projection.', ['status', 'router', 'ai-tool-entry']),
|
|
113
|
+
inventoryItem('taskOrchestration', 'sqlite-projection', `projections:${TASK_ORCHESTRATION_PROJECTION_TYPE}`, 'Parsed task orchestration read model with task-level hashes, dependencies, validation unit binding, and capability signals.', ['status', 'do-manager', 'tasks-manager']),
|
|
114
|
+
inventoryItem('validationUnits', 'sqlite-projection', `projections:${VALIDATION_UNIT_PROJECTION_TYPE}`, 'Runtime validation-unit read model derived from verify contracts and task orchestration.', ['status', 'test-manager', 'workflow-gate']),
|
|
115
|
+
inventoryItem('truthAlignment', 'sqlite', 'projections:phase9_12_truth_alignment', 'Goal-verify truth alignment projection for ship readiness.', ['ship', 'status']),
|
|
116
|
+
inventoryItem('truthReconciliation', 'sqlite', `projections:${TRUTH_RECONCILIATION_PROJECTION_TYPE}`, 'Owner-stage reconciliation decision slot for minimal rerun frontier.', ['orchestrator', 'status', 'ship']),
|
|
117
|
+
inventoryItem('stageRouteBindings', 'sqlite', `projections:${STAGE_ROUTE_BINDING_PROJECTION_TYPE}`, 'Stage-local command input binding to an accepted runtime target.', ['router', 'status']),
|
|
118
|
+
inventoryItem('nextIntent', 'sqlite-projection', `projections:${NEXT_INTENT_PROJECTION_TYPE}`, 'Advisory runtime next-action read model; execution still checks readiness and gates.', ['status', 'ai-tool-entry']),
|
|
119
|
+
inventoryItem('lifecycleGraphInstances', 'sqlite-projection', `projections:${LIFECYCLE_GRAPH_INSTANCE_PROJECTION_TYPE}`, 'Runtime-owned lifecycle graph instance derived from active lifecycle risk authority.', ['status', 'instructions', 'doctor', 'router', 'stage-close']),
|
|
120
|
+
inventoryItem('lifecycleRoutes', 'sqlite-projection', `projections:${LIFECYCLE_ROUTE_PROJECTION_TYPE}`, 'Graph-owned legal next action and blocker route projection.', ['status', 'instructions', 'doctor', 'router']),
|
|
121
|
+
inventoryItem('stageWorkOrders', 'sqlite-projection', `projections:${STAGE_WORK_ORDER_PROJECTION_TYPE}`, 'Stage-local work order schemas, required refs, and closure commands.', ['instructions', 'stage-close', 'do-manager', 'test-manager']),
|
|
122
|
+
inventoryItem('evidenceSelections', 'sqlite-projection', `projections:${EVIDENCE_SELECTION_PROJECTION_TYPE}`, 'Runtime-selected evidence obligations and selected accepted refs.', ['status', 'stage-close', 'workflow-gate', 'doctor']),
|
|
123
|
+
inventoryItem('diagnosticProjections', 'sqlite-projection', `projections:${DIAGNOSTIC_PROJECTION_TYPE}`, 'Blocker-specific diagnostics and recovery commands for lifecycle graph consumers.', ['doctor', 'status', 'instructions', 'router']),
|
|
124
|
+
inventoryItem('auditEvents', 'sqlite', 'events/activities', 'Append-only runtime events and activity records for auditability.', ['doctor', 'run-inspect'])
|
|
125
|
+
];
|
|
126
|
+
|
|
127
|
+
export const RUNTIME_PROJECTION_P0_PROJECTION_TYPES = [
|
|
128
|
+
'phase8_lifecycle_risk_decision',
|
|
129
|
+
'phase8_stage_run',
|
|
130
|
+
'phase8_workflow_handoff',
|
|
131
|
+
'phase9_12_truth_alignment',
|
|
132
|
+
TRUTH_RECONCILIATION_PROJECTION_TYPE,
|
|
133
|
+
STAGE_ROUTE_BINDING_PROJECTION_TYPE,
|
|
134
|
+
WORKFLOW_CURRENT_STATE_PROJECTION_TYPE,
|
|
135
|
+
TASK_ORCHESTRATION_PROJECTION_TYPE,
|
|
136
|
+
VALIDATION_UNIT_PROJECTION_TYPE,
|
|
137
|
+
NEXT_INTENT_PROJECTION_TYPE,
|
|
138
|
+
LIFECYCLE_GRAPH_INSTANCE_PROJECTION_TYPE,
|
|
139
|
+
LIFECYCLE_ROUTE_PROJECTION_TYPE,
|
|
140
|
+
STAGE_WORK_ORDER_PROJECTION_TYPE,
|
|
141
|
+
EVIDENCE_SELECTION_PROJECTION_TYPE,
|
|
142
|
+
DIAGNOSTIC_PROJECTION_TYPE,
|
|
143
|
+
RUNTIME_REF_HASH_REGISTRY_PROJECTION_TYPE
|
|
144
|
+
] as const;
|
|
145
|
+
|
|
146
|
+
export async function inspectRuntimeProjectionP0(projectRoot: string, branch: string): Promise<RuntimeProjectionP0Diagnostic> {
|
|
147
|
+
const partition = branchToSafePartition(branch);
|
|
148
|
+
const projections = await listRuntimeProjections(projectRoot, [...RUNTIME_PROJECTION_P0_PROJECTION_TYPES]);
|
|
149
|
+
const projectionCounts = Object.fromEntries(RUNTIME_PROJECTION_P0_PROJECTION_TYPES.map((projectionType) => [projectionType, projections.filter((projection) => projection.projectionType === projectionType).length]));
|
|
150
|
+
const envelope = await readRuntimeRefHashRegistryProjection(projectRoot, partition);
|
|
151
|
+
const refHashRegistry = await inspectRefHashRegistry(projectRoot, partition, envelope);
|
|
152
|
+
const status: RuntimeProjectionP0HealthStatus = refHashRegistry.status === 'blocked' ? 'blocked' : envelope ? 'pass' : 'warn';
|
|
153
|
+
const reasons = runtimeProjectionP0Reasons(status, refHashRegistry.reasons);
|
|
154
|
+
return {
|
|
155
|
+
contract: RUNTIME_PROJECTION_P0_CONTRACT_VERSION,
|
|
156
|
+
branch: partition,
|
|
157
|
+
status,
|
|
158
|
+
inventory: [...RUNTIME_PROJECTION_P0_INVENTORY],
|
|
159
|
+
projectionCounts,
|
|
160
|
+
refHashRegistry,
|
|
161
|
+
reasons
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
export async function recordRuntimeRefHashRegistryProjection(projectRoot: string, input: { branch: string; refs: RuntimeRef[]; generatedAt?: string }): Promise<RuntimeProjectionEnvelopeWriteResult<RuntimeRefHashRegistryProjection>> {
|
|
166
|
+
const branch = branchToSafePartition(input.branch);
|
|
167
|
+
const refs = await inspectRuntimeRefFreshness(projectRoot, input.refs);
|
|
168
|
+
const staleRefs = refs.filter((ref) => blocksRefHashRegistry(ref.status)).map((ref) => ref.ref);
|
|
169
|
+
const projection: RuntimeRefHashRegistryProjection = {
|
|
170
|
+
contract: RUNTIME_PROJECTION_P0_CONTRACT_VERSION,
|
|
171
|
+
branch,
|
|
172
|
+
refs,
|
|
173
|
+
status: staleRefs.length === 0 ? 'fresh' : 'blocked',
|
|
174
|
+
staleRefs,
|
|
175
|
+
reasons: refHashRegistryReasons(staleRefs, refs)
|
|
176
|
+
};
|
|
177
|
+
return recordRuntimeProjectionEnvelope(projectRoot, {
|
|
178
|
+
projectionType: RUNTIME_REF_HASH_REGISTRY_PROJECTION_TYPE,
|
|
179
|
+
scopeKey: runtimeRefHashRegistryScopeKey(branch),
|
|
180
|
+
inputHash: runtimeProjectionStableHash(projection),
|
|
181
|
+
producer: 'phase9.19-runtime-projection-p0',
|
|
182
|
+
producerVersion: RUNTIME_REF_HASH_REGISTRY_PRODUCER_VERSION,
|
|
183
|
+
generatedAt: input.generatedAt,
|
|
184
|
+
payload: projection
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export async function readRuntimeRefHashRegistryProjection(projectRoot: string, branch: string): Promise<RuntimeProjectionEnvelope<RuntimeRefHashRegistryProjection> | null> {
|
|
189
|
+
return readRuntimeProjectionEnvelope(projectRoot, RUNTIME_REF_HASH_REGISTRY_PROJECTION_TYPE, runtimeRefHashRegistryScopeKey(branchToSafePartition(branch)));
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
export async function inspectRuntimeRefFreshness(projectRoot: string, refs: RuntimeRef[]): Promise<RuntimeRefFreshness[]> {
|
|
193
|
+
return Promise.all(refs.map((ref) => inspectRuntimeRef(projectRoot, ref)));
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
export function runtimeRefHashRegistryScopeKey(branch: string): string {
|
|
197
|
+
return [branchToSafePartition(branch), 'ref-hash-registry'].join(':');
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
export function runtimeProjectionStableHash(value: unknown): string {
|
|
201
|
+
return createHash('sha256').update(JSON.stringify(value)).digest('hex');
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
async function inspectRefHashRegistry(projectRoot: string, branch: string, envelope: RuntimeProjectionEnvelope<RuntimeRefHashRegistryProjection> | null): Promise<RuntimeProjectionP0Diagnostic['refHashRegistry']> {
|
|
205
|
+
if (!envelope) {
|
|
206
|
+
return {
|
|
207
|
+
projectionType: RUNTIME_REF_HASH_REGISTRY_PROJECTION_TYPE,
|
|
208
|
+
envelopeStaleness: 'unknown',
|
|
209
|
+
status: 'missing',
|
|
210
|
+
staleRefs: [],
|
|
211
|
+
reasons: ['Runtime ref/hash registry projection is missing; register accepted Markdown refs before relying on freshness diagnostics.']
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
const currentRefs = await inspectRuntimeRefFreshness(projectRoot, envelope.payload.refs.map((entry) => entry.ref));
|
|
215
|
+
const staleRefs = currentRefs.filter((ref) => blocksRefHashRegistry(ref.status)).map((ref) => ref.ref);
|
|
216
|
+
const currentProjection: RuntimeRefHashRegistryProjection = {
|
|
217
|
+
...envelope.payload,
|
|
218
|
+
refs: currentRefs,
|
|
219
|
+
status: staleRefs.length === 0 ? 'fresh' : 'blocked',
|
|
220
|
+
staleRefs,
|
|
221
|
+
reasons: refHashRegistryReasons(staleRefs, currentRefs)
|
|
222
|
+
};
|
|
223
|
+
return {
|
|
224
|
+
projectionType: RUNTIME_REF_HASH_REGISTRY_PROJECTION_TYPE,
|
|
225
|
+
envelopeStaleness: runtimeProjectionStaleness(envelope, {
|
|
226
|
+
inputHash: runtimeProjectionStableHash(currentProjection),
|
|
227
|
+
producerVersion: RUNTIME_REF_HASH_REGISTRY_PRODUCER_VERSION
|
|
228
|
+
}),
|
|
229
|
+
status: currentProjection.status,
|
|
230
|
+
staleRefs,
|
|
231
|
+
reasons: currentProjection.reasons
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
async function inspectRuntimeRef(projectRoot: string, ref: RuntimeRef): Promise<RuntimeRefFreshness> {
|
|
236
|
+
const normalizedRef = normalizePortablePath(ref.ref);
|
|
237
|
+
if (!isFileBackedRef(ref)) {
|
|
238
|
+
return freshness(ref, normalizedRef, null, null, 'not_file_backed', `Runtime ref kind ${ref.kind} is not file-backed.`);
|
|
239
|
+
}
|
|
240
|
+
if (!ref.hash) {
|
|
241
|
+
return freshness(ref, normalizedRef, null, null, 'unhashed', `File-backed ref ${ref.ref} has no expected hash.`);
|
|
242
|
+
}
|
|
243
|
+
const safePath = safeProjectRelativePath(projectRoot, normalizedRef);
|
|
244
|
+
if (!safePath) {
|
|
245
|
+
return freshness(ref, normalizedRef, ref.hash, null, 'unsafe', `File-backed ref ${ref.ref} is not a safe project-relative path.`);
|
|
246
|
+
}
|
|
247
|
+
try {
|
|
248
|
+
const currentHash = hashDocumentContent(await readFile(safePath, 'utf8'));
|
|
249
|
+
return hashMatches(ref.hash, currentHash)
|
|
250
|
+
? freshness(ref, normalizedRef, ref.hash, currentHash, 'fresh', `File-backed ref ${normalizedRef} is fresh.`)
|
|
251
|
+
: freshness(ref, normalizedRef, ref.hash, currentHash, 'stale', `File-backed ref ${normalizedRef} hash is stale: expected ${ref.hash}, actual ${currentHash}.`);
|
|
252
|
+
} catch (error) {
|
|
253
|
+
if (isMissingFileError(error)) {
|
|
254
|
+
return freshness(ref, normalizedRef, ref.hash, null, 'missing', `File-backed ref ${normalizedRef} is missing.`);
|
|
255
|
+
}
|
|
256
|
+
throw error;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
function inventoryItem(key: RuntimeProjectionP0Key, storage: RuntimeProjectionP0Storage, primitive: string, responsibility: string, consumers: string[]): RuntimeProjectionP0InventoryItem {
|
|
261
|
+
return { key, storage, primitive, writer: 'runtime', responsibility, consumers, markdownBodyAuthority: false };
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
function runtimeProjectionP0Reasons(status: RuntimeProjectionP0HealthStatus, refHashReasons: string[]): string[] {
|
|
265
|
+
if (status === 'blocked') {
|
|
266
|
+
return refHashReasons;
|
|
267
|
+
}
|
|
268
|
+
if (status === 'warn') {
|
|
269
|
+
return ['Runtime projection P0 inventory is available; ref/hash freshness registry has not been recorded yet.'];
|
|
270
|
+
}
|
|
271
|
+
return ['Runtime projection P0 inventory is available and registered file-backed refs are fresh.'];
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
function refHashRegistryReasons(staleRefs: RuntimeRef[], refs: RuntimeRefFreshness[]): string[] {
|
|
275
|
+
if (staleRefs.length === 0) {
|
|
276
|
+
return ['Registered file-backed refs are fresh; non-file-backed refs remain metadata-only.'];
|
|
277
|
+
}
|
|
278
|
+
return refs.filter((ref) => blocksRefHashRegistry(ref.status)).map((ref) => ref.reason);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
function blocksRefHashRegistry(status: RuntimeRefFreshnessStatus): boolean {
|
|
282
|
+
return status === 'stale' || status === 'missing' || status === 'unhashed' || status === 'unsafe';
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
function isFileBackedRef(ref: RuntimeRef): boolean {
|
|
286
|
+
if (ref.kind === 'document' || ref.kind === 'artifact' || ref.kind === 'evidence') {
|
|
287
|
+
return true;
|
|
288
|
+
}
|
|
289
|
+
return /^(specs|runs)\//.test(normalizePortablePath(ref.ref));
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
function safeProjectRelativePath(projectRoot: string, normalizedRef: string): string | null {
|
|
293
|
+
if (path.isAbsolute(normalizedRef) || normalizedRef.startsWith('../') || normalizedRef === '..') {
|
|
294
|
+
return null;
|
|
295
|
+
}
|
|
296
|
+
const projectPath = path.resolve(projectRoot);
|
|
297
|
+
const absolutePath = path.resolve(projectPath, normalizedRef);
|
|
298
|
+
return absolutePath === projectPath || absolutePath.startsWith(`${projectPath}${path.sep}`) ? absolutePath : null;
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
function freshness(ref: RuntimeRef, normalizedRef: string, expectedHash: string | null, currentHash: string | null, status: RuntimeRefFreshnessStatus, reason: string): RuntimeRefFreshness {
|
|
302
|
+
return { ref: { ...ref, ref: normalizedRef }, normalizedRef, expectedHash, currentHash, status, reason };
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
function hashMatches(expected: string, actual: string): boolean {
|
|
306
|
+
return expected.replace(/^sha256:/, '') === actual.replace(/^sha256:/, '');
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
function isMissingFileError(error: unknown): boolean {
|
|
310
|
+
if (!error || typeof error !== 'object') {
|
|
311
|
+
return false;
|
|
312
|
+
}
|
|
313
|
+
return 'code' in error && (error as { code?: unknown }).code === 'ENOENT';
|
|
314
|
+
}
|
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
import test from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
|
|
4
|
+
import { evaluatePlanArtifactDepth, evaluateSpecArtifactDepth, evaluateTasksArtifactDepth, formatArtifactDepthBlockingIssues } from './artifact-depth.js';
|
|
5
|
+
|
|
6
|
+
test('spec artifact depth reports missing evidence targets and unrouted ambiguity', () => {
|
|
7
|
+
const issues = evaluateSpecArtifactDepth(`---
|
|
8
|
+
contract: sdd-spec-doc-v3
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Thin Spec
|
|
12
|
+
|
|
13
|
+
## Problem Reframing / Intent Discovery
|
|
14
|
+
|
|
15
|
+
Surface request: change the report. Reframed problem: clarify the reporting contract. Inferred real intent: reduce downstream ambiguity.
|
|
16
|
+
|
|
17
|
+
## Requirements
|
|
18
|
+
|
|
19
|
+
| ID | Requirement | Priority | Source |
|
|
20
|
+
|---|---|---|---|
|
|
21
|
+
| REQ-1 | Add the report. | Must | user |
|
|
22
|
+
|
|
23
|
+
## Acceptance Criteria / Evidence Targets
|
|
24
|
+
|
|
25
|
+
| ID | Acceptance | Covers | Priority |
|
|
26
|
+
|---|---|---|---|
|
|
27
|
+
| AC-1 | It works. | REQ-1 | Must |
|
|
28
|
+
|
|
29
|
+
## Definitions / Rules
|
|
30
|
+
|
|
31
|
+
Domain rule: reporting scope is branch-local.
|
|
32
|
+
|
|
33
|
+
## Open Questions / Ambiguity Ledger
|
|
34
|
+
|
|
35
|
+
None.
|
|
36
|
+
|
|
37
|
+
## Close Quality Evidence
|
|
38
|
+
|
|
39
|
+
- downstream_business_guesswork_remaining: []
|
|
40
|
+
`);
|
|
41
|
+
|
|
42
|
+
assert.deepEqual(issues.map((issue) => issue.code).sort(), [
|
|
43
|
+
'spec.ambiguity.unrouted',
|
|
44
|
+
'spec.too_thin.acceptance_evidence_missing'
|
|
45
|
+
]);
|
|
46
|
+
assert.deepEqual(issues.map((issue) => [issue.code, issue.severity]).sort(), [
|
|
47
|
+
['spec.ambiguity.unrouted', 'warning'],
|
|
48
|
+
['spec.too_thin.acceptance_evidence_missing', 'warning']
|
|
49
|
+
]);
|
|
50
|
+
assert.deepEqual(formatArtifactDepthBlockingIssues(issues), []);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
test('plan artifact depth treats implementation-decided API and SQL as blocker', () => {
|
|
54
|
+
const issues = evaluatePlanArtifactDepth(`---
|
|
55
|
+
contract: sdd-plan-doc-v3
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
# Thin Plan
|
|
59
|
+
|
|
60
|
+
## Current Implementation Map
|
|
61
|
+
|
|
62
|
+
Observed \`ReportController\` and \`ReportMapper.xml\`; therefore the design must reuse existing controller ownership and mapper conventions.
|
|
63
|
+
|
|
64
|
+
## Interface / API / Schema Design
|
|
65
|
+
|
|
66
|
+
The API and SQL will be finalized during implementation. It uses SQL table joins and source fields.
|
|
67
|
+
|
|
68
|
+
## State / Data / Concurrency Design
|
|
69
|
+
|
|
70
|
+
The database query reads report tables and aggregates rows.
|
|
71
|
+
|
|
72
|
+
## Risk Controls
|
|
73
|
+
|
|
74
|
+
Risk: wrong aggregation. Control: validation hook in scenario tests.
|
|
75
|
+
|
|
76
|
+
## Validation Strategy
|
|
77
|
+
|
|
78
|
+
Scenario: query report. Input data: seeded rows. Expected SQL result: exact grouped rows. Command / evidence: integration test. Proves aggregation. Does not prove UI styling.
|
|
79
|
+
|
|
80
|
+
## Plan Close Quality Evidence
|
|
81
|
+
|
|
82
|
+
- downstream_design_guesswork_remaining: []
|
|
83
|
+
`);
|
|
84
|
+
|
|
85
|
+
assert.deepEqual(issues.map((issue) => issue.code).sort(), [
|
|
86
|
+
'plan.downstream_guesswork.tasks_or_execute_would_redesign',
|
|
87
|
+
'plan.too_thin.api_shape_not_decided',
|
|
88
|
+
'plan.too_thin.sql_mapping_missing_join_keys'
|
|
89
|
+
]);
|
|
90
|
+
assert.deepEqual(issues.map((issue) => [issue.code, issue.severity]).sort(), [
|
|
91
|
+
['plan.downstream_guesswork.tasks_or_execute_would_redesign', 'blocker'],
|
|
92
|
+
['plan.too_thin.api_shape_not_decided', 'warning'],
|
|
93
|
+
['plan.too_thin.sql_mapping_missing_join_keys', 'warning']
|
|
94
|
+
]);
|
|
95
|
+
assert.equal(formatArtifactDepthBlockingIssues(issues).length, 1);
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
test('plan artifact depth keeps thin but decided mapping as warning-only diagnostics', () => {
|
|
99
|
+
const issues = evaluatePlanArtifactDepth(`---
|
|
100
|
+
contract: sdd-plan-doc-v3
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
# Warning Plan
|
|
104
|
+
|
|
105
|
+
## Current Implementation Map
|
|
106
|
+
|
|
107
|
+
Observed 'ReportController' and 'ReportMapper.xml'; therefore the design reuses existing controller ownership and mapper conventions.
|
|
108
|
+
|
|
109
|
+
## Interface / API / Schema Design
|
|
110
|
+
|
|
111
|
+
The endpoint returns report rows from the existing mapper. SQL uses report joins and source fields selected by the accepted plan.
|
|
112
|
+
|
|
113
|
+
## State / Data / Concurrency Design
|
|
114
|
+
|
|
115
|
+
The database query reads report tables and aggregates rows.
|
|
116
|
+
|
|
117
|
+
## Risk Controls
|
|
118
|
+
|
|
119
|
+
Risk: wrong aggregation. Control: validation hook in scenario tests.
|
|
120
|
+
|
|
121
|
+
## Validation Strategy
|
|
122
|
+
|
|
123
|
+
Scenario: query report. Input data: seeded rows. Expected SQL result: exact grouped rows. Command / evidence: integration test. Proves aggregation. Does not prove UI styling.
|
|
124
|
+
|
|
125
|
+
## Plan Close Quality Evidence
|
|
126
|
+
|
|
127
|
+
- downstream_design_guesswork_remaining: []
|
|
128
|
+
`);
|
|
129
|
+
|
|
130
|
+
assert.deepEqual(issues.map((issue) => [issue.code, issue.severity]).sort(), [
|
|
131
|
+
['plan.too_thin.api_shape_not_decided', 'warning'],
|
|
132
|
+
['plan.too_thin.sql_mapping_missing_join_keys', 'warning']
|
|
133
|
+
]);
|
|
134
|
+
assert.deepEqual(formatArtifactDepthBlockingIssues(issues), []);
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
test('tasks artifact depth reports missing failure route and leaked execute guesswork', () => {
|
|
138
|
+
const issues = evaluateTasksArtifactDepth(`---
|
|
139
|
+
contract: sdd-tasks-doc-v2
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
# Thin Tasks
|
|
143
|
+
|
|
144
|
+
## Split Basis
|
|
145
|
+
|
|
146
|
+
Split from plan decisions into implementation and validation tasks.
|
|
147
|
+
|
|
148
|
+
## Implementation Tasks
|
|
149
|
+
|
|
150
|
+
### T1 — Implement report
|
|
151
|
+
|
|
152
|
+
Why this task exists: implements PLAN-1 and execute must not reinterpret scope.
|
|
153
|
+
|
|
154
|
+
Implementation will determine the final SQL join and response fields.
|
|
155
|
+
|
|
156
|
+
\`\`\`sdd-task
|
|
157
|
+
id: T1
|
|
158
|
+
status: pending
|
|
159
|
+
taskClass: implementation
|
|
160
|
+
unitType: core
|
|
161
|
+
wave: 1
|
|
162
|
+
validationHandoff:
|
|
163
|
+
- T2
|
|
164
|
+
\`\`\`
|
|
165
|
+
|
|
166
|
+
## Validation Tasks
|
|
167
|
+
|
|
168
|
+
### T2 — Validate report
|
|
169
|
+
|
|
170
|
+
Expected result: report rows match the accepted plan.
|
|
171
|
+
|
|
172
|
+
\`\`\`sdd-task
|
|
173
|
+
id: T2
|
|
174
|
+
status: pending
|
|
175
|
+
taskClass: validation
|
|
176
|
+
unitType: validation
|
|
177
|
+
wave: 2
|
|
178
|
+
validatesImplementationTasks:
|
|
179
|
+
- T1
|
|
180
|
+
\`\`\`
|
|
181
|
+
|
|
182
|
+
## Task Dependencies and Handoff
|
|
183
|
+
|
|
184
|
+
T2 depends on T1.
|
|
185
|
+
|
|
186
|
+
## Open Execution Questions
|
|
187
|
+
|
|
188
|
+
None.
|
|
189
|
+
|
|
190
|
+
## Tasks Close Quality Evidence
|
|
191
|
+
|
|
192
|
+
- downstream_execution_guesswork_remaining: []
|
|
193
|
+
`);
|
|
194
|
+
|
|
195
|
+
assert.deepEqual(issues.map((issue) => issue.code).sort(), [
|
|
196
|
+
'tasks.failure_route.missing',
|
|
197
|
+
'tasks.plan_repair.design_guesswork_leaked_to_execute'
|
|
198
|
+
]);
|
|
199
|
+
assert.deepEqual(issues.map((issue) => [issue.code, issue.severity]).sort(), [
|
|
200
|
+
['tasks.failure_route.missing', 'blocker'],
|
|
201
|
+
['tasks.plan_repair.design_guesswork_leaked_to_execute', 'blocker']
|
|
202
|
+
]);
|
|
203
|
+
assert.deepEqual(formatArtifactDepthBlockingIssues(issues).map((item) => item.replace(/:.*/, '')), ['blocker', 'blocker']);
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
test('tasks artifact depth accepts oversized slice when tasks-manager records keep-together decision', () => {
|
|
207
|
+
const issues = evaluateTasksArtifactDepth(`---
|
|
208
|
+
contract: sdd-tasks-doc-v2
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
# Reviewed Tasks
|
|
212
|
+
|
|
213
|
+
## Split Basis
|
|
214
|
+
|
|
215
|
+
Tasks-manager reviewed the split decision: keep together as one backend/runtime rollback unit because Controller, Service, Mapper, DTO, VO, XML, and SQL must be reverted together. Internal order: controller route, service read model, mapper XML, SQL filters, DTO/VO wiring.
|
|
216
|
+
|
|
217
|
+
## Implementation Tasks
|
|
218
|
+
|
|
219
|
+
### T1 — Implement report read model
|
|
220
|
+
|
|
221
|
+
Why this task exists: implements PLAN-1. Work-unit context: the backend/runtime rollback unit must stay together. Plan decision: preserve existing controller ownership. Risk: execute must not reinterpret SQL ownership.
|
|
222
|
+
|
|
223
|
+
Change Controller, Service, Mapper, DTO, VO, mapper XML, SQL, JSP, and UI configuration in one task. Affected surfaces: ReportController, ReportService, ReportMapper, ReportDTO, ReportVO, mapper XML, permission SQL, JSP, and UI route.
|
|
224
|
+
|
|
225
|
+
\`\`\`sdd-task
|
|
226
|
+
id: T1
|
|
227
|
+
status: pending
|
|
228
|
+
taskClass: implementation
|
|
229
|
+
unitType: core
|
|
230
|
+
wave: 1
|
|
231
|
+
validationHandoff:
|
|
232
|
+
- T2
|
|
233
|
+
\`\`\`
|
|
234
|
+
|
|
235
|
+
## Validation Tasks
|
|
236
|
+
|
|
237
|
+
### T2 — Validate report read model
|
|
238
|
+
|
|
239
|
+
Expected result: report rows match the accepted plan. Evidence is enough when SQL/API review proves the read model; does not prove release readiness.
|
|
240
|
+
|
|
241
|
+
\`\`\`sdd-task
|
|
242
|
+
id: T2
|
|
243
|
+
status: pending
|
|
244
|
+
taskClass: validation
|
|
245
|
+
unitType: validation
|
|
246
|
+
wave: 2
|
|
247
|
+
validatesImplementationTasks:
|
|
248
|
+
- T1
|
|
249
|
+
\`\`\`
|
|
250
|
+
|
|
251
|
+
## Task Dependencies and Handoff
|
|
252
|
+
|
|
253
|
+
T2 depends on T1.
|
|
254
|
+
|
|
255
|
+
## Open Execution Questions
|
|
256
|
+
|
|
257
|
+
No blocking execution questions. Failure route: tasks repair, plan repair, spec/user decision, or environment diagnostic.
|
|
258
|
+
|
|
259
|
+
## Tasks Close Quality Evidence
|
|
260
|
+
|
|
261
|
+
- downstream_execution_guesswork_remaining: []
|
|
262
|
+
`);
|
|
263
|
+
|
|
264
|
+
assert.equal(issues.some((issue) => issue.code === 'tasks.review.split_adjudication_missing'), false);
|
|
265
|
+
assert.deepEqual(formatArtifactDepthBlockingIssues(issues), []);
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
test('artifact depth keeps advisory and warning diagnostics out of blocking formatter', () => {
|
|
269
|
+
const specIssues = evaluateSpecArtifactDepth(`---
|
|
270
|
+
contract: sdd-spec-doc-v3
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
# Advisory Spec
|
|
274
|
+
|
|
275
|
+
## Problem Reframing / Intent Discovery
|
|
276
|
+
|
|
277
|
+
Surface request only.
|
|
278
|
+
|
|
279
|
+
## Requirements
|
|
280
|
+
|
|
281
|
+
| ID | Requirement | Priority | Source |
|
|
282
|
+
|---|---|---|---|
|
|
283
|
+
| REQ-1 | Add the report because the branch scope requires it. | Must | user |
|
|
284
|
+
|
|
285
|
+
## Acceptance Criteria / Evidence Targets
|
|
286
|
+
|
|
287
|
+
| ID | Acceptance | Covers | Evidence Target |
|
|
288
|
+
|---|---|---|---|
|
|
289
|
+
| AC-1 | Report returns branch-local rows. | REQ-1 | API test evidence target. |
|
|
290
|
+
|
|
291
|
+
## Definitions / Rules
|
|
292
|
+
|
|
293
|
+
Domain rule: branch-local report scope is invariant.
|
|
294
|
+
|
|
295
|
+
## Open Questions / Ambiguity Ledger
|
|
296
|
+
|
|
297
|
+
No blocking user decisions. Researchable gaps: none. Safe assumptions: none. Deferred: none.
|
|
298
|
+
|
|
299
|
+
## Close Quality Evidence
|
|
300
|
+
|
|
301
|
+
- downstream_business_guesswork_remaining: []
|
|
302
|
+
`);
|
|
303
|
+
|
|
304
|
+
assert.deepEqual(specIssues.map((issue) => [issue.code, issue.severity]).sort(), [
|
|
305
|
+
['spec.too_thin.problem_reframing_missing', 'advisory']
|
|
306
|
+
]);
|
|
307
|
+
assert.deepEqual(formatArtifactDepthBlockingIssues(specIssues), []);
|
|
308
|
+
});
|
|
309
|
+
|
|
310
|
+
test('artifact depth treats explicit downstream guesswork as blocker across stages', () => {
|
|
311
|
+
const specBlockers = evaluateSpecArtifactDepth(`---
|
|
312
|
+
contract: sdd-spec-doc-v3
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
# Blocked Spec
|
|
316
|
+
|
|
317
|
+
## Problem Reframing / Intent Discovery
|
|
318
|
+
|
|
319
|
+
Surface request: change report. Reframed problem: clarify report semantics. Inferred real intent: avoid ambiguity.
|
|
320
|
+
|
|
321
|
+
## Requirements
|
|
322
|
+
|
|
323
|
+
| ID | Requirement | Priority | Source |
|
|
324
|
+
|---|---|---|---|
|
|
325
|
+
| REQ-1 | Add report because branch scope requires it. | Must | user |
|
|
326
|
+
|
|
327
|
+
## Acceptance Criteria / Evidence Targets
|
|
328
|
+
|
|
329
|
+
| ID | Acceptance | Covers | Evidence Target |
|
|
330
|
+
|---|---|---|---|
|
|
331
|
+
| AC-1 | Report returns branch-local rows. | REQ-1 | API evidence target. |
|
|
332
|
+
|
|
333
|
+
## Definitions / Rules
|
|
334
|
+
|
|
335
|
+
Domain rule: branch-local report scope is invariant.
|
|
336
|
+
|
|
337
|
+
## Open Questions / Ambiguity Ledger
|
|
338
|
+
|
|
339
|
+
No blocking user decisions. Researchable gaps: none. Safe assumptions: none. Deferred: none.
|
|
340
|
+
|
|
341
|
+
## Close Quality Evidence
|
|
342
|
+
|
|
343
|
+
- downstream_business_guesswork_remaining: [\"report ownership undecided\"]
|
|
344
|
+
`);
|
|
345
|
+
const planBlockers = evaluatePlanArtifactDepth(`---
|
|
346
|
+
contract: sdd-plan-doc-v3
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
# Blocked Plan
|
|
350
|
+
|
|
351
|
+
## Current Implementation Map
|
|
352
|
+
|
|
353
|
+
Observed 'ReportController' and 'ReportMapper.xml'; therefore the design reuses existing ownership and mapper conventions.
|
|
354
|
+
|
|
355
|
+
## Interface / API / Schema Design
|
|
356
|
+
|
|
357
|
+
Request field 'branchId'; response DTO 'ReportRowVO'; mapper field 'report.branch_id'; status field 'report.status'. No SQL table ownership changes.
|
|
358
|
+
|
|
359
|
+
## State / Data / Concurrency Design
|
|
360
|
+
|
|
361
|
+
Runtime reads 'report.branch_id', 'report.status', 'report.created_at', 'report.asset_id', and 'report.amount'; rollback is not applicable because this is read-only.
|
|
362
|
+
|
|
363
|
+
## Risk Controls
|
|
364
|
+
|
|
365
|
+
Risk: wrong branch filter. Control: scenario validation checks SQL evidence.
|
|
366
|
+
|
|
367
|
+
## Validation Strategy
|
|
368
|
+
|
|
369
|
+
Scenario: query report. Input data: branch rows. Expected SQL result: exact rows. Command evidence: integration test. Proves branch filter. Does not prove UI styling.
|
|
370
|
+
|
|
371
|
+
## Plan Close Quality Evidence
|
|
372
|
+
|
|
373
|
+
- downstream_design_guesswork_remaining: [\"SQL grouping undecided\"]
|
|
374
|
+
`);
|
|
375
|
+
|
|
376
|
+
assert.equal(specBlockers.find((issue) => issue.code === 'spec.downstream_guesswork.plan_would_rediscover_requirements')?.severity, 'blocker');
|
|
377
|
+
assert.equal(planBlockers.find((issue) => issue.code === 'plan.downstream_guesswork.tasks_or_execute_would_redesign')?.severity, 'blocker');
|
|
378
|
+
assert.equal(formatArtifactDepthBlockingIssues(specBlockers).length, 1);
|
|
379
|
+
assert.equal(formatArtifactDepthBlockingIssues(planBlockers).length, 1);
|
|
380
|
+
});
|