@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.
Files changed (500) hide show
  1. package/dist/domain/services/default-workflow-definition.js +1 -1
  2. package/dist/domain/services/default-workflow-definition.js.map +1 -1
  3. package/package.json +2 -1
  4. package/rulesets/README.es.md +170 -0
  5. package/rulesets/README.md +170 -0
  6. package/rulesets/acl/README.es.md +41 -0
  7. package/rulesets/acl/README.md +41 -0
  8. package/rulesets/acl/anti-corruption-layer.rules.es.json +99 -0
  9. package/rulesets/acl/anti-corruption-layer.rules.json +99 -0
  10. package/rulesets/adr/ADR_COVERAGE.es.md +133 -0
  11. package/rulesets/adr/ADR_COVERAGE.md +133 -0
  12. package/rulesets/adr/README.es.md +17 -0
  13. package/rulesets/adr/README.md +17 -0
  14. package/rulesets/adr/adr-0002-hexagonal-architecture.rules.json +103 -0
  15. package/rulesets/adr/adr-0005-cicd-quality-gates.rules.json +102 -0
  16. package/rulesets/adr/adr-0010-multi-tenancy.rules.json +129 -0
  17. package/rulesets/adr/adr-0018-testing-pyramid.rules.json +115 -0
  18. package/rulesets/adr/adr-0032-protocol-selection.rules.json +134 -0
  19. package/rulesets/adr/adr-0040-multi-runtime.rules.json +131 -0
  20. package/rulesets/adr/adr-0050-gitflow-branching.rules.json +176 -0
  21. package/rulesets/adr/generated/adr-0001-monorepo-orchestration-principle.rules.json +29 -0
  22. package/rulesets/adr/generated/adr-0006-microservices-transition-via-sidecar-pattern.rules.json +29 -0
  23. package/rulesets/adr/generated/adr-0009-strict-dependency-pinning-and-automated-vulnerability-manage.rules.json +29 -0
  24. package/rulesets/adr/generated/adr-0011-fault-tolerance-and-resiliency-patterns.rules.json +29 -0
  25. package/rulesets/adr/generated/adr-0013-cloud-infrastructure-topology-and-disaster-recovery-dr.rules.json +28 -0
  26. package/rulesets/adr/generated/adr-0014-multi-layer-distributed-caching-strategy.rules.json +29 -0
  27. package/rulesets/adr/generated/adr-0015-event-driven-architecture-eda-for-intra-domain-communication.rules.json +29 -0
  28. package/rulesets/adr/generated/adr-0016-immutable-business-audit-trail-and-change-tracking.rules.json +29 -0
  29. package/rulesets/adr/generated/adr-0017-feature-flagging-strategy-for-progressive-delivery.rules.json +28 -0
  30. package/rulesets/adr/generated/adr-0019-tactical-design-patterns-for-future-proofing.rules.json +29 -0
  31. package/rulesets/adr/generated/adr-0020-identity-provider-abstraction-strategy.rules.json +28 -0
  32. package/rulesets/adr/generated/adr-0024-centralized-configuration-feature-platform.rules.json +28 -0
  33. package/rulesets/adr/generated/adr-0025-feature-flag-provider-abstraction-strategy.rules.json +29 -0
  34. package/rulesets/adr/generated/adr-0028-self-hosted-open-source-hybrid-infrastructure.rules.json +29 -0
  35. package/rulesets/adr/generated/adr-0030-two-tier-distributed-gateway-model.rules.json +28 -0
  36. package/rulesets/adr/generated/adr-0031-schema-per-bounded-context-and-domain-event-catalog.rules.json +29 -0
  37. package/rulesets/adr/generated/adr-0033-transactional-outbox-pattern-for-async-messaging.rules.json +28 -0
  38. package/rulesets/adr/generated/adr-0034-cqrs-pattern-application-matrix.rules.json +29 -0
  39. package/rulesets/adr/generated/adr-0035-distributed-saga-pattern-implementation-strategy.rules.json +29 -0
  40. package/rulesets/adr/generated/adr-0036-message-bus-delivery-flow-control-strategy.rules.json +29 -0
  41. package/rulesets/adr/generated/adr-0037-enterprise-performance-concurrency-chaos-verification-strate.rules.json +28 -0
  42. package/rulesets/adr/generated/adr-0039-deployment-topology-abstraction-environment-switcher.rules.json +29 -0
  43. package/rulesets/adr/generated/adr-0041-dual-engine-policy-evaluation-native-opa.rules.json +28 -0
  44. package/rulesets/adr/generated/adr-0044-configurable-security-persistence-strategy-agnosticism-vs-na.rules.json +29 -0
  45. package/rulesets/adr/generated/adr-0045-microservice-extraction-readiness-criteria.rules.json +29 -0
  46. package/rulesets/adr/generated/adr-0046-unified-traceability-via-w3c-tracecontext.rules.json +29 -0
  47. package/rulesets/adr/generated/adr-0047-progressive-architecture-evolution-framework-modular-monolit.rules.json +29 -0
  48. package/rulesets/adr/generated/adr-0048-enterprise-taxonomy-standardization-and-reference-layout.rules.json +28 -0
  49. package/rulesets/adr/generated/adr-0049-naming-semantics-clean-code-policy-e2e-and-global.rules.json +29 -0
  50. package/rulesets/adr/generated/adr-0051-enterprise-database-engine-selection-strategy.rules.json +29 -0
  51. package/rulesets/adr/generated/adr-0052-unit-testing-isolation-strategy-mocks-vs-stubs.rules.json +29 -0
  52. package/rulesets/adr/generated/adr-0053-integration-and-e2e-testing-strategy.rules.json +29 -0
  53. package/rulesets/adr/generated/adr-0054-database-design-and-normalization-standards.rules.json +29 -0
  54. package/rulesets/adr/generated/adr-0055-microfrontends-architecture-strategy.rules.json +28 -0
  55. package/rulesets/adr/generated/adr-0056-enterprise-naming-design-conventions-multi-language-multi-pl.rules.json +29 -0
  56. package/rulesets/adr/generated/adr-0057-architecture-intelligence-catalog.rules.json +27 -0
  57. package/rulesets/adr/generated/adr-0058-ai-consumable-architecture-knowledge.rules.json +27 -0
  58. package/rulesets/adr/generated/adr-0067-modular-monolith-persistence-boundaries.rules.json +28 -0
  59. package/rulesets/adr/generated/adr-0068-documentation-release-gitflow.rules.json +29 -0
  60. package/rulesets/adr/generated/adr-0069-ai-agent-context-protocol-integration.rules.json +28 -0
  61. package/rulesets/adr/generated/adr-0070-lean-root-repository-taxonomy.rules.json +29 -0
  62. package/rulesets/adr/generated/adr-0071-domain-layer-base-class-and-inheritance-strategy.rules.json +29 -0
  63. package/rulesets/adr/generated/adr-0072-utc-date-storage-browser-timezone-detection-and-language-res.rules.json +29 -0
  64. package/rulesets/adr/generated/adr-0073-unified-cli-mcp-output-contract-and-gate-evidence-schema.rules.json +29 -0
  65. package/rulesets/adr/generated/adr-0074-evolith-core-api-native-exposure-layer.rules.json +29 -0
  66. package/rulesets/adr/generated/adr-0075-core-api-authentication-strategy.rules.json +28 -0
  67. package/rulesets/adr/generated/adr-0076-domain-oriented-microservice-architecture-doma.rules.json +28 -0
  68. package/rulesets/adr/generated/adr-0077-masstransit-v9-commercial-pivot-stay-on-v8-monitor-opentrans.rules.json +28 -0
  69. package/rulesets/adr/generated/adr-0078-domain-financial-separation-governance.rules.json +29 -0
  70. package/rulesets/adr/generated/adr-0079-multi-topology-reference-corpus-and-topology-manifest-contra.rules.json +29 -0
  71. package/rulesets/adr/generated/adr-0080-remote-repository-reference-contract.rules.json +29 -0
  72. package/rulesets/adr/generated/adr-0081-agentic-ai-sandbox-isolation-boundary.rules.json +29 -0
  73. package/rulesets/adr/generated/adr-0082-agentic-ai-prompt-context-and-tool-trust-boundary.rules.json +28 -0
  74. package/rulesets/adr/generated/adr-0083-agentic-ai-action-authorization-and-audit.rules.json +29 -0
  75. package/rulesets/adr/generated/adr-0084-data-mesh-and-data-as-a-product.rules.json +29 -0
  76. package/rulesets/adr/generated/adr-0085-agnostic-opa-wasm-distribution-architecture.rules.json +28 -0
  77. package/rulesets/adr/generated/adr-0086-agentic-ai-telemetry-cost-control-standard.rules.json +27 -0
  78. package/rulesets/adr/generated/adr-0087-attribute-based-access-control-abac-for-agentic-tool-executi.rules.json +29 -0
  79. package/rulesets/adr/generated/adr-0088-sovereign-identity-for-agentic-ai.rules.json +29 -0
  80. package/rulesets/adr/generated/adr-0089-event-driven-agentic-workflow-pattern.rules.json +28 -0
  81. package/rulesets/adr/generated/adr-0090-rag-knowledge-governance-standard.rules.json +29 -0
  82. package/rulesets/adr/generated/adr-0091-workload-identity-token-rotation-standard.rules.json +29 -0
  83. package/rulesets/adr/generated/adr-0092-agent-infinite-loop-prevention-and-circuit-breaker-rules.rules.json +29 -0
  84. package/rulesets/adr/generated/adr-0093-concurrency-control-and-resource-locking-standard-for-mcp-to.rules.json +29 -0
  85. package/rulesets/adr/generated/adr-0094-multi-agent-handoff-and-task-delegation-standards.rules.json +29 -0
  86. package/rulesets/adr/generated/adr-0095-serverless-architecture-governance.rules.json +29 -0
  87. package/rulesets/adr/generated/adr-0096-edge-computing-architecture-governance.rules.json +29 -0
  88. package/rulesets/adr/generated/adr-0097-knowledge-lifecycle-governance-standard.rules.json +29 -0
  89. package/rulesets/adr/generated/adr-0098-rest-uri-versioning-and-deprecation-policy.rules.json +29 -0
  90. package/rulesets/adr/generated/adr-0099-opa-bundle-distribution-via-s3-minio.rules.json +27 -0
  91. package/rulesets/adr/generated/adr-ai-augmented-0001-harness-engineering-for-ai-augmented-development.rules.json +29 -0
  92. package/rulesets/adr/generated/adr-ai-augmented-0002-mcp-integration-protocol-for-agent-tool-invocation.rules.json +29 -0
  93. package/rulesets/adr/generated/adr-ai-augmented-0003-model-selection-governance-for-ai-augmented-workflows.rules.json +29 -0
  94. package/rulesets/adr/generated/adr-ai-augmented-0004-agents-md-as-mandatory-repository-artifact.rules.json +29 -0
  95. package/rulesets/adr/generated/adr-ai-augmented-0005-human-in-the-loop-policy-for-autonomous-agent-operations.rules.json +29 -0
  96. package/rulesets/adr/generated/adr-android-0042-canonical-android-native-mobile-architecture.rules.json +29 -0
  97. package/rulesets/adr/generated/adr-dotnet-0041-canonical-net-c-backend-architecture.rules.json +29 -0
  98. package/rulesets/adr/generated/adr-dotnet-0060-net-multi-tenancy-dual-layer-strategy-ef-core-sql-server.rules.json +29 -0
  99. package/rulesets/adr/generated/adr-dotnet-0061-transactional-event-lifecycle-in-ef-core.rules.json +28 -0
  100. package/rulesets/adr/generated/adr-dotnet-0062-net-immutable-audit-trail-via-ddl-triggers-delta-capture.rules.json +29 -0
  101. package/rulesets/adr/generated/adr-dotnet-0063-b2b-request-idempotency-middleware-in-asp-net-core.rules.json +28 -0
  102. package/rulesets/adr/generated/adr-dotnet-0064-net-request-scope-observability-context-propagation.rules.json +29 -0
  103. package/rulesets/adr/generated/adr-dotnet-0065-net-pii-safe-structured-logging-pipeline-serilog.rules.json +29 -0
  104. package/rulesets/adr/generated/adr-dotnet-0066-net-lightweight-http-idempotency-via-imemorycache-idistribut.rules.json +28 -0
  105. package/rulesets/adr/generated/adr-dotnet-0069-net-grpc-service-setup-protobuf-contracts.rules.json +29 -0
  106. package/rulesets/adr/generated/adr-dotnet-0070-net-api-endpoint-strategy.rules.json +29 -0
  107. package/rulesets/adr/generated/adr-dotnet-0071-net-data-access-strategy-ef-core-as-default-orm-dapper-for-o.rules.json +27 -0
  108. package/rulesets/adr/generated/adr-dotnet-0072-net-aop-cross-cutting-concern-strategy-dispatchproxy-over-pi.rules.json +29 -0
  109. package/rulesets/adr/generated/adr-nodejs-0003-strict-typescript-standards.rules.json +29 -0
  110. package/rulesets/adr/generated/adr-nodejs-0004-frontend-offline-resilience.rules.json +28 -0
  111. package/rulesets/adr/generated/adr-nodejs-0007-observability-with-opentelemetry-loki-and-jaeger.rules.json +29 -0
  112. package/rulesets/adr/generated/adr-nodejs-0008-progressive-multi-module-evolution-with-api-gateway-and-bff-.rules.json +28 -0
  113. package/rulesets/adr/generated/adr-nodejs-0012-advanced-authorization-rbac-abac-strategy.rules.json +28 -0
  114. package/rulesets/adr/generated/adr-nodejs-0021-high-performance-authentication-graph-compilation.rules.json +28 -0
  115. package/rulesets/adr/generated/adr-nodejs-0022-contextual-authentication-and-pluggable-output-projections.rules.json +28 -0
  116. package/rulesets/adr/generated/adr-nodejs-0023-centralized-authorization-core-strategy.rules.json +28 -0
  117. package/rulesets/adr/generated/adr-nodejs-0026-adaptive-mfa-and-passwordless-platform.rules.json +28 -0
  118. package/rulesets/adr/generated/adr-nodejs-0027-dual-protocol-api-strategy-rest-grpc.rules.json +28 -0
  119. package/rulesets/adr/generated/adr-nodejs-0029-adoption-of-tactical-ddd-primitives-library.rules.json +29 -0
  120. package/rulesets/adr/generated/adr-nodejs-0038-enterprise-error-handling-result-pattern-strategy.rules.json +29 -0
  121. package/rulesets/adr/generated/adr-nodejs-0043-data-access-and-orm-strategy-for-node-js.rules.json +29 -0
  122. package/rulesets/adr/generated/adr-nodejs-0044-frontend-clean-architecture-layer-boundaries-react.rules.json +29 -0
  123. package/rulesets/adr/generated/adr-nodejs-0045-frontend-state-management-zustand-tanstack-query-dual-strate.rules.json +29 -0
  124. package/rulesets/adr/generated/adr-nodejs-0046-prohibition-of-raw-technical-identifiers-in-user-interfaces.rules.json +29 -0
  125. package/rulesets/adr/generated/adr-nodejs-0047-actionable-user-error-contract-and-correlated-diagnostics.rules.json +29 -0
  126. package/rulesets/adr/generated/adr-nodejs-0048-feature-flag-system-scope-and-structured-criteria-model.rules.json +29 -0
  127. package/rulesets/adr/generated/adr-nodejs-0074-monorepo-orchestration-with-nx.rules.json +29 -0
  128. package/rulesets/adr/generated/adr-nodejs-0075-application-gateway-bff-with-nestjs.rules.json +29 -0
  129. package/rulesets/architecture/README.es.md +21 -0
  130. package/rulesets/architecture/README.md +21 -0
  131. package/rulesets/architecture/opa/progressive-axis.rego +50 -0
  132. package/rulesets/cli/README.es.md +17 -0
  133. package/rulesets/cli/README.md +17 -0
  134. package/rulesets/cli/core-parity.rules.json +61 -0
  135. package/rulesets/cli/release-readiness.rules.json +77 -0
  136. package/rulesets/compliance-baseline/README.es.md +26 -0
  137. package/rulesets/compliance-baseline/README.md +26 -0
  138. package/rulesets/compliance-baseline/compliance-baseline.rules.json +81 -0
  139. package/rulesets/contracts/README.es.md +19 -0
  140. package/rulesets/contracts/README.md +19 -0
  141. package/rulesets/contracts/evolith-machine-contracts.json +29 -0
  142. package/rulesets/contracts/fixtures/gate-evidence.success.json +10 -0
  143. package/rulesets/contracts/fixtures/output-envelope.success.json +23 -0
  144. package/rulesets/cross-cutting/README.es.md +14 -0
  145. package/rulesets/cross-cutting/README.md +14 -0
  146. package/rulesets/cross-cutting/compliance-baseline.rules.json +81 -0
  147. package/rulesets/cross-cutting/definition-of-done.rules.json +135 -0
  148. package/rulesets/cross-cutting/engineering-manifesto.rules.json +145 -0
  149. package/rulesets/cross-cutting/repository-taxonomy.rules.json +172 -0
  150. package/rulesets/definition-of-done/README.es.md +26 -0
  151. package/rulesets/definition-of-done/README.md +26 -0
  152. package/rulesets/definition-of-done/definition-of-done.rules.json +135 -0
  153. package/rulesets/engineering-manifesto/README.es.md +26 -0
  154. package/rulesets/engineering-manifesto/README.md +26 -0
  155. package/rulesets/engineering-manifesto/engineering-manifesto.rules.json +145 -0
  156. package/rulesets/evidence/README.es.md +12 -0
  157. package/rulesets/evidence/README.md +12 -0
  158. package/rulesets/evidence/evidence-manifest.rules.json +48 -0
  159. package/rulesets/executive-scorecards/executive-scorecards.rules.es.json +213 -0
  160. package/rulesets/executive-scorecards/executive-scorecards.rules.json +213 -0
  161. package/rulesets/governance/README.es.md +13 -0
  162. package/rulesets/governance/README.md +13 -0
  163. package/rulesets/governance/abac-mcp-access.rules.es.json +41 -0
  164. package/rulesets/governance/abac-mcp-access.rules.json +41 -0
  165. package/rulesets/governance/executive-scorecards.rules.es.json +213 -0
  166. package/rulesets/governance/executive-scorecards.rules.json +213 -0
  167. package/rulesets/governance/inheritance.rules.json +115 -0
  168. package/rulesets/governance/knowledge-intake.rules.json +18 -0
  169. package/rulesets/governance/open-core-boundary.rules.es.json +148 -0
  170. package/rulesets/governance/open-core-boundary.rules.json +148 -0
  171. package/rulesets/governance/satellite-contracts.rules.json +183 -0
  172. package/rulesets/infrastructure/helm-enforcement.rules.json +21 -0
  173. package/rulesets/infrastructure/opa/helm-enforcement.rego +25 -0
  174. package/rulesets/infrastructure/opa/helm-enforcement.test.rego +31 -0
  175. package/rulesets/infrastructure/opa/opa-sidecar-bundle.rego +115 -0
  176. package/rulesets/infrastructure/opa/opa-sidecar-bundle.test.rego +66 -0
  177. package/rulesets/infrastructure/opa-sidecar-bundle.rules.json +18 -0
  178. package/rulesets/mcp/README.es.md +12 -0
  179. package/rulesets/mcp/README.md +12 -0
  180. package/rulesets/mcp/protocol-compliance.rules.json +57 -0
  181. package/rulesets/observability/README.es.md +12 -0
  182. package/rulesets/observability/README.md +12 -0
  183. package/rulesets/observability/telemetry-evidence.rules.json +48 -0
  184. package/rulesets/opa/README.es.md +22 -0
  185. package/rulesets/opa/README.md +22 -0
  186. package/rulesets/opa/abac-mcp-tool-access.rego +122 -0
  187. package/rulesets/opa/abac-mcp-tool-access.test.rego +33 -0
  188. package/rulesets/opa/anti-corruption-layer.rego +39 -0
  189. package/rulesets/opa/anti-corruption-layer.test.rego +118 -0
  190. package/rulesets/opa/ci-cd.rego +41 -0
  191. package/rulesets/opa/ci-cd.test.rego +23 -0
  192. package/rulesets/opa/cicd-quality-gates.rego +29 -0
  193. package/rulesets/opa/cicd-quality-gates.test.rego +54 -0
  194. package/rulesets/opa/cli-core-parity.rego +17 -0
  195. package/rulesets/opa/cli-core-parity.test.rego +39 -0
  196. package/rulesets/opa/cli-readiness.rego +32 -0
  197. package/rulesets/opa/cli-readiness.test.rego +23 -0
  198. package/rulesets/opa/cli-release-readiness.rego +21 -0
  199. package/rulesets/opa/cli-release-readiness.test.rego +46 -0
  200. package/rulesets/opa/compliance-baseline.rego +95 -0
  201. package/rulesets/opa/compliance-baseline.test.rego +89 -0
  202. package/rulesets/opa/dod.rego +42 -0
  203. package/rulesets/opa/dod.test.rego +250 -0
  204. package/rulesets/opa/engineering-manifesto.rego +78 -0
  205. package/rulesets/opa/engineering-manifesto.test.rego +133 -0
  206. package/rulesets/opa/evidence.rego +64 -0
  207. package/rulesets/opa/evidence.test.rego +23 -0
  208. package/rulesets/opa/executive-scorecards.rego +41 -0
  209. package/rulesets/opa/executive-scorecards.test.rego +60 -0
  210. package/rulesets/opa/gitflow-branching.rego +41 -0
  211. package/rulesets/opa/gitflow-branching.test.rego +60 -0
  212. package/rulesets/opa/governance.rego +39 -0
  213. package/rulesets/opa/governance.test.rego +23 -0
  214. package/rulesets/opa/hexagonal-architecture.rego +33 -0
  215. package/rulesets/opa/hexagonal-architecture.test.rego +57 -0
  216. package/rulesets/opa/infrastructure/helm-enforcement.rego +33 -0
  217. package/rulesets/opa/infrastructure/opa-sidecar-bundle.rego +42 -0
  218. package/rulesets/opa/knowledge-intake.rego +98 -0
  219. package/rulesets/opa/knowledge-intake.test.rego +50 -0
  220. package/rulesets/opa/main.rego +147 -0
  221. package/rulesets/opa/main_test.rego +149 -0
  222. package/rulesets/opa/mcp.rego +61 -0
  223. package/rulesets/opa/mcp.test.rego +27 -0
  224. package/rulesets/opa/multi-runtime.rego +33 -0
  225. package/rulesets/opa/multi-runtime.test.rego +53 -0
  226. package/rulesets/opa/multi-tenancy.rego +33 -0
  227. package/rulesets/opa/multi-tenancy.test.rego +53 -0
  228. package/rulesets/opa/open-core-boundary.rego +33 -0
  229. package/rulesets/opa/open-core-boundary.test.rego +60 -0
  230. package/rulesets/opa/protocol-selection.rego +29 -0
  231. package/rulesets/opa/protocol-selection.test.rego +46 -0
  232. package/rulesets/opa/rbac/gate-role-enforcement.rego +112 -0
  233. package/rulesets/opa/repository-taxonomy.rego +98 -0
  234. package/rulesets/opa/repository-taxonomy.test.rego +91 -0
  235. package/rulesets/opa/satellite-contracts.rego +42 -0
  236. package/rulesets/opa/satellite-contracts.test.rego +70 -0
  237. package/rulesets/opa/schemas/abac-mcp-tool-access.input.schema.json +21 -0
  238. package/rulesets/opa/schemas/anti-corruption-layer.input.schema.json +25 -0
  239. package/rulesets/opa/schemas/ci-cd.input.schema.json +27 -0
  240. package/rulesets/opa/schemas/cicd-quality-gates.input.schema.json +33 -0
  241. package/rulesets/opa/schemas/cli-core-parity.input.schema.json +30 -0
  242. package/rulesets/opa/schemas/cli-readiness.input.schema.json +28 -0
  243. package/rulesets/opa/schemas/cli-release-readiness.input.schema.json +26 -0
  244. package/rulesets/opa/schemas/compliance-baseline.input.schema.json +25 -0
  245. package/rulesets/opa/schemas/dod.input.schema.json +38 -0
  246. package/rulesets/opa/schemas/engineering-manifesto.input.schema.json +24 -0
  247. package/rulesets/opa/schemas/evidence.input.schema.json +35 -0
  248. package/rulesets/opa/schemas/executive-scorecards.input.schema.json +36 -0
  249. package/rulesets/opa/schemas/gitflow-branching.input.schema.json +36 -0
  250. package/rulesets/opa/schemas/governance.input.schema.json +19 -0
  251. package/rulesets/opa/schemas/hexagonal-architecture.input.schema.json +46 -0
  252. package/rulesets/opa/schemas/knowledge-intake.input.schema.json +57 -0
  253. package/rulesets/opa/schemas/mcp.input.schema.json +38 -0
  254. package/rulesets/opa/schemas/multi-runtime.input.schema.json +27 -0
  255. package/rulesets/opa/schemas/multi-tenancy.input.schema.json +27 -0
  256. package/rulesets/opa/schemas/open-core-boundary.input.schema.json +36 -0
  257. package/rulesets/opa/schemas/protocol-selection.input.schema.json +26 -0
  258. package/rulesets/opa/schemas/repository-taxonomy.input.schema.json +18 -0
  259. package/rulesets/opa/schemas/satellite-contracts.input.schema.json +38 -0
  260. package/rulesets/opa/schemas/taxonomy.input.schema.json +27 -0
  261. package/rulesets/opa/schemas/testing-pyramid.input.schema.json +42 -0
  262. package/rulesets/opa/schemas/version-pinning.input.schema.json +39 -0
  263. package/rulesets/opa/sdlc/coverage.rego +49 -0
  264. package/rulesets/opa/sdlc/coverage.test.rego +29 -0
  265. package/rulesets/opa/sdlc/pyramid-distribution.rego +31 -0
  266. package/rulesets/opa/sdlc/pyramid-distribution.test.rego +33 -0
  267. package/rulesets/opa/taxonomy.rego +51 -0
  268. package/rulesets/opa/taxonomy.test.rego +28 -0
  269. package/rulesets/opa/telemetry-evidence.rego +102 -0
  270. package/rulesets/opa/testing-pyramid.rego +49 -0
  271. package/rulesets/opa/testing-pyramid.test.rego +81 -0
  272. package/rulesets/opa/version-pinning.rego +99 -0
  273. package/rulesets/opa/version-pinning.test.rego +28 -0
  274. package/rulesets/phase-gates/README.es.md +28 -0
  275. package/rulesets/phase-gates/README.md +28 -0
  276. package/rulesets/phase-gates/phase-gates.rules.json +297 -0
  277. package/rulesets/quality-thresholds/README.es.md +28 -0
  278. package/rulesets/quality-thresholds/README.md +28 -0
  279. package/rulesets/quality-thresholds/quality-thresholds.rules.json +96 -0
  280. package/rulesets/repository-taxonomy/README.es.md +26 -0
  281. package/rulesets/repository-taxonomy/README.md +26 -0
  282. package/rulesets/repository-taxonomy/repository-taxonomy.rules.json +172 -0
  283. package/rulesets/satellite-contracts/README.es.md +27 -0
  284. package/rulesets/satellite-contracts/README.md +27 -0
  285. package/rulesets/satellite-contracts/satellite-contracts.rules.json +183 -0
  286. package/rulesets/schema/README.es.md +39 -0
  287. package/rulesets/schema/README.md +39 -0
  288. package/rulesets/schema/adr.schema.json +138 -0
  289. package/rulesets/schema/agile-backlog.schema.json +91 -0
  290. package/rulesets/schema/ballpark-estimation.schema.json +109 -0
  291. package/rulesets/schema/build-vs-compose.schema.json +98 -0
  292. package/rulesets/schema/cli-impact-analysis.schema.json +114 -0
  293. package/rulesets/schema/discovery-canvas.schema.json +92 -0
  294. package/rulesets/schema/evolith-user-story.schema.json +105 -0
  295. package/rulesets/schema/evolith-yaml.schema.json +191 -0
  296. package/rulesets/schema/functional-story.schema.json +111 -0
  297. package/rulesets/schema/gate-evidence.schema.json +85 -0
  298. package/rulesets/schema/integration-evidence.schema.json +47 -0
  299. package/rulesets/schema/knowledge-intake.schema.json +67 -0
  300. package/rulesets/schema/knowledge-projection.schema.json +24 -0
  301. package/rulesets/schema/maturity-evidence.schema.json +59 -0
  302. package/rulesets/schema/observability-validation.schema.json +85 -0
  303. package/rulesets/schema/on-call-handoff.schema.json +91 -0
  304. package/rulesets/schema/output-envelope.schema.json +102 -0
  305. package/rulesets/schema/prd.schema.json +117 -0
  306. package/rulesets/schema/release-notes.schema.json +138 -0
  307. package/rulesets/schema/rollback-rehearsal.schema.json +73 -0
  308. package/rulesets/schema/ruleset-sdlc.schema.json +59 -0
  309. package/rulesets/schema/ruleset-standard.schema.json +73 -0
  310. package/rulesets/schema/security-scan-report.schema.json +79 -0
  311. package/rulesets/schema/source-registry.schema.json +51 -0
  312. package/rulesets/schema/technical-feasibility.schema.json +66 -0
  313. package/rulesets/schema/technical-story.schema.json +112 -0
  314. package/rulesets/schema/test-summary-report.schema.json +158 -0
  315. package/rulesets/schema/topology-composition.schema.json +43 -0
  316. package/rulesets/schema/topology-manifest.schema.json +421 -0
  317. package/rulesets/sdlc/README.es.md +12 -0
  318. package/rulesets/sdlc/README.md +12 -0
  319. package/rulesets/sdlc/default-workflow.yaml +73 -0
  320. package/rulesets/sdlc/dependency-pinning.rules.json +183 -0
  321. package/rulesets/sdlc/phase-gates.rules.json +297 -0
  322. package/rulesets/sdlc/quality-thresholds.rules.json +96 -0
  323. package/rulesets/topologies/README.es.md +42 -0
  324. package/rulesets/topologies/README.md +42 -0
  325. package/rulesets/topologies/agentic-ai/README.es.md +142 -0
  326. package/rulesets/topologies/agentic-ai/README.md +142 -0
  327. package/rulesets/topologies/agentic-ai/adoption.es.md +37 -0
  328. package/rulesets/topologies/agentic-ai/adoption.md +37 -0
  329. package/rulesets/topologies/agentic-ai/agent.config.schema.json +100 -0
  330. package/rulesets/topologies/agentic-ai/agentic-ai.rego +46 -0
  331. package/rulesets/topologies/agentic-ai/agentic-ai.rules.json +109 -0
  332. package/rulesets/topologies/agentic-ai/agentic-ai.test.rego +68 -0
  333. package/rulesets/topologies/agentic-ai/agentic-ai.wasm +0 -0
  334. package/rulesets/topologies/agentic-ai/cli/cli-flows.es.md +35 -0
  335. package/rulesets/topologies/agentic-ai/cli/cli-flows.md +45 -0
  336. package/rulesets/topologies/agentic-ai/evidence.es.md +25 -0
  337. package/rulesets/topologies/agentic-ai/evidence.md +25 -0
  338. package/rulesets/topologies/agentic-ai/evolution.es.md +26 -0
  339. package/rulesets/topologies/agentic-ai/evolution.md +26 -0
  340. package/rulesets/topologies/agentic-ai/fixtures/invalid-agent.config.json +48 -0
  341. package/rulesets/topologies/agentic-ai/fixtures/valid-agent.config.json +48 -0
  342. package/rulesets/topologies/agentic-ai/maturity.es.md +33 -0
  343. package/rulesets/topologies/agentic-ai/maturity.md +33 -0
  344. package/rulesets/topologies/agentic-ai/mcp/mcp-manifest.json +100 -0
  345. package/rulesets/topologies/agentic-ai/openapi/openapi.yaml +187 -0
  346. package/rulesets/topologies/agentic-ai/operations.es.md +32 -0
  347. package/rulesets/topologies/agentic-ai/operations.md +32 -0
  348. package/rulesets/topologies/agentic-ai/parity-fixtures/compliant.json +18 -0
  349. package/rulesets/topologies/agentic-ai/parity-fixtures/violation.json +22 -0
  350. package/rulesets/topologies/agentic-ai/patterns.es.md +32 -0
  351. package/rulesets/topologies/agentic-ai/patterns.md +32 -0
  352. package/rulesets/topologies/agentic-ai/resilience.es.md +26 -0
  353. package/rulesets/topologies/agentic-ai/resilience.md +26 -0
  354. package/rulesets/topologies/agentic-ai/runbooks.es.md +48 -0
  355. package/rulesets/topologies/agentic-ai/runbooks.md +48 -0
  356. package/rulesets/topologies/agentic-ai/security.es.md +26 -0
  357. package/rulesets/topologies/agentic-ai/security.md +26 -0
  358. package/rulesets/topologies/agentic-ai/topology.manifest.json +127 -0
  359. package/rulesets/topologies/data-mesh/README.es.md +69 -0
  360. package/rulesets/topologies/data-mesh/README.md +69 -0
  361. package/rulesets/topologies/data-mesh/adoption.es.md +95 -0
  362. package/rulesets/topologies/data-mesh/adoption.md +95 -0
  363. package/rulesets/topologies/data-mesh/cli/cli-flows.es.md +41 -0
  364. package/rulesets/topologies/data-mesh/cli/cli-flows.md +53 -0
  365. package/rulesets/topologies/data-mesh/data-mesh.rego +11 -0
  366. package/rulesets/topologies/data-mesh/data-mesh.rules.json +100 -0
  367. package/rulesets/topologies/data-mesh/data-mesh.test.rego +107 -0
  368. package/rulesets/topologies/data-mesh/data-mesh.wasm +0 -0
  369. package/rulesets/topologies/data-mesh/evidence.es.md +111 -0
  370. package/rulesets/topologies/data-mesh/evidence.md +111 -0
  371. package/rulesets/topologies/data-mesh/evolution.es.md +67 -0
  372. package/rulesets/topologies/data-mesh/evolution.md +67 -0
  373. package/rulesets/topologies/data-mesh/fixtures/invalid.topology.config.json +12 -0
  374. package/rulesets/topologies/data-mesh/fixtures/valid.topology.config.json +12 -0
  375. package/rulesets/topologies/data-mesh/maturity.es.md +36 -0
  376. package/rulesets/topologies/data-mesh/maturity.md +36 -0
  377. package/rulesets/topologies/data-mesh/mcp/mcp-manifest.json +68 -0
  378. package/rulesets/topologies/data-mesh/openapi/openapi.yaml +186 -0
  379. package/rulesets/topologies/data-mesh/operations.es.md +63 -0
  380. package/rulesets/topologies/data-mesh/operations.md +63 -0
  381. package/rulesets/topologies/data-mesh/parity-fixtures/compliant.json +18 -0
  382. package/rulesets/topologies/data-mesh/parity-fixtures/violation.json +21 -0
  383. package/rulesets/topologies/data-mesh/patterns.es.md +67 -0
  384. package/rulesets/topologies/data-mesh/patterns.md +67 -0
  385. package/rulesets/topologies/data-mesh/resilience.es.md +64 -0
  386. package/rulesets/topologies/data-mesh/resilience.md +64 -0
  387. package/rulesets/topologies/data-mesh/runbooks.es.md +147 -0
  388. package/rulesets/topologies/data-mesh/runbooks.md +147 -0
  389. package/rulesets/topologies/data-mesh/security.es.md +66 -0
  390. package/rulesets/topologies/data-mesh/security.md +66 -0
  391. package/rulesets/topologies/data-mesh/topology.config.schema.json +30 -0
  392. package/rulesets/topologies/data-mesh/topology.manifest.json +107 -0
  393. package/rulesets/topologies/edge-computing/README.es.md +81 -0
  394. package/rulesets/topologies/edge-computing/README.md +81 -0
  395. package/rulesets/topologies/edge-computing/adoption.es.md +268 -0
  396. package/rulesets/topologies/edge-computing/adoption.md +268 -0
  397. package/rulesets/topologies/edge-computing/cli/cli-flows.es.md +41 -0
  398. package/rulesets/topologies/edge-computing/cli/cli-flows.md +53 -0
  399. package/rulesets/topologies/edge-computing/edge-computing.rego +41 -0
  400. package/rulesets/topologies/edge-computing/edge-computing.rules.json +50 -0
  401. package/rulesets/topologies/edge-computing/edge-computing.test.rego +33 -0
  402. package/rulesets/topologies/edge-computing/edge-computing.wasm +0 -0
  403. package/rulesets/topologies/edge-computing/evidence.es.md +263 -0
  404. package/rulesets/topologies/edge-computing/evidence.md +263 -0
  405. package/rulesets/topologies/edge-computing/evolution.es.md +257 -0
  406. package/rulesets/topologies/edge-computing/evolution.md +257 -0
  407. package/rulesets/topologies/edge-computing/fixtures/invalid.topology.config.json +6 -0
  408. package/rulesets/topologies/edge-computing/fixtures/valid.topology.config.json +6 -0
  409. package/rulesets/topologies/edge-computing/maturity.es.md +36 -0
  410. package/rulesets/topologies/edge-computing/maturity.md +36 -0
  411. package/rulesets/topologies/edge-computing/mcp/mcp-manifest.json +72 -0
  412. package/rulesets/topologies/edge-computing/openapi/openapi.yaml +187 -0
  413. package/rulesets/topologies/edge-computing/operations.es.md +148 -0
  414. package/rulesets/topologies/edge-computing/operations.md +148 -0
  415. package/rulesets/topologies/edge-computing/parity-fixtures/compliant.json +12 -0
  416. package/rulesets/topologies/edge-computing/parity-fixtures/violation.json +13 -0
  417. package/rulesets/topologies/edge-computing/patterns.es.md +291 -0
  418. package/rulesets/topologies/edge-computing/patterns.md +290 -0
  419. package/rulesets/topologies/edge-computing/resilience.es.md +232 -0
  420. package/rulesets/topologies/edge-computing/resilience.md +229 -0
  421. package/rulesets/topologies/edge-computing/runbooks.es.md +405 -0
  422. package/rulesets/topologies/edge-computing/runbooks.md +405 -0
  423. package/rulesets/topologies/edge-computing/security.es.md +218 -0
  424. package/rulesets/topologies/edge-computing/security.md +218 -0
  425. package/rulesets/topologies/edge-computing/topology.config.schema.json +13 -0
  426. package/rulesets/topologies/edge-computing/topology.manifest.json +113 -0
  427. package/rulesets/topologies/event-driven/README.es.md +71 -0
  428. package/rulesets/topologies/event-driven/README.md +71 -0
  429. package/rulesets/topologies/event-driven/adoption.es.md +67 -0
  430. package/rulesets/topologies/event-driven/adoption.md +67 -0
  431. package/rulesets/topologies/event-driven/cli/cli-flows.es.md +41 -0
  432. package/rulesets/topologies/event-driven/cli/cli-flows.md +53 -0
  433. package/rulesets/topologies/event-driven/event-driven.rego +11 -0
  434. package/rulesets/topologies/event-driven/event-driven.rules.json +100 -0
  435. package/rulesets/topologies/event-driven/event-driven.test.rego +107 -0
  436. package/rulesets/topologies/event-driven/event-driven.wasm +0 -0
  437. package/rulesets/topologies/event-driven/evidence.es.md +69 -0
  438. package/rulesets/topologies/event-driven/evidence.md +69 -0
  439. package/rulesets/topologies/event-driven/evolution.es.md +59 -0
  440. package/rulesets/topologies/event-driven/evolution.md +59 -0
  441. package/rulesets/topologies/event-driven/fixtures/invalid.topology.config.json +12 -0
  442. package/rulesets/topologies/event-driven/fixtures/valid.topology.config.json +12 -0
  443. package/rulesets/topologies/event-driven/maturity.es.md +36 -0
  444. package/rulesets/topologies/event-driven/maturity.md +36 -0
  445. package/rulesets/topologies/event-driven/mcp/mcp-manifest.json +68 -0
  446. package/rulesets/topologies/event-driven/openapi/openapi.yaml +186 -0
  447. package/rulesets/topologies/event-driven/operations.es.md +67 -0
  448. package/rulesets/topologies/event-driven/operations.md +67 -0
  449. package/rulesets/topologies/event-driven/parity-fixtures/compliant.json +18 -0
  450. package/rulesets/topologies/event-driven/parity-fixtures/violation.json +21 -0
  451. package/rulesets/topologies/event-driven/patterns.es.md +68 -0
  452. package/rulesets/topologies/event-driven/patterns.md +68 -0
  453. package/rulesets/topologies/event-driven/resilience.es.md +65 -0
  454. package/rulesets/topologies/event-driven/resilience.md +65 -0
  455. package/rulesets/topologies/event-driven/runbooks.es.md +79 -0
  456. package/rulesets/topologies/event-driven/runbooks.md +79 -0
  457. package/rulesets/topologies/event-driven/security.es.md +59 -0
  458. package/rulesets/topologies/event-driven/security.md +59 -0
  459. package/rulesets/topologies/event-driven/topology.config.schema.json +30 -0
  460. package/rulesets/topologies/event-driven/topology.manifest.json +109 -0
  461. package/rulesets/topologies/progressive-axis/distributed-modules/distributed-modules.rules.es.json +111 -0
  462. package/rulesets/topologies/progressive-axis/distributed-modules/distributed-modules.rules.json +111 -0
  463. package/rulesets/topologies/progressive-axis/microservices/microservices.rules.es.json +106 -0
  464. package/rulesets/topologies/progressive-axis/microservices/microservices.rules.json +106 -0
  465. package/rulesets/topologies/progressive-axis/modular-monolith/modular-monolith.rules.es.json +148 -0
  466. package/rulesets/topologies/progressive-axis/modular-monolith/modular-monolith.rules.json +148 -0
  467. package/rulesets/topologies/serverless/README.es.md +74 -0
  468. package/rulesets/topologies/serverless/README.md +74 -0
  469. package/rulesets/topologies/serverless/adoption.es.md +50 -0
  470. package/rulesets/topologies/serverless/adoption.md +50 -0
  471. package/rulesets/topologies/serverless/cli/cli-flows.es.md +41 -0
  472. package/rulesets/topologies/serverless/cli/cli-flows.md +53 -0
  473. package/rulesets/topologies/serverless/evidence.es.md +66 -0
  474. package/rulesets/topologies/serverless/evidence.md +66 -0
  475. package/rulesets/topologies/serverless/evolution.es.md +36 -0
  476. package/rulesets/topologies/serverless/evolution.md +36 -0
  477. package/rulesets/topologies/serverless/fixtures/invalid.topology.config.json +6 -0
  478. package/rulesets/topologies/serverless/fixtures/valid.topology.config.json +6 -0
  479. package/rulesets/topologies/serverless/maturity.es.md +36 -0
  480. package/rulesets/topologies/serverless/maturity.md +36 -0
  481. package/rulesets/topologies/serverless/mcp/mcp-manifest.json +72 -0
  482. package/rulesets/topologies/serverless/openapi/openapi.yaml +186 -0
  483. package/rulesets/topologies/serverless/operations.es.md +36 -0
  484. package/rulesets/topologies/serverless/operations.md +36 -0
  485. package/rulesets/topologies/serverless/parity-fixtures/compliant.json +13 -0
  486. package/rulesets/topologies/serverless/parity-fixtures/violation.json +15 -0
  487. package/rulesets/topologies/serverless/patterns.es.md +36 -0
  488. package/rulesets/topologies/serverless/patterns.md +36 -0
  489. package/rulesets/topologies/serverless/resilience.es.md +36 -0
  490. package/rulesets/topologies/serverless/resilience.md +36 -0
  491. package/rulesets/topologies/serverless/runbooks.es.md +68 -0
  492. package/rulesets/topologies/serverless/runbooks.md +68 -0
  493. package/rulesets/topologies/serverless/security.es.md +36 -0
  494. package/rulesets/topologies/serverless/security.md +36 -0
  495. package/rulesets/topologies/serverless/serverless.rego +32 -0
  496. package/rulesets/topologies/serverless/serverless.rules.json +33 -0
  497. package/rulesets/topologies/serverless/serverless.test.rego +28 -0
  498. package/rulesets/topologies/serverless/serverless.wasm +0 -0
  499. package/rulesets/topologies/serverless/topology.config.schema.json +28 -0
  500. 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
+ }