@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,127 @@
|
|
|
1
|
+
{
|
|
2
|
+
"apiVersion": "evolith.dev/topology/v1",
|
|
3
|
+
"kind": "TopologyManifest",
|
|
4
|
+
"metadata": {
|
|
5
|
+
"id": "agentic-ai",
|
|
6
|
+
"name": "Agentic AI",
|
|
7
|
+
"dimension": "ai",
|
|
8
|
+
"status": "accepted",
|
|
9
|
+
"version": "0.1.0",
|
|
10
|
+
"governance": {
|
|
11
|
+
"owner": "AI Architecture",
|
|
12
|
+
"criticality": "P1"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"spec": {
|
|
16
|
+
"summary": "AI-first and agentic workflow topology for MCP-enabled context injection, governed tools, auditable actions, and architecture-aware implementation assistance.",
|
|
17
|
+
"topologyType": "agentic-ai",
|
|
18
|
+
"compatibility": {
|
|
19
|
+
"progressiveAxis": {
|
|
20
|
+
"phase": "cross",
|
|
21
|
+
"profile": "cross"
|
|
22
|
+
},
|
|
23
|
+
"composableWith": [
|
|
24
|
+
"modular-monolith",
|
|
25
|
+
"distributed-modules",
|
|
26
|
+
"microservices",
|
|
27
|
+
"serverless",
|
|
28
|
+
"event-driven",
|
|
29
|
+
"data-mesh",
|
|
30
|
+
"edge-computing"
|
|
31
|
+
]
|
|
32
|
+
},
|
|
33
|
+
"artifacts": {
|
|
34
|
+
"adrs": [
|
|
35
|
+
"reference/architecture/adrs/core/0058-ai-consumable-architecture-knowledge.md",
|
|
36
|
+
"reference/architecture/adrs/core/0081-agentic-ai-sandbox-isolation.md",
|
|
37
|
+
"reference/architecture/adrs/core/0082-agentic-ai-trust-boundary.md",
|
|
38
|
+
"reference/architecture/adrs/core/0083-agentic-ai-action-authorization-audit.md",
|
|
39
|
+
"reference/architecture/adrs/core/0079-multi-topology-reference-corpus.md"
|
|
40
|
+
],
|
|
41
|
+
"rulesets": [
|
|
42
|
+
"rulesets/topologies/agentic-ai/agentic-ai.rules.json"
|
|
43
|
+
],
|
|
44
|
+
"opaPolicies": [
|
|
45
|
+
"rulesets/topologies/agentic-ai/agentic-ai.rego"
|
|
46
|
+
],
|
|
47
|
+
"aiRulesets": [
|
|
48
|
+
"rulesets/topologies/agentic-ai/README.md",
|
|
49
|
+
"rulesets/topologies/agentic-ai/maturity.md",
|
|
50
|
+
"rulesets/topologies/agentic-ai/adoption.md",
|
|
51
|
+
"rulesets/topologies/agentic-ai/operations.md",
|
|
52
|
+
"rulesets/topologies/agentic-ai/security.md",
|
|
53
|
+
"rulesets/topologies/agentic-ai/resilience.md",
|
|
54
|
+
"rulesets/topologies/agentic-ai/patterns.md",
|
|
55
|
+
"rulesets/topologies/agentic-ai/evolution.md"
|
|
56
|
+
],
|
|
57
|
+
"umsContracts": [
|
|
58
|
+
"reference/knowledge/demo/ums-reference-model.md"
|
|
59
|
+
]
|
|
60
|
+
},
|
|
61
|
+
"corpus": {
|
|
62
|
+
"guidance": {
|
|
63
|
+
"profile": "rulesets/topologies/agentic-ai/README.md",
|
|
64
|
+
"maturityGuide": "rulesets/topologies/agentic-ai/maturity.md"
|
|
65
|
+
},
|
|
66
|
+
"configurationContract": "rulesets/topologies/agentic-ai/agent.config.schema.json",
|
|
67
|
+
"fixtures": {
|
|
68
|
+
"valid": "rulesets/topologies/agentic-ai/fixtures/valid-agent.config.json",
|
|
69
|
+
"invalid": "rulesets/topologies/agentic-ai/fixtures/invalid-agent.config.json"
|
|
70
|
+
},
|
|
71
|
+
"nativeEvaluator": "packages/core-domain/src/application/validators/evaluators/handlers/architecture-rule.handler.ts",
|
|
72
|
+
"tests": {
|
|
73
|
+
"positive": "packages/core-domain/src/application/validators/evaluators/handlers/architecture-rule.handler.spec.ts",
|
|
74
|
+
"negative": "packages/core-domain/src/application/validators/evaluators/handlers/architecture-rule.handler.spec.ts"
|
|
75
|
+
},
|
|
76
|
+
"evidence": "rulesets/topologies/agentic-ai/evidence.md"
|
|
77
|
+
},
|
|
78
|
+
"operationalBudgets": {
|
|
79
|
+
"tokenBudgetPerExecution": 100000,
|
|
80
|
+
"credentialRotationIntervalHours": 24,
|
|
81
|
+
"sandboxTimeoutMs": 30000
|
|
82
|
+
},
|
|
83
|
+
"operationalInterfaces": {
|
|
84
|
+
"cli": {
|
|
85
|
+
"validators": [
|
|
86
|
+
"validate-topology"
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
"mcp": {
|
|
90
|
+
"resources": [
|
|
91
|
+
"evolith://topologies/agentic-ai/manifest",
|
|
92
|
+
"evolith://topologies/agentic-ai/rulesets",
|
|
93
|
+
"evolith://topologies/agentic-ai/mcp"
|
|
94
|
+
],
|
|
95
|
+
"tools": [
|
|
96
|
+
"evolith-topology-inspect",
|
|
97
|
+
"evolith-topology-validate",
|
|
98
|
+
"evolith-ruleset-explain"
|
|
99
|
+
],
|
|
100
|
+
"prompts": [
|
|
101
|
+
"topology-aware-implementation",
|
|
102
|
+
"agentic-ai-governance-review",
|
|
103
|
+
"adr-impact-analysis"
|
|
104
|
+
]
|
|
105
|
+
},
|
|
106
|
+
"coreApi": {
|
|
107
|
+
"endpoints": [
|
|
108
|
+
"GET /topologies/{id}",
|
|
109
|
+
"GET /topologies/{id}/manifest",
|
|
110
|
+
"POST /topologies/{id}/validate"
|
|
111
|
+
]
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
"businessBoundary": {
|
|
116
|
+
"technicalOnly": true,
|
|
117
|
+
"trackerOwns": [
|
|
118
|
+
"timing",
|
|
119
|
+
"ownership",
|
|
120
|
+
"prioritization",
|
|
121
|
+
"roi",
|
|
122
|
+
"cost",
|
|
123
|
+
"budget",
|
|
124
|
+
"funnel-0"
|
|
125
|
+
]
|
|
126
|
+
}
|
|
127
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Perfil Topologico Data Mesh
|
|
2
|
+
|
|
3
|
+
> **Navegacion Bilingue:** [English Version](./README.md)
|
|
4
|
+
|
|
5
|
+
**Estado:** Accepted
|
|
6
|
+
**Dimension:** `data`
|
|
7
|
+
**ID de Topologia:** `data-mesh`
|
|
8
|
+
**Alias de Compatibilidad:** `F2-compatible`
|
|
9
|
+
**Manifiesto:** [topology.manifest.json](./topology.manifest.json)
|
|
10
|
+
|
|
11
|
+
Data mesh es una topologia de datos para ownership analitico distribuido, productos de datos gobernados, contratos descubribles e interoperabilidad soportada por plataforma entre dominios.
|
|
12
|
+
|
|
13
|
+
## Proposito
|
|
14
|
+
|
|
15
|
+
Usa esta topologia cuando el ownership de datos analiticos debe acercarse a los equipos de dominio sin perder gobernanza, calidad, interoperabilidad ni cumplimiento.
|
|
16
|
+
|
|
17
|
+
Data mesh no debilita el ownership transaccional. Las fronteras de datos de dominio permanecen gobernadas por el bounded context o servicio propietario.
|
|
18
|
+
|
|
19
|
+
## Reglas de Gobernanza
|
|
20
|
+
|
|
21
|
+
| Regla | Requisito |
|
|
22
|
+
|---|---|
|
|
23
|
+
| Ownership de dominio | Los productos de datos deben alinearse a dominios delimitados u ownership de servicio. |
|
|
24
|
+
| Productos contratados | Los productos de datos deben publicar schemas, expectativas de calidad y metadata de ciclo de vida. |
|
|
25
|
+
| Interoperabilidad | Los datos compartidos deben usar contratos gobernados y semantica descubrible. |
|
|
26
|
+
| Evidencia de calidad | Los productos de datos deben exponer validacion, lineage, frescura y senales de confiabilidad. |
|
|
27
|
+
| Frontera transaccional | La distribucion analitica no debe saltarse ownership transaccional ni invariantes de dominio. |
|
|
28
|
+
|
|
29
|
+
## Autoridad Requerida
|
|
30
|
+
|
|
31
|
+
| Artefacto | Rol |
|
|
32
|
+
|---|---|
|
|
33
|
+
| [ADR-0084: Data Mesh y Datos como Producto](../../../adrs/core/0084-data-mesh-data-products.md) | Gobierna la topologia data mesh y los contratos de productos de datos. |
|
|
34
|
+
| [ADR-0079: Corpus de Referencia Multi-Topologia](../../../adrs/core/0079-multi-topology-reference-corpus.md) | Gobierna los manifiestos de topologia y composicion. |
|
|
35
|
+
| [Reglas de Arquitectura Data Mesh](./data-mesh.rules.json) | Reglas de compatibilidad ejecutables existentes. |
|
|
36
|
+
| [Modelo de Dimensiones de Topologia](../../topology-dimensions.md) | Define reglas de composicion y compatibilidad. |
|
|
37
|
+
|
|
38
|
+
## Contrato Ejecutable
|
|
39
|
+
|
|
40
|
+
Todo satelite que adopte este perfil proporcionando o consumiendo productos de datos debe proporcionar `data-mesh.config.json`:
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"isDataProduct": true,
|
|
45
|
+
"hasDataContracts": true,
|
|
46
|
+
"federatedGovernance": true
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
DM-R01 a DM-R03 exigen ese contrato, forzando la designacion explicita de Data Product, la presencia de Data Contracts para interoperabilidad, y el cumplimiento de las politicas de gobernanza federada. El evaluador Native y la [politica OPA](./data-mesh.rego) evaluan estos campos.
|
|
51
|
+
|
|
52
|
+
## Composicion
|
|
53
|
+
|
|
54
|
+
`data-mesh` puede combinarse con:
|
|
55
|
+
|
|
56
|
+
| Topologia | Por Que Puede Componerse |
|
|
57
|
+
|---|---|
|
|
58
|
+
| `distributed-modules` | Habilita productos de datos analiticos propiedad de modulos de dominio con contratos gobernados. |
|
|
59
|
+
| `microservices` | Soporta productos de datos con propiedad independiente alineados a fronteras de servicio. |
|
|
60
|
+
| `event-driven` | Impulsa actualizaciones de productos de datos a traves de canales de eventos observables. |
|
|
61
|
+
| `serverless` | Proporciona ejecucion de productos de datos analiticos sin acoplamiento transaccional. |
|
|
62
|
+
| `agentic-ai` | Alimenta workflows de agentes IA con productos de datos analiticos gobernados. |
|
|
63
|
+
|
|
64
|
+
## Frontera de Negocio
|
|
65
|
+
|
|
66
|
+
Este perfil es solo tecnico. No define monetizacion de datos, ROI, asignacion de costos, staffing, priorizacion, timing de entrega ni Funnel 0. Evolith Tracker posee esas preocupaciones de negocio mediante su ACL.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
[Volver al Hub de Topologias](../../README.es.md)
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Data Mesh Topology Profile
|
|
2
|
+
|
|
3
|
+
> **Bilingual Navigation:** [Version en Espanol](./README.es.md)
|
|
4
|
+
|
|
5
|
+
**Status:** Accepted
|
|
6
|
+
**Dimension:** `data`
|
|
7
|
+
**Topology ID:** `data-mesh`
|
|
8
|
+
**Compatibility Alias:** `F2-compatible`
|
|
9
|
+
**Manifest:** [topology.manifest.json](./topology.manifest.json)
|
|
10
|
+
|
|
11
|
+
Data mesh is a data topology for distributed analytical ownership, governed data products, discoverable contracts, and platform-supported interoperability across domains.
|
|
12
|
+
|
|
13
|
+
## Purpose
|
|
14
|
+
|
|
15
|
+
Use this topology when analytical data ownership must move closer to domain teams without losing governance, quality, interoperability, or compliance.
|
|
16
|
+
|
|
17
|
+
Data mesh does not weaken transactional ownership. Domain data boundaries remain governed by the owning bounded context or service.
|
|
18
|
+
|
|
19
|
+
## Governance Rules
|
|
20
|
+
|
|
21
|
+
| Rule | Requirement |
|
|
22
|
+
|---|---|
|
|
23
|
+
| Domain ownership | Data products must align to bounded domains or service ownership. |
|
|
24
|
+
| Contracted products | Data products must publish schemas, quality expectations, and lifecycle metadata. |
|
|
25
|
+
| Interoperability | Shared data must use governed contracts and discoverable semantics. |
|
|
26
|
+
| Quality evidence | Data products must expose validation, lineage, freshness, and reliability signals. |
|
|
27
|
+
| Transactional boundary | Analytical distribution must not bypass transactional ownership or domain invariants. |
|
|
28
|
+
|
|
29
|
+
## Required Authority
|
|
30
|
+
|
|
31
|
+
| Artifact | Role |
|
|
32
|
+
|---|---|
|
|
33
|
+
| [ADR-0084: Data Mesh and Data as a Product](../../../adrs/core/0084-data-mesh-data-products.md) | Governs data mesh topology and data product contracts. |
|
|
34
|
+
| [ADR-0079: Multi-Topology Reference Corpus](../../../adrs/core/0079-multi-topology-reference-corpus.md) | Governs topology manifests and composition. |
|
|
35
|
+
| [Data Mesh Architecture Rules](./data-mesh.rules.json) | Existing executable compatibility rules. |
|
|
36
|
+
| [Topology Dimensions Model](../../topology-dimensions.md) | Defines composition and compatibility rules. |
|
|
37
|
+
|
|
38
|
+
## Executable Contract
|
|
39
|
+
|
|
40
|
+
Every adopting satellite providing or consuming data products must provide `data-mesh.config.json`:
|
|
41
|
+
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"isDataProduct": true,
|
|
45
|
+
"hasDataContracts": true,
|
|
46
|
+
"federatedGovernance": true
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
DM-R01 through DM-R03 require that contract, enforcing explicit Data Product designation, the presence of Data Contracts for interoperability, and adherence to federated governance policies. The Native evaluator and [OPA policy](./data-mesh.rego) evaluate these fields.
|
|
51
|
+
|
|
52
|
+
## Composition
|
|
53
|
+
|
|
54
|
+
`data-mesh` can combine with:
|
|
55
|
+
|
|
56
|
+
| Topology | Why It Can Compose |
|
|
57
|
+
|---|---|
|
|
58
|
+
| `distributed-modules` | Enables analytical data products owned by domain modules with governed contracts. |
|
|
59
|
+
| `microservices` | Supports independently owned data products aligned to service boundaries. |
|
|
60
|
+
| `event-driven` | Drives data product updates through observable event channels. |
|
|
61
|
+
| `serverless` | Provides analytical data product execution without transactional coupling. |
|
|
62
|
+
| `agentic-ai` | Feeds AI-agent workflows with governed analytical data products. |
|
|
63
|
+
|
|
64
|
+
## Business Boundary
|
|
65
|
+
|
|
66
|
+
This profile is technical-only. It does not define data monetization, ROI, cost allocation, staffing, prioritization, delivery timing, or Funnel 0. Evolith Tracker owns those business concerns through its ACL.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
[Back to Topology Hub](../../README.md)
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Guía de Adopción de Malla de Datos
|
|
2
|
+
|
|
3
|
+
> **Navegación Bilingüe:** [English](./adoption.md) | [Español](./adoption.es.md)
|
|
4
|
+
|
|
5
|
+
**Propietario:** Arquitectura de Datos
|
|
6
|
+
**Topología:** Malla de Datos
|
|
7
|
+
**Reglas Relacionadas:** DAM-R01, DAM-R03, DAM-R09
|
|
8
|
+
|
|
9
|
+
## Propósito
|
|
10
|
+
|
|
11
|
+
Esta guía define los criterios de entrada, el proceso de incorporación de dominios, el flujo de creación de productos y la lista de verificación de preparación para adoptar la topología de malla de datos. La adopción es dirigida por el dominio — cada dominio ingresa a la malla cuando cumple los criterios de preparación y tiene capacidad operativa.
|
|
12
|
+
|
|
13
|
+
## Criterios de Entrada
|
|
14
|
+
|
|
15
|
+
Los dominios deben satisfacer los siguientes criterios antes de ingresar a la malla de datos:
|
|
16
|
+
|
|
17
|
+
- **Límite de Dominio Establecido:** Propiedad clara de dominio de negocio con un líder de dominio designado.
|
|
18
|
+
- **Líder de Producto de Datos Identificado:** Al menos una persona responsable del ciclo de vida del producto de datos.
|
|
19
|
+
- **Acceso a la Plataforma Concedido:** El equipo de dominio tiene acceso autenticado a la plataforma de autoservicio.
|
|
20
|
+
- **Capacitación de Gobernanza Completada:** El equipo de dominio ha completado la orientación de gobernanza federada.
|
|
21
|
+
- **Producto Inicial Identificado:** Al menos un conjunto de datos listo para formalización como producto.
|
|
22
|
+
|
|
23
|
+
Los dominios que no cumplan todos los criterios pueden participar solo como consumidores. La participación como consumidor requiere acceso a la plataforma y capacitación de gobernanza pero no propiedad de productos.
|
|
24
|
+
|
|
25
|
+
## Incorporación de Dominios
|
|
26
|
+
|
|
27
|
+
La incorporación sigue un proceso estructurado de cinco pasos:
|
|
28
|
+
|
|
29
|
+
1. **Registro del Dominio:** Registrar el dominio en la plataforma con contactos de propiedad y descripción de límites.
|
|
30
|
+
2. **Alineación de Gobernanza:** Revisar y reconocer los estándares corporativos de gobernanza de datos. Configurar políticas específicas del dominio.
|
|
31
|
+
3. **Incorporación a la Plataforma:** Configurar el espacio de trabajo del dominio, controles de acceso e integraciones de monitoreo.
|
|
32
|
+
4. **Identificación de Productos:** Identificar conjuntos de datos candidatos para formalización como producto. Priorizar por demanda de consumidores y calidad de datos.
|
|
33
|
+
5. **Lanzamiento del Producto Piloto:** Crear y publicar un producto piloto siguiendo la guía de creación de productos.
|
|
34
|
+
|
|
35
|
+
Duración de incorporación: habitualmente 2-4 semanas dependiendo de la complejidad del dominio y la madurez de datos existente.
|
|
36
|
+
|
|
37
|
+
## Guía de Creación de Productos
|
|
38
|
+
|
|
39
|
+
### Paso 1 — Definir el Producto
|
|
40
|
+
|
|
41
|
+
- Nombrar el producto con un identificador claro y específico del dominio.
|
|
42
|
+
- Definir la descripción del producto y los consumidores previstos.
|
|
43
|
+
- Clasificar los datos según los niveles corporativos de clasificación.
|
|
44
|
+
- Identificar fuentes de datos aguas arriba y consumidores aguas abajo.
|
|
45
|
+
|
|
46
|
+
### Paso 2 — Diseñar el Esquema
|
|
47
|
+
|
|
48
|
+
- Definir el esquema de salida con campos tipificados.
|
|
49
|
+
- Declarar claves primarias y restricciones de unicidad.
|
|
50
|
+
- Marcar campos PII explícitamente.
|
|
51
|
+
- Documentar descripciones de campos y definiciones de negocio.
|
|
52
|
+
|
|
53
|
+
### Paso 3 — Establecer SLAs de Calidad
|
|
54
|
+
|
|
55
|
+
- Definir umbrales de completitud, frescura, validez y unicidad según DAM-R07.
|
|
56
|
+
- Alinear SLAs con requisitos de consumidores y nivel de SLA.
|
|
57
|
+
- Configurar horario de verificaciones de salud y alertas.
|
|
58
|
+
|
|
59
|
+
### Paso 4 — Configurar Políticas de Acceso
|
|
60
|
+
|
|
61
|
+
- Definir controles de acceso basados en roles por producto.
|
|
62
|
+
- Publicar políticas de acceso en la plataforma.
|
|
63
|
+
- Configurar flujo de incorporación de consumidores.
|
|
64
|
+
|
|
65
|
+
### Paso 5 — Registrar y Publicar
|
|
66
|
+
|
|
67
|
+
- Registrar el producto en el índice de descubrimiento según DAM-R09.
|
|
68
|
+
- Validar completitud del registro.
|
|
69
|
+
- Publicar el producto y notificar a consumidores iniciales.
|
|
70
|
+
|
|
71
|
+
## Lista de Verificación de Preparación
|
|
72
|
+
|
|
73
|
+
- [ ] Dominio registrado en la plataforma
|
|
74
|
+
- [ ] Líder de dominio y líder de producto de datos designados
|
|
75
|
+
- [ ] Capacitación de gobernanza completada
|
|
76
|
+
- [ ] Espacio de trabajo de la plataforma configurado
|
|
77
|
+
- [ ] Esquema del producto piloto definido
|
|
78
|
+
- [ ] SLAs de calidad declarados
|
|
79
|
+
- [ ] Políticas de acceso publicadas
|
|
80
|
+
- [ ] Producto registrado en índice de descubrimiento
|
|
81
|
+
- [ ] Notificación a consumidores enviada
|
|
82
|
+
- [ ] Verificaciones de salud configuradas
|
|
83
|
+
|
|
84
|
+
## Comandos de Validación
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# Verificar documentación de adopción
|
|
88
|
+
node .harness/scripts/ci/01-validate-docs.mjs --target data-mesh
|
|
89
|
+
|
|
90
|
+
# Verificar paridad bilingüe
|
|
91
|
+
node .harness/scripts/ci/04-check-bilingual-parity.mjs
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
[Volver al Perfil de Malla de Datos](./README.es.md)
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Data Mesh — Adoption Guide
|
|
2
|
+
|
|
3
|
+
> **Bilingual Navigation:** [English](./adoption.md) | [Español](./adoption.es.md)
|
|
4
|
+
|
|
5
|
+
**Owner:** Data Architecture
|
|
6
|
+
**Topology:** Data Mesh
|
|
7
|
+
**Related Rules:** DAM-R01, DAM-R03, DAM-R09
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
This guide defines the entry criteria, domain onboarding process, product creation workflow, and readiness checklist for adopting data mesh topology. Adoption is domain-driven — each domain enters the mesh when it meets readiness criteria and has operational capacity.
|
|
12
|
+
|
|
13
|
+
## Entry Criteria
|
|
14
|
+
|
|
15
|
+
Domains must satisfy the following criteria before entering the data mesh:
|
|
16
|
+
|
|
17
|
+
- **Domain Boundary Established:** Clear business domain ownership with a designated domain lead.
|
|
18
|
+
- **Data Product Lead Identified:** At least one person accountable for data product lifecycle.
|
|
19
|
+
- **Platform Access Granted:** Domain team has authenticated access to the self-serve platform.
|
|
20
|
+
- **Governance Training Complete:** Domain team has completed federated governance orientation.
|
|
21
|
+
- **Initial Product Identified:** At least one dataset ready for product formalization.
|
|
22
|
+
|
|
23
|
+
Domains that do not meet all criteria may participate as consumers only. Consumer participation requires platform access and governance training but not product ownership.
|
|
24
|
+
|
|
25
|
+
## Domain Onboarding
|
|
26
|
+
|
|
27
|
+
Onboarding follows a structured five-step process:
|
|
28
|
+
|
|
29
|
+
1. **Domain Registration:** Register the domain in the platform with ownership contacts and boundary description.
|
|
30
|
+
2. **Governance Alignment:** Review and acknowledge corporate data governance standards. Configure domain-specific policies.
|
|
31
|
+
3. **Platform Onboarding:** Configure domain workspace, access controls, and monitoring integrations.
|
|
32
|
+
4. **Product Identification:** Identify candidate datasets for product formalization. Prioritize by consumer demand and data quality.
|
|
33
|
+
5. **Pilot Product Launch:** Create and publish one pilot product following the product creation guide.
|
|
34
|
+
|
|
35
|
+
Onboarding duration: typically 2-4 weeks depending on domain complexity and existing data maturity.
|
|
36
|
+
|
|
37
|
+
## Product Creation Guide
|
|
38
|
+
|
|
39
|
+
### Step 1 — Define the Product
|
|
40
|
+
|
|
41
|
+
- Name the product with a clear, domain-specific identifier.
|
|
42
|
+
- Define the product description and intended consumers.
|
|
43
|
+
- Classify the data per corporate classification tiers.
|
|
44
|
+
- Identify upstream data sources and downstream consumers.
|
|
45
|
+
|
|
46
|
+
### Step 2 — Design the Schema
|
|
47
|
+
|
|
48
|
+
- Define the output schema with typed fields.
|
|
49
|
+
- Declare primary keys and uniqueness constraints.
|
|
50
|
+
- Mark PII fields explicitly.
|
|
51
|
+
- Document field descriptions and business definitions.
|
|
52
|
+
|
|
53
|
+
### Step 3 — Set Quality SLOs
|
|
54
|
+
|
|
55
|
+
- Define completeness, freshness, validity, and uniqueness thresholds per DAM-R07.
|
|
56
|
+
- Align SLOs with consumer requirements and SLA tier.
|
|
57
|
+
- Configure health check schedule and alerting.
|
|
58
|
+
|
|
59
|
+
### Step 4 — Configure Access Policies
|
|
60
|
+
|
|
61
|
+
- Define role-based access controls per product.
|
|
62
|
+
- Publish access policies to the platform.
|
|
63
|
+
- Configure consumer onboarding workflow.
|
|
64
|
+
|
|
65
|
+
### Step 5 — Register and Publish
|
|
66
|
+
|
|
67
|
+
- Register the product in the discovery index per DAM-R09.
|
|
68
|
+
- Validate registration completeness.
|
|
69
|
+
- Publish the product and notify initial consumers.
|
|
70
|
+
|
|
71
|
+
## Readiness Checklist
|
|
72
|
+
|
|
73
|
+
- [ ] Domain registered in platform
|
|
74
|
+
- [ ] Domain lead and data product lead designated
|
|
75
|
+
- [ ] Governance training completed
|
|
76
|
+
- [ ] Platform workspace configured
|
|
77
|
+
- [ ] Pilot product schema defined
|
|
78
|
+
- [ ] Quality SLOs declared
|
|
79
|
+
- [ ] Access policies published
|
|
80
|
+
- [ ] Product registered in discovery index
|
|
81
|
+
- [ ] Consumer notification sent
|
|
82
|
+
- [ ] Health checks configured
|
|
83
|
+
|
|
84
|
+
## Validation Commands
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# Verify adoption documentation
|
|
88
|
+
node .harness/scripts/ci/01-validate-docs.mjs --target data-mesh
|
|
89
|
+
|
|
90
|
+
# Check bilingual parity
|
|
91
|
+
node .harness/scripts/ci/04-check-bilingual-parity.mjs
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
[Back to Data Mesh Profile](./README.md)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Data Mesh — Flujos CLI
|
|
2
|
+
|
|
3
|
+
> **Navegación Bilingüe:** [English Version](./cli-flows.md)
|
|
4
|
+
|
|
5
|
+
**Validadores declarados:** `validate-architecture`, `validate-topology`
|
|
6
|
+
|
|
7
|
+
## Validate
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
evolith validate --topology data-mesh
|
|
11
|
+
evolith validate --topology data-mesh --arch-level F2
|
|
12
|
+
evolith validate --topology data-mesh --format json
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Inspect
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
evolith topology inspect data-mesh
|
|
19
|
+
evolith topology inspect data-mesh --include-domains
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Drift
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
evolith drift detect --topology data-mesh
|
|
26
|
+
evolith drift detect --topology data-mesh --format json
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Scaffold
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
evolith architecture scaffold --topology data-mesh
|
|
33
|
+
evolith architecture scaffold --topology data-mesh --dry-run
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Gate Evaluation
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
evolith gate evaluate --topology data-mesh
|
|
40
|
+
evolith gate evaluate --topology data-mesh --phase F1
|
|
41
|
+
```
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Data Mesh — CLI Flows
|
|
2
|
+
|
|
3
|
+
> **Bilingual Navigation:** [Versión en Español](./cli-flows.es.md)
|
|
4
|
+
|
|
5
|
+
**Validators declarados:** `validate-architecture`, `validate-topology`
|
|
6
|
+
|
|
7
|
+
The following CLI commands are available for the Data Mesh topology.
|
|
8
|
+
|
|
9
|
+
## Validate
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
evolith validate --topology data-mesh
|
|
13
|
+
evolith validate --topology data-mesh --arch-level F2
|
|
14
|
+
evolith validate --topology data-mesh --format json
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Validates a Data Mesh configuration against the topology's native rules (`data-mesh.rules.json`) and OPA Rego policies (`data-mesh.rego`), checking data domain isolation, federated governance, and contract boundaries.
|
|
18
|
+
|
|
19
|
+
## Inspect
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
evolith topology inspect data-mesh
|
|
23
|
+
evolith topology inspect data-mesh --include-domains
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Returns the parsed Data Mesh topology manifest, data domain references, ownership metadata, and corpus artifact links.
|
|
27
|
+
|
|
28
|
+
## Drift
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
evolith drift detect --topology data-mesh
|
|
32
|
+
evolith drift detect --topology data-mesh --format json
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Detects configuration drift between the Data Mesh topology's declared ruleset and the current workspace state.
|
|
36
|
+
|
|
37
|
+
## Scaffold
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
evolith architecture scaffold --topology data-mesh
|
|
41
|
+
evolith architecture scaffold --topology data-mesh --dry-run
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Scaffolds a Data Mesh topology workspace with the canonical corpus structure, manifest, config schema, and OPA policies.
|
|
45
|
+
|
|
46
|
+
## Gate Evaluation
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
evolith gate evaluate --topology data-mesh
|
|
50
|
+
evolith gate evaluate --topology data-mesh --phase F1
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Evaluates Data Mesh phase gates for the given architecture level, checking contract conformance and domain ownership.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
package evolith.topologies.datamesh
|
|
2
|
+
|
|
3
|
+
violations[{"id":"DAM-R01","blocking":true,"message":"data-mesh.config.json must declare isDataProduct=true (DAM-R01)."}] { not input.satellite.dataMesh.isDataProduct }
|
|
4
|
+
violations[{"id":"DAM-R02","blocking":true,"message":"data-mesh.config.json must declare hasDataContracts=true (DAM-R02)."}] { not input.satellite.dataMesh.hasDataContracts }
|
|
5
|
+
violations[{"id":"DAM-R03","blocking":true,"message":"data-mesh.config.json must declare federatedGovernance=true (DAM-R03)."}] { not input.satellite.dataMesh.federatedGovernance }
|
|
6
|
+
violations[{"id":"DAM-R04","blocking":true,"message":"All data products must declare lineage tracking; data-mesh.config.json must declare hasLineageTracking=true (DAM-R04)."}] { not input.satellite.dataMesh.hasLineageTracking }
|
|
7
|
+
violations[{"id":"DAM-R05","blocking":true,"message":"data-mesh.config.json must declare hasRetentionPolicy=true with an explicit retention window per dataset (DAM-R05)."}] { not input.satellite.dataMesh.hasRetentionPolicy }
|
|
8
|
+
violations[{"id":"DAM-R06","blocking":true,"message":"All consumers must register explicit consumption contracts; data-mesh.config.json must declare hasConsumptionContracts=true (DAM-R06)."}] { not input.satellite.dataMesh.hasConsumptionContracts }
|
|
9
|
+
violations[{"id":"DAM-R07","blocking":false,"message":"Each data product must declare measurable quality SLOs; data-mesh.config.json must declare hasDataQualitySLO=true (DAM-R07)."}] { not input.satellite.dataMesh.hasDataQualitySLO }
|
|
10
|
+
violations[{"id":"DAM-R08","blocking":false,"message":"Data contract schema changes must maintain backward compatibility; data-mesh.config.json must declare hasBackwardCompatibleContracts=true (DAM-R08)."}] { not input.satellite.dataMesh.hasBackwardCompatibleContracts }
|
|
11
|
+
violations[{"id":"DAM-R09","blocking":false,"message":"All data products should register in a central data catalog; data-mesh.config.json should declare hasDiscoveryRegistration=true (DAM-R09)."}] { not input.satellite.dataMesh.hasDiscoveryRegistration }
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../../../../rulesets/schema/ruleset-standard.schema.json",
|
|
3
|
+
"$id": "https://evolith.dev/rulesets/topologies/data-mesh.rules.json",
|
|
4
|
+
"title": "Data Mesh Topology Rules",
|
|
5
|
+
"description": "Architectural rules for the Data Mesh topology.",
|
|
6
|
+
"version": "1.1.0",
|
|
7
|
+
"effectiveDate": "2026-06-22",
|
|
8
|
+
"rules": [
|
|
9
|
+
{
|
|
10
|
+
"id": "DAM-R01",
|
|
11
|
+
"severity": "MUST",
|
|
12
|
+
"category": "data-mesh-config",
|
|
13
|
+
"title": "Data Product Designation",
|
|
14
|
+
"description": "A Data Mesh satellite MUST provide data-mesh.config.json and declare isDataProduct=true.",
|
|
15
|
+
"rationale": "Explicit data product designation enforces domain ownership of analytical data. Without this declaration, analytical datasets remain in an undefined ownership state that prevents federated governance and makes data discoverability impossible.",
|
|
16
|
+
"validationQuery": "Verify data-mesh.config.json exists and isDataProduct is set to true. Confirm a data product owner is registered in the domain catalog.",
|
|
17
|
+
"blocking": true
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "DAM-R02",
|
|
21
|
+
"severity": "MUST",
|
|
22
|
+
"category": "data-mesh-contracts",
|
|
23
|
+
"title": "Data Contracts",
|
|
24
|
+
"description": "data-mesh.config.json MUST declare hasDataContracts=true.",
|
|
25
|
+
"rationale": "Data contracts define the schema, SLOs, and behavioral guarantees a data product offers to consumers. Without them, downstream consumers face silent schema breaks and undefined freshness expectations.",
|
|
26
|
+
"validationQuery": "Verify data-mesh.config.json declares hasDataContracts=true. Confirm a contract document (e.g., DataContract YAML or JSON) exists and is versioned alongside the data product.",
|
|
27
|
+
"blocking": true
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "DAM-R03",
|
|
31
|
+
"severity": "MUST",
|
|
32
|
+
"category": "data-mesh-governance",
|
|
33
|
+
"title": "Federated Governance",
|
|
34
|
+
"description": "data-mesh.config.json MUST declare federatedGovernance=true.",
|
|
35
|
+
"rationale": "Federated computational governance is a foundational Data Mesh principle. Without it, each domain applies inconsistent policies for access, retention, and quality, defeating the purpose of domain-driven data ownership.",
|
|
36
|
+
"validationQuery": "Verify data-mesh.config.json declares federatedGovernance=true. Confirm the domain subscribes to the global governance platform (e.g., data catalog registration, policy engine enrollment).",
|
|
37
|
+
"blocking": true
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "DAM-R04",
|
|
41
|
+
"severity": "MUST",
|
|
42
|
+
"category": "data-lineage",
|
|
43
|
+
"title": "Data Product Lineage Tracking",
|
|
44
|
+
"description": "All Data Mesh products MUST declare hasLineageTracking=true and provide end-to-end lineage metadata from source to consumption.",
|
|
45
|
+
"rationale": "Without lineage, data engineers cannot trace the root cause of data quality issues, regulatory auditors cannot verify data provenance, and consumers cannot assess data trustworthiness. Lineage tracking is foundational for GDPR data impact assessments and incident response.",
|
|
46
|
+
"validationQuery": "Verify data-mesh.config.json declares hasLineageTracking=true. Confirm lineage metadata is emitted to a central lineage store (e.g., OpenLineage events or Marquez integration) at each transformation step.",
|
|
47
|
+
"blocking": true
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"id": "DAM-R05",
|
|
51
|
+
"severity": "MUST",
|
|
52
|
+
"category": "retention",
|
|
53
|
+
"title": "Retention Policy on Data Products",
|
|
54
|
+
"description": "data-mesh.config.json MUST declare hasRetentionPolicy=true with an explicit retention window per dataset.",
|
|
55
|
+
"rationale": "Unmanaged analytical data accumulates indefinitely, violating GDPR right-to-erasure SLAs and creating unbounded storage costs. Explicit retention policies also define the historical window available for replay and backfill operations.",
|
|
56
|
+
"validationQuery": "Verify data-mesh.config.json declares hasRetentionPolicy=true. Confirm each dataset partition has an explicit retention duration defined in storage configuration (e.g., S3 lifecycle rules, BigQuery table expiry, or equivalent).",
|
|
57
|
+
"blocking": true
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "DAM-R06",
|
|
61
|
+
"severity": "MUST",
|
|
62
|
+
"category": "consumption-contracts",
|
|
63
|
+
"title": "Explicit Consumption Contracts",
|
|
64
|
+
"description": "All data product consumers MUST register explicit consumption contracts (hasConsumptionContracts=true), declaring the fields, freshness SLO, and volume expectations they depend on.",
|
|
65
|
+
"rationale": "Without registered consumption contracts, producers cannot assess the impact of schema or SLO changes on downstream consumers. Explicit contracts enable impact analysis before breaking changes are deployed and establish clear SLA responsibilities.",
|
|
66
|
+
"validationQuery": "Verify data-mesh.config.json declares hasConsumptionContracts=true. Confirm consumer contracts are registered in the data catalog and linked to data product versions.",
|
|
67
|
+
"blocking": true
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"id": "DAM-R07",
|
|
71
|
+
"severity": "MUST",
|
|
72
|
+
"category": "observability",
|
|
73
|
+
"title": "Data Quality SLO Declaration",
|
|
74
|
+
"description": "Each data product MUST declare measurable data quality SLOs (hasDataQualitySLO=true): completeness, freshness, validity, and uniqueness targets.",
|
|
75
|
+
"rationale": "Undeclared data quality leaves consumers unable to make trust decisions about a dataset. SLO declarations force domain teams to define observable targets and enable automated quality gate failures when metrics degrade.",
|
|
76
|
+
"validationQuery": "Verify data-mesh.config.json declares hasDataQualitySLO=true. Confirm quality metrics (completeness %, freshness lag, validity rate, uniqueness rate) are emitted to the observability platform and alerts are configured per SLO threshold.",
|
|
77
|
+
"blocking": false
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"id": "DAM-R08",
|
|
81
|
+
"severity": "MUST",
|
|
82
|
+
"category": "schema-evolution",
|
|
83
|
+
"title": "Data Contract Backward Compatibility",
|
|
84
|
+
"description": "All data product schema changes MUST maintain backward compatibility (hasBackwardCompatibleContracts=true). Breaking changes require a new versioned data product.",
|
|
85
|
+
"rationale": "Consumers of analytical data products evolve on independent deployment cycles. A breaking schema change — renaming a column, changing a type, removing a field — silently breaks downstream pipelines that cannot be updated in lockstep. Backward compatibility enforcement prevents uncoordinated breakage.",
|
|
86
|
+
"validationQuery": "Verify data-mesh.config.json declares hasBackwardCompatibleContracts=true. Validate that schema changes pass backward-compatibility checks in CI (e.g., schema registry diff, dbt schema change detection, or equivalent).",
|
|
87
|
+
"blocking": false
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "DAM-R09",
|
|
91
|
+
"severity": "SHOULD",
|
|
92
|
+
"category": "discovery",
|
|
93
|
+
"title": "Data Product Discoverability Registration",
|
|
94
|
+
"description": "All data products SHOULD register in a central data catalog (hasDiscoveryRegistration=true) with owner, description, schema, SLO, and consumption instructions.",
|
|
95
|
+
"rationale": "Without central registration, data products are invisible to potential consumers across domains. Discovery is a core Data Mesh principle: the data platform must surface products so teams can self-serve without ad-hoc communication with domain teams.",
|
|
96
|
+
"validationQuery": "Verify data-mesh.config.json declares hasDiscoveryRegistration=true. Confirm the data product record exists in the central catalog with all mandatory metadata fields populated (owner, schema link, SLO, access instructions).",
|
|
97
|
+
"blocking": false
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
}
|