@evolith/core-domain 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/domain/services/default-workflow-definition.js +1 -1
- package/dist/domain/services/default-workflow-definition.js.map +1 -1
- package/package.json +2 -1
- package/rulesets/README.es.md +170 -0
- package/rulesets/README.md +170 -0
- package/rulesets/acl/README.es.md +41 -0
- package/rulesets/acl/README.md +41 -0
- package/rulesets/acl/anti-corruption-layer.rules.es.json +99 -0
- package/rulesets/acl/anti-corruption-layer.rules.json +99 -0
- package/rulesets/adr/ADR_COVERAGE.es.md +133 -0
- package/rulesets/adr/ADR_COVERAGE.md +133 -0
- package/rulesets/adr/README.es.md +17 -0
- package/rulesets/adr/README.md +17 -0
- package/rulesets/adr/adr-0002-hexagonal-architecture.rules.json +103 -0
- package/rulesets/adr/adr-0005-cicd-quality-gates.rules.json +102 -0
- package/rulesets/adr/adr-0010-multi-tenancy.rules.json +129 -0
- package/rulesets/adr/adr-0018-testing-pyramid.rules.json +115 -0
- package/rulesets/adr/adr-0032-protocol-selection.rules.json +134 -0
- package/rulesets/adr/adr-0040-multi-runtime.rules.json +131 -0
- package/rulesets/adr/adr-0050-gitflow-branching.rules.json +176 -0
- package/rulesets/adr/generated/adr-0001-monorepo-orchestration-principle.rules.json +29 -0
- package/rulesets/adr/generated/adr-0006-microservices-transition-via-sidecar-pattern.rules.json +29 -0
- package/rulesets/adr/generated/adr-0009-strict-dependency-pinning-and-automated-vulnerability-manage.rules.json +29 -0
- package/rulesets/adr/generated/adr-0011-fault-tolerance-and-resiliency-patterns.rules.json +29 -0
- package/rulesets/adr/generated/adr-0013-cloud-infrastructure-topology-and-disaster-recovery-dr.rules.json +28 -0
- package/rulesets/adr/generated/adr-0014-multi-layer-distributed-caching-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0015-event-driven-architecture-eda-for-intra-domain-communication.rules.json +29 -0
- package/rulesets/adr/generated/adr-0016-immutable-business-audit-trail-and-change-tracking.rules.json +29 -0
- package/rulesets/adr/generated/adr-0017-feature-flagging-strategy-for-progressive-delivery.rules.json +28 -0
- package/rulesets/adr/generated/adr-0019-tactical-design-patterns-for-future-proofing.rules.json +29 -0
- package/rulesets/adr/generated/adr-0020-identity-provider-abstraction-strategy.rules.json +28 -0
- package/rulesets/adr/generated/adr-0024-centralized-configuration-feature-platform.rules.json +28 -0
- package/rulesets/adr/generated/adr-0025-feature-flag-provider-abstraction-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0028-self-hosted-open-source-hybrid-infrastructure.rules.json +29 -0
- package/rulesets/adr/generated/adr-0030-two-tier-distributed-gateway-model.rules.json +28 -0
- package/rulesets/adr/generated/adr-0031-schema-per-bounded-context-and-domain-event-catalog.rules.json +29 -0
- package/rulesets/adr/generated/adr-0033-transactional-outbox-pattern-for-async-messaging.rules.json +28 -0
- package/rulesets/adr/generated/adr-0034-cqrs-pattern-application-matrix.rules.json +29 -0
- package/rulesets/adr/generated/adr-0035-distributed-saga-pattern-implementation-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0036-message-bus-delivery-flow-control-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0037-enterprise-performance-concurrency-chaos-verification-strate.rules.json +28 -0
- package/rulesets/adr/generated/adr-0039-deployment-topology-abstraction-environment-switcher.rules.json +29 -0
- package/rulesets/adr/generated/adr-0041-dual-engine-policy-evaluation-native-opa.rules.json +28 -0
- package/rulesets/adr/generated/adr-0044-configurable-security-persistence-strategy-agnosticism-vs-na.rules.json +29 -0
- package/rulesets/adr/generated/adr-0045-microservice-extraction-readiness-criteria.rules.json +29 -0
- package/rulesets/adr/generated/adr-0046-unified-traceability-via-w3c-tracecontext.rules.json +29 -0
- package/rulesets/adr/generated/adr-0047-progressive-architecture-evolution-framework-modular-monolit.rules.json +29 -0
- package/rulesets/adr/generated/adr-0048-enterprise-taxonomy-standardization-and-reference-layout.rules.json +28 -0
- package/rulesets/adr/generated/adr-0049-naming-semantics-clean-code-policy-e2e-and-global.rules.json +29 -0
- package/rulesets/adr/generated/adr-0051-enterprise-database-engine-selection-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0052-unit-testing-isolation-strategy-mocks-vs-stubs.rules.json +29 -0
- package/rulesets/adr/generated/adr-0053-integration-and-e2e-testing-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0054-database-design-and-normalization-standards.rules.json +29 -0
- package/rulesets/adr/generated/adr-0055-microfrontends-architecture-strategy.rules.json +28 -0
- package/rulesets/adr/generated/adr-0056-enterprise-naming-design-conventions-multi-language-multi-pl.rules.json +29 -0
- package/rulesets/adr/generated/adr-0057-architecture-intelligence-catalog.rules.json +27 -0
- package/rulesets/adr/generated/adr-0058-ai-consumable-architecture-knowledge.rules.json +27 -0
- package/rulesets/adr/generated/adr-0067-modular-monolith-persistence-boundaries.rules.json +28 -0
- package/rulesets/adr/generated/adr-0068-documentation-release-gitflow.rules.json +29 -0
- package/rulesets/adr/generated/adr-0069-ai-agent-context-protocol-integration.rules.json +28 -0
- package/rulesets/adr/generated/adr-0070-lean-root-repository-taxonomy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0071-domain-layer-base-class-and-inheritance-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0072-utc-date-storage-browser-timezone-detection-and-language-res.rules.json +29 -0
- package/rulesets/adr/generated/adr-0073-unified-cli-mcp-output-contract-and-gate-evidence-schema.rules.json +29 -0
- package/rulesets/adr/generated/adr-0074-evolith-core-api-native-exposure-layer.rules.json +29 -0
- package/rulesets/adr/generated/adr-0075-core-api-authentication-strategy.rules.json +28 -0
- package/rulesets/adr/generated/adr-0076-domain-oriented-microservice-architecture-doma.rules.json +28 -0
- package/rulesets/adr/generated/adr-0077-masstransit-v9-commercial-pivot-stay-on-v8-monitor-opentrans.rules.json +28 -0
- package/rulesets/adr/generated/adr-0078-domain-financial-separation-governance.rules.json +29 -0
- package/rulesets/adr/generated/adr-0079-multi-topology-reference-corpus-and-topology-manifest-contra.rules.json +29 -0
- package/rulesets/adr/generated/adr-0080-remote-repository-reference-contract.rules.json +29 -0
- package/rulesets/adr/generated/adr-0081-agentic-ai-sandbox-isolation-boundary.rules.json +29 -0
- package/rulesets/adr/generated/adr-0082-agentic-ai-prompt-context-and-tool-trust-boundary.rules.json +28 -0
- package/rulesets/adr/generated/adr-0083-agentic-ai-action-authorization-and-audit.rules.json +29 -0
- package/rulesets/adr/generated/adr-0084-data-mesh-and-data-as-a-product.rules.json +29 -0
- package/rulesets/adr/generated/adr-0085-agnostic-opa-wasm-distribution-architecture.rules.json +28 -0
- package/rulesets/adr/generated/adr-0086-agentic-ai-telemetry-cost-control-standard.rules.json +27 -0
- package/rulesets/adr/generated/adr-0087-attribute-based-access-control-abac-for-agentic-tool-executi.rules.json +29 -0
- package/rulesets/adr/generated/adr-0088-sovereign-identity-for-agentic-ai.rules.json +29 -0
- package/rulesets/adr/generated/adr-0089-event-driven-agentic-workflow-pattern.rules.json +28 -0
- package/rulesets/adr/generated/adr-0090-rag-knowledge-governance-standard.rules.json +29 -0
- package/rulesets/adr/generated/adr-0091-workload-identity-token-rotation-standard.rules.json +29 -0
- package/rulesets/adr/generated/adr-0092-agent-infinite-loop-prevention-and-circuit-breaker-rules.rules.json +29 -0
- package/rulesets/adr/generated/adr-0093-concurrency-control-and-resource-locking-standard-for-mcp-to.rules.json +29 -0
- package/rulesets/adr/generated/adr-0094-multi-agent-handoff-and-task-delegation-standards.rules.json +29 -0
- package/rulesets/adr/generated/adr-0095-serverless-architecture-governance.rules.json +29 -0
- package/rulesets/adr/generated/adr-0096-edge-computing-architecture-governance.rules.json +29 -0
- package/rulesets/adr/generated/adr-0097-knowledge-lifecycle-governance-standard.rules.json +29 -0
- package/rulesets/adr/generated/adr-0098-rest-uri-versioning-and-deprecation-policy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0099-opa-bundle-distribution-via-s3-minio.rules.json +27 -0
- package/rulesets/adr/generated/adr-ai-augmented-0001-harness-engineering-for-ai-augmented-development.rules.json +29 -0
- package/rulesets/adr/generated/adr-ai-augmented-0002-mcp-integration-protocol-for-agent-tool-invocation.rules.json +29 -0
- package/rulesets/adr/generated/adr-ai-augmented-0003-model-selection-governance-for-ai-augmented-workflows.rules.json +29 -0
- package/rulesets/adr/generated/adr-ai-augmented-0004-agents-md-as-mandatory-repository-artifact.rules.json +29 -0
- package/rulesets/adr/generated/adr-ai-augmented-0005-human-in-the-loop-policy-for-autonomous-agent-operations.rules.json +29 -0
- package/rulesets/adr/generated/adr-android-0042-canonical-android-native-mobile-architecture.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0041-canonical-net-c-backend-architecture.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0060-net-multi-tenancy-dual-layer-strategy-ef-core-sql-server.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0061-transactional-event-lifecycle-in-ef-core.rules.json +28 -0
- package/rulesets/adr/generated/adr-dotnet-0062-net-immutable-audit-trail-via-ddl-triggers-delta-capture.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0063-b2b-request-idempotency-middleware-in-asp-net-core.rules.json +28 -0
- package/rulesets/adr/generated/adr-dotnet-0064-net-request-scope-observability-context-propagation.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0065-net-pii-safe-structured-logging-pipeline-serilog.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0066-net-lightweight-http-idempotency-via-imemorycache-idistribut.rules.json +28 -0
- package/rulesets/adr/generated/adr-dotnet-0069-net-grpc-service-setup-protobuf-contracts.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0070-net-api-endpoint-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0071-net-data-access-strategy-ef-core-as-default-orm-dapper-for-o.rules.json +27 -0
- package/rulesets/adr/generated/adr-dotnet-0072-net-aop-cross-cutting-concern-strategy-dispatchproxy-over-pi.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0003-strict-typescript-standards.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0004-frontend-offline-resilience.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0007-observability-with-opentelemetry-loki-and-jaeger.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0008-progressive-multi-module-evolution-with-api-gateway-and-bff-.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0012-advanced-authorization-rbac-abac-strategy.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0021-high-performance-authentication-graph-compilation.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0022-contextual-authentication-and-pluggable-output-projections.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0023-centralized-authorization-core-strategy.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0026-adaptive-mfa-and-passwordless-platform.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0027-dual-protocol-api-strategy-rest-grpc.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0029-adoption-of-tactical-ddd-primitives-library.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0038-enterprise-error-handling-result-pattern-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0043-data-access-and-orm-strategy-for-node-js.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0044-frontend-clean-architecture-layer-boundaries-react.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0045-frontend-state-management-zustand-tanstack-query-dual-strate.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0046-prohibition-of-raw-technical-identifiers-in-user-interfaces.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0047-actionable-user-error-contract-and-correlated-diagnostics.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0048-feature-flag-system-scope-and-structured-criteria-model.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0074-monorepo-orchestration-with-nx.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0075-application-gateway-bff-with-nestjs.rules.json +29 -0
- package/rulesets/architecture/README.es.md +21 -0
- package/rulesets/architecture/README.md +21 -0
- package/rulesets/architecture/opa/progressive-axis.rego +50 -0
- package/rulesets/cli/README.es.md +17 -0
- package/rulesets/cli/README.md +17 -0
- package/rulesets/cli/core-parity.rules.json +61 -0
- package/rulesets/cli/release-readiness.rules.json +77 -0
- package/rulesets/compliance-baseline/README.es.md +26 -0
- package/rulesets/compliance-baseline/README.md +26 -0
- package/rulesets/compliance-baseline/compliance-baseline.rules.json +81 -0
- package/rulesets/contracts/README.es.md +19 -0
- package/rulesets/contracts/README.md +19 -0
- package/rulesets/contracts/evolith-machine-contracts.json +29 -0
- package/rulesets/contracts/fixtures/gate-evidence.success.json +10 -0
- package/rulesets/contracts/fixtures/output-envelope.success.json +23 -0
- package/rulesets/cross-cutting/README.es.md +14 -0
- package/rulesets/cross-cutting/README.md +14 -0
- package/rulesets/cross-cutting/compliance-baseline.rules.json +81 -0
- package/rulesets/cross-cutting/definition-of-done.rules.json +135 -0
- package/rulesets/cross-cutting/engineering-manifesto.rules.json +145 -0
- package/rulesets/cross-cutting/repository-taxonomy.rules.json +172 -0
- package/rulesets/definition-of-done/README.es.md +26 -0
- package/rulesets/definition-of-done/README.md +26 -0
- package/rulesets/definition-of-done/definition-of-done.rules.json +135 -0
- package/rulesets/engineering-manifesto/README.es.md +26 -0
- package/rulesets/engineering-manifesto/README.md +26 -0
- package/rulesets/engineering-manifesto/engineering-manifesto.rules.json +145 -0
- package/rulesets/evidence/README.es.md +12 -0
- package/rulesets/evidence/README.md +12 -0
- package/rulesets/evidence/evidence-manifest.rules.json +48 -0
- package/rulesets/executive-scorecards/executive-scorecards.rules.es.json +213 -0
- package/rulesets/executive-scorecards/executive-scorecards.rules.json +213 -0
- package/rulesets/governance/README.es.md +13 -0
- package/rulesets/governance/README.md +13 -0
- package/rulesets/governance/abac-mcp-access.rules.es.json +41 -0
- package/rulesets/governance/abac-mcp-access.rules.json +41 -0
- package/rulesets/governance/executive-scorecards.rules.es.json +213 -0
- package/rulesets/governance/executive-scorecards.rules.json +213 -0
- package/rulesets/governance/inheritance.rules.json +115 -0
- package/rulesets/governance/knowledge-intake.rules.json +18 -0
- package/rulesets/governance/open-core-boundary.rules.es.json +148 -0
- package/rulesets/governance/open-core-boundary.rules.json +148 -0
- package/rulesets/governance/satellite-contracts.rules.json +183 -0
- package/rulesets/infrastructure/helm-enforcement.rules.json +21 -0
- package/rulesets/infrastructure/opa/helm-enforcement.rego +25 -0
- package/rulesets/infrastructure/opa/helm-enforcement.test.rego +31 -0
- package/rulesets/infrastructure/opa/opa-sidecar-bundle.rego +115 -0
- package/rulesets/infrastructure/opa/opa-sidecar-bundle.test.rego +66 -0
- package/rulesets/infrastructure/opa-sidecar-bundle.rules.json +18 -0
- package/rulesets/mcp/README.es.md +12 -0
- package/rulesets/mcp/README.md +12 -0
- package/rulesets/mcp/protocol-compliance.rules.json +57 -0
- package/rulesets/observability/README.es.md +12 -0
- package/rulesets/observability/README.md +12 -0
- package/rulesets/observability/telemetry-evidence.rules.json +48 -0
- package/rulesets/opa/README.es.md +22 -0
- package/rulesets/opa/README.md +22 -0
- package/rulesets/opa/abac-mcp-tool-access.rego +122 -0
- package/rulesets/opa/abac-mcp-tool-access.test.rego +33 -0
- package/rulesets/opa/anti-corruption-layer.rego +39 -0
- package/rulesets/opa/anti-corruption-layer.test.rego +118 -0
- package/rulesets/opa/ci-cd.rego +41 -0
- package/rulesets/opa/ci-cd.test.rego +23 -0
- package/rulesets/opa/cicd-quality-gates.rego +29 -0
- package/rulesets/opa/cicd-quality-gates.test.rego +54 -0
- package/rulesets/opa/cli-core-parity.rego +17 -0
- package/rulesets/opa/cli-core-parity.test.rego +39 -0
- package/rulesets/opa/cli-readiness.rego +32 -0
- package/rulesets/opa/cli-readiness.test.rego +23 -0
- package/rulesets/opa/cli-release-readiness.rego +21 -0
- package/rulesets/opa/cli-release-readiness.test.rego +46 -0
- package/rulesets/opa/compliance-baseline.rego +95 -0
- package/rulesets/opa/compliance-baseline.test.rego +89 -0
- package/rulesets/opa/dod.rego +42 -0
- package/rulesets/opa/dod.test.rego +250 -0
- package/rulesets/opa/engineering-manifesto.rego +78 -0
- package/rulesets/opa/engineering-manifesto.test.rego +133 -0
- package/rulesets/opa/evidence.rego +64 -0
- package/rulesets/opa/evidence.test.rego +23 -0
- package/rulesets/opa/executive-scorecards.rego +41 -0
- package/rulesets/opa/executive-scorecards.test.rego +60 -0
- package/rulesets/opa/gitflow-branching.rego +41 -0
- package/rulesets/opa/gitflow-branching.test.rego +60 -0
- package/rulesets/opa/governance.rego +39 -0
- package/rulesets/opa/governance.test.rego +23 -0
- package/rulesets/opa/hexagonal-architecture.rego +33 -0
- package/rulesets/opa/hexagonal-architecture.test.rego +57 -0
- package/rulesets/opa/infrastructure/helm-enforcement.rego +33 -0
- package/rulesets/opa/infrastructure/opa-sidecar-bundle.rego +42 -0
- package/rulesets/opa/knowledge-intake.rego +98 -0
- package/rulesets/opa/knowledge-intake.test.rego +50 -0
- package/rulesets/opa/main.rego +147 -0
- package/rulesets/opa/main_test.rego +149 -0
- package/rulesets/opa/mcp.rego +61 -0
- package/rulesets/opa/mcp.test.rego +27 -0
- package/rulesets/opa/multi-runtime.rego +33 -0
- package/rulesets/opa/multi-runtime.test.rego +53 -0
- package/rulesets/opa/multi-tenancy.rego +33 -0
- package/rulesets/opa/multi-tenancy.test.rego +53 -0
- package/rulesets/opa/open-core-boundary.rego +33 -0
- package/rulesets/opa/open-core-boundary.test.rego +60 -0
- package/rulesets/opa/protocol-selection.rego +29 -0
- package/rulesets/opa/protocol-selection.test.rego +46 -0
- package/rulesets/opa/rbac/gate-role-enforcement.rego +112 -0
- package/rulesets/opa/repository-taxonomy.rego +98 -0
- package/rulesets/opa/repository-taxonomy.test.rego +91 -0
- package/rulesets/opa/satellite-contracts.rego +42 -0
- package/rulesets/opa/satellite-contracts.test.rego +70 -0
- package/rulesets/opa/schemas/abac-mcp-tool-access.input.schema.json +21 -0
- package/rulesets/opa/schemas/anti-corruption-layer.input.schema.json +25 -0
- package/rulesets/opa/schemas/ci-cd.input.schema.json +27 -0
- package/rulesets/opa/schemas/cicd-quality-gates.input.schema.json +33 -0
- package/rulesets/opa/schemas/cli-core-parity.input.schema.json +30 -0
- package/rulesets/opa/schemas/cli-readiness.input.schema.json +28 -0
- package/rulesets/opa/schemas/cli-release-readiness.input.schema.json +26 -0
- package/rulesets/opa/schemas/compliance-baseline.input.schema.json +25 -0
- package/rulesets/opa/schemas/dod.input.schema.json +38 -0
- package/rulesets/opa/schemas/engineering-manifesto.input.schema.json +24 -0
- package/rulesets/opa/schemas/evidence.input.schema.json +35 -0
- package/rulesets/opa/schemas/executive-scorecards.input.schema.json +36 -0
- package/rulesets/opa/schemas/gitflow-branching.input.schema.json +36 -0
- package/rulesets/opa/schemas/governance.input.schema.json +19 -0
- package/rulesets/opa/schemas/hexagonal-architecture.input.schema.json +46 -0
- package/rulesets/opa/schemas/knowledge-intake.input.schema.json +57 -0
- package/rulesets/opa/schemas/mcp.input.schema.json +38 -0
- package/rulesets/opa/schemas/multi-runtime.input.schema.json +27 -0
- package/rulesets/opa/schemas/multi-tenancy.input.schema.json +27 -0
- package/rulesets/opa/schemas/open-core-boundary.input.schema.json +36 -0
- package/rulesets/opa/schemas/protocol-selection.input.schema.json +26 -0
- package/rulesets/opa/schemas/repository-taxonomy.input.schema.json +18 -0
- package/rulesets/opa/schemas/satellite-contracts.input.schema.json +38 -0
- package/rulesets/opa/schemas/taxonomy.input.schema.json +27 -0
- package/rulesets/opa/schemas/testing-pyramid.input.schema.json +42 -0
- package/rulesets/opa/schemas/version-pinning.input.schema.json +39 -0
- package/rulesets/opa/sdlc/coverage.rego +49 -0
- package/rulesets/opa/sdlc/coverage.test.rego +29 -0
- package/rulesets/opa/sdlc/pyramid-distribution.rego +31 -0
- package/rulesets/opa/sdlc/pyramid-distribution.test.rego +33 -0
- package/rulesets/opa/taxonomy.rego +51 -0
- package/rulesets/opa/taxonomy.test.rego +28 -0
- package/rulesets/opa/telemetry-evidence.rego +102 -0
- package/rulesets/opa/testing-pyramid.rego +49 -0
- package/rulesets/opa/testing-pyramid.test.rego +81 -0
- package/rulesets/opa/version-pinning.rego +99 -0
- package/rulesets/opa/version-pinning.test.rego +28 -0
- package/rulesets/phase-gates/README.es.md +28 -0
- package/rulesets/phase-gates/README.md +28 -0
- package/rulesets/phase-gates/phase-gates.rules.json +297 -0
- package/rulesets/quality-thresholds/README.es.md +28 -0
- package/rulesets/quality-thresholds/README.md +28 -0
- package/rulesets/quality-thresholds/quality-thresholds.rules.json +96 -0
- package/rulesets/repository-taxonomy/README.es.md +26 -0
- package/rulesets/repository-taxonomy/README.md +26 -0
- package/rulesets/repository-taxonomy/repository-taxonomy.rules.json +172 -0
- package/rulesets/satellite-contracts/README.es.md +27 -0
- package/rulesets/satellite-contracts/README.md +27 -0
- package/rulesets/satellite-contracts/satellite-contracts.rules.json +183 -0
- package/rulesets/schema/README.es.md +39 -0
- package/rulesets/schema/README.md +39 -0
- package/rulesets/schema/adr.schema.json +138 -0
- package/rulesets/schema/agile-backlog.schema.json +91 -0
- package/rulesets/schema/ballpark-estimation.schema.json +109 -0
- package/rulesets/schema/build-vs-compose.schema.json +98 -0
- package/rulesets/schema/cli-impact-analysis.schema.json +114 -0
- package/rulesets/schema/discovery-canvas.schema.json +92 -0
- package/rulesets/schema/evolith-user-story.schema.json +105 -0
- package/rulesets/schema/evolith-yaml.schema.json +191 -0
- package/rulesets/schema/functional-story.schema.json +111 -0
- package/rulesets/schema/gate-evidence.schema.json +85 -0
- package/rulesets/schema/integration-evidence.schema.json +47 -0
- package/rulesets/schema/knowledge-intake.schema.json +67 -0
- package/rulesets/schema/knowledge-projection.schema.json +24 -0
- package/rulesets/schema/maturity-evidence.schema.json +59 -0
- package/rulesets/schema/observability-validation.schema.json +85 -0
- package/rulesets/schema/on-call-handoff.schema.json +91 -0
- package/rulesets/schema/output-envelope.schema.json +102 -0
- package/rulesets/schema/prd.schema.json +117 -0
- package/rulesets/schema/release-notes.schema.json +138 -0
- package/rulesets/schema/rollback-rehearsal.schema.json +73 -0
- package/rulesets/schema/ruleset-sdlc.schema.json +59 -0
- package/rulesets/schema/ruleset-standard.schema.json +73 -0
- package/rulesets/schema/security-scan-report.schema.json +79 -0
- package/rulesets/schema/source-registry.schema.json +51 -0
- package/rulesets/schema/technical-feasibility.schema.json +66 -0
- package/rulesets/schema/technical-story.schema.json +112 -0
- package/rulesets/schema/test-summary-report.schema.json +158 -0
- package/rulesets/schema/topology-composition.schema.json +43 -0
- package/rulesets/schema/topology-manifest.schema.json +421 -0
- package/rulesets/sdlc/README.es.md +12 -0
- package/rulesets/sdlc/README.md +12 -0
- package/rulesets/sdlc/default-workflow.yaml +73 -0
- package/rulesets/sdlc/dependency-pinning.rules.json +183 -0
- package/rulesets/sdlc/phase-gates.rules.json +297 -0
- package/rulesets/sdlc/quality-thresholds.rules.json +96 -0
- package/rulesets/topologies/README.es.md +42 -0
- package/rulesets/topologies/README.md +42 -0
- package/rulesets/topologies/agentic-ai/README.es.md +142 -0
- package/rulesets/topologies/agentic-ai/README.md +142 -0
- package/rulesets/topologies/agentic-ai/adoption.es.md +37 -0
- package/rulesets/topologies/agentic-ai/adoption.md +37 -0
- package/rulesets/topologies/agentic-ai/agent.config.schema.json +100 -0
- package/rulesets/topologies/agentic-ai/agentic-ai.rego +46 -0
- package/rulesets/topologies/agentic-ai/agentic-ai.rules.json +109 -0
- package/rulesets/topologies/agentic-ai/agentic-ai.test.rego +68 -0
- package/rulesets/topologies/agentic-ai/agentic-ai.wasm +0 -0
- package/rulesets/topologies/agentic-ai/cli/cli-flows.es.md +35 -0
- package/rulesets/topologies/agentic-ai/cli/cli-flows.md +45 -0
- package/rulesets/topologies/agentic-ai/evidence.es.md +25 -0
- package/rulesets/topologies/agentic-ai/evidence.md +25 -0
- package/rulesets/topologies/agentic-ai/evolution.es.md +26 -0
- package/rulesets/topologies/agentic-ai/evolution.md +26 -0
- package/rulesets/topologies/agentic-ai/fixtures/invalid-agent.config.json +48 -0
- package/rulesets/topologies/agentic-ai/fixtures/valid-agent.config.json +48 -0
- package/rulesets/topologies/agentic-ai/maturity.es.md +33 -0
- package/rulesets/topologies/agentic-ai/maturity.md +33 -0
- package/rulesets/topologies/agentic-ai/mcp/mcp-manifest.json +100 -0
- package/rulesets/topologies/agentic-ai/openapi/openapi.yaml +187 -0
- package/rulesets/topologies/agentic-ai/operations.es.md +32 -0
- package/rulesets/topologies/agentic-ai/operations.md +32 -0
- package/rulesets/topologies/agentic-ai/parity-fixtures/compliant.json +18 -0
- package/rulesets/topologies/agentic-ai/parity-fixtures/violation.json +22 -0
- package/rulesets/topologies/agentic-ai/patterns.es.md +32 -0
- package/rulesets/topologies/agentic-ai/patterns.md +32 -0
- package/rulesets/topologies/agentic-ai/resilience.es.md +26 -0
- package/rulesets/topologies/agentic-ai/resilience.md +26 -0
- package/rulesets/topologies/agentic-ai/runbooks.es.md +48 -0
- package/rulesets/topologies/agentic-ai/runbooks.md +48 -0
- package/rulesets/topologies/agentic-ai/security.es.md +26 -0
- package/rulesets/topologies/agentic-ai/security.md +26 -0
- package/rulesets/topologies/agentic-ai/topology.manifest.json +127 -0
- package/rulesets/topologies/data-mesh/README.es.md +69 -0
- package/rulesets/topologies/data-mesh/README.md +69 -0
- package/rulesets/topologies/data-mesh/adoption.es.md +95 -0
- package/rulesets/topologies/data-mesh/adoption.md +95 -0
- package/rulesets/topologies/data-mesh/cli/cli-flows.es.md +41 -0
- package/rulesets/topologies/data-mesh/cli/cli-flows.md +53 -0
- package/rulesets/topologies/data-mesh/data-mesh.rego +11 -0
- package/rulesets/topologies/data-mesh/data-mesh.rules.json +100 -0
- package/rulesets/topologies/data-mesh/data-mesh.test.rego +107 -0
- package/rulesets/topologies/data-mesh/data-mesh.wasm +0 -0
- package/rulesets/topologies/data-mesh/evidence.es.md +111 -0
- package/rulesets/topologies/data-mesh/evidence.md +111 -0
- package/rulesets/topologies/data-mesh/evolution.es.md +67 -0
- package/rulesets/topologies/data-mesh/evolution.md +67 -0
- package/rulesets/topologies/data-mesh/fixtures/invalid.topology.config.json +12 -0
- package/rulesets/topologies/data-mesh/fixtures/valid.topology.config.json +12 -0
- package/rulesets/topologies/data-mesh/maturity.es.md +36 -0
- package/rulesets/topologies/data-mesh/maturity.md +36 -0
- package/rulesets/topologies/data-mesh/mcp/mcp-manifest.json +68 -0
- package/rulesets/topologies/data-mesh/openapi/openapi.yaml +186 -0
- package/rulesets/topologies/data-mesh/operations.es.md +63 -0
- package/rulesets/topologies/data-mesh/operations.md +63 -0
- package/rulesets/topologies/data-mesh/parity-fixtures/compliant.json +18 -0
- package/rulesets/topologies/data-mesh/parity-fixtures/violation.json +21 -0
- package/rulesets/topologies/data-mesh/patterns.es.md +67 -0
- package/rulesets/topologies/data-mesh/patterns.md +67 -0
- package/rulesets/topologies/data-mesh/resilience.es.md +64 -0
- package/rulesets/topologies/data-mesh/resilience.md +64 -0
- package/rulesets/topologies/data-mesh/runbooks.es.md +147 -0
- package/rulesets/topologies/data-mesh/runbooks.md +147 -0
- package/rulesets/topologies/data-mesh/security.es.md +66 -0
- package/rulesets/topologies/data-mesh/security.md +66 -0
- package/rulesets/topologies/data-mesh/topology.config.schema.json +30 -0
- package/rulesets/topologies/data-mesh/topology.manifest.json +107 -0
- package/rulesets/topologies/edge-computing/README.es.md +81 -0
- package/rulesets/topologies/edge-computing/README.md +81 -0
- package/rulesets/topologies/edge-computing/adoption.es.md +268 -0
- package/rulesets/topologies/edge-computing/adoption.md +268 -0
- package/rulesets/topologies/edge-computing/cli/cli-flows.es.md +41 -0
- package/rulesets/topologies/edge-computing/cli/cli-flows.md +53 -0
- package/rulesets/topologies/edge-computing/edge-computing.rego +41 -0
- package/rulesets/topologies/edge-computing/edge-computing.rules.json +50 -0
- package/rulesets/topologies/edge-computing/edge-computing.test.rego +33 -0
- package/rulesets/topologies/edge-computing/edge-computing.wasm +0 -0
- package/rulesets/topologies/edge-computing/evidence.es.md +263 -0
- package/rulesets/topologies/edge-computing/evidence.md +263 -0
- package/rulesets/topologies/edge-computing/evolution.es.md +257 -0
- package/rulesets/topologies/edge-computing/evolution.md +257 -0
- package/rulesets/topologies/edge-computing/fixtures/invalid.topology.config.json +6 -0
- package/rulesets/topologies/edge-computing/fixtures/valid.topology.config.json +6 -0
- package/rulesets/topologies/edge-computing/maturity.es.md +36 -0
- package/rulesets/topologies/edge-computing/maturity.md +36 -0
- package/rulesets/topologies/edge-computing/mcp/mcp-manifest.json +72 -0
- package/rulesets/topologies/edge-computing/openapi/openapi.yaml +187 -0
- package/rulesets/topologies/edge-computing/operations.es.md +148 -0
- package/rulesets/topologies/edge-computing/operations.md +148 -0
- package/rulesets/topologies/edge-computing/parity-fixtures/compliant.json +12 -0
- package/rulesets/topologies/edge-computing/parity-fixtures/violation.json +13 -0
- package/rulesets/topologies/edge-computing/patterns.es.md +291 -0
- package/rulesets/topologies/edge-computing/patterns.md +290 -0
- package/rulesets/topologies/edge-computing/resilience.es.md +232 -0
- package/rulesets/topologies/edge-computing/resilience.md +229 -0
- package/rulesets/topologies/edge-computing/runbooks.es.md +405 -0
- package/rulesets/topologies/edge-computing/runbooks.md +405 -0
- package/rulesets/topologies/edge-computing/security.es.md +218 -0
- package/rulesets/topologies/edge-computing/security.md +218 -0
- package/rulesets/topologies/edge-computing/topology.config.schema.json +13 -0
- package/rulesets/topologies/edge-computing/topology.manifest.json +113 -0
- package/rulesets/topologies/event-driven/README.es.md +71 -0
- package/rulesets/topologies/event-driven/README.md +71 -0
- package/rulesets/topologies/event-driven/adoption.es.md +67 -0
- package/rulesets/topologies/event-driven/adoption.md +67 -0
- package/rulesets/topologies/event-driven/cli/cli-flows.es.md +41 -0
- package/rulesets/topologies/event-driven/cli/cli-flows.md +53 -0
- package/rulesets/topologies/event-driven/event-driven.rego +11 -0
- package/rulesets/topologies/event-driven/event-driven.rules.json +100 -0
- package/rulesets/topologies/event-driven/event-driven.test.rego +107 -0
- package/rulesets/topologies/event-driven/event-driven.wasm +0 -0
- package/rulesets/topologies/event-driven/evidence.es.md +69 -0
- package/rulesets/topologies/event-driven/evidence.md +69 -0
- package/rulesets/topologies/event-driven/evolution.es.md +59 -0
- package/rulesets/topologies/event-driven/evolution.md +59 -0
- package/rulesets/topologies/event-driven/fixtures/invalid.topology.config.json +12 -0
- package/rulesets/topologies/event-driven/fixtures/valid.topology.config.json +12 -0
- package/rulesets/topologies/event-driven/maturity.es.md +36 -0
- package/rulesets/topologies/event-driven/maturity.md +36 -0
- package/rulesets/topologies/event-driven/mcp/mcp-manifest.json +68 -0
- package/rulesets/topologies/event-driven/openapi/openapi.yaml +186 -0
- package/rulesets/topologies/event-driven/operations.es.md +67 -0
- package/rulesets/topologies/event-driven/operations.md +67 -0
- package/rulesets/topologies/event-driven/parity-fixtures/compliant.json +18 -0
- package/rulesets/topologies/event-driven/parity-fixtures/violation.json +21 -0
- package/rulesets/topologies/event-driven/patterns.es.md +68 -0
- package/rulesets/topologies/event-driven/patterns.md +68 -0
- package/rulesets/topologies/event-driven/resilience.es.md +65 -0
- package/rulesets/topologies/event-driven/resilience.md +65 -0
- package/rulesets/topologies/event-driven/runbooks.es.md +79 -0
- package/rulesets/topologies/event-driven/runbooks.md +79 -0
- package/rulesets/topologies/event-driven/security.es.md +59 -0
- package/rulesets/topologies/event-driven/security.md +59 -0
- package/rulesets/topologies/event-driven/topology.config.schema.json +30 -0
- package/rulesets/topologies/event-driven/topology.manifest.json +109 -0
- package/rulesets/topologies/progressive-axis/distributed-modules/distributed-modules.rules.es.json +111 -0
- package/rulesets/topologies/progressive-axis/distributed-modules/distributed-modules.rules.json +111 -0
- package/rulesets/topologies/progressive-axis/microservices/microservices.rules.es.json +106 -0
- package/rulesets/topologies/progressive-axis/microservices/microservices.rules.json +106 -0
- package/rulesets/topologies/progressive-axis/modular-monolith/modular-monolith.rules.es.json +148 -0
- package/rulesets/topologies/progressive-axis/modular-monolith/modular-monolith.rules.json +148 -0
- package/rulesets/topologies/serverless/README.es.md +74 -0
- package/rulesets/topologies/serverless/README.md +74 -0
- package/rulesets/topologies/serverless/adoption.es.md +50 -0
- package/rulesets/topologies/serverless/adoption.md +50 -0
- package/rulesets/topologies/serverless/cli/cli-flows.es.md +41 -0
- package/rulesets/topologies/serverless/cli/cli-flows.md +53 -0
- package/rulesets/topologies/serverless/evidence.es.md +66 -0
- package/rulesets/topologies/serverless/evidence.md +66 -0
- package/rulesets/topologies/serverless/evolution.es.md +36 -0
- package/rulesets/topologies/serverless/evolution.md +36 -0
- package/rulesets/topologies/serverless/fixtures/invalid.topology.config.json +6 -0
- package/rulesets/topologies/serverless/fixtures/valid.topology.config.json +6 -0
- package/rulesets/topologies/serverless/maturity.es.md +36 -0
- package/rulesets/topologies/serverless/maturity.md +36 -0
- package/rulesets/topologies/serverless/mcp/mcp-manifest.json +72 -0
- package/rulesets/topologies/serverless/openapi/openapi.yaml +186 -0
- package/rulesets/topologies/serverless/operations.es.md +36 -0
- package/rulesets/topologies/serverless/operations.md +36 -0
- package/rulesets/topologies/serverless/parity-fixtures/compliant.json +13 -0
- package/rulesets/topologies/serverless/parity-fixtures/violation.json +15 -0
- package/rulesets/topologies/serverless/patterns.es.md +36 -0
- package/rulesets/topologies/serverless/patterns.md +36 -0
- package/rulesets/topologies/serverless/resilience.es.md +36 -0
- package/rulesets/topologies/serverless/resilience.md +36 -0
- package/rulesets/topologies/serverless/runbooks.es.md +68 -0
- package/rulesets/topologies/serverless/runbooks.md +68 -0
- package/rulesets/topologies/serverless/security.es.md +36 -0
- package/rulesets/topologies/serverless/security.md +36 -0
- package/rulesets/topologies/serverless/serverless.rego +32 -0
- package/rulesets/topologies/serverless/serverless.rules.json +33 -0
- package/rulesets/topologies/serverless/serverless.test.rego +28 -0
- package/rulesets/topologies/serverless/serverless.wasm +0 -0
- package/rulesets/topologies/serverless/topology.config.schema.json +28 -0
- package/rulesets/topologies/serverless/topology.manifest.json +114 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# Perfil Topologico de IA Agentica
|
|
2
|
+
|
|
3
|
+
> **Navegacion bilingue:** [Version en ingles](./README.md)
|
|
4
|
+
|
|
5
|
+
**Estado:** Aceptada
|
|
6
|
+
**Dimension:** `ai`
|
|
7
|
+
**ID de topologia:** `agentic-ai`
|
|
8
|
+
**Manifiesto:** [topology.manifest.json](./topology.manifest.json)
|
|
9
|
+
|
|
10
|
+
La IA agentica es la topologia para sistemas donde un agente de IA puede inspeccionar contexto, planificar trabajo, invocar herramientas o proponer cambios. Se compone con cualquier perfil de eje progresivo; no es una fase de entrega ni un sustituto de la propiedad de producto.
|
|
11
|
+
|
|
12
|
+
## Proposito y Alcance
|
|
13
|
+
|
|
14
|
+
Usa este perfil cuando un agente tenga acceso a contexto de repositorio, servicio u operacion. El perfil gobierna el limite del agente, no el proveedor del modelo ni el framework de orquestacion.
|
|
15
|
+
|
|
16
|
+
Todo satelite que lo adopte DEBE proporcionar `agent.config.json`. El evaluador nativo y la politica OPA aplican los mismos controles:
|
|
17
|
+
|
|
18
|
+
| Regla | Control requerido |
|
|
19
|
+
|---|---|
|
|
20
|
+
| AAI-R01 | Identidad estable del agente y una o mas capacidades declaradas |
|
|
21
|
+
| AAI-R02 | Sandbox aislado con acceso de red y proceso en deny o allowlist |
|
|
22
|
+
| AAI-R03 | Fuentes de prompts y raices de implementacion que no se superponen |
|
|
23
|
+
| AAI-R04 | Politica `approval-required` para herramientas mutativas |
|
|
24
|
+
| AAI-R05 | Ejecucion efimera con duracion, memoria y CPU acotadas |
|
|
25
|
+
| AAI-R06 | Contexto no confiable tratado como dato con procedencia y validacion de schema |
|
|
26
|
+
| AAI-R07 | Delegacion acotada por capacidad y evidencia de accion correlacionada append-only |
|
|
27
|
+
| AAI-R08 | Limites positivos de tokens y contexto, concurrencia MCP acotada y ruta legible de runbook |
|
|
28
|
+
| AAI-R09 | Delegacion acotada, cadencia de rotacion de credenciales y revocacion ante incidentes |
|
|
29
|
+
|
|
30
|
+
## Contrato de Configuracion
|
|
31
|
+
|
|
32
|
+
`agent.config.json` es una declaracion portable, no un archivo de un framework de agentes especifico de runtime. Mantiene prompts, implementacion determinista y permisos de ejecucion revisables por separado.
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"agent": {
|
|
37
|
+
"id": "architecture-reviewer",
|
|
38
|
+
"capabilities": ["read-architecture", "review-changes"]
|
|
39
|
+
},
|
|
40
|
+
"sandbox": {
|
|
41
|
+
"mode": "isolated",
|
|
42
|
+
"network": "allowlist",
|
|
43
|
+
"process": "deny",
|
|
44
|
+
"ephemeral": true,
|
|
45
|
+
"maxDurationSeconds": 30,
|
|
46
|
+
"maxMemoryMb": 512,
|
|
47
|
+
"maxCpuCores": 1
|
|
48
|
+
},
|
|
49
|
+
"promptSources": ["prompts"],
|
|
50
|
+
"implementationRoots": ["src/agents"],
|
|
51
|
+
"contextPolicy": {
|
|
52
|
+
"untrustedContent": "data-only",
|
|
53
|
+
"provenanceRequired": true,
|
|
54
|
+
"toolOutputSchemaValidation": true
|
|
55
|
+
},
|
|
56
|
+
"toolPolicy": {
|
|
57
|
+
"mutative": "approval-required",
|
|
58
|
+
"capabilityDelegation": "scoped-and-expiring"
|
|
59
|
+
},
|
|
60
|
+
"audit": {
|
|
61
|
+
"appendOnly": true,
|
|
62
|
+
"correlationId": "required"
|
|
63
|
+
},
|
|
64
|
+
"operationalBudgets": {
|
|
65
|
+
"maxPromptTokens": 16000,
|
|
66
|
+
"maxCompletionTokens": 4000,
|
|
67
|
+
"maxContextWindowTokens": 128000,
|
|
68
|
+
"mcpToolConcurrency": {
|
|
69
|
+
"maxInFlight": 4,
|
|
70
|
+
"perToolMaxInFlight": 2
|
|
71
|
+
},
|
|
72
|
+
"runbooksPath": "docs/agentic-ai-runbooks.md"
|
|
73
|
+
},
|
|
74
|
+
"credentialLifecycle": {
|
|
75
|
+
"delegationMaxTtlSeconds": 900,
|
|
76
|
+
"rotationCadenceDays": 30,
|
|
77
|
+
"revocation": {
|
|
78
|
+
"onIncident": "immediate",
|
|
79
|
+
"maxPropagationSeconds": 60
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Las rutas declaradas de prompts e implementacion NO DEBEN superponerse. Una capacidad no es un permiso: el sandbox y la politica de herramientas son la autoridad de ejecucion. El contexto no confiable sigue siendo dato, nunca autoridad; toda accion lleva una capacidad acotada y evidencia correlacionada append-only.
|
|
86
|
+
|
|
87
|
+
## Contrato Operativo
|
|
88
|
+
|
|
89
|
+
`operationalBudgets` declara limites aplicables para una ejecucion. `maxPromptTokens` limita las instrucciones y el contexto suministrado, `maxCompletionTokens` limita la salida generada y `maxContextWindowTokens` limita el contexto combinado del modelo. `mcpToolConcurrency.maxInFlight` limita todas las llamadas concurrentes a herramientas; `perToolMaxInFlight` evita que una sola herramienta consuma todo el presupuesto. Un adoptante DEBE elegir valores adecuados para su modelo aprobado y su capacidad, y DEBE apuntar `runbooksPath` a su guia de incidentes mantenida.
|
|
90
|
+
|
|
91
|
+
`credentialLifecycle` limita la autoridad delegada a `delegationMaxTtlSeconds`, exige rotacion como minimo cada `rotationCadenceDays` y define la rapidez con que la revocacion por incidente llega a cada ejecutor. `onIncident` DEBERIA ser `immediate`; `scheduled` solo se permite cuando una dependencia operativa documentada impide la revocacion inmediata. Los runbooks de referencia de la topologia estan [disponibles aqui](./runbooks.es.md).
|
|
92
|
+
|
|
93
|
+
## Interaccion y Limite de Seguridad
|
|
94
|
+
|
|
95
|
+
```mermaid
|
|
96
|
+
flowchart LR
|
|
97
|
+
C["Contexto gobernado"] --> A["Agente"]
|
|
98
|
+
P["Fuentes de prompts"] --> A
|
|
99
|
+
A --> S["Sandbox aislado"]
|
|
100
|
+
S --> R["Herramientas de solo lectura"]
|
|
101
|
+
S --> M{"Herramienta mutativa"}
|
|
102
|
+
M -->|"approval-required"| H["Aprobacion humana o de politica"]
|
|
103
|
+
H --> T["Ejecucion aprobada"]
|
|
104
|
+
I["Raices de implementacion"] -. "separadas de los prompts" .-> A
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
El sandbox es la unica ruta hacia la ejecucion de herramientas. Los prompts aportan instrucciones; las raices de implementacion contienen codigo determinista. Ninguno puede otorgar silenciosamente acceso de red, proceso o mutacion.
|
|
108
|
+
|
|
109
|
+
## Decisiones Rectoras y Validacion
|
|
110
|
+
|
|
111
|
+
[ADR-0058](../../../adrs/core/0058-ai-consumable-architecture-knowledge.es.md) gobierna el conocimiento de arquitectura consumible por IA. [ADR-0081](../../../adrs/core/0081-agentic-ai-sandbox-isolation.es.md), [ADR-0082](../../../adrs/core/0082-agentic-ai-trust-boundary.es.md) y [ADR-0083](../../../adrs/core/0083-agentic-ai-action-authorization-audit.es.md) establecen los limites de sandbox, confianza y autorizacion. [ADR-AI-001](../../../../governance/standards/ai-augmented/06-adrs/adr-ai-001-harness-strategy.es.md) y [ADR-AI-005](../../../../governance/standards/ai-augmented/06-adrs/adr-ai-005-human-in-the-loop-policy.es.md) siguen siendo decisiones propuestas de apoyo.
|
|
112
|
+
|
|
113
|
+
Ejecuta el perfil mediante el validador consciente de topologias:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
evolith validate --topology agentic-ai
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
El ruleset nativo es [agentic-ai.rules.json](./agentic-ai.rules.json); su politica OPA equivalente es [agentic-ai.rego](./agentic-ai.rego). Ambos evaluan el mismo contrato de `agent.config.json`.
|
|
120
|
+
|
|
121
|
+
## Frontera de Negocio
|
|
122
|
+
|
|
123
|
+
Este perfil es solo tecnico. No define propiedad de negocio, priorizacion, ROI, costo, presupuesto, staffing, calendario de entrega ni Funnel 0. Evolith Tracker posee esas preocupaciones mediante su ACL.
|
|
124
|
+
|
|
125
|
+
## Navegacion del Corpus
|
|
126
|
+
|
|
127
|
+
El corpus de IA agentica es la linea base de implementacion obligatoria para esta topologia:
|
|
128
|
+
|
|
129
|
+
| Area | Guia |
|
|
130
|
+
|---|---|
|
|
131
|
+
| Adopcion | [Guia de adopcion](./adoption.es.md) |
|
|
132
|
+
| Operacion | [Guia de operacion](./operations.es.md) |
|
|
133
|
+
| Seguridad | [Guia de seguridad](./security.es.md) |
|
|
134
|
+
| Resiliencia | [Guia de resiliencia](./resilience.es.md) |
|
|
135
|
+
| Diseno | [Patrones y anti-patrones](./patterns.es.md) |
|
|
136
|
+
| Evolucion | [Guia de evolucion](./evolution.es.md) |
|
|
137
|
+
| Resumen | [Guia de adopcion, operacion y evolucion](./maturity.es.md) |
|
|
138
|
+
|
|
139
|
+
Este corpus implementa el [Estandar de Corpus de Topologias](../../topology-corpus-standard.es.md) para IA agentica. Un perfil no esta listo para aceptacion hasta que esten presentes y validados todas estas guias, controles ejecutables, fixtures de contrato, pruebas e interfaces de plano de control.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
[Volver al Hub de Topologias](../../README.es.md)
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# Agentic AI Topology Profile
|
|
2
|
+
|
|
3
|
+
> **Bilingual Navigation:** [Version en Espanol](./README.es.md)
|
|
4
|
+
|
|
5
|
+
**Status:** Accepted
|
|
6
|
+
**Dimension:** `ai`
|
|
7
|
+
**Topology ID:** `agentic-ai`
|
|
8
|
+
**Manifest:** [topology.manifest.json](./topology.manifest.json)
|
|
9
|
+
|
|
10
|
+
Agentic AI is the topology for systems where an AI agent can inspect context, plan work, call tools, or propose changes. It is composable with every progressive-axis profile; it is not a delivery phase or a substitute for product ownership.
|
|
11
|
+
|
|
12
|
+
## Purpose and Scope
|
|
13
|
+
|
|
14
|
+
Use this profile when an agent has access to repository, service, or operational context. The profile governs the agent boundary, not the model vendor or orchestration framework.
|
|
15
|
+
|
|
16
|
+
Every adopting satellite MUST provide `agent.config.json`. The native evaluator and the OPA policy enforce the same controls:
|
|
17
|
+
|
|
18
|
+
| Rule | Required control |
|
|
19
|
+
|---|---|
|
|
20
|
+
| AAI-R01 | Stable agent identity and one or more declared capabilities |
|
|
21
|
+
| AAI-R02 | An isolated sandbox with deny or allowlist network and process access |
|
|
22
|
+
| AAI-R03 | Non-overlapping prompt sources and implementation roots |
|
|
23
|
+
| AAI-R04 | `approval-required` policy for mutative tools |
|
|
24
|
+
| AAI-R05 | Ephemeral execution with bounded duration, memory, and CPU |
|
|
25
|
+
| AAI-R06 | Untrusted context treated as data with provenance and schema validation |
|
|
26
|
+
| AAI-R07 | Capability-scoped delegation and append-only correlated action evidence |
|
|
27
|
+
| AAI-R08 | Positive token and context ceilings, bounded MCP concurrency, and a readable runbook path |
|
|
28
|
+
| AAI-R09 | Bounded delegation, credential rotation cadence, and incident revocation |
|
|
29
|
+
|
|
30
|
+
## Configuration Contract
|
|
31
|
+
|
|
32
|
+
`agent.config.json` is a portable declaration, not a runtime-specific agent framework file. It keeps prompts, deterministic implementation, and execution permissions independently reviewable.
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"agent": {
|
|
37
|
+
"id": "architecture-reviewer",
|
|
38
|
+
"capabilities": ["read-architecture", "review-changes"]
|
|
39
|
+
},
|
|
40
|
+
"sandbox": {
|
|
41
|
+
"mode": "isolated",
|
|
42
|
+
"network": "allowlist",
|
|
43
|
+
"process": "deny",
|
|
44
|
+
"ephemeral": true,
|
|
45
|
+
"maxDurationSeconds": 30,
|
|
46
|
+
"maxMemoryMb": 512,
|
|
47
|
+
"maxCpuCores": 1
|
|
48
|
+
},
|
|
49
|
+
"promptSources": ["prompts"],
|
|
50
|
+
"implementationRoots": ["src/agents"],
|
|
51
|
+
"contextPolicy": {
|
|
52
|
+
"untrustedContent": "data-only",
|
|
53
|
+
"provenanceRequired": true,
|
|
54
|
+
"toolOutputSchemaValidation": true
|
|
55
|
+
},
|
|
56
|
+
"toolPolicy": {
|
|
57
|
+
"mutative": "approval-required",
|
|
58
|
+
"capabilityDelegation": "scoped-and-expiring"
|
|
59
|
+
},
|
|
60
|
+
"audit": {
|
|
61
|
+
"appendOnly": true,
|
|
62
|
+
"correlationId": "required"
|
|
63
|
+
},
|
|
64
|
+
"operationalBudgets": {
|
|
65
|
+
"maxPromptTokens": 16000,
|
|
66
|
+
"maxCompletionTokens": 4000,
|
|
67
|
+
"maxContextWindowTokens": 128000,
|
|
68
|
+
"mcpToolConcurrency": {
|
|
69
|
+
"maxInFlight": 4,
|
|
70
|
+
"perToolMaxInFlight": 2
|
|
71
|
+
},
|
|
72
|
+
"runbooksPath": "docs/agentic-ai-runbooks.md"
|
|
73
|
+
},
|
|
74
|
+
"credentialLifecycle": {
|
|
75
|
+
"delegationMaxTtlSeconds": 900,
|
|
76
|
+
"rotationCadenceDays": 30,
|
|
77
|
+
"revocation": {
|
|
78
|
+
"onIncident": "immediate",
|
|
79
|
+
"maxPropagationSeconds": 60
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
The declared prompt and implementation paths MUST not overlap. A capability is not permission: the sandbox and tool policy are the execution authority. Untrusted context remains data, never authority; every action carries a scoped capability and append-only correlated evidence.
|
|
86
|
+
|
|
87
|
+
## Operational Contract
|
|
88
|
+
|
|
89
|
+
`operationalBudgets` declares enforceable ceilings for one execution. `maxPromptTokens` limits supplied instructions and context, `maxCompletionTokens` limits generated output, and `maxContextWindowTokens` limits the combined model context. `mcpToolConcurrency.maxInFlight` caps all concurrent tool calls; `perToolMaxInFlight` prevents a single tool from consuming the whole budget. An adopter MUST choose values appropriate to its approved model and capacity, and MUST point `runbooksPath` to its maintained incident guide.
|
|
90
|
+
|
|
91
|
+
`credentialLifecycle` limits delegated authority to `delegationMaxTtlSeconds`, requires rotation no less frequently than `rotationCadenceDays`, and defines how quickly incident revocation reaches every executor. `onIncident` SHOULD be `immediate`; `scheduled` is permitted only when a documented operational dependency prevents immediate revocation. The topology reference runbooks are [available here](./runbooks.md).
|
|
92
|
+
|
|
93
|
+
## Interaction and Security Boundary
|
|
94
|
+
|
|
95
|
+
```mermaid
|
|
96
|
+
flowchart LR
|
|
97
|
+
C["Governed context"] --> A["Agent"]
|
|
98
|
+
P["Prompt sources"] --> A
|
|
99
|
+
A --> S["Isolated sandbox"]
|
|
100
|
+
S --> R["Read-only tools"]
|
|
101
|
+
S --> M{"Mutative tool"}
|
|
102
|
+
M -->|"approval-required"| H["Human or policy approval"]
|
|
103
|
+
H --> T["Approved execution"]
|
|
104
|
+
I["Implementation roots"] -. "separate from prompts" .-> A
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
The sandbox is the only route to tool execution. Prompts provide instructions; implementation roots contain deterministic code. Neither can silently grant network, process, or mutative access.
|
|
108
|
+
|
|
109
|
+
## Governing Decisions and Validation
|
|
110
|
+
|
|
111
|
+
[ADR-0058](../../../adrs/core/0058-ai-consumable-architecture-knowledge.md) governs AI-consumable architecture knowledge. [ADR-0081](../../../adrs/core/0081-agentic-ai-sandbox-isolation.md), [ADR-0082](../../../adrs/core/0082-agentic-ai-trust-boundary.md), and [ADR-0083](../../../adrs/core/0083-agentic-ai-action-authorization-audit.md) establish the sandbox, trust, and authorization boundaries. [ADR-AI-001](../../../../governance/standards/ai-augmented/06-adrs/adr-ai-001-harness-strategy.md) and [ADR-AI-005](../../../../governance/standards/ai-augmented/06-adrs/adr-ai-005-human-in-the-loop-policy.md) remain supporting proposed decisions.
|
|
112
|
+
|
|
113
|
+
Run the profile through the topology-aware validator:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
evolith validate --topology agentic-ai
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
The native ruleset is [agentic-ai.rules.json](./agentic-ai.rules.json); its equivalent OPA policy is [agentic-ai.rego](./agentic-ai.rego). Both evaluate the same `agent.config.json` contract.
|
|
120
|
+
|
|
121
|
+
## Business Boundary
|
|
122
|
+
|
|
123
|
+
This profile is technical-only. It does not define business ownership, prioritization, ROI, cost, budget, staffing, delivery timing, or Funnel 0. Evolith Tracker owns those concerns through its ACL.
|
|
124
|
+
|
|
125
|
+
## Corpus Navigation
|
|
126
|
+
|
|
127
|
+
The Agentic AI corpus is the required implementation baseline for this topology:
|
|
128
|
+
|
|
129
|
+
| Area | Guidance |
|
|
130
|
+
|---|---|
|
|
131
|
+
| Adoption | [Adoption guide](./adoption.md) |
|
|
132
|
+
| Operations | [Operations guide](./operations.md) |
|
|
133
|
+
| Security | [Security guide](./security.md) |
|
|
134
|
+
| Resilience | [Resilience guide](./resilience.md) |
|
|
135
|
+
| Design | [Patterns and anti-patterns](./patterns.md) |
|
|
136
|
+
| Evolution | [Evolution guide](./evolution.md) |
|
|
137
|
+
| Summary | [Adoption, operations, and evolution guide](./maturity.md) |
|
|
138
|
+
|
|
139
|
+
This corpus implements the [Topology Corpus Standard](../../topology-corpus-standard.md) for Agentic AI. A profile is not ready for acceptance until all of these guides, executable controls, contract fixtures, tests, and control-plane interfaces are present and validated.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
[Back to Topology Hub](../../README.md)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Guia de Adopcion de IA Agentica
|
|
2
|
+
|
|
3
|
+
> **Navegacion bilingue:** [Version en ingles](./adoption.md)
|
|
4
|
+
|
|
5
|
+
## Criterios de Entrada
|
|
6
|
+
|
|
7
|
+
Adopta IA agentica solo cuando un flujo acotado necesite razonamiento gobernado sobre contexto y uso acotado de herramientas. El bounded context propietario conserva la responsabilidad de la decision de negocio; el agente es un componente de ejecucion asistente, no un propietario de politica de dominio.
|
|
8
|
+
|
|
9
|
+
Antes de habilitar un agente, el adoptante DEBE identificar al propietario responsable, declarar un conjunto inicial de capacidades de solo lectura y registrar las herramientas, fuentes de contexto y autoridad de aprobacion. La topologia se compone con un perfil de eje progresivo; no reemplaza las reglas de extraccion ni de propiedad de datos de ese perfil.
|
|
10
|
+
|
|
11
|
+
## Secuencia de Adopcion
|
|
12
|
+
|
|
13
|
+
1. Crea `agent.config.json` con identidad estable, capacidades explicitas, sandbox aislado y politica mutativa `approval-required`.
|
|
14
|
+
2. Comienza con herramientas de solo lectura y contexto representativo que no sea de produccion.
|
|
15
|
+
3. Valida el contrato con `evolith validate --topology agentic-ai` mediante los motores Native y OPA.
|
|
16
|
+
4. Ejercita rutas de denegacion, timeout, contexto invalido y rechazo de aprobacion antes de habilitar una capacidad en un entorno superior.
|
|
17
|
+
5. Agrega una herramienta mutativa solo despues de revisar su propietario, delegacion acotada, ruta de aprobacion y evidencia append-only correlacionada.
|
|
18
|
+
|
|
19
|
+
## Lista de Adopcion
|
|
20
|
+
|
|
21
|
+
- Hay un propietario de bounded context y un propietario de herramienta identificados.
|
|
22
|
+
- Las fuentes de contexto tienen procedencia y clasificacion declaradas.
|
|
23
|
+
- Las fuentes de prompts y las raices deterministas de implementacion estan separadas.
|
|
24
|
+
- El sandbox tiene autoridad finita de CPU, memoria, duracion, proceso y red.
|
|
25
|
+
- Las herramientas mutativas fallan cerrado cuando falta aprobacion o evidencia de politica.
|
|
26
|
+
- Fixtures validos e invalidos bloqueantes cubren el contrato previsto.
|
|
27
|
+
|
|
28
|
+
## Salida y No Adopcion
|
|
29
|
+
|
|
30
|
+
No adoptes esta topologia para trabajo determinista que un servicio de aplicacion normal puede realizar, para flujos sin un limite seguro de herramientas o donde no se pueda retener evidencia y aprobacion. Deshabilita una capacidad cuando ya no esten disponibles su evidencia, propietario, control de sandbox o ruta de aprobacion requeridos.
|
|
31
|
+
|
|
32
|
+
## Guia Relacionada
|
|
33
|
+
|
|
34
|
+
Lee la [guia de seguridad](./security.es.md), [guia de operacion](./operations.es.md) y [guia de evolucion](./evolution.es.md) antes de la adopcion en produccion. [ADR-0081](../../../adrs/core/0081-agentic-ai-sandbox-isolation.es.md), [ADR-0082](../../../adrs/core/0082-agentic-ai-trust-boundary.es.md) y [ADR-0083](../../../adrs/core/0083-agentic-ai-action-authorization-audit.es.md) son autoridad obligatoria.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
[Volver al Perfil de IA Agentica](./README.es.md)
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Agentic AI Adoption Guide
|
|
2
|
+
|
|
3
|
+
> **Bilingual Navigation:** [Version en Espanol](./adoption.es.md)
|
|
4
|
+
|
|
5
|
+
## Entry Criteria
|
|
6
|
+
|
|
7
|
+
Adopt Agentic AI only when a bounded workflow needs governed reasoning over context and bounded tool use. The owning bounded context remains accountable for the business decision; the agent is an assisting execution component, not an owner of domain policy.
|
|
8
|
+
|
|
9
|
+
Before enabling an agent, the adopter MUST identify the accountable owner, declare a read-only initial capability set, and record the tools, context sources, and approval authority. The topology composes with a progressive-axis profile; it does not replace that profile's extraction or data-ownership rules.
|
|
10
|
+
|
|
11
|
+
## Adoption Sequence
|
|
12
|
+
|
|
13
|
+
1. Create `agent.config.json` with a stable identity, explicit capabilities, isolated sandbox, and `approval-required` mutative policy.
|
|
14
|
+
2. Start with read-only tools and representative non-production context.
|
|
15
|
+
3. Validate the contract with `evolith validate --topology agentic-ai` using both Native and OPA engines.
|
|
16
|
+
4. Exercise denial, timeout, invalid-context, and approval-rejection paths before enabling a capability in a higher environment.
|
|
17
|
+
5. Add a mutative tool only after its owner, scoped delegation, approval path, and correlated append-only evidence are reviewed.
|
|
18
|
+
|
|
19
|
+
## Adoption Checklist
|
|
20
|
+
|
|
21
|
+
- A bounded-context owner and tool owner are named.
|
|
22
|
+
- Context sources have a declared provenance and classification.
|
|
23
|
+
- Prompt sources and deterministic implementation roots are separate.
|
|
24
|
+
- The sandbox has finite CPU, memory, duration, process, and network authority.
|
|
25
|
+
- Mutative tools fail closed when approval or policy evidence is absent.
|
|
26
|
+
- Valid and blocking-invalid fixtures cover the intended contract.
|
|
27
|
+
|
|
28
|
+
## Exit and Non-Adoption
|
|
29
|
+
|
|
30
|
+
Do not adopt this topology for deterministic work that a normal application service can perform, for workflows without a safe tool boundary, or where evidence and approval cannot be retained. Disable a capability when its required evidence, owner, sandbox control, or approval path is no longer available.
|
|
31
|
+
|
|
32
|
+
## Related Guidance
|
|
33
|
+
|
|
34
|
+
Read the [security guide](./security.md), [operations guide](./operations.md), and [evolution guide](./evolution.md) before production adoption. [ADR-0081](../../../adrs/core/0081-agentic-ai-sandbox-isolation.md), [ADR-0082](../../../adrs/core/0082-agentic-ai-trust-boundary.md), and [ADR-0083](../../../adrs/core/0083-agentic-ai-action-authorization-audit.md) are mandatory authority.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
[Back to Agentic AI Profile](./README.md)
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$id": "https://evolith.dev/schemas/agentic-ai/agent.config.schema.json",
|
|
3
|
+
"title": "Evolith Agentic AI Configuration",
|
|
4
|
+
"type": "object",
|
|
5
|
+
"required": ["agent", "sandbox", "promptSources", "implementationRoots", "contextPolicy", "toolPolicy", "audit", "operationalBudgets", "credentialLifecycle"],
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"properties": {
|
|
8
|
+
"agent": {
|
|
9
|
+
"type": "object",
|
|
10
|
+
"required": ["id", "capabilities"],
|
|
11
|
+
"additionalProperties": false,
|
|
12
|
+
"properties": {
|
|
13
|
+
"id": { "type": "string", "minLength": 1 },
|
|
14
|
+
"capabilities": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 }, "uniqueItems": true }
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"sandbox": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"required": ["mode", "network", "process", "ephemeral", "maxDurationSeconds", "maxMemoryMb", "maxCpuCores"],
|
|
20
|
+
"additionalProperties": false,
|
|
21
|
+
"properties": {
|
|
22
|
+
"mode": { "const": "isolated" },
|
|
23
|
+
"network": { "enum": ["deny", "allowlist"] },
|
|
24
|
+
"process": { "enum": ["deny", "allowlist"] },
|
|
25
|
+
"ephemeral": { "const": true },
|
|
26
|
+
"maxDurationSeconds": { "type": "integer", "minimum": 1 },
|
|
27
|
+
"maxMemoryMb": { "type": "integer", "minimum": 1 },
|
|
28
|
+
"maxCpuCores": { "type": "number", "exclusiveMinimum": 0 }
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"promptSources": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 }, "uniqueItems": true },
|
|
32
|
+
"implementationRoots": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 }, "uniqueItems": true },
|
|
33
|
+
"contextPolicy": {
|
|
34
|
+
"type": "object",
|
|
35
|
+
"required": ["untrustedContent", "provenanceRequired", "toolOutputSchemaValidation"],
|
|
36
|
+
"additionalProperties": false,
|
|
37
|
+
"properties": {
|
|
38
|
+
"untrustedContent": { "const": "data-only" },
|
|
39
|
+
"provenanceRequired": { "const": true },
|
|
40
|
+
"toolOutputSchemaValidation": { "const": true }
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"toolPolicy": {
|
|
44
|
+
"type": "object",
|
|
45
|
+
"required": ["mutative", "capabilityDelegation"],
|
|
46
|
+
"additionalProperties": false,
|
|
47
|
+
"properties": {
|
|
48
|
+
"mutative": { "const": "approval-required" },
|
|
49
|
+
"capabilityDelegation": { "const": "scoped-and-expiring" }
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"audit": {
|
|
53
|
+
"type": "object",
|
|
54
|
+
"required": ["appendOnly", "correlationId"],
|
|
55
|
+
"additionalProperties": false,
|
|
56
|
+
"properties": {
|
|
57
|
+
"appendOnly": { "const": true },
|
|
58
|
+
"correlationId": { "const": "required" }
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"operationalBudgets": {
|
|
62
|
+
"type": "object",
|
|
63
|
+
"required": ["maxPromptTokens", "maxCompletionTokens", "maxContextWindowTokens", "mcpToolConcurrency", "runbooksPath"],
|
|
64
|
+
"additionalProperties": false,
|
|
65
|
+
"properties": {
|
|
66
|
+
"maxPromptTokens": { "type": "integer", "minimum": 1 },
|
|
67
|
+
"maxCompletionTokens": { "type": "integer", "minimum": 1 },
|
|
68
|
+
"maxContextWindowTokens": { "type": "integer", "minimum": 1 },
|
|
69
|
+
"mcpToolConcurrency": {
|
|
70
|
+
"type": "object",
|
|
71
|
+
"required": ["maxInFlight", "perToolMaxInFlight"],
|
|
72
|
+
"additionalProperties": false,
|
|
73
|
+
"properties": {
|
|
74
|
+
"maxInFlight": { "type": "integer", "minimum": 1 },
|
|
75
|
+
"perToolMaxInFlight": { "type": "integer", "minimum": 1 }
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"runbooksPath": { "type": "string", "minLength": 1 }
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"credentialLifecycle": {
|
|
82
|
+
"type": "object",
|
|
83
|
+
"required": ["delegationMaxTtlSeconds", "rotationCadenceDays", "revocation"],
|
|
84
|
+
"additionalProperties": false,
|
|
85
|
+
"properties": {
|
|
86
|
+
"delegationMaxTtlSeconds": { "type": "integer", "minimum": 1 },
|
|
87
|
+
"rotationCadenceDays": { "type": "integer", "minimum": 1 },
|
|
88
|
+
"revocation": {
|
|
89
|
+
"type": "object",
|
|
90
|
+
"required": ["onIncident", "maxPropagationSeconds"],
|
|
91
|
+
"additionalProperties": false,
|
|
92
|
+
"properties": {
|
|
93
|
+
"onIncident": { "enum": ["immediate", "scheduled"] },
|
|
94
|
+
"maxPropagationSeconds": { "type": "integer", "minimum": 1 }
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
package evolith.topologies.agentic_ai
|
|
2
|
+
|
|
3
|
+
violations[{"id": "AAI-R01", "severity": "MUST", "title": "Declared Agent Identity and Capabilities", "blocking": true, "message": message}] {
|
|
4
|
+
not input.satellite.agenticAi.hasIdentity
|
|
5
|
+
message := "agent.config.json must declare agent.id and a non-empty capabilities array (AAI-R01)."
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
violations[{"id": "AAI-R02", "severity": "MUST", "title": "Explicit Sandbox Boundary", "blocking": true, "message": message}] {
|
|
9
|
+
not input.satellite.agenticAi.hasIsolatedSandbox
|
|
10
|
+
message := "agent.config.json must declare an isolated sandbox with deny or allowlist network and process access (AAI-R02)."
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
violations[{"id": "AAI-R03", "severity": "MUST", "title": "Prompt and Implementation Separation", "blocking": true, "message": message}] {
|
|
14
|
+
not input.satellite.agenticAi.hasSeparatedPromptAndImplementation
|
|
15
|
+
message := "agent.config.json must declare non-overlapping promptSources and implementationRoots (AAI-R03)."
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
violations[{"id": "AAI-R04", "severity": "MUST", "title": "Approval for Mutative Tools", "blocking": true, "message": message}] {
|
|
19
|
+
not input.satellite.agenticAi.requiresApprovalForMutativeTools
|
|
20
|
+
message := "agent.config.json must set toolPolicy.mutative to approval-required (AAI-R04)."
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
violations[{"id": "AAI-R05", "severity": "MUST", "title": "Ephemeral Sandbox Resource Limits", "blocking": true, "message": message}] {
|
|
24
|
+
not input.satellite.agenticAi.hasEphemeralSandboxLimits
|
|
25
|
+
message := "agent.config.json must require ephemeral execution with positive duration, memory, and CPU limits (AAI-R05)."
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
violations[{"id": "AAI-R06", "severity": "MUST", "title": "Untrusted Context Is Data", "blocking": true, "message": message}] {
|
|
29
|
+
not input.satellite.agenticAi.hasTrustedContextPolicy
|
|
30
|
+
message := "agent.config.json must treat untrusted context as data, require provenance, and validate tool output schemas (AAI-R06)."
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
violations[{"id": "AAI-R07", "severity": "MUST", "title": "Capability-Scoped, Auditable Actions", "blocking": true, "message": message}] {
|
|
34
|
+
not input.satellite.agenticAi.hasAccountableActions
|
|
35
|
+
message := "agent.config.json must require scoped-and-expiring capabilities and append-only correlated action evidence (AAI-R07)."
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
violations[{"id": "AAI-R08", "severity": "MUST", "title": "Operational Budgets and Concurrency Limits", "blocking": true, "message": message}] {
|
|
39
|
+
not input.satellite.agenticAi.hasOperationalBudgets
|
|
40
|
+
message := "agent.config.json must declare operationalBudgets with positive token, context window, and MCP concurrency limits plus a runbooksPath that exists (AAI-R08)."
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
violations[{"id": "AAI-R09", "severity": "MUST", "title": "Satellite Credential Lifecycle", "blocking": true, "message": message}] {
|
|
44
|
+
not input.satellite.agenticAi.hasCredentialLifecycle
|
|
45
|
+
message := "agent.config.json must declare credentialLifecycle with positive delegation TTL, rotation cadence, and bounded incident revocation (AAI-R09)."
|
|
46
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../../../../rulesets/schema/ruleset-standard.schema.json",
|
|
3
|
+
"$id": "https://evolith.dev/rulesets/topologies/agentic-ai.rules.json",
|
|
4
|
+
"title": "Agentic AI Topology Rules",
|
|
5
|
+
"description": "Architectural rules for the agentic AI topology.",
|
|
6
|
+
"version": "1.1.0",
|
|
7
|
+
"effectiveDate": "2026-06-21",
|
|
8
|
+
"references": [
|
|
9
|
+
"rulesets/topologies/agentic-ai/README.md",
|
|
10
|
+
"reference/architecture/adrs/core/0058-ai-consumable-architecture-knowledge.md",
|
|
11
|
+
"reference/architecture/adrs/core/0081-agentic-ai-sandbox-isolation.md",
|
|
12
|
+
"reference/architecture/adrs/core/0082-agentic-ai-trust-boundary.md",
|
|
13
|
+
"reference/architecture/adrs/core/0083-agentic-ai-action-authorization-audit.md",
|
|
14
|
+
"reference/governance/standards/ai-augmented/06-adrs/adr-ai-001-harness-strategy.md",
|
|
15
|
+
"reference/governance/standards/ai-augmented/06-adrs/adr-ai-005-human-in-the-loop-policy.md"
|
|
16
|
+
],
|
|
17
|
+
"rules": [
|
|
18
|
+
{
|
|
19
|
+
"id": "AAI-R01",
|
|
20
|
+
"severity": "MUST",
|
|
21
|
+
"category": "agent-identity",
|
|
22
|
+
"title": "Declared Agent Identity and Capabilities",
|
|
23
|
+
"description": "An Agentic AI satellite MUST provide agent.config.json with a stable agent.id and a non-empty capabilities array.",
|
|
24
|
+
"rationale": "A governed agent cannot be reviewed, authorized, or audited when its identity and intended capabilities are implicit.",
|
|
25
|
+
"validationQuery": "Read agent.config.json and require agent.id plus at least one declared capability.",
|
|
26
|
+
"blocking": true
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "AAI-R02",
|
|
30
|
+
"severity": "MUST",
|
|
31
|
+
"category": "agent-sandbox",
|
|
32
|
+
"title": "Explicit Sandbox Boundary",
|
|
33
|
+
"description": "agent.config.json MUST declare an isolated sandbox and set both network and process access to deny or allowlist.",
|
|
34
|
+
"rationale": "An agent requires a least-privilege execution boundary before it can invoke tools or handle untrusted content.",
|
|
35
|
+
"validationQuery": "Require sandbox.mode=isolated and sandbox.network and sandbox.process in {deny, allowlist}.",
|
|
36
|
+
"blocking": true
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "AAI-R03",
|
|
40
|
+
"severity": "MUST",
|
|
41
|
+
"category": "agent-prompt-boundaries",
|
|
42
|
+
"title": "Prompt and Implementation Separation",
|
|
43
|
+
"description": "agent.config.json MUST declare non-empty promptSources and implementationRoots that do not overlap.",
|
|
44
|
+
"rationale": "Keeping prompts separate from deterministic implementation logic makes prompt changes reviewable and prevents hidden policy from leaking into application code.",
|
|
45
|
+
"validationQuery": "Require non-empty promptSources and implementationRoots arrays; no configured path may be an ancestor or descendant of a path in the other array.",
|
|
46
|
+
"blocking": true
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "AAI-R04",
|
|
50
|
+
"severity": "MUST",
|
|
51
|
+
"category": "agent-tool-approval",
|
|
52
|
+
"title": "Approval for Mutative Tools",
|
|
53
|
+
"description": "agent.config.json MUST set toolPolicy.mutative to approval-required.",
|
|
54
|
+
"rationale": "Mutative actions must remain behind an explicit human or policy-governed approval boundary.",
|
|
55
|
+
"validationQuery": "Require toolPolicy.mutative=approval-required.",
|
|
56
|
+
"blocking": true
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "AAI-R05",
|
|
60
|
+
"severity": "MUST",
|
|
61
|
+
"category": "agent-sandbox-limits",
|
|
62
|
+
"title": "Ephemeral Sandbox Resource Limits",
|
|
63
|
+
"description": "agent.config.json MUST require ephemeral execution and positive duration, memory, and CPU limits in sandbox.",
|
|
64
|
+
"rationale": "Isolation without bounded lifetime and resources still permits persistence, denial of service, and uncontrolled cost.",
|
|
65
|
+
"validationQuery": "Require sandbox.ephemeral=true plus positive maxDurationSeconds, maxMemoryMb, and maxCpuCores values.",
|
|
66
|
+
"blocking": true
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"id": "AAI-R06",
|
|
70
|
+
"severity": "MUST",
|
|
71
|
+
"category": "agent-context-trust",
|
|
72
|
+
"title": "Untrusted Context Is Data",
|
|
73
|
+
"description": "agent.config.json MUST declare contextPolicy.untrustedContent=data-only, provenanceRequired=true, and toolOutputSchemaValidation=true.",
|
|
74
|
+
"rationale": "Retrieved context and tool output can be attacker-controlled and must not silently become instructions or authority.",
|
|
75
|
+
"validationQuery": "Require the three contextPolicy fields and their safe values.",
|
|
76
|
+
"blocking": true
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"id": "AAI-R07",
|
|
80
|
+
"severity": "MUST",
|
|
81
|
+
"category": "agent-action-accountability",
|
|
82
|
+
"title": "Capability-Scoped, Auditable Actions",
|
|
83
|
+
"description": "agent.config.json MUST require scoped-and-expiring capability delegation and append-only action evidence with correlation IDs.",
|
|
84
|
+
"rationale": "An agent action must be attributable, revocable, and reconstructible without relying on the prompt transcript.",
|
|
85
|
+
"validationQuery": "Require toolPolicy.capabilityDelegation=scoped-and-expiring, audit.appendOnly=true, and audit.correlationId=required.",
|
|
86
|
+
"blocking": true
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"id": "AAI-R08",
|
|
90
|
+
"severity": "MUST",
|
|
91
|
+
"category": "agent-operational-budgets",
|
|
92
|
+
"title": "Operational Budgets and Concurrency Limits",
|
|
93
|
+
"description": "agent.config.json MUST declare operationalBudgets with positive maxPromptTokens, maxCompletionTokens, maxContextWindowTokens, an mcpToolConcurrency object with positive maxInFlight and perToolMaxInFlight, and a non-empty runbooksPath that points at a readable runbook document.",
|
|
94
|
+
"rationale": "Without quantitative ceilings the topology cannot reason about token overflow, MCP tool stampedes, or hung agents, and operators have no documented recovery path to point to during an incident.",
|
|
95
|
+
"validationQuery": "Require operationalBudgets.{maxPromptTokens,maxCompletionTokens,maxContextWindowTokens} > 0, operationalBudgets.mcpToolConcurrency.{maxInFlight,perToolMaxInFlight} > 0, and operationalBudgets.runbooksPath naming a file that exists on disk.",
|
|
96
|
+
"blocking": true
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "AAI-R09",
|
|
100
|
+
"severity": "MUST",
|
|
101
|
+
"category": "agent-credential-lifecycle",
|
|
102
|
+
"title": "Satellite Credential Lifecycle",
|
|
103
|
+
"description": "agent.config.json MUST declare credentialLifecycle with a positive delegationMaxTtlSeconds, a positive rotationCadenceDays, revocation.onIncident in {immediate, scheduled}, and a positive revocation.maxPropagationSeconds.",
|
|
104
|
+
"rationale": "Delegated agent credentials must rotate on a cadence and be revocable within a bounded window so a compromised satellite cannot retain authority indefinitely.",
|
|
105
|
+
"validationQuery": "Require credentialLifecycle.delegationMaxTtlSeconds > 0, credentialLifecycle.rotationCadenceDays > 0, credentialLifecycle.revocation.onIncident in {immediate, scheduled}, and credentialLifecycle.revocation.maxPropagationSeconds > 0.",
|
|
106
|
+
"blocking": true
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
}
|