agentic-orchestrator 0.1.2 → 0.1.4
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/.claude/settings.local.json +15 -0
- package/CLAUDE.md +126 -0
- package/README.md +166 -25
- package/agentic/orchestrator/adapters.yaml +3 -0
- package/agentic/orchestrator/gates.yaml +47 -0
- package/agentic/orchestrator/policy.yaml +89 -0
- package/agentic/orchestrator/schemas/adapters.schema.json +12 -0
- package/agentic/orchestrator/schemas/gates.schema.json +6 -1
- package/agentic/orchestrator/schemas/index.schema.json +14 -0
- package/agentic/orchestrator/schemas/multi-project.schema.json +41 -0
- package/agentic/orchestrator/schemas/policy.schema.json +449 -52
- package/agentic/orchestrator/schemas/state.schema.json +16 -0
- package/agentic/orchestrator/tools/catalog.json +68 -0
- package/agentic/orchestrator/tools/schemas/input/cost.get.input.schema.json +10 -0
- package/agentic/orchestrator/tools/schemas/input/cost.record.input.schema.json +13 -0
- package/agentic/orchestrator/tools/schemas/input/feature.send_message.input.schema.json +11 -0
- package/agentic/orchestrator/tools/schemas/input/performance.get_analytics.input.schema.json +10 -0
- package/agentic/orchestrator/tools/schemas/input/performance.record_outcome.input.schema.json +18 -0
- package/agentic/orchestrator/tools/schemas/output/cost.get.output.schema.json +13 -0
- package/agentic/orchestrator/tools/schemas/output/cost.record.output.schema.json +13 -0
- package/agentic/orchestrator/tools/schemas/output/feature.ready_to_merge.output.schema.json +7 -0
- package/agentic/orchestrator/tools/schemas/output/feature.send_message.output.schema.json +23 -0
- package/agentic/orchestrator/tools/schemas/output/performance.get_analytics.output.schema.json +46 -0
- package/agentic/orchestrator/tools/schemas/output/performance.record_outcome.output.schema.json +10 -0
- package/agentic/orchestrator/tools.md +5 -0
- package/apps/control-plane/scripts/validate-architecture-rules.mjs +28 -2
- package/apps/control-plane/scripts/validate-docker-mcp-contract.mjs +12 -0
- package/apps/control-plane/scripts/validate-mcp-contracts.ts +92 -0
- package/apps/control-plane/src/application/adapters/adapter-registry.ts +169 -0
- package/apps/control-plane/src/application/multi-project-loader.ts +119 -0
- package/apps/control-plane/src/application/services/activity-monitor-service.ts +199 -0
- package/apps/control-plane/src/application/services/cost-tracking-service.ts +82 -0
- package/apps/control-plane/src/application/services/dependency-scheduler-service.ts +86 -0
- package/apps/control-plane/src/application/services/feature-deletion-service.ts +8 -7
- package/apps/control-plane/src/application/services/gate-interpolation-service.ts +15 -0
- package/apps/control-plane/src/application/services/gate-service.ts +38 -2
- package/apps/control-plane/src/application/services/instance-isolation-service.ts +18 -0
- package/apps/control-plane/src/application/services/issue-tracker-service.ts +469 -0
- package/apps/control-plane/src/application/services/merge-service.ts +67 -3
- package/apps/control-plane/src/application/services/notifier-service.ts +295 -0
- package/apps/control-plane/src/application/services/performance-analytics-service.ts +122 -0
- package/apps/control-plane/src/application/services/plan-service.ts +51 -0
- package/apps/control-plane/src/application/services/pr-monitor-service.ts +262 -0
- package/apps/control-plane/src/application/services/reactions-service.ts +175 -0
- package/apps/control-plane/src/application/services/reporting-service.ts +17 -2
- package/apps/control-plane/src/application/services/run-lease-service.ts +16 -38
- package/apps/control-plane/src/application/tools/tool-metadata.ts +4 -1
- package/apps/control-plane/src/cli/aop.ts +1 -1
- package/apps/control-plane/src/cli/attach-command-handler.ts +120 -0
- package/apps/control-plane/src/cli/cleanup-command-handler.ts +190 -0
- package/apps/control-plane/src/cli/cli-argument-parser.ts +69 -3
- package/apps/control-plane/src/cli/dashboard-command-handler.ts +57 -0
- package/apps/control-plane/src/cli/help-command-handler.ts +163 -0
- package/apps/control-plane/src/cli/init-command-handler.ts +609 -0
- package/apps/control-plane/src/cli/resume-command-handler.ts +1 -0
- package/apps/control-plane/src/cli/retry-command-handler.ts +138 -0
- package/apps/control-plane/src/cli/run-command-handler.ts +115 -3
- package/apps/control-plane/src/cli/send-command-handler.ts +65 -0
- package/apps/control-plane/src/cli/status-command-handler.ts +102 -2
- package/apps/control-plane/src/cli/types.ts +26 -1
- package/apps/control-plane/src/core/constants.ts +8 -2
- package/apps/control-plane/src/core/error-codes.ts +3 -1
- package/apps/control-plane/src/core/gates.ts +170 -50
- package/apps/control-plane/src/core/kernel.ts +280 -5
- package/apps/control-plane/src/core/path-layout.ts +12 -0
- package/apps/control-plane/src/core/tool-caller.ts +36 -0
- package/apps/control-plane/src/core/workspace-hooks.ts +87 -0
- package/apps/control-plane/src/interfaces/cli/bootstrap.ts +258 -9
- package/apps/control-plane/src/providers/providers.ts +235 -14
- package/apps/control-plane/src/supervisor/build-wave-executor.ts +129 -8
- package/apps/control-plane/src/supervisor/qa-wave-executor.ts +123 -5
- package/apps/control-plane/src/supervisor/run-coordinator.ts +143 -6
- package/apps/control-plane/src/supervisor/runtime.ts +135 -6
- package/apps/control-plane/src/supervisor/types.ts +12 -21
- package/apps/control-plane/src/supervisor/worker-decision-loop.ts +8 -0
- package/apps/control-plane/test/activity-monitor.spec.ts +294 -0
- package/apps/control-plane/test/adapter-registry.spec.ts +132 -0
- package/apps/control-plane/test/batch-operations.spec.ts +112 -0
- package/apps/control-plane/test/bootstrap-attach.spec.ts +102 -0
- package/apps/control-plane/test/bootstrap-edge-cases.spec.ts +252 -0
- package/apps/control-plane/test/bootstrap.spec.ts +560 -0
- package/apps/control-plane/test/cleanup-command.spec.ts +301 -0
- package/apps/control-plane/test/cli-helpers.spec.ts +404 -1
- package/apps/control-plane/test/cli.unit.spec.ts +182 -1
- package/apps/control-plane/test/collision-queue.spec.ts +104 -1
- package/apps/control-plane/test/core-utils.spec.ts +175 -2
- package/apps/control-plane/test/cost-tracking.spec.ts +143 -0
- package/apps/control-plane/test/dashboard-api.integration.spec.ts +247 -0
- package/apps/control-plane/test/dashboard-client.spec.ts +116 -0
- package/apps/control-plane/test/dashboard-command.spec.ts +103 -0
- package/apps/control-plane/test/dependency-scheduler.spec.ts +189 -0
- package/apps/control-plane/test/epoch-tracking.spec.ts +4 -4
- package/apps/control-plane/test/feature-deletion-service.spec.ts +422 -0
- package/apps/control-plane/test/feature-lifecycle.spec.ts +202 -0
- package/apps/control-plane/test/git-spawn-error.spec.ts +24 -0
- package/apps/control-plane/test/incremental-gates.spec.ts +137 -0
- package/apps/control-plane/test/init-wizard.spec.ts +506 -0
- package/apps/control-plane/test/instance-isolation.spec.ts +83 -0
- package/apps/control-plane/test/issue-tracker.spec.ts +890 -0
- package/apps/control-plane/test/kernel.coverage.spec.ts +3 -5
- package/apps/control-plane/test/kernel.coverage2.spec.ts +871 -0
- package/apps/control-plane/test/kernel.spec.ts +13 -11
- package/apps/control-plane/test/lock-service.spec.ts +508 -0
- package/apps/control-plane/test/mcp-helpers.spec.ts +176 -0
- package/apps/control-plane/test/mcp.spec.ts +50 -15
- package/apps/control-plane/test/merge-service.spec.ts +67 -4
- package/apps/control-plane/test/multi-project.spec.ts +372 -0
- package/apps/control-plane/test/notifier-service.spec.ts +388 -0
- package/apps/control-plane/test/parallel-gates.spec.ts +312 -0
- package/apps/control-plane/test/patch-service.spec.ts +253 -0
- package/apps/control-plane/test/performance-analytics.spec.ts +338 -0
- package/apps/control-plane/test/planning-wave-executor.spec.ts +168 -0
- package/apps/control-plane/test/pr-monitor.spec.ts +385 -0
- package/apps/control-plane/test/providers.spec.ts +344 -1
- package/apps/control-plane/test/reactions.spec.ts +392 -0
- package/apps/control-plane/test/resume-command.spec.ts +390 -0
- package/apps/control-plane/test/run-coordinator.spec.ts +481 -2
- package/apps/control-plane/test/schema-date-time.spec.ts +46 -0
- package/apps/control-plane/test/service-retry-paths.spec.ts +30 -0
- package/apps/control-plane/test/services.spec.ts +95 -2
- package/apps/control-plane/test/session-management.spec.ts +450 -0
- package/apps/control-plane/test/spec-ingestion.spec.ts +190 -0
- package/apps/control-plane/test/supervisor-collaborators.spec.ts +699 -2
- package/apps/control-plane/test/supervisor.spec.ts +36 -30
- package/apps/control-plane/test/supervisor.unit.spec.ts +405 -0
- package/apps/control-plane/test/worker-decision-loop.spec.ts +57 -0
- package/apps/control-plane/test/workspace-hooks.spec.ts +177 -0
- package/apps/control-plane/vitest.config.ts +21 -5
- package/dist/apps/control-plane/application/adapters/adapter-registry.d.ts +44 -0
- package/dist/apps/control-plane/application/adapters/adapter-registry.js +76 -0
- package/dist/apps/control-plane/application/adapters/adapter-registry.js.map +1 -0
- package/dist/apps/control-plane/application/multi-project-loader.d.ts +31 -0
- package/dist/apps/control-plane/application/multi-project-loader.js +82 -0
- package/dist/apps/control-plane/application/multi-project-loader.js.map +1 -0
- package/dist/apps/control-plane/application/services/activity-monitor-service.d.ts +43 -0
- package/dist/apps/control-plane/application/services/activity-monitor-service.js +132 -0
- package/dist/apps/control-plane/application/services/activity-monitor-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/cost-tracking-service.d.ts +28 -0
- package/dist/apps/control-plane/application/services/cost-tracking-service.js +48 -0
- package/dist/apps/control-plane/application/services/cost-tracking-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/dependency-scheduler-service.d.ts +26 -0
- package/dist/apps/control-plane/application/services/dependency-scheduler-service.js +75 -0
- package/dist/apps/control-plane/application/services/dependency-scheduler-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/feature-deletion-service.d.ts +2 -0
- package/dist/apps/control-plane/application/services/feature-deletion-service.js +6 -7
- package/dist/apps/control-plane/application/services/feature-deletion-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/gate-interpolation-service.d.ts +7 -0
- package/dist/apps/control-plane/application/services/gate-interpolation-service.js +7 -0
- package/dist/apps/control-plane/application/services/gate-interpolation-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/gate-service.js +32 -2
- package/dist/apps/control-plane/application/services/gate-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/instance-isolation-service.d.ts +11 -0
- package/dist/apps/control-plane/application/services/instance-isolation-service.js +17 -0
- package/dist/apps/control-plane/application/services/instance-isolation-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/issue-tracker-service.d.ts +65 -0
- package/dist/apps/control-plane/application/services/issue-tracker-service.js +358 -0
- package/dist/apps/control-plane/application/services/issue-tracker-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/merge-service.d.ts +4 -0
- package/dist/apps/control-plane/application/services/merge-service.js +44 -2
- package/dist/apps/control-plane/application/services/merge-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/notifier-service.d.ts +74 -0
- package/dist/apps/control-plane/application/services/notifier-service.js +212 -0
- package/dist/apps/control-plane/application/services/notifier-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/performance-analytics-service.d.ts +39 -0
- package/dist/apps/control-plane/application/services/performance-analytics-service.js +75 -0
- package/dist/apps/control-plane/application/services/performance-analytics-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/plan-service.d.ts +1 -0
- package/dist/apps/control-plane/application/services/plan-service.js +53 -0
- package/dist/apps/control-plane/application/services/plan-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/pr-monitor-service.d.ts +44 -0
- package/dist/apps/control-plane/application/services/pr-monitor-service.js +192 -0
- package/dist/apps/control-plane/application/services/pr-monitor-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/reactions-service.d.ts +67 -0
- package/dist/apps/control-plane/application/services/reactions-service.js +114 -0
- package/dist/apps/control-plane/application/services/reactions-service.js.map +1 -0
- package/dist/apps/control-plane/application/services/reporting-service.d.ts +1 -0
- package/dist/apps/control-plane/application/services/reporting-service.js +13 -2
- package/dist/apps/control-plane/application/services/reporting-service.js.map +1 -1
- package/dist/apps/control-plane/application/services/run-lease-service.d.ts +2 -0
- package/dist/apps/control-plane/application/services/run-lease-service.js +14 -38
- package/dist/apps/control-plane/application/services/run-lease-service.js.map +1 -1
- package/dist/apps/control-plane/application/tools/tool-metadata.js +3 -1
- package/dist/apps/control-plane/application/tools/tool-metadata.js.map +1 -1
- package/dist/apps/control-plane/cli/aop.d.ts +1 -1
- package/dist/apps/control-plane/cli/aop.js +1 -1
- package/dist/apps/control-plane/cli/attach-command-handler.d.ts +12 -0
- package/dist/apps/control-plane/cli/attach-command-handler.js +98 -0
- package/dist/apps/control-plane/cli/attach-command-handler.js.map +1 -0
- package/dist/apps/control-plane/cli/cleanup-command-handler.d.ts +12 -0
- package/dist/apps/control-plane/cli/cleanup-command-handler.js +162 -0
- package/dist/apps/control-plane/cli/cleanup-command-handler.js.map +1 -0
- package/dist/apps/control-plane/cli/cli-argument-parser.js +73 -3
- package/dist/apps/control-plane/cli/cli-argument-parser.js.map +1 -1
- package/dist/apps/control-plane/cli/dashboard-command-handler.d.ts +7 -0
- package/dist/apps/control-plane/cli/dashboard-command-handler.js +45 -0
- package/dist/apps/control-plane/cli/dashboard-command-handler.js.map +1 -0
- package/dist/apps/control-plane/cli/help-command-handler.d.ts +8 -0
- package/dist/apps/control-plane/cli/help-command-handler.js +146 -0
- package/dist/apps/control-plane/cli/help-command-handler.js.map +1 -0
- package/dist/apps/control-plane/cli/init-command-handler.d.ts +26 -0
- package/dist/apps/control-plane/cli/init-command-handler.js +517 -0
- package/dist/apps/control-plane/cli/init-command-handler.js.map +1 -0
- package/dist/apps/control-plane/cli/resume-command-handler.js +1 -1
- package/dist/apps/control-plane/cli/resume-command-handler.js.map +1 -1
- package/dist/apps/control-plane/cli/retry-command-handler.d.ts +8 -0
- package/dist/apps/control-plane/cli/retry-command-handler.js +111 -0
- package/dist/apps/control-plane/cli/retry-command-handler.js.map +1 -0
- package/dist/apps/control-plane/cli/run-command-handler.d.ts +5 -0
- package/dist/apps/control-plane/cli/run-command-handler.js +82 -3
- package/dist/apps/control-plane/cli/run-command-handler.js.map +1 -1
- package/dist/apps/control-plane/cli/send-command-handler.d.ts +8 -0
- package/dist/apps/control-plane/cli/send-command-handler.js +55 -0
- package/dist/apps/control-plane/cli/send-command-handler.js.map +1 -0
- package/dist/apps/control-plane/cli/status-command-handler.d.ts +12 -1
- package/dist/apps/control-plane/cli/status-command-handler.js +55 -2
- package/dist/apps/control-plane/cli/status-command-handler.js.map +1 -1
- package/dist/apps/control-plane/cli/types.d.ts +26 -1
- package/dist/apps/control-plane/cli/types.js +15 -1
- package/dist/apps/control-plane/cli/types.js.map +1 -1
- package/dist/apps/control-plane/core/constants.d.ts +6 -0
- package/dist/apps/control-plane/core/constants.js +8 -2
- package/dist/apps/control-plane/core/constants.js.map +1 -1
- package/dist/apps/control-plane/core/error-codes.d.ts +2 -0
- package/dist/apps/control-plane/core/error-codes.js +3 -1
- package/dist/apps/control-plane/core/error-codes.js.map +1 -1
- package/dist/apps/control-plane/core/gates.d.ts +4 -0
- package/dist/apps/control-plane/core/gates.js +140 -43
- package/dist/apps/control-plane/core/gates.js.map +1 -1
- package/dist/apps/control-plane/core/kernel.d.ts +50 -1
- package/dist/apps/control-plane/core/kernel.js +220 -7
- package/dist/apps/control-plane/core/kernel.js.map +1 -1
- package/dist/apps/control-plane/core/path-layout.d.ts +3 -0
- package/dist/apps/control-plane/core/path-layout.js +9 -0
- package/dist/apps/control-plane/core/path-layout.js.map +1 -1
- package/dist/apps/control-plane/core/tool-caller.d.ts +32 -0
- package/dist/apps/control-plane/core/tool-caller.js +2 -0
- package/dist/apps/control-plane/core/tool-caller.js.map +1 -0
- package/dist/apps/control-plane/core/workspace-hooks.d.ts +20 -0
- package/dist/apps/control-plane/core/workspace-hooks.js +69 -0
- package/dist/apps/control-plane/core/workspace-hooks.js.map +1 -0
- package/dist/apps/control-plane/interfaces/cli/bootstrap.js +245 -9
- package/dist/apps/control-plane/interfaces/cli/bootstrap.js.map +1 -1
- package/dist/apps/control-plane/providers/providers.d.ts +42 -3
- package/dist/apps/control-plane/providers/providers.js +216 -5
- package/dist/apps/control-plane/providers/providers.js.map +1 -1
- package/dist/apps/control-plane/supervisor/build-wave-executor.d.ts +3 -0
- package/dist/apps/control-plane/supervisor/build-wave-executor.js +115 -6
- package/dist/apps/control-plane/supervisor/build-wave-executor.js.map +1 -1
- package/dist/apps/control-plane/supervisor/qa-wave-executor.d.ts +3 -0
- package/dist/apps/control-plane/supervisor/qa-wave-executor.js +109 -5
- package/dist/apps/control-plane/supervisor/qa-wave-executor.js.map +1 -1
- package/dist/apps/control-plane/supervisor/run-coordinator.d.ts +15 -0
- package/dist/apps/control-plane/supervisor/run-coordinator.js +132 -6
- package/dist/apps/control-plane/supervisor/run-coordinator.js.map +1 -1
- package/dist/apps/control-plane/supervisor/runtime.d.ts +3 -0
- package/dist/apps/control-plane/supervisor/runtime.js +110 -6
- package/dist/apps/control-plane/supervisor/runtime.js.map +1 -1
- package/dist/apps/control-plane/supervisor/types.d.ts +9 -16
- package/dist/apps/control-plane/supervisor/types.js.map +1 -1
- package/dist/apps/control-plane/supervisor/worker-decision-loop.d.ts +3 -0
- package/dist/apps/control-plane/supervisor/worker-decision-loop.js +5 -0
- package/dist/apps/control-plane/supervisor/worker-decision-loop.js.map +1 -1
- package/eslint.config.mjs +2 -1
- package/package.json +12 -2
- package/packages/web-dashboard/next-env.d.ts +5 -0
- package/packages/web-dashboard/next.config.js +7 -0
- package/packages/web-dashboard/package.json +26 -0
- package/packages/web-dashboard/src/app/api/actions/route.ts +64 -0
- package/packages/web-dashboard/src/app/api/events/route.ts +51 -0
- package/packages/web-dashboard/src/app/api/features/[id]/checkout/route.ts +256 -0
- package/packages/web-dashboard/src/app/api/features/[id]/diff/route.ts +10 -0
- package/packages/web-dashboard/src/app/api/features/[id]/evidence/[artifact]/route.ts +25 -0
- package/packages/web-dashboard/src/app/api/features/[id]/review/route.ts +63 -0
- package/packages/web-dashboard/src/app/api/features/[id]/route.ts +16 -0
- package/packages/web-dashboard/src/app/api/projects/route.ts +31 -0
- package/packages/web-dashboard/src/app/api/status/route.ts +15 -0
- package/packages/web-dashboard/src/app/globals.css +2 -0
- package/packages/web-dashboard/src/app/layout.tsx +15 -0
- package/packages/web-dashboard/src/app/page.tsx +393 -0
- package/packages/web-dashboard/src/lib/aop-client.ts +244 -0
- package/packages/web-dashboard/src/lib/multi-project-config.ts +116 -0
- package/packages/web-dashboard/src/lib/orchestrator-tools.ts +284 -0
- package/packages/web-dashboard/src/lib/types.ts +58 -0
- package/packages/web-dashboard/tsconfig.json +40 -0
- package/packages/web-dashboard/vitest.config.ts +6 -0
- package/spec-files/completed/agentic_orchestrator_feature_gaps_closure_spec.md +1764 -0
- package/spec-files/outstanding/agentic_orchestrator_enterprise_governance_dashboard_spec.md +348 -0
- package/spec-files/outstanding/agentic_orchestrator_knowledge_canary_spec.md +344 -0
- package/spec-files/outstanding/agentic_orchestrator_observability_integrity_diagnostics_spec.md +374 -0
- package/spec-files/outstanding/agentic_orchestrator_performance_improvements_spec.md +1059 -0
- package/spec-files/outstanding/agentic_orchestrator_planning_review_quality_spec.md +466 -0
- package/spec-files/outstanding/agentic_orchestrator_quality_adoption_execution_spec.md +198 -0
- package/spec-files/outstanding/agentic_orchestrator_validator_hardening_spec.md +365 -0
- package/spec-files/progress.md +481 -52
- /package/spec-files/{agentic_orchestrator_cli_delete_command_spec.md → completed/agentic_orchestrator_cli_delete_command_spec.md} +0 -0
- /package/spec-files/{agentic_orchestrator_dot_aop_generated_artifacts_spec.md → completed/agentic_orchestrator_dot_aop_generated_artifacts_spec.md} +0 -0
- /package/spec-files/{agentic_orchestrator_mcp_formalization_spec.md → completed/agentic_orchestrator_mcp_formalization_spec.md} +0 -0
- /package/spec-files/{agentic_orchestrator_oop_refactor_spec.md → completed/agentic_orchestrator_oop_refactor_spec.md} +0 -0
- /package/spec-files/{agentic_orchestrator_single_global_orchestrator_spec.md → completed/agentic_orchestrator_single_global_orchestrator_spec.md} +0 -0
- /package/spec-files/{agentic_orchestrator_spec.md → completed/agentic_orchestrator_spec.md} +0 -0
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
# Feature Spec: Enterprise Governance and Secure Dashboard Operations (AOP)
|
|
2
|
+
|
|
3
|
+
> **Purpose of this document**: Define implementation-ready delivery for Q5 and Q6: compliance policy packs + control export, and production-grade dashboard authentication/authorization with audit federation.
|
|
4
|
+
|
|
5
|
+
**Version:** 1.0
|
|
6
|
+
**Date:** 2026-03-03
|
|
7
|
+
**Status:** Draft
|
|
8
|
+
**Roadmap Mapping:** M37
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 0. Scope and Standards
|
|
13
|
+
|
|
14
|
+
### 0.1 Feature Scope
|
|
15
|
+
|
|
16
|
+
This spec implements:
|
|
17
|
+
- **Q5** Compliance Policy Packs + Control Export
|
|
18
|
+
- **Q6** Dashboard AuthN/AuthZ + SSO + Audit Federation
|
|
19
|
+
|
|
20
|
+
### 0.2 Required Standards
|
|
21
|
+
|
|
22
|
+
Implementation MUST preserve:
|
|
23
|
+
- deterministic evidence mapping
|
|
24
|
+
- explicit authorization for all mutating dashboard actions
|
|
25
|
+
- audit-log completeness for privileged operations
|
|
26
|
+
- optional/off-by-default behavior for local developer environments
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 1. Objectives
|
|
31
|
+
|
|
32
|
+
### 1.1 Must-Have Outcomes
|
|
33
|
+
|
|
34
|
+
- operators can apply standardized compliance packs and export machine-readable control evidence mappings
|
|
35
|
+
- dashboard can run safely in multi-user environments with OIDC/API key auth and RBAC
|
|
36
|
+
- privileged dashboard actions emit structured audit records suitable for SIEM ingestion
|
|
37
|
+
|
|
38
|
+
### 1.2 Non-Goals
|
|
39
|
+
|
|
40
|
+
- no claim of automatic certification/compliance attestation
|
|
41
|
+
- no external IAM provisioning automation in this phase
|
|
42
|
+
- no hard requirement for auth in local dev mode
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 2. Architecture Decisions
|
|
47
|
+
|
|
48
|
+
### 2.1 Compliance as Policy Overlay
|
|
49
|
+
|
|
50
|
+
Compliance packs are deterministic overlays evaluated against existing policy, runtime state, and evidence artifacts. They do not replace base policy configuration.
|
|
51
|
+
|
|
52
|
+
### 2.2 Dashboard Security Boundary
|
|
53
|
+
|
|
54
|
+
Dashboard API authorization is enforced server-side for every action endpoint; UI affordances alone are insufficient and non-authoritative.
|
|
55
|
+
|
|
56
|
+
### 2.3 Unified Audit Envelope
|
|
57
|
+
|
|
58
|
+
Audit events from dashboard actions and compliance exports share a common schema for downstream ingestion.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 3. Contracts and Config
|
|
63
|
+
|
|
64
|
+
### 3.1 Policy Additions
|
|
65
|
+
|
|
66
|
+
```yaml
|
|
67
|
+
innovation:
|
|
68
|
+
compliance_packs: false
|
|
69
|
+
dashboard_auth: false
|
|
70
|
+
|
|
71
|
+
compliance:
|
|
72
|
+
enabled: false
|
|
73
|
+
default_pack: soc2_baseline
|
|
74
|
+
export:
|
|
75
|
+
include_manual_controls: true
|
|
76
|
+
|
|
77
|
+
dashboard:
|
|
78
|
+
auth:
|
|
79
|
+
enabled: false
|
|
80
|
+
mode: oidc_or_api_key # oidc | api_key | oidc_or_api_key
|
|
81
|
+
oidc:
|
|
82
|
+
issuer: ""
|
|
83
|
+
client_id: ""
|
|
84
|
+
audience: ""
|
|
85
|
+
api_keys:
|
|
86
|
+
env_var: AOP_DASHBOARD_API_KEYS
|
|
87
|
+
rbac:
|
|
88
|
+
viewer: [status_read, feature_read, evidence_read]
|
|
89
|
+
reviewer: [status_read, feature_read, evidence_read, review_decide]
|
|
90
|
+
operator: [status_read, feature_read, evidence_read, review_decide, feature_checkout]
|
|
91
|
+
admin: ["*"]
|
|
92
|
+
audit:
|
|
93
|
+
enabled: true
|
|
94
|
+
sink: file # file | webhook
|
|
95
|
+
webhook_url: ""
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 3.2 Source-Managed Compliance Assets
|
|
99
|
+
|
|
100
|
+
```text
|
|
101
|
+
agentic/orchestrator/compliance/packs/
|
|
102
|
+
soc2_baseline.yaml
|
|
103
|
+
iso27001_baseline.yaml
|
|
104
|
+
hipaa_baseline.yaml
|
|
105
|
+
agentic/orchestrator/schemas/compliance_pack.schema.json
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### 3.3 Runtime Artifacts
|
|
109
|
+
|
|
110
|
+
```text
|
|
111
|
+
.aop/runtime/compliance/control_export_<timestamp>.json
|
|
112
|
+
.aop/runtime/audit/dashboard-audit.jsonl
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### 3.4 New MCP Tool
|
|
116
|
+
|
|
117
|
+
- `compliance.export_controls`
|
|
118
|
+
|
|
119
|
+
### 3.5 New CLI Command
|
|
120
|
+
|
|
121
|
+
- `aop compliance export --format <json|csv> [--pack <id>] [--include-manual true|false]`
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 4. Detailed Feature Specs
|
|
126
|
+
|
|
127
|
+
## 4.1 Q5: Compliance Policy Packs + Control Export
|
|
128
|
+
|
|
129
|
+
### 4.1.1 Problem
|
|
130
|
+
Enterprise adoption requires consistent control mapping from orchestrator behavior/evidence to recognized control frameworks.
|
|
131
|
+
|
|
132
|
+
### 4.1.2 Design
|
|
133
|
+
Provide curated compliance packs plus deterministic export routine.
|
|
134
|
+
|
|
135
|
+
### 4.1.3 Pack Structure
|
|
136
|
+
|
|
137
|
+
```yaml
|
|
138
|
+
id: soc2_baseline
|
|
139
|
+
version: "1.0"
|
|
140
|
+
controls:
|
|
141
|
+
- id: CC7.2
|
|
142
|
+
title: Monitor system components for anomalies
|
|
143
|
+
requirements:
|
|
144
|
+
- path: policy.testing.coverage.minimums.line
|
|
145
|
+
op: gte
|
|
146
|
+
value: 0.9
|
|
147
|
+
- path: policy.merge_policy.require_user_approval
|
|
148
|
+
op: eq
|
|
149
|
+
value: true
|
|
150
|
+
evidence_sources:
|
|
151
|
+
- gate_results
|
|
152
|
+
- operation_ledger
|
|
153
|
+
manual_evidence_required: false
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### 4.1.4 Export Output Contract
|
|
157
|
+
|
|
158
|
+
```json
|
|
159
|
+
{
|
|
160
|
+
"pack_id": "soc2_baseline",
|
|
161
|
+
"generated_at": "2026-03-03T12:00:00Z",
|
|
162
|
+
"controls": [
|
|
163
|
+
{
|
|
164
|
+
"id": "CC7.2",
|
|
165
|
+
"status": "pass",
|
|
166
|
+
"automated_checks": [
|
|
167
|
+
{
|
|
168
|
+
"path": "policy.testing.coverage.minimums.line",
|
|
169
|
+
"result": "pass",
|
|
170
|
+
"observed": 0.9
|
|
171
|
+
}
|
|
172
|
+
],
|
|
173
|
+
"evidence_refs": [
|
|
174
|
+
".aop/features/feature_x/evidence/gates/full-2026-03-03.json"
|
|
175
|
+
],
|
|
176
|
+
"manual_evidence_required": false
|
|
177
|
+
}
|
|
178
|
+
]
|
|
179
|
+
}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### 4.1.5 File Targets
|
|
183
|
+
|
|
184
|
+
- `apps/control-plane/src/application/services/compliance-service.ts` (new)
|
|
185
|
+
- `apps/control-plane/src/cli/compliance-export-command-handler.ts` (new)
|
|
186
|
+
- `agentic/orchestrator/compliance/packs/*.yaml` (new)
|
|
187
|
+
- `agentic/orchestrator/schemas/compliance_pack.schema.json` (new)
|
|
188
|
+
- `agentic/orchestrator/tools/schemas/input/compliance.export_controls.input.schema.json` (new)
|
|
189
|
+
- `agentic/orchestrator/tools/schemas/output/compliance.export_controls.output.schema.json` (new)
|
|
190
|
+
|
|
191
|
+
### 4.1.6 Acceptance Criteria
|
|
192
|
+
|
|
193
|
+
- compliance packs schema-validate
|
|
194
|
+
- export output is deterministic for same repo state
|
|
195
|
+
- controls include explicit pass/fail and evidence references
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## 4.2 Q6: Dashboard AuthN/AuthZ + SSO + Audit Federation
|
|
200
|
+
|
|
201
|
+
### 4.2.1 Problem
|
|
202
|
+
Dashboard operation in shared/production contexts needs strong identity + authorization + audit controls.
|
|
203
|
+
|
|
204
|
+
### 4.2.2 Design
|
|
205
|
+
Add optional auth middleware, server-side action authorization, and audit sink integration.
|
|
206
|
+
|
|
207
|
+
### 4.2.3 Auth Modes
|
|
208
|
+
|
|
209
|
+
- `oidc`: bearer token validation against OIDC issuer metadata
|
|
210
|
+
- `api_key`: static/scoped keys from environment
|
|
211
|
+
- `oidc_or_api_key`: allow either for migration convenience
|
|
212
|
+
|
|
213
|
+
### 4.2.4 Action Authorization Matrix
|
|
214
|
+
|
|
215
|
+
Actions to guard:
|
|
216
|
+
- `feature_review_decide` (approve/deny/request_changes)
|
|
217
|
+
- `feature_checkout`
|
|
218
|
+
- `dashboard_admin_settings`
|
|
219
|
+
|
|
220
|
+
Each action must map to role permission in policy.
|
|
221
|
+
|
|
222
|
+
### 4.2.5 Audit Event Contract
|
|
223
|
+
|
|
224
|
+
```json
|
|
225
|
+
{
|
|
226
|
+
"ts": "2026-03-03T12:10:00Z",
|
|
227
|
+
"actor": {
|
|
228
|
+
"id": "alice@example.com",
|
|
229
|
+
"auth_type": "oidc",
|
|
230
|
+
"role": "reviewer"
|
|
231
|
+
},
|
|
232
|
+
"action": "feature_review_decide",
|
|
233
|
+
"feature_id": "payment_retry_guard",
|
|
234
|
+
"result": "allow",
|
|
235
|
+
"request_id": "req-123",
|
|
236
|
+
"metadata": {
|
|
237
|
+
"decision": "approve"
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### 4.2.6 File Targets
|
|
243
|
+
|
|
244
|
+
- `packages/web-dashboard/src/middleware.ts` (new)
|
|
245
|
+
- `packages/web-dashboard/src/lib/authz.ts` (new)
|
|
246
|
+
- `packages/web-dashboard/src/app/api/auth/*` (new)
|
|
247
|
+
- `packages/web-dashboard/src/app/api/features/[id]/review/route.ts`
|
|
248
|
+
- `packages/web-dashboard/src/app/api/features/[id]/checkout/route.ts`
|
|
249
|
+
- `apps/control-plane/src/application/services/dashboard-audit-service.ts` (new)
|
|
250
|
+
|
|
251
|
+
### 4.2.7 Acceptance Criteria
|
|
252
|
+
|
|
253
|
+
- unauthorized users cannot invoke protected dashboard actions
|
|
254
|
+
- audit events emitted for all protected action attempts (allow + deny)
|
|
255
|
+
- local mode works with auth disabled by default
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## 5. Milestones
|
|
260
|
+
|
|
261
|
+
### EGD1: Compliance Pack Foundation
|
|
262
|
+
|
|
263
|
+
Tasks:
|
|
264
|
+
1. Add compliance pack assets + schemas.
|
|
265
|
+
2. Implement export service + MCP tool + CLI command.
|
|
266
|
+
|
|
267
|
+
Exit gate:
|
|
268
|
+
- deterministic export and evidence mapping verified by tests.
|
|
269
|
+
|
|
270
|
+
### EGD2: Dashboard Auth and RBAC
|
|
271
|
+
|
|
272
|
+
Tasks:
|
|
273
|
+
1. Add auth middleware and token/api key validation.
|
|
274
|
+
2. Implement server-side role authorization for protected endpoints.
|
|
275
|
+
|
|
276
|
+
Exit gate:
|
|
277
|
+
- protected actions denied when unauthorized in integration tests.
|
|
278
|
+
|
|
279
|
+
### EGD3: Audit Federation
|
|
280
|
+
|
|
281
|
+
Tasks:
|
|
282
|
+
1. Add unified audit envelope and file sink.
|
|
283
|
+
2. Add optional webhook sink with retry/backoff.
|
|
284
|
+
|
|
285
|
+
Exit gate:
|
|
286
|
+
- allow/deny events emitted and schema-valid in both sinks.
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
## 6. Testing Strategy (Normative)
|
|
291
|
+
|
|
292
|
+
### 6.1 Unit Tests
|
|
293
|
+
|
|
294
|
+
- compliance rule evaluation operators (`eq`, `gte`, etc.)
|
|
295
|
+
- pack schema validation and export assembly
|
|
296
|
+
- auth token/api key parsing and role mapping
|
|
297
|
+
- audit event envelope validation
|
|
298
|
+
|
|
299
|
+
### 6.2 Integration Tests
|
|
300
|
+
|
|
301
|
+
- `aop compliance export` on sample repository state
|
|
302
|
+
- dashboard protected endpoint authorization matrix
|
|
303
|
+
- audit logs emitted for protected action attempts
|
|
304
|
+
|
|
305
|
+
### 6.3 Security Tests
|
|
306
|
+
|
|
307
|
+
- invalid/expired oidc tokens rejected
|
|
308
|
+
- malformed or unknown API keys rejected
|
|
309
|
+
- privilege escalation attempt denied (`viewer` invoking `review_decide`)
|
|
310
|
+
|
|
311
|
+
### 6.4 Contract and Parity Tests
|
|
312
|
+
|
|
313
|
+
- `compliance.export_controls` schema and transport parity (in-process vs MCP)
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
## 7. Acceptance Criteria
|
|
318
|
+
|
|
319
|
+
1. Compliance packs and export path are fully operational and deterministic.
|
|
320
|
+
2. Dashboard auth/authz can be enabled for production multi-user use.
|
|
321
|
+
3. Audit federation records all protected dashboard action attempts.
|
|
322
|
+
4. Feature flags/defaults preserve existing local development behavior.
|
|
323
|
+
5. Full validation gates pass (`lint`, `typecheck`, `test`, contract/architecture validation).
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## 8. Risks and Mitigations
|
|
328
|
+
|
|
329
|
+
- Risk: users assume compliance export equals certification.
|
|
330
|
+
- Mitigation: mandatory disclaimer and `manual_evidence_required` field.
|
|
331
|
+
|
|
332
|
+
- Risk: auth misconfiguration locks out operators.
|
|
333
|
+
- Mitigation: startup preflight checks and explicit break-glass local mode.
|
|
334
|
+
|
|
335
|
+
- Risk: webhook audit sink failures lose records.
|
|
336
|
+
- Mitigation: durable local fallback log + retry policy.
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
## 9. Definition of Done
|
|
341
|
+
|
|
342
|
+
A completed EGD milestone MUST include:
|
|
343
|
+
- changed files and architecture rationale
|
|
344
|
+
- schema/catalog/policy diffs
|
|
345
|
+
- security + integration test coverage
|
|
346
|
+
- gate command results
|
|
347
|
+
- updates in `spec-files/progress.md`
|
|
348
|
+
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
# Feature Spec: Cross-Feature Knowledge Graph and Progressive Merge Canary (AOP)
|
|
2
|
+
|
|
3
|
+
> **Purpose of this document**: Define implementation-ready delivery for Q10 and Q12: reusable cross-feature knowledge retrieval and deterministic post-merge canary verification guardrails.
|
|
4
|
+
|
|
5
|
+
**Version:** 1.0
|
|
6
|
+
**Date:** 2026-03-03
|
|
7
|
+
**Status:** Draft
|
|
8
|
+
**Roadmap Mapping:** M38
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 0. Scope and Constraints
|
|
13
|
+
|
|
14
|
+
### 0.1 Feature Scope
|
|
15
|
+
|
|
16
|
+
This spec implements:
|
|
17
|
+
- **Q10** Cross-Feature Knowledge Graph
|
|
18
|
+
- **Q12** Progressive Merge Guardrails (Canary Verification)
|
|
19
|
+
|
|
20
|
+
### 0.2 Constraints
|
|
21
|
+
|
|
22
|
+
- knowledge retrieval MUST be deterministic and auditable
|
|
23
|
+
- canary verification MUST never bypass explicit merge approval requirements
|
|
24
|
+
- canary failure MUST not auto-revert by default
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 1. Objectives
|
|
29
|
+
|
|
30
|
+
### 1.1 Must-Have Outcomes
|
|
31
|
+
|
|
32
|
+
- planner/orchestrator can retrieve prior feature patterns (collisions, mitigations, gate failures) to improve planning quality
|
|
33
|
+
- merge promotion can optionally run post-merge canary checks before final merged-state confirmation
|
|
34
|
+
- both features remain opt-in and backward compatible
|
|
35
|
+
|
|
36
|
+
### 1.2 Non-Goals
|
|
37
|
+
|
|
38
|
+
- no vector DB dependency in this phase
|
|
39
|
+
- no AI ranking/reranking in first iteration
|
|
40
|
+
- no automatic rollback orchestration
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 2. Architecture Decisions
|
|
45
|
+
|
|
46
|
+
### 2.1 Graph as Derived Runtime Artifact
|
|
47
|
+
|
|
48
|
+
Knowledge graph is deterministic derived state from canonical runtime artifacts (`state.md`, `plan.json`, decisions, gate evidence, collisions, locks). It is not manually edited.
|
|
49
|
+
|
|
50
|
+
### 2.2 Controlled Retrieval API
|
|
51
|
+
|
|
52
|
+
Knowledge access is through explicit tool/query APIs with bounded filters and deterministic ranking rules.
|
|
53
|
+
|
|
54
|
+
### 2.3 Canary as Merge Sub-Stage
|
|
55
|
+
|
|
56
|
+
Canary verification is implemented as an optional sub-stage in `feature.ready_to_merge` flow. Standard preconditions still execute first.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## 3. Contracts and Artifacts
|
|
61
|
+
|
|
62
|
+
### 3.1 Knowledge Graph Artifact
|
|
63
|
+
|
|
64
|
+
```text
|
|
65
|
+
.aop/knowledge/graph.json
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Node contract:
|
|
69
|
+
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"id": "node:feature:payment_retry_guard",
|
|
73
|
+
"type": "feature",
|
|
74
|
+
"labels": ["payments", "retry"],
|
|
75
|
+
"attrs": {
|
|
76
|
+
"status": "merged",
|
|
77
|
+
"created_at": "2026-03-01T11:00:00Z"
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Edge contract:
|
|
83
|
+
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"id": "edge:blocked_by:feature_a:feature_b",
|
|
87
|
+
"type": "blocked_by",
|
|
88
|
+
"from": "node:feature:feature_a",
|
|
89
|
+
"to": "node:feature:feature_b",
|
|
90
|
+
"attrs": {
|
|
91
|
+
"reason": "openapi_operation_conflict"
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 3.2 Canary State Additions (Optional)
|
|
97
|
+
|
|
98
|
+
`state.md` frontmatter optional fields:
|
|
99
|
+
- `canary.status`: `na|pending|pass|fail`
|
|
100
|
+
- `canary.last_run_at`: RFC3339
|
|
101
|
+
- `canary.evidence_refs`: string[]
|
|
102
|
+
|
|
103
|
+
### 3.3 New MCP Tools
|
|
104
|
+
|
|
105
|
+
- `knowledge.search`
|
|
106
|
+
- `merge.canary_verify`
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## 4. Detailed Feature Specs
|
|
111
|
+
|
|
112
|
+
## 4.1 Q10: Cross-Feature Knowledge Graph
|
|
113
|
+
|
|
114
|
+
### 4.1.1 Problem
|
|
115
|
+
Historical delivery knowledge exists but is difficult to query/reuse during planning.
|
|
116
|
+
|
|
117
|
+
### 4.1.2 Design
|
|
118
|
+
Build and maintain graph from canonical artifacts and expose deterministic search API.
|
|
119
|
+
|
|
120
|
+
### 4.1.3 Node Types
|
|
121
|
+
|
|
122
|
+
- `feature`
|
|
123
|
+
- `file`
|
|
124
|
+
- `lock_resource`
|
|
125
|
+
- `collision`
|
|
126
|
+
- `gate_failure`
|
|
127
|
+
- `mitigation_pattern`
|
|
128
|
+
|
|
129
|
+
### 4.1.4 Edge Types
|
|
130
|
+
|
|
131
|
+
- `touches`
|
|
132
|
+
- `blocked_by`
|
|
133
|
+
- `fixed_by`
|
|
134
|
+
- `depends_on`
|
|
135
|
+
- `reuses_pattern`
|
|
136
|
+
|
|
137
|
+
### 4.1.5 Ranking Rules (Deterministic)
|
|
138
|
+
|
|
139
|
+
Ranking by tuple order:
|
|
140
|
+
1. exact feature/status/type match
|
|
141
|
+
2. recency descending
|
|
142
|
+
3. frequency of relevant edge types
|
|
143
|
+
4. lexicographic node id
|
|
144
|
+
|
|
145
|
+
### 4.1.6 Query Contract
|
|
146
|
+
|
|
147
|
+
Input (`knowledge.search`):
|
|
148
|
+
|
|
149
|
+
```json
|
|
150
|
+
{
|
|
151
|
+
"query": "db migration retry lock",
|
|
152
|
+
"feature_id": "payment_retry_guard",
|
|
153
|
+
"limit": 20,
|
|
154
|
+
"filters": {
|
|
155
|
+
"node_types": ["mitigation_pattern", "gate_failure"]
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Output:
|
|
161
|
+
|
|
162
|
+
```json
|
|
163
|
+
{
|
|
164
|
+
"results": [
|
|
165
|
+
{
|
|
166
|
+
"node_id": "node:mitigation:retry_lock_backoff",
|
|
167
|
+
"score": 0.89,
|
|
168
|
+
"evidence_refs": [
|
|
169
|
+
".aop/features/legacy_feature/evidence/gates/full-2026-02-20.json"
|
|
170
|
+
]
|
|
171
|
+
}
|
|
172
|
+
]
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### 4.1.7 File Targets
|
|
177
|
+
|
|
178
|
+
- `apps/control-plane/src/application/services/knowledge-graph-service.ts` (new)
|
|
179
|
+
- `apps/control-plane/src/application/services/plan-service.ts`
|
|
180
|
+
- `apps/control-plane/src/application/services/feature-state-service.ts`
|
|
181
|
+
- `agentic/orchestrator/tools/schemas/input/knowledge.search.input.schema.json` (new)
|
|
182
|
+
- `agentic/orchestrator/tools/schemas/output/knowledge.search.output.schema.json` (new)
|
|
183
|
+
|
|
184
|
+
### 4.1.8 Acceptance Criteria
|
|
185
|
+
|
|
186
|
+
- graph generated/updated deterministically from canonical sources
|
|
187
|
+
- search returns stable ordering for same query and graph state
|
|
188
|
+
- planner can consume top results as optional context bundle extension
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## 4.2 Q12: Progressive Merge Guardrails (Canary Verification)
|
|
193
|
+
|
|
194
|
+
### 4.2.1 Problem
|
|
195
|
+
Pre-merge checks can miss issues that only surface on merged head.
|
|
196
|
+
|
|
197
|
+
### 4.2.2 Design
|
|
198
|
+
Optional post-merge canary gate profile runs before final merged-state confirmation.
|
|
199
|
+
|
|
200
|
+
### 4.2.3 Canary Flow
|
|
201
|
+
|
|
202
|
+
1. `feature.ready_to_merge` validates existing preconditions (approval, required gates, status).
|
|
203
|
+
2. perform merge operation in deterministic path.
|
|
204
|
+
3. if `innovation.canary_merge_verification=true`, run canary profile.
|
|
205
|
+
4. if canary passes:
|
|
206
|
+
- set `canary.status=pass`
|
|
207
|
+
- finalize `merged`
|
|
208
|
+
5. if canary fails:
|
|
209
|
+
- set `canary.status=fail`
|
|
210
|
+
- set feature `status=blocked`
|
|
211
|
+
- emit rollback guidance artifact with deterministic remediation steps.
|
|
212
|
+
|
|
213
|
+
### 4.2.4 Policy Additions
|
|
214
|
+
|
|
215
|
+
```yaml
|
|
216
|
+
innovation:
|
|
217
|
+
canary_merge_verification: false
|
|
218
|
+
|
|
219
|
+
merge_policy:
|
|
220
|
+
canary:
|
|
221
|
+
profile: canary
|
|
222
|
+
mode: post_merge
|
|
223
|
+
fail_behavior: block_with_guidance
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### 4.2.5 Rollback Guidance Artifact
|
|
227
|
+
|
|
228
|
+
```text
|
|
229
|
+
.aop/features/<feature_id>/evidence/canary_rollback_guidance_<timestamp>.md
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
Includes:
|
|
233
|
+
- failing canary steps
|
|
234
|
+
- relevant logs/evidence refs
|
|
235
|
+
- deterministic git commands to revert/fix-forward (suggested, not auto-executed)
|
|
236
|
+
|
|
237
|
+
### 4.2.6 File Targets
|
|
238
|
+
|
|
239
|
+
- `apps/control-plane/src/application/services/canary-verification-service.ts` (new)
|
|
240
|
+
- `apps/control-plane/src/application/services/merge-service.ts`
|
|
241
|
+
- `apps/control-plane/src/application/services/gate-service.ts`
|
|
242
|
+
- `agentic/orchestrator/schemas/policy.schema.json`
|
|
243
|
+
- `agentic/orchestrator/schemas/state.schema.json`
|
|
244
|
+
- `agentic/orchestrator/tools/schemas/input/merge.canary_verify.input.schema.json` (new)
|
|
245
|
+
- `agentic/orchestrator/tools/schemas/output/merge.canary_verify.output.schema.json` (new)
|
|
246
|
+
|
|
247
|
+
### 4.2.7 Acceptance Criteria
|
|
248
|
+
|
|
249
|
+
- canary path opt-in and disabled by default
|
|
250
|
+
- canary pass/fail state persisted deterministically
|
|
251
|
+
- fail path blocks final merged confirmation and emits guidance artifact
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## 5. Milestones
|
|
256
|
+
|
|
257
|
+
### KC1: Knowledge Graph Foundation
|
|
258
|
+
|
|
259
|
+
Tasks:
|
|
260
|
+
1. implement graph model/service and build/update pipeline.
|
|
261
|
+
2. add search tool contracts and query API.
|
|
262
|
+
|
|
263
|
+
Exit gate:
|
|
264
|
+
- graph file and search output deterministic under repeated runs.
|
|
265
|
+
|
|
266
|
+
### KC2: Planner Context Integration
|
|
267
|
+
|
|
268
|
+
Tasks:
|
|
269
|
+
1. wire optional knowledge retrieval into planner context bundle.
|
|
270
|
+
2. add policy toggle for knowledge enrichment usage.
|
|
271
|
+
|
|
272
|
+
Exit gate:
|
|
273
|
+
- planner receives contextual patterns without changing core deterministic flow.
|
|
274
|
+
|
|
275
|
+
### KC3: Canary Merge Verification
|
|
276
|
+
|
|
277
|
+
Tasks:
|
|
278
|
+
1. implement canary verification service.
|
|
279
|
+
2. integrate into merge-service finalization path.
|
|
280
|
+
3. emit rollback guidance on fail.
|
|
281
|
+
|
|
282
|
+
Exit gate:
|
|
283
|
+
- merge path with canary enabled handles pass/fail transitions correctly.
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## 6. Testing Strategy (Normative)
|
|
288
|
+
|
|
289
|
+
### 6.1 Unit Tests
|
|
290
|
+
|
|
291
|
+
- graph node/edge dedup and deterministic sort order
|
|
292
|
+
- knowledge ranking stability for fixed input
|
|
293
|
+
- canary pass/fail transition logic
|
|
294
|
+
- rollback guidance content completeness
|
|
295
|
+
|
|
296
|
+
### 6.2 Integration Tests
|
|
297
|
+
|
|
298
|
+
- graph updates after feature lifecycle events
|
|
299
|
+
- `knowledge.search` returns expected patterns for seeded artifacts
|
|
300
|
+
- `feature.ready_to_merge` with canary enabled:
|
|
301
|
+
- success path to `merged`
|
|
302
|
+
- failure path to `blocked` + guidance artifact
|
|
303
|
+
|
|
304
|
+
### 6.3 Transport Parity
|
|
305
|
+
|
|
306
|
+
- `knowledge.search` parity (in-process vs MCP)
|
|
307
|
+
- `merge.canary_verify` parity (in-process vs MCP)
|
|
308
|
+
|
|
309
|
+
---
|
|
310
|
+
|
|
311
|
+
## 7. Acceptance Criteria
|
|
312
|
+
|
|
313
|
+
1. Knowledge graph built and queryable with deterministic ranking.
|
|
314
|
+
2. Planner can consume knowledge results in controlled opt-in mode.
|
|
315
|
+
3. Canary verification can protect merge finalization without breaking existing default behavior.
|
|
316
|
+
4. New tools, schemas, and policies validate and pass all quality gates.
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## 8. Risks and Mitigations
|
|
321
|
+
|
|
322
|
+
- Risk: graph growth impacts performance.
|
|
323
|
+
- Mitigation: bounded compaction and deterministic archival windows.
|
|
324
|
+
|
|
325
|
+
- Risk: noisy knowledge retrieval overwhelms planner context.
|
|
326
|
+
- Mitigation: strict limit/filter controls and deterministic top-K selection.
|
|
327
|
+
|
|
328
|
+
- Risk: canary stage increases merge latency.
|
|
329
|
+
- Mitigation: lightweight canary profile and policy tuning.
|
|
330
|
+
|
|
331
|
+
- Risk: teams misinterpret blocked-after-canary as merge corruption.
|
|
332
|
+
- Mitigation: explicit status reason and rollback/fix-forward guidance artifact.
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## 9. Definition of Done
|
|
337
|
+
|
|
338
|
+
A completed KC milestone MUST include:
|
|
339
|
+
- changed files and rationale
|
|
340
|
+
- policy/schema/tool catalog diffs
|
|
341
|
+
- integration + parity tests
|
|
342
|
+
- command verification summary
|
|
343
|
+
- `spec-files/progress.md` update with residual tasks (if any)
|
|
344
|
+
|