@evolith/core-domain 1.0.1 → 1.0.2

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 (501) hide show
  1. package/dist/domain/services/default-workflow-definition.js +4 -1
  2. package/dist/domain/services/default-workflow-definition.js.map +1 -1
  3. package/dist/gates/decision/gate-decision.js.map +1 -1
  4. package/package.json +1 -2
  5. package/rulesets/README.es.md +0 -170
  6. package/rulesets/README.md +0 -170
  7. package/rulesets/acl/README.es.md +0 -41
  8. package/rulesets/acl/README.md +0 -41
  9. package/rulesets/acl/anti-corruption-layer.rules.es.json +0 -99
  10. package/rulesets/acl/anti-corruption-layer.rules.json +0 -99
  11. package/rulesets/adr/ADR_COVERAGE.es.md +0 -133
  12. package/rulesets/adr/ADR_COVERAGE.md +0 -133
  13. package/rulesets/adr/README.es.md +0 -17
  14. package/rulesets/adr/README.md +0 -17
  15. package/rulesets/adr/adr-0002-hexagonal-architecture.rules.json +0 -103
  16. package/rulesets/adr/adr-0005-cicd-quality-gates.rules.json +0 -102
  17. package/rulesets/adr/adr-0010-multi-tenancy.rules.json +0 -129
  18. package/rulesets/adr/adr-0018-testing-pyramid.rules.json +0 -115
  19. package/rulesets/adr/adr-0032-protocol-selection.rules.json +0 -134
  20. package/rulesets/adr/adr-0040-multi-runtime.rules.json +0 -131
  21. package/rulesets/adr/adr-0050-gitflow-branching.rules.json +0 -176
  22. package/rulesets/adr/generated/adr-0001-monorepo-orchestration-principle.rules.json +0 -29
  23. package/rulesets/adr/generated/adr-0006-microservices-transition-via-sidecar-pattern.rules.json +0 -29
  24. package/rulesets/adr/generated/adr-0009-strict-dependency-pinning-and-automated-vulnerability-manage.rules.json +0 -29
  25. package/rulesets/adr/generated/adr-0011-fault-tolerance-and-resiliency-patterns.rules.json +0 -29
  26. package/rulesets/adr/generated/adr-0013-cloud-infrastructure-topology-and-disaster-recovery-dr.rules.json +0 -28
  27. package/rulesets/adr/generated/adr-0014-multi-layer-distributed-caching-strategy.rules.json +0 -29
  28. package/rulesets/adr/generated/adr-0015-event-driven-architecture-eda-for-intra-domain-communication.rules.json +0 -29
  29. package/rulesets/adr/generated/adr-0016-immutable-business-audit-trail-and-change-tracking.rules.json +0 -29
  30. package/rulesets/adr/generated/adr-0017-feature-flagging-strategy-for-progressive-delivery.rules.json +0 -28
  31. package/rulesets/adr/generated/adr-0019-tactical-design-patterns-for-future-proofing.rules.json +0 -29
  32. package/rulesets/adr/generated/adr-0020-identity-provider-abstraction-strategy.rules.json +0 -28
  33. package/rulesets/adr/generated/adr-0024-centralized-configuration-feature-platform.rules.json +0 -28
  34. package/rulesets/adr/generated/adr-0025-feature-flag-provider-abstraction-strategy.rules.json +0 -29
  35. package/rulesets/adr/generated/adr-0028-self-hosted-open-source-hybrid-infrastructure.rules.json +0 -29
  36. package/rulesets/adr/generated/adr-0030-two-tier-distributed-gateway-model.rules.json +0 -28
  37. package/rulesets/adr/generated/adr-0031-schema-per-bounded-context-and-domain-event-catalog.rules.json +0 -29
  38. package/rulesets/adr/generated/adr-0033-transactional-outbox-pattern-for-async-messaging.rules.json +0 -28
  39. package/rulesets/adr/generated/adr-0034-cqrs-pattern-application-matrix.rules.json +0 -29
  40. package/rulesets/adr/generated/adr-0035-distributed-saga-pattern-implementation-strategy.rules.json +0 -29
  41. package/rulesets/adr/generated/adr-0036-message-bus-delivery-flow-control-strategy.rules.json +0 -29
  42. package/rulesets/adr/generated/adr-0037-enterprise-performance-concurrency-chaos-verification-strate.rules.json +0 -28
  43. package/rulesets/adr/generated/adr-0039-deployment-topology-abstraction-environment-switcher.rules.json +0 -29
  44. package/rulesets/adr/generated/adr-0041-dual-engine-policy-evaluation-native-opa.rules.json +0 -28
  45. package/rulesets/adr/generated/adr-0044-configurable-security-persistence-strategy-agnosticism-vs-na.rules.json +0 -29
  46. package/rulesets/adr/generated/adr-0045-microservice-extraction-readiness-criteria.rules.json +0 -29
  47. package/rulesets/adr/generated/adr-0046-unified-traceability-via-w3c-tracecontext.rules.json +0 -29
  48. package/rulesets/adr/generated/adr-0047-progressive-architecture-evolution-framework-modular-monolit.rules.json +0 -29
  49. package/rulesets/adr/generated/adr-0048-enterprise-taxonomy-standardization-and-reference-layout.rules.json +0 -28
  50. package/rulesets/adr/generated/adr-0049-naming-semantics-clean-code-policy-e2e-and-global.rules.json +0 -29
  51. package/rulesets/adr/generated/adr-0051-enterprise-database-engine-selection-strategy.rules.json +0 -29
  52. package/rulesets/adr/generated/adr-0052-unit-testing-isolation-strategy-mocks-vs-stubs.rules.json +0 -29
  53. package/rulesets/adr/generated/adr-0053-integration-and-e2e-testing-strategy.rules.json +0 -29
  54. package/rulesets/adr/generated/adr-0054-database-design-and-normalization-standards.rules.json +0 -29
  55. package/rulesets/adr/generated/adr-0055-microfrontends-architecture-strategy.rules.json +0 -28
  56. package/rulesets/adr/generated/adr-0056-enterprise-naming-design-conventions-multi-language-multi-pl.rules.json +0 -29
  57. package/rulesets/adr/generated/adr-0057-architecture-intelligence-catalog.rules.json +0 -27
  58. package/rulesets/adr/generated/adr-0058-ai-consumable-architecture-knowledge.rules.json +0 -27
  59. package/rulesets/adr/generated/adr-0067-modular-monolith-persistence-boundaries.rules.json +0 -28
  60. package/rulesets/adr/generated/adr-0068-documentation-release-gitflow.rules.json +0 -29
  61. package/rulesets/adr/generated/adr-0069-ai-agent-context-protocol-integration.rules.json +0 -28
  62. package/rulesets/adr/generated/adr-0070-lean-root-repository-taxonomy.rules.json +0 -29
  63. package/rulesets/adr/generated/adr-0071-domain-layer-base-class-and-inheritance-strategy.rules.json +0 -29
  64. package/rulesets/adr/generated/adr-0072-utc-date-storage-browser-timezone-detection-and-language-res.rules.json +0 -29
  65. package/rulesets/adr/generated/adr-0073-unified-cli-mcp-output-contract-and-gate-evidence-schema.rules.json +0 -29
  66. package/rulesets/adr/generated/adr-0074-evolith-core-api-native-exposure-layer.rules.json +0 -29
  67. package/rulesets/adr/generated/adr-0075-core-api-authentication-strategy.rules.json +0 -28
  68. package/rulesets/adr/generated/adr-0076-domain-oriented-microservice-architecture-doma.rules.json +0 -28
  69. package/rulesets/adr/generated/adr-0077-masstransit-v9-commercial-pivot-stay-on-v8-monitor-opentrans.rules.json +0 -28
  70. package/rulesets/adr/generated/adr-0078-domain-financial-separation-governance.rules.json +0 -29
  71. package/rulesets/adr/generated/adr-0079-multi-topology-reference-corpus-and-topology-manifest-contra.rules.json +0 -29
  72. package/rulesets/adr/generated/adr-0080-remote-repository-reference-contract.rules.json +0 -29
  73. package/rulesets/adr/generated/adr-0081-agentic-ai-sandbox-isolation-boundary.rules.json +0 -29
  74. package/rulesets/adr/generated/adr-0082-agentic-ai-prompt-context-and-tool-trust-boundary.rules.json +0 -28
  75. package/rulesets/adr/generated/adr-0083-agentic-ai-action-authorization-and-audit.rules.json +0 -29
  76. package/rulesets/adr/generated/adr-0084-data-mesh-and-data-as-a-product.rules.json +0 -29
  77. package/rulesets/adr/generated/adr-0085-agnostic-opa-wasm-distribution-architecture.rules.json +0 -28
  78. package/rulesets/adr/generated/adr-0086-agentic-ai-telemetry-cost-control-standard.rules.json +0 -27
  79. package/rulesets/adr/generated/adr-0087-attribute-based-access-control-abac-for-agentic-tool-executi.rules.json +0 -29
  80. package/rulesets/adr/generated/adr-0088-sovereign-identity-for-agentic-ai.rules.json +0 -29
  81. package/rulesets/adr/generated/adr-0089-event-driven-agentic-workflow-pattern.rules.json +0 -28
  82. package/rulesets/adr/generated/adr-0090-rag-knowledge-governance-standard.rules.json +0 -29
  83. package/rulesets/adr/generated/adr-0091-workload-identity-token-rotation-standard.rules.json +0 -29
  84. package/rulesets/adr/generated/adr-0092-agent-infinite-loop-prevention-and-circuit-breaker-rules.rules.json +0 -29
  85. package/rulesets/adr/generated/adr-0093-concurrency-control-and-resource-locking-standard-for-mcp-to.rules.json +0 -29
  86. package/rulesets/adr/generated/adr-0094-multi-agent-handoff-and-task-delegation-standards.rules.json +0 -29
  87. package/rulesets/adr/generated/adr-0095-serverless-architecture-governance.rules.json +0 -29
  88. package/rulesets/adr/generated/adr-0096-edge-computing-architecture-governance.rules.json +0 -29
  89. package/rulesets/adr/generated/adr-0097-knowledge-lifecycle-governance-standard.rules.json +0 -29
  90. package/rulesets/adr/generated/adr-0098-rest-uri-versioning-and-deprecation-policy.rules.json +0 -29
  91. package/rulesets/adr/generated/adr-0099-opa-bundle-distribution-via-s3-minio.rules.json +0 -27
  92. package/rulesets/adr/generated/adr-ai-augmented-0001-harness-engineering-for-ai-augmented-development.rules.json +0 -29
  93. package/rulesets/adr/generated/adr-ai-augmented-0002-mcp-integration-protocol-for-agent-tool-invocation.rules.json +0 -29
  94. package/rulesets/adr/generated/adr-ai-augmented-0003-model-selection-governance-for-ai-augmented-workflows.rules.json +0 -29
  95. package/rulesets/adr/generated/adr-ai-augmented-0004-agents-md-as-mandatory-repository-artifact.rules.json +0 -29
  96. package/rulesets/adr/generated/adr-ai-augmented-0005-human-in-the-loop-policy-for-autonomous-agent-operations.rules.json +0 -29
  97. package/rulesets/adr/generated/adr-android-0042-canonical-android-native-mobile-architecture.rules.json +0 -29
  98. package/rulesets/adr/generated/adr-dotnet-0041-canonical-net-c-backend-architecture.rules.json +0 -29
  99. package/rulesets/adr/generated/adr-dotnet-0060-net-multi-tenancy-dual-layer-strategy-ef-core-sql-server.rules.json +0 -29
  100. package/rulesets/adr/generated/adr-dotnet-0061-transactional-event-lifecycle-in-ef-core.rules.json +0 -28
  101. package/rulesets/adr/generated/adr-dotnet-0062-net-immutable-audit-trail-via-ddl-triggers-delta-capture.rules.json +0 -29
  102. package/rulesets/adr/generated/adr-dotnet-0063-b2b-request-idempotency-middleware-in-asp-net-core.rules.json +0 -28
  103. package/rulesets/adr/generated/adr-dotnet-0064-net-request-scope-observability-context-propagation.rules.json +0 -29
  104. package/rulesets/adr/generated/adr-dotnet-0065-net-pii-safe-structured-logging-pipeline-serilog.rules.json +0 -29
  105. package/rulesets/adr/generated/adr-dotnet-0066-net-lightweight-http-idempotency-via-imemorycache-idistribut.rules.json +0 -28
  106. package/rulesets/adr/generated/adr-dotnet-0069-net-grpc-service-setup-protobuf-contracts.rules.json +0 -29
  107. package/rulesets/adr/generated/adr-dotnet-0070-net-api-endpoint-strategy.rules.json +0 -29
  108. package/rulesets/adr/generated/adr-dotnet-0071-net-data-access-strategy-ef-core-as-default-orm-dapper-for-o.rules.json +0 -27
  109. package/rulesets/adr/generated/adr-dotnet-0072-net-aop-cross-cutting-concern-strategy-dispatchproxy-over-pi.rules.json +0 -29
  110. package/rulesets/adr/generated/adr-nodejs-0003-strict-typescript-standards.rules.json +0 -29
  111. package/rulesets/adr/generated/adr-nodejs-0004-frontend-offline-resilience.rules.json +0 -28
  112. package/rulesets/adr/generated/adr-nodejs-0007-observability-with-opentelemetry-loki-and-jaeger.rules.json +0 -29
  113. package/rulesets/adr/generated/adr-nodejs-0008-progressive-multi-module-evolution-with-api-gateway-and-bff-.rules.json +0 -28
  114. package/rulesets/adr/generated/adr-nodejs-0012-advanced-authorization-rbac-abac-strategy.rules.json +0 -28
  115. package/rulesets/adr/generated/adr-nodejs-0021-high-performance-authentication-graph-compilation.rules.json +0 -28
  116. package/rulesets/adr/generated/adr-nodejs-0022-contextual-authentication-and-pluggable-output-projections.rules.json +0 -28
  117. package/rulesets/adr/generated/adr-nodejs-0023-centralized-authorization-core-strategy.rules.json +0 -28
  118. package/rulesets/adr/generated/adr-nodejs-0026-adaptive-mfa-and-passwordless-platform.rules.json +0 -28
  119. package/rulesets/adr/generated/adr-nodejs-0027-dual-protocol-api-strategy-rest-grpc.rules.json +0 -28
  120. package/rulesets/adr/generated/adr-nodejs-0029-adoption-of-tactical-ddd-primitives-library.rules.json +0 -29
  121. package/rulesets/adr/generated/adr-nodejs-0038-enterprise-error-handling-result-pattern-strategy.rules.json +0 -29
  122. package/rulesets/adr/generated/adr-nodejs-0043-data-access-and-orm-strategy-for-node-js.rules.json +0 -29
  123. package/rulesets/adr/generated/adr-nodejs-0044-frontend-clean-architecture-layer-boundaries-react.rules.json +0 -29
  124. package/rulesets/adr/generated/adr-nodejs-0045-frontend-state-management-zustand-tanstack-query-dual-strate.rules.json +0 -29
  125. package/rulesets/adr/generated/adr-nodejs-0046-prohibition-of-raw-technical-identifiers-in-user-interfaces.rules.json +0 -29
  126. package/rulesets/adr/generated/adr-nodejs-0047-actionable-user-error-contract-and-correlated-diagnostics.rules.json +0 -29
  127. package/rulesets/adr/generated/adr-nodejs-0048-feature-flag-system-scope-and-structured-criteria-model.rules.json +0 -29
  128. package/rulesets/adr/generated/adr-nodejs-0074-monorepo-orchestration-with-nx.rules.json +0 -29
  129. package/rulesets/adr/generated/adr-nodejs-0075-application-gateway-bff-with-nestjs.rules.json +0 -29
  130. package/rulesets/architecture/README.es.md +0 -21
  131. package/rulesets/architecture/README.md +0 -21
  132. package/rulesets/architecture/opa/progressive-axis.rego +0 -50
  133. package/rulesets/cli/README.es.md +0 -17
  134. package/rulesets/cli/README.md +0 -17
  135. package/rulesets/cli/core-parity.rules.json +0 -61
  136. package/rulesets/cli/release-readiness.rules.json +0 -77
  137. package/rulesets/compliance-baseline/README.es.md +0 -26
  138. package/rulesets/compliance-baseline/README.md +0 -26
  139. package/rulesets/compliance-baseline/compliance-baseline.rules.json +0 -81
  140. package/rulesets/contracts/README.es.md +0 -19
  141. package/rulesets/contracts/README.md +0 -19
  142. package/rulesets/contracts/evolith-machine-contracts.json +0 -29
  143. package/rulesets/contracts/fixtures/gate-evidence.success.json +0 -10
  144. package/rulesets/contracts/fixtures/output-envelope.success.json +0 -23
  145. package/rulesets/cross-cutting/README.es.md +0 -14
  146. package/rulesets/cross-cutting/README.md +0 -14
  147. package/rulesets/cross-cutting/compliance-baseline.rules.json +0 -81
  148. package/rulesets/cross-cutting/definition-of-done.rules.json +0 -135
  149. package/rulesets/cross-cutting/engineering-manifesto.rules.json +0 -145
  150. package/rulesets/cross-cutting/repository-taxonomy.rules.json +0 -172
  151. package/rulesets/definition-of-done/README.es.md +0 -26
  152. package/rulesets/definition-of-done/README.md +0 -26
  153. package/rulesets/definition-of-done/definition-of-done.rules.json +0 -135
  154. package/rulesets/engineering-manifesto/README.es.md +0 -26
  155. package/rulesets/engineering-manifesto/README.md +0 -26
  156. package/rulesets/engineering-manifesto/engineering-manifesto.rules.json +0 -145
  157. package/rulesets/evidence/README.es.md +0 -12
  158. package/rulesets/evidence/README.md +0 -12
  159. package/rulesets/evidence/evidence-manifest.rules.json +0 -48
  160. package/rulesets/executive-scorecards/executive-scorecards.rules.es.json +0 -213
  161. package/rulesets/executive-scorecards/executive-scorecards.rules.json +0 -213
  162. package/rulesets/governance/README.es.md +0 -13
  163. package/rulesets/governance/README.md +0 -13
  164. package/rulesets/governance/abac-mcp-access.rules.es.json +0 -41
  165. package/rulesets/governance/abac-mcp-access.rules.json +0 -41
  166. package/rulesets/governance/executive-scorecards.rules.es.json +0 -213
  167. package/rulesets/governance/executive-scorecards.rules.json +0 -213
  168. package/rulesets/governance/inheritance.rules.json +0 -115
  169. package/rulesets/governance/knowledge-intake.rules.json +0 -18
  170. package/rulesets/governance/open-core-boundary.rules.es.json +0 -148
  171. package/rulesets/governance/open-core-boundary.rules.json +0 -148
  172. package/rulesets/governance/satellite-contracts.rules.json +0 -183
  173. package/rulesets/infrastructure/helm-enforcement.rules.json +0 -21
  174. package/rulesets/infrastructure/opa/helm-enforcement.rego +0 -25
  175. package/rulesets/infrastructure/opa/helm-enforcement.test.rego +0 -31
  176. package/rulesets/infrastructure/opa/opa-sidecar-bundle.rego +0 -115
  177. package/rulesets/infrastructure/opa/opa-sidecar-bundle.test.rego +0 -66
  178. package/rulesets/infrastructure/opa-sidecar-bundle.rules.json +0 -18
  179. package/rulesets/mcp/README.es.md +0 -12
  180. package/rulesets/mcp/README.md +0 -12
  181. package/rulesets/mcp/protocol-compliance.rules.json +0 -57
  182. package/rulesets/observability/README.es.md +0 -12
  183. package/rulesets/observability/README.md +0 -12
  184. package/rulesets/observability/telemetry-evidence.rules.json +0 -48
  185. package/rulesets/opa/README.es.md +0 -22
  186. package/rulesets/opa/README.md +0 -22
  187. package/rulesets/opa/abac-mcp-tool-access.rego +0 -122
  188. package/rulesets/opa/abac-mcp-tool-access.test.rego +0 -33
  189. package/rulesets/opa/anti-corruption-layer.rego +0 -39
  190. package/rulesets/opa/anti-corruption-layer.test.rego +0 -118
  191. package/rulesets/opa/ci-cd.rego +0 -41
  192. package/rulesets/opa/ci-cd.test.rego +0 -23
  193. package/rulesets/opa/cicd-quality-gates.rego +0 -29
  194. package/rulesets/opa/cicd-quality-gates.test.rego +0 -54
  195. package/rulesets/opa/cli-core-parity.rego +0 -17
  196. package/rulesets/opa/cli-core-parity.test.rego +0 -39
  197. package/rulesets/opa/cli-readiness.rego +0 -32
  198. package/rulesets/opa/cli-readiness.test.rego +0 -23
  199. package/rulesets/opa/cli-release-readiness.rego +0 -21
  200. package/rulesets/opa/cli-release-readiness.test.rego +0 -46
  201. package/rulesets/opa/compliance-baseline.rego +0 -95
  202. package/rulesets/opa/compliance-baseline.test.rego +0 -89
  203. package/rulesets/opa/dod.rego +0 -42
  204. package/rulesets/opa/dod.test.rego +0 -250
  205. package/rulesets/opa/engineering-manifesto.rego +0 -78
  206. package/rulesets/opa/engineering-manifesto.test.rego +0 -133
  207. package/rulesets/opa/evidence.rego +0 -64
  208. package/rulesets/opa/evidence.test.rego +0 -23
  209. package/rulesets/opa/executive-scorecards.rego +0 -41
  210. package/rulesets/opa/executive-scorecards.test.rego +0 -60
  211. package/rulesets/opa/gitflow-branching.rego +0 -41
  212. package/rulesets/opa/gitflow-branching.test.rego +0 -60
  213. package/rulesets/opa/governance.rego +0 -39
  214. package/rulesets/opa/governance.test.rego +0 -23
  215. package/rulesets/opa/hexagonal-architecture.rego +0 -33
  216. package/rulesets/opa/hexagonal-architecture.test.rego +0 -57
  217. package/rulesets/opa/infrastructure/helm-enforcement.rego +0 -33
  218. package/rulesets/opa/infrastructure/opa-sidecar-bundle.rego +0 -42
  219. package/rulesets/opa/knowledge-intake.rego +0 -98
  220. package/rulesets/opa/knowledge-intake.test.rego +0 -50
  221. package/rulesets/opa/main.rego +0 -147
  222. package/rulesets/opa/main_test.rego +0 -149
  223. package/rulesets/opa/mcp.rego +0 -61
  224. package/rulesets/opa/mcp.test.rego +0 -27
  225. package/rulesets/opa/multi-runtime.rego +0 -33
  226. package/rulesets/opa/multi-runtime.test.rego +0 -53
  227. package/rulesets/opa/multi-tenancy.rego +0 -33
  228. package/rulesets/opa/multi-tenancy.test.rego +0 -53
  229. package/rulesets/opa/open-core-boundary.rego +0 -33
  230. package/rulesets/opa/open-core-boundary.test.rego +0 -60
  231. package/rulesets/opa/protocol-selection.rego +0 -29
  232. package/rulesets/opa/protocol-selection.test.rego +0 -46
  233. package/rulesets/opa/rbac/gate-role-enforcement.rego +0 -112
  234. package/rulesets/opa/repository-taxonomy.rego +0 -98
  235. package/rulesets/opa/repository-taxonomy.test.rego +0 -91
  236. package/rulesets/opa/satellite-contracts.rego +0 -42
  237. package/rulesets/opa/satellite-contracts.test.rego +0 -70
  238. package/rulesets/opa/schemas/abac-mcp-tool-access.input.schema.json +0 -21
  239. package/rulesets/opa/schemas/anti-corruption-layer.input.schema.json +0 -25
  240. package/rulesets/opa/schemas/ci-cd.input.schema.json +0 -27
  241. package/rulesets/opa/schemas/cicd-quality-gates.input.schema.json +0 -33
  242. package/rulesets/opa/schemas/cli-core-parity.input.schema.json +0 -30
  243. package/rulesets/opa/schemas/cli-readiness.input.schema.json +0 -28
  244. package/rulesets/opa/schemas/cli-release-readiness.input.schema.json +0 -26
  245. package/rulesets/opa/schemas/compliance-baseline.input.schema.json +0 -25
  246. package/rulesets/opa/schemas/dod.input.schema.json +0 -38
  247. package/rulesets/opa/schemas/engineering-manifesto.input.schema.json +0 -24
  248. package/rulesets/opa/schemas/evidence.input.schema.json +0 -35
  249. package/rulesets/opa/schemas/executive-scorecards.input.schema.json +0 -36
  250. package/rulesets/opa/schemas/gitflow-branching.input.schema.json +0 -36
  251. package/rulesets/opa/schemas/governance.input.schema.json +0 -19
  252. package/rulesets/opa/schemas/hexagonal-architecture.input.schema.json +0 -46
  253. package/rulesets/opa/schemas/knowledge-intake.input.schema.json +0 -57
  254. package/rulesets/opa/schemas/mcp.input.schema.json +0 -38
  255. package/rulesets/opa/schemas/multi-runtime.input.schema.json +0 -27
  256. package/rulesets/opa/schemas/multi-tenancy.input.schema.json +0 -27
  257. package/rulesets/opa/schemas/open-core-boundary.input.schema.json +0 -36
  258. package/rulesets/opa/schemas/protocol-selection.input.schema.json +0 -26
  259. package/rulesets/opa/schemas/repository-taxonomy.input.schema.json +0 -18
  260. package/rulesets/opa/schemas/satellite-contracts.input.schema.json +0 -38
  261. package/rulesets/opa/schemas/taxonomy.input.schema.json +0 -27
  262. package/rulesets/opa/schemas/testing-pyramid.input.schema.json +0 -42
  263. package/rulesets/opa/schemas/version-pinning.input.schema.json +0 -39
  264. package/rulesets/opa/sdlc/coverage.rego +0 -49
  265. package/rulesets/opa/sdlc/coverage.test.rego +0 -29
  266. package/rulesets/opa/sdlc/pyramid-distribution.rego +0 -31
  267. package/rulesets/opa/sdlc/pyramid-distribution.test.rego +0 -33
  268. package/rulesets/opa/taxonomy.rego +0 -51
  269. package/rulesets/opa/taxonomy.test.rego +0 -28
  270. package/rulesets/opa/telemetry-evidence.rego +0 -102
  271. package/rulesets/opa/testing-pyramid.rego +0 -49
  272. package/rulesets/opa/testing-pyramid.test.rego +0 -81
  273. package/rulesets/opa/version-pinning.rego +0 -99
  274. package/rulesets/opa/version-pinning.test.rego +0 -28
  275. package/rulesets/phase-gates/README.es.md +0 -28
  276. package/rulesets/phase-gates/README.md +0 -28
  277. package/rulesets/phase-gates/phase-gates.rules.json +0 -297
  278. package/rulesets/quality-thresholds/README.es.md +0 -28
  279. package/rulesets/quality-thresholds/README.md +0 -28
  280. package/rulesets/quality-thresholds/quality-thresholds.rules.json +0 -96
  281. package/rulesets/repository-taxonomy/README.es.md +0 -26
  282. package/rulesets/repository-taxonomy/README.md +0 -26
  283. package/rulesets/repository-taxonomy/repository-taxonomy.rules.json +0 -172
  284. package/rulesets/satellite-contracts/README.es.md +0 -27
  285. package/rulesets/satellite-contracts/README.md +0 -27
  286. package/rulesets/satellite-contracts/satellite-contracts.rules.json +0 -183
  287. package/rulesets/schema/README.es.md +0 -39
  288. package/rulesets/schema/README.md +0 -39
  289. package/rulesets/schema/adr.schema.json +0 -138
  290. package/rulesets/schema/agile-backlog.schema.json +0 -91
  291. package/rulesets/schema/ballpark-estimation.schema.json +0 -109
  292. package/rulesets/schema/build-vs-compose.schema.json +0 -98
  293. package/rulesets/schema/cli-impact-analysis.schema.json +0 -114
  294. package/rulesets/schema/discovery-canvas.schema.json +0 -92
  295. package/rulesets/schema/evolith-user-story.schema.json +0 -105
  296. package/rulesets/schema/evolith-yaml.schema.json +0 -191
  297. package/rulesets/schema/functional-story.schema.json +0 -111
  298. package/rulesets/schema/gate-evidence.schema.json +0 -85
  299. package/rulesets/schema/integration-evidence.schema.json +0 -47
  300. package/rulesets/schema/knowledge-intake.schema.json +0 -67
  301. package/rulesets/schema/knowledge-projection.schema.json +0 -24
  302. package/rulesets/schema/maturity-evidence.schema.json +0 -59
  303. package/rulesets/schema/observability-validation.schema.json +0 -85
  304. package/rulesets/schema/on-call-handoff.schema.json +0 -91
  305. package/rulesets/schema/output-envelope.schema.json +0 -102
  306. package/rulesets/schema/prd.schema.json +0 -117
  307. package/rulesets/schema/release-notes.schema.json +0 -138
  308. package/rulesets/schema/rollback-rehearsal.schema.json +0 -73
  309. package/rulesets/schema/ruleset-sdlc.schema.json +0 -59
  310. package/rulesets/schema/ruleset-standard.schema.json +0 -73
  311. package/rulesets/schema/security-scan-report.schema.json +0 -79
  312. package/rulesets/schema/source-registry.schema.json +0 -51
  313. package/rulesets/schema/technical-feasibility.schema.json +0 -66
  314. package/rulesets/schema/technical-story.schema.json +0 -112
  315. package/rulesets/schema/test-summary-report.schema.json +0 -158
  316. package/rulesets/schema/topology-composition.schema.json +0 -43
  317. package/rulesets/schema/topology-manifest.schema.json +0 -421
  318. package/rulesets/sdlc/README.es.md +0 -12
  319. package/rulesets/sdlc/README.md +0 -12
  320. package/rulesets/sdlc/default-workflow.yaml +0 -73
  321. package/rulesets/sdlc/dependency-pinning.rules.json +0 -183
  322. package/rulesets/sdlc/phase-gates.rules.json +0 -297
  323. package/rulesets/sdlc/quality-thresholds.rules.json +0 -96
  324. package/rulesets/topologies/README.es.md +0 -42
  325. package/rulesets/topologies/README.md +0 -42
  326. package/rulesets/topologies/agentic-ai/README.es.md +0 -142
  327. package/rulesets/topologies/agentic-ai/README.md +0 -142
  328. package/rulesets/topologies/agentic-ai/adoption.es.md +0 -37
  329. package/rulesets/topologies/agentic-ai/adoption.md +0 -37
  330. package/rulesets/topologies/agentic-ai/agent.config.schema.json +0 -100
  331. package/rulesets/topologies/agentic-ai/agentic-ai.rego +0 -46
  332. package/rulesets/topologies/agentic-ai/agentic-ai.rules.json +0 -109
  333. package/rulesets/topologies/agentic-ai/agentic-ai.test.rego +0 -68
  334. package/rulesets/topologies/agentic-ai/agentic-ai.wasm +0 -0
  335. package/rulesets/topologies/agentic-ai/cli/cli-flows.es.md +0 -35
  336. package/rulesets/topologies/agentic-ai/cli/cli-flows.md +0 -45
  337. package/rulesets/topologies/agentic-ai/evidence.es.md +0 -25
  338. package/rulesets/topologies/agentic-ai/evidence.md +0 -25
  339. package/rulesets/topologies/agentic-ai/evolution.es.md +0 -26
  340. package/rulesets/topologies/agentic-ai/evolution.md +0 -26
  341. package/rulesets/topologies/agentic-ai/fixtures/invalid-agent.config.json +0 -48
  342. package/rulesets/topologies/agentic-ai/fixtures/valid-agent.config.json +0 -48
  343. package/rulesets/topologies/agentic-ai/maturity.es.md +0 -33
  344. package/rulesets/topologies/agentic-ai/maturity.md +0 -33
  345. package/rulesets/topologies/agentic-ai/mcp/mcp-manifest.json +0 -100
  346. package/rulesets/topologies/agentic-ai/openapi/openapi.yaml +0 -187
  347. package/rulesets/topologies/agentic-ai/operations.es.md +0 -32
  348. package/rulesets/topologies/agentic-ai/operations.md +0 -32
  349. package/rulesets/topologies/agentic-ai/parity-fixtures/compliant.json +0 -18
  350. package/rulesets/topologies/agentic-ai/parity-fixtures/violation.json +0 -22
  351. package/rulesets/topologies/agentic-ai/patterns.es.md +0 -32
  352. package/rulesets/topologies/agentic-ai/patterns.md +0 -32
  353. package/rulesets/topologies/agentic-ai/resilience.es.md +0 -26
  354. package/rulesets/topologies/agentic-ai/resilience.md +0 -26
  355. package/rulesets/topologies/agentic-ai/runbooks.es.md +0 -48
  356. package/rulesets/topologies/agentic-ai/runbooks.md +0 -48
  357. package/rulesets/topologies/agentic-ai/security.es.md +0 -26
  358. package/rulesets/topologies/agentic-ai/security.md +0 -26
  359. package/rulesets/topologies/agentic-ai/topology.manifest.json +0 -127
  360. package/rulesets/topologies/data-mesh/README.es.md +0 -69
  361. package/rulesets/topologies/data-mesh/README.md +0 -69
  362. package/rulesets/topologies/data-mesh/adoption.es.md +0 -95
  363. package/rulesets/topologies/data-mesh/adoption.md +0 -95
  364. package/rulesets/topologies/data-mesh/cli/cli-flows.es.md +0 -41
  365. package/rulesets/topologies/data-mesh/cli/cli-flows.md +0 -53
  366. package/rulesets/topologies/data-mesh/data-mesh.rego +0 -11
  367. package/rulesets/topologies/data-mesh/data-mesh.rules.json +0 -100
  368. package/rulesets/topologies/data-mesh/data-mesh.test.rego +0 -107
  369. package/rulesets/topologies/data-mesh/data-mesh.wasm +0 -0
  370. package/rulesets/topologies/data-mesh/evidence.es.md +0 -111
  371. package/rulesets/topologies/data-mesh/evidence.md +0 -111
  372. package/rulesets/topologies/data-mesh/evolution.es.md +0 -67
  373. package/rulesets/topologies/data-mesh/evolution.md +0 -67
  374. package/rulesets/topologies/data-mesh/fixtures/invalid.topology.config.json +0 -12
  375. package/rulesets/topologies/data-mesh/fixtures/valid.topology.config.json +0 -12
  376. package/rulesets/topologies/data-mesh/maturity.es.md +0 -36
  377. package/rulesets/topologies/data-mesh/maturity.md +0 -36
  378. package/rulesets/topologies/data-mesh/mcp/mcp-manifest.json +0 -68
  379. package/rulesets/topologies/data-mesh/openapi/openapi.yaml +0 -186
  380. package/rulesets/topologies/data-mesh/operations.es.md +0 -63
  381. package/rulesets/topologies/data-mesh/operations.md +0 -63
  382. package/rulesets/topologies/data-mesh/parity-fixtures/compliant.json +0 -18
  383. package/rulesets/topologies/data-mesh/parity-fixtures/violation.json +0 -21
  384. package/rulesets/topologies/data-mesh/patterns.es.md +0 -67
  385. package/rulesets/topologies/data-mesh/patterns.md +0 -67
  386. package/rulesets/topologies/data-mesh/resilience.es.md +0 -64
  387. package/rulesets/topologies/data-mesh/resilience.md +0 -64
  388. package/rulesets/topologies/data-mesh/runbooks.es.md +0 -147
  389. package/rulesets/topologies/data-mesh/runbooks.md +0 -147
  390. package/rulesets/topologies/data-mesh/security.es.md +0 -66
  391. package/rulesets/topologies/data-mesh/security.md +0 -66
  392. package/rulesets/topologies/data-mesh/topology.config.schema.json +0 -30
  393. package/rulesets/topologies/data-mesh/topology.manifest.json +0 -107
  394. package/rulesets/topologies/edge-computing/README.es.md +0 -81
  395. package/rulesets/topologies/edge-computing/README.md +0 -81
  396. package/rulesets/topologies/edge-computing/adoption.es.md +0 -268
  397. package/rulesets/topologies/edge-computing/adoption.md +0 -268
  398. package/rulesets/topologies/edge-computing/cli/cli-flows.es.md +0 -41
  399. package/rulesets/topologies/edge-computing/cli/cli-flows.md +0 -53
  400. package/rulesets/topologies/edge-computing/edge-computing.rego +0 -41
  401. package/rulesets/topologies/edge-computing/edge-computing.rules.json +0 -50
  402. package/rulesets/topologies/edge-computing/edge-computing.test.rego +0 -33
  403. package/rulesets/topologies/edge-computing/edge-computing.wasm +0 -0
  404. package/rulesets/topologies/edge-computing/evidence.es.md +0 -263
  405. package/rulesets/topologies/edge-computing/evidence.md +0 -263
  406. package/rulesets/topologies/edge-computing/evolution.es.md +0 -257
  407. package/rulesets/topologies/edge-computing/evolution.md +0 -257
  408. package/rulesets/topologies/edge-computing/fixtures/invalid.topology.config.json +0 -6
  409. package/rulesets/topologies/edge-computing/fixtures/valid.topology.config.json +0 -6
  410. package/rulesets/topologies/edge-computing/maturity.es.md +0 -36
  411. package/rulesets/topologies/edge-computing/maturity.md +0 -36
  412. package/rulesets/topologies/edge-computing/mcp/mcp-manifest.json +0 -72
  413. package/rulesets/topologies/edge-computing/openapi/openapi.yaml +0 -187
  414. package/rulesets/topologies/edge-computing/operations.es.md +0 -148
  415. package/rulesets/topologies/edge-computing/operations.md +0 -148
  416. package/rulesets/topologies/edge-computing/parity-fixtures/compliant.json +0 -12
  417. package/rulesets/topologies/edge-computing/parity-fixtures/violation.json +0 -13
  418. package/rulesets/topologies/edge-computing/patterns.es.md +0 -291
  419. package/rulesets/topologies/edge-computing/patterns.md +0 -290
  420. package/rulesets/topologies/edge-computing/resilience.es.md +0 -232
  421. package/rulesets/topologies/edge-computing/resilience.md +0 -229
  422. package/rulesets/topologies/edge-computing/runbooks.es.md +0 -405
  423. package/rulesets/topologies/edge-computing/runbooks.md +0 -405
  424. package/rulesets/topologies/edge-computing/security.es.md +0 -218
  425. package/rulesets/topologies/edge-computing/security.md +0 -218
  426. package/rulesets/topologies/edge-computing/topology.config.schema.json +0 -13
  427. package/rulesets/topologies/edge-computing/topology.manifest.json +0 -113
  428. package/rulesets/topologies/event-driven/README.es.md +0 -71
  429. package/rulesets/topologies/event-driven/README.md +0 -71
  430. package/rulesets/topologies/event-driven/adoption.es.md +0 -67
  431. package/rulesets/topologies/event-driven/adoption.md +0 -67
  432. package/rulesets/topologies/event-driven/cli/cli-flows.es.md +0 -41
  433. package/rulesets/topologies/event-driven/cli/cli-flows.md +0 -53
  434. package/rulesets/topologies/event-driven/event-driven.rego +0 -11
  435. package/rulesets/topologies/event-driven/event-driven.rules.json +0 -100
  436. package/rulesets/topologies/event-driven/event-driven.test.rego +0 -107
  437. package/rulesets/topologies/event-driven/event-driven.wasm +0 -0
  438. package/rulesets/topologies/event-driven/evidence.es.md +0 -69
  439. package/rulesets/topologies/event-driven/evidence.md +0 -69
  440. package/rulesets/topologies/event-driven/evolution.es.md +0 -59
  441. package/rulesets/topologies/event-driven/evolution.md +0 -59
  442. package/rulesets/topologies/event-driven/fixtures/invalid.topology.config.json +0 -12
  443. package/rulesets/topologies/event-driven/fixtures/valid.topology.config.json +0 -12
  444. package/rulesets/topologies/event-driven/maturity.es.md +0 -36
  445. package/rulesets/topologies/event-driven/maturity.md +0 -36
  446. package/rulesets/topologies/event-driven/mcp/mcp-manifest.json +0 -68
  447. package/rulesets/topologies/event-driven/openapi/openapi.yaml +0 -186
  448. package/rulesets/topologies/event-driven/operations.es.md +0 -67
  449. package/rulesets/topologies/event-driven/operations.md +0 -67
  450. package/rulesets/topologies/event-driven/parity-fixtures/compliant.json +0 -18
  451. package/rulesets/topologies/event-driven/parity-fixtures/violation.json +0 -21
  452. package/rulesets/topologies/event-driven/patterns.es.md +0 -68
  453. package/rulesets/topologies/event-driven/patterns.md +0 -68
  454. package/rulesets/topologies/event-driven/resilience.es.md +0 -65
  455. package/rulesets/topologies/event-driven/resilience.md +0 -65
  456. package/rulesets/topologies/event-driven/runbooks.es.md +0 -79
  457. package/rulesets/topologies/event-driven/runbooks.md +0 -79
  458. package/rulesets/topologies/event-driven/security.es.md +0 -59
  459. package/rulesets/topologies/event-driven/security.md +0 -59
  460. package/rulesets/topologies/event-driven/topology.config.schema.json +0 -30
  461. package/rulesets/topologies/event-driven/topology.manifest.json +0 -109
  462. package/rulesets/topologies/progressive-axis/distributed-modules/distributed-modules.rules.es.json +0 -111
  463. package/rulesets/topologies/progressive-axis/distributed-modules/distributed-modules.rules.json +0 -111
  464. package/rulesets/topologies/progressive-axis/microservices/microservices.rules.es.json +0 -106
  465. package/rulesets/topologies/progressive-axis/microservices/microservices.rules.json +0 -106
  466. package/rulesets/topologies/progressive-axis/modular-monolith/modular-monolith.rules.es.json +0 -148
  467. package/rulesets/topologies/progressive-axis/modular-monolith/modular-monolith.rules.json +0 -148
  468. package/rulesets/topologies/serverless/README.es.md +0 -74
  469. package/rulesets/topologies/serverless/README.md +0 -74
  470. package/rulesets/topologies/serverless/adoption.es.md +0 -50
  471. package/rulesets/topologies/serverless/adoption.md +0 -50
  472. package/rulesets/topologies/serverless/cli/cli-flows.es.md +0 -41
  473. package/rulesets/topologies/serverless/cli/cli-flows.md +0 -53
  474. package/rulesets/topologies/serverless/evidence.es.md +0 -66
  475. package/rulesets/topologies/serverless/evidence.md +0 -66
  476. package/rulesets/topologies/serverless/evolution.es.md +0 -36
  477. package/rulesets/topologies/serverless/evolution.md +0 -36
  478. package/rulesets/topologies/serverless/fixtures/invalid.topology.config.json +0 -6
  479. package/rulesets/topologies/serverless/fixtures/valid.topology.config.json +0 -6
  480. package/rulesets/topologies/serverless/maturity.es.md +0 -36
  481. package/rulesets/topologies/serverless/maturity.md +0 -36
  482. package/rulesets/topologies/serverless/mcp/mcp-manifest.json +0 -72
  483. package/rulesets/topologies/serverless/openapi/openapi.yaml +0 -186
  484. package/rulesets/topologies/serverless/operations.es.md +0 -36
  485. package/rulesets/topologies/serverless/operations.md +0 -36
  486. package/rulesets/topologies/serverless/parity-fixtures/compliant.json +0 -13
  487. package/rulesets/topologies/serverless/parity-fixtures/violation.json +0 -15
  488. package/rulesets/topologies/serverless/patterns.es.md +0 -36
  489. package/rulesets/topologies/serverless/patterns.md +0 -36
  490. package/rulesets/topologies/serverless/resilience.es.md +0 -36
  491. package/rulesets/topologies/serverless/resilience.md +0 -36
  492. package/rulesets/topologies/serverless/runbooks.es.md +0 -68
  493. package/rulesets/topologies/serverless/runbooks.md +0 -68
  494. package/rulesets/topologies/serverless/security.es.md +0 -36
  495. package/rulesets/topologies/serverless/security.md +0 -36
  496. package/rulesets/topologies/serverless/serverless.rego +0 -32
  497. package/rulesets/topologies/serverless/serverless.rules.json +0 -33
  498. package/rulesets/topologies/serverless/serverless.test.rego +0 -28
  499. package/rulesets/topologies/serverless/serverless.wasm +0 -0
  500. package/rulesets/topologies/serverless/topology.config.schema.json +0 -28
  501. package/rulesets/topologies/serverless/topology.manifest.json +0 -114
@@ -1,53 +0,0 @@
1
- package evolith.multi_tenancy_test
2
-
3
- import data.evolith.multi_tenancy
4
-
5
- compliant_input := {"satellite": {"multiTenancy": {
6
- "applicationFiltering": true,
7
- "databaseEnforcement": true,
8
- "tenantContextPropagation": true,
9
- "crossTenantAccess": false,
10
- "schemaStrategyDefined": true,
11
- "apiTenantValidation": true,
12
- }}}
13
-
14
- test_compliant_multi_tenancy_has_no_violations {
15
- violations := multi_tenancy.violations with input as compliant_input
16
- count(violations) == 0
17
- }
18
-
19
- test_missing_application_filtering_is_rejected {
20
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/multiTenancy/applicationFiltering", "value": false}])
21
- violations := multi_tenancy.violations with input as i
22
- violations[_].id == "MTN-01"
23
- }
24
-
25
- test_missing_database_enforcement_is_rejected {
26
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/multiTenancy/databaseEnforcement", "value": false}])
27
- violations := multi_tenancy.violations with input as i
28
- violations[_].id == "MTN-02"
29
- }
30
-
31
- test_missing_tenant_context_propagation_is_rejected {
32
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/multiTenancy/tenantContextPropagation", "value": false}])
33
- violations := multi_tenancy.violations with input as i
34
- violations[_].id == "MTN-03"
35
- }
36
-
37
- test_cross_tenant_access_is_rejected {
38
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/multiTenancy/crossTenantAccess", "value": true}])
39
- violations := multi_tenancy.violations with input as i
40
- violations[_].id == "MTN-04"
41
- }
42
-
43
- test_missing_schema_strategy_is_rejected {
44
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/multiTenancy/schemaStrategyDefined", "value": false}])
45
- violations := multi_tenancy.violations with input as i
46
- violations[_].id == "MTN-05"
47
- }
48
-
49
- test_missing_api_tenant_validation_is_rejected {
50
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/multiTenancy/apiTenantValidation", "value": false}])
51
- violations := multi_tenancy.violations with input as i
52
- violations[_].id == "MTN-08"
53
- }
@@ -1,33 +0,0 @@
1
- package evolith.open_core_boundary
2
-
3
- violations[{"id": "OCB-01", "message": "Core rulesets/schemas reference commercial license, paid feature flag, or enterprise-only dependency"}] {
4
- input.satellite.openCore.coreHasEnterpriseReferences
5
- }
6
-
7
- violations[{"id": "OCB-02", "message": "Enterprise-only artifact missing explicit 'availability: enterprise' metadata"}] {
8
- input.satellite.openCore.enterpriseArtifactNotMarked
9
- }
10
-
11
- violations[{"id": "OCB-03", "message": "ACL implementation code found in Core — must be in Enterprise layer only"}] {
12
- input.satellite.openCore.aclImplementationInCore
13
- }
14
-
15
- violations[{"id": "OCB-04", "message": "CLI/MCP implementation gated behind paid license — must remain fully open in Core"}] {
16
- input.satellite.openCore.cliMcpGated
17
- }
18
-
19
- violations[{"id": "OCB-05", "message": "Tracker-specific concepts found in Core rulesets — Tracker features cannot penetrate Core"}] {
20
- input.satellite.openCore.trackerConceptsInCore
21
- }
22
-
23
- violations[{"id": "OCB-06", "message": "Core reference corpus contains tiered access (premium/enterprise) — all standards must be equal"}] {
24
- input.satellite.openCore.tieredAccessInCore
25
- }
26
-
27
- violations[{"id": "OCB-07", "message": "Enterprise feature promoted to Core without Architecture Board approval — promotion requires formal review and accepted ADR before Core inclusion"}] {
28
- input.satellite.openCore.hasEnterprisePromotionWithoutApproval
29
- }
30
-
31
- violations[{"id": "OCB-08", "message": "Core rules require enterprise features to function — Core must be independently viable"}] {
32
- input.satellite.openCore.coreRequiresEnterprise
33
- }
@@ -1,60 +0,0 @@
1
- package evolith.open_core_boundary_test
2
-
3
- import data.evolith.open_core_boundary
4
-
5
- compliant_input := {"satellite": {"openCore": {
6
- "coreHasEnterpriseReferences": false,
7
- "enterpriseArtifactNotMarked": false,
8
- "aclImplementationInCore": false,
9
- "cliMcpGated": false,
10
- "trackerConceptsInCore": false,
11
- "tieredAccessInCore": false,
12
- "coreRequiresEnterprise": false,
13
- }}}
14
-
15
- test_compliant_open_core_has_no_violations {
16
- violations := open_core_boundary.violations with input as compliant_input
17
- count(violations) == 0
18
- }
19
-
20
- test_core_enterprise_references_is_rejected {
21
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/openCore/coreHasEnterpriseReferences", "value": true}])
22
- violations := open_core_boundary.violations with input as i
23
- violations[_].id == "OCB-01"
24
- }
25
-
26
- test_enterprise_artifact_not_marked_is_rejected {
27
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/openCore/enterpriseArtifactNotMarked", "value": true}])
28
- violations := open_core_boundary.violations with input as i
29
- violations[_].id == "OCB-02"
30
- }
31
-
32
- test_acl_in_core_is_rejected {
33
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/openCore/aclImplementationInCore", "value": true}])
34
- violations := open_core_boundary.violations with input as i
35
- violations[_].id == "OCB-03"
36
- }
37
-
38
- test_cli_mcp_gated_is_rejected {
39
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/openCore/cliMcpGated", "value": true}])
40
- violations := open_core_boundary.violations with input as i
41
- violations[_].id == "OCB-04"
42
- }
43
-
44
- test_tracker_concepts_in_core_is_rejected {
45
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/openCore/trackerConceptsInCore", "value": true}])
46
- violations := open_core_boundary.violations with input as i
47
- violations[_].id == "OCB-05"
48
- }
49
-
50
- test_tiered_access_in_core_is_rejected {
51
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/openCore/tieredAccessInCore", "value": true}])
52
- violations := open_core_boundary.violations with input as i
53
- violations[_].id == "OCB-06"
54
- }
55
-
56
- test_core_requires_enterprise_is_rejected {
57
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/openCore/coreRequiresEnterprise", "value": true}])
58
- violations := open_core_boundary.violations with input as i
59
- violations[_].id == "OCB-08"
60
- }
@@ -1,29 +0,0 @@
1
- package evolith.protocol_selection
2
-
3
- violations[{"id": "PROT-01", "message": "Internal service-to-service communication not using gRPC"}] {
4
- input.satellite.protocol.internalServiceCallsNotGrpc
5
- }
6
-
7
- violations[{"id": "PROT-02", "message": "Public/external API not using REST"}] {
8
- input.satellite.protocol.publicApiNotRest
9
- }
10
-
11
- violations[{"id": "PROT-04", "message": "GraphQL resolvers found in Core or Application layer — must be BFF only"}] {
12
- input.satellite.protocol.graphqlInDomainLayer
13
- }
14
-
15
- violations[{"id": "PROT-05", "message": "Proto files not centralized in shared Contracts library"}] {
16
- not input.satellite.protocol.protoCentralized
17
- }
18
-
19
- violations[{"id": "PROT-03", "message": "BFF must use REST as primary protocol. If GraphQL is used, it must be targeted only (not as general-purpose BFF API)"}] {
20
- input.satellite.protocol.bffUsesGraphqlAsGeneral
21
- }
22
-
23
- violations[{"id": "PROT-06", "message": "File uploads and stream operations should prefer gRPC streaming over multipart REST — use gRPC for large binary payloads"}] {
24
- input.satellite.protocol.fileUploadsNotGrpc
25
- }
26
-
27
- violations[{"id": "PROT-07", "message": "Breaking contract changes without version bump detected"}] {
28
- input.satellite.protocol.breakingChangesWithoutVersionBump
29
- }
@@ -1,46 +0,0 @@
1
- package evolith.protocol_selection_test
2
-
3
- import data.evolith.protocol_selection
4
-
5
- compliant_input := {"satellite": {"protocol": {
6
- "internalServiceCallsNotGrpc": false,
7
- "publicApiNotRest": false,
8
- "graphqlInDomainLayer": false,
9
- "protoCentralized": true,
10
- "breakingChangesWithoutVersionBump": false,
11
- }}}
12
-
13
- test_compliant_protocol_selection_has_no_violations {
14
- violations := protocol_selection.violations with input as compliant_input
15
- count(violations) == 0
16
- }
17
-
18
- test_internal_not_grpc_is_rejected {
19
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/protocol/internalServiceCallsNotGrpc", "value": true}])
20
- violations := protocol_selection.violations with input as i
21
- violations[_].id == "PROT-01"
22
- }
23
-
24
- test_public_api_not_rest_is_rejected {
25
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/protocol/publicApiNotRest", "value": true}])
26
- violations := protocol_selection.violations with input as i
27
- violations[_].id == "PROT-02"
28
- }
29
-
30
- test_graphql_in_domain_layer_is_rejected {
31
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/protocol/graphqlInDomainLayer", "value": true}])
32
- violations := protocol_selection.violations with input as i
33
- violations[_].id == "PROT-04"
34
- }
35
-
36
- test_proto_not_centralized_is_rejected {
37
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/protocol/protoCentralized", "value": false}])
38
- violations := protocol_selection.violations with input as i
39
- violations[_].id == "PROT-05"
40
- }
41
-
42
- test_breaking_changes_without_version_bump_is_rejected {
43
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/protocol/breakingChangesWithoutVersionBump", "value": true}])
44
- violations := protocol_selection.violations with input as i
45
- violations[_].id == "PROT-07"
46
- }
@@ -1,112 +0,0 @@
1
- package evolith.rbac.gate
2
-
3
- import future.keywords.if
4
- import future.keywords.contains
5
-
6
- # ---------------------------------------------------------------------------
7
- # GT-320 — Gate role enforcement
8
- #
9
- # Input schema:
10
- # input.actor.roles array of role strings (e.g. ["product_owner"])
11
- # input.gate.accountableRole string | null — required role to approve
12
- # input.gate.waiverAuthority string | null — required role to waive
13
- # input.action "approve" | "waive"
14
- #
15
- # Role hierarchy (mirrors ROLE_HIERARCHY in role.ts)
16
- # ---------------------------------------------------------------------------
17
-
18
- # admin and cto supersede every gate role
19
- superseding_roles := {"admin", "cto"}
20
-
21
- # Hierarchy expressed as: implied_by[required_role] = set of roles that satisfy it
22
- implied_by := {
23
- "product_owner": {"admin", "cto"},
24
- "architect": {"admin", "cto"},
25
- "tech_lead": {"admin", "cto", "architect"},
26
- "qa_lead": {"admin", "cto"},
27
- "devops_lead": {"admin", "cto"},
28
- "developer": {"admin", "cto", "architect", "tech_lead"},
29
- "qa_engineer": {"admin", "cto", "qa_lead"},
30
- "devops_engineer": {"admin", "cto", "devops_lead"},
31
- "security_engineer": {"admin", "cto"},
32
- }
33
-
34
- # Map human-readable gate labels to canonical role values (mirrors GATE_ROLE_MAP)
35
- gate_role_map := {
36
- "Product Owner": "product_owner",
37
- "Software Architect": "architect",
38
- "Tech Lead": "tech_lead",
39
- "QA Lead": "qa_lead",
40
- "DevOps Lead": "devops_lead",
41
- }
42
-
43
- # Resolve a gate label (or already-canonical string) to a canonical role string
44
- canonical_role(label) := role if {
45
- role := gate_role_map[label]
46
- } else := label
47
-
48
- # Returns true when actor_role satisfies required_role (direct or via hierarchy)
49
- role_satisfies(actor_role, required) if { actor_role == required }
50
- role_satisfies(actor_role, required) if { actor_role in implied_by[required] }
51
-
52
- # ---------------------------------------------------------------------------
53
- # default deny
54
- # ---------------------------------------------------------------------------
55
-
56
- default allow := false
57
-
58
- # ---------------------------------------------------------------------------
59
- # approve
60
- # ---------------------------------------------------------------------------
61
-
62
- # Open gate — no accountableRole set
63
- allow if {
64
- input.action == "approve"
65
- not input.gate.accountableRole
66
- }
67
-
68
- allow if {
69
- input.action == "approve"
70
- input.gate.accountableRole != null
71
- required := canonical_role(input.gate.accountableRole)
72
- some actor_role in input.actor.roles
73
- role_satisfies(actor_role, required)
74
- }
75
-
76
- # ---------------------------------------------------------------------------
77
- # waive
78
- # ---------------------------------------------------------------------------
79
-
80
- # Open gate — no waiverAuthority set
81
- allow if {
82
- input.action == "waive"
83
- not input.gate.waiverAuthority
84
- }
85
-
86
- allow if {
87
- input.action == "waive"
88
- input.gate.waiverAuthority != null
89
- required := canonical_role(input.gate.waiverAuthority)
90
- some actor_role in input.actor.roles
91
- role_satisfies(actor_role, required)
92
- }
93
-
94
- # ---------------------------------------------------------------------------
95
- # Violation detail (used by tests / audit logs)
96
- # ---------------------------------------------------------------------------
97
-
98
- deny_reason := reason if {
99
- not allow
100
- input.action == "approve"
101
- reason := sprintf(
102
- "actor roles [%s] do not satisfy accountableRole '%s' for action 'approve'",
103
- [concat(", ", input.actor.roles), input.gate.accountableRole],
104
- )
105
- } else := reason if {
106
- not allow
107
- input.action == "waive"
108
- reason := sprintf(
109
- "actor roles [%s] do not satisfy waiverAuthority '%s' for action 'waive'",
110
- [concat(", ", input.actor.roles), input.gate.waiverAuthority],
111
- )
112
- }
@@ -1,98 +0,0 @@
1
- package evolith.repository_taxonomy
2
-
3
- # ---------------------------------------------------------------------------
4
- # TAX-01..04: Naming conventions (checked via source file analysis)
5
- # TAX-05..08, TAX-11: Structural checks (already implemented below)
6
- # TAX-09..10: Artifact placement checks
7
- # ---------------------------------------------------------------------------
8
-
9
- violations[{"id": "TAX-01", "message": msg}] {
10
- file := input.repository.files[_]
11
- name := split(file, "/")[count(split(file, "/")) - 1]
12
- not endswith(name, ".md")
13
- not endswith(name, ".json")
14
- not endswith(name, ".yaml")
15
- not endswith(name, ".yml")
16
- not endswith(name, ".rego")
17
- not endswith(name, ".ts")
18
- not endswith(name, ".mjs")
19
- not endswith(name, ".js")
20
- regex.match(`[A-Z_\s]`, name)
21
- msg := sprintf("File name does not use kebab-case: %v", [name])
22
- }
23
-
24
- violations[{"id": "TAX-02", "message": msg}] {
25
- input.repository.naming.pascalCaseViolations > 0
26
- msg := sprintf("Class/type names violate PascalCase convention (%d violations)", [input.repository.naming.pascalCaseViolations])
27
- }
28
-
29
- violations[{"id": "TAX-03", "message": msg}] {
30
- input.repository.naming.camelCaseViolations > 0
31
- msg := sprintf("Variable/function names violate camelCase convention (%d violations)", [input.repository.naming.camelCaseViolations])
32
- }
33
-
34
- violations[{"id": "TAX-04", "message": msg}] {
35
- input.repository.naming.constantCaseViolations > 0
36
- msg := sprintf("Constant names violate UPPER_SNAKE_CASE convention (%d violations)", [input.repository.naming.constantCaseViolations])
37
- }
38
-
39
- violations[{"id": "TAX-09", "message": msg}] {
40
- input.repository.type == "core"
41
- file := input.repository.files[_]
42
- contains(file, "product-specific")
43
- not startswith(file, "reference/knowledge/demo")
44
- msg := sprintf("Product-specific artifact found in Core reference/: %v", [file])
45
- }
46
-
47
- violations[{"id": "TAX-10", "message": msg}] {
48
- file := input.repository.files[_]
49
- startswith(file, "reference/")
50
- input.repository.productArtifacts[file]
51
- msg := sprintf("Product-specific artifact must not be in reference/: %v (use docs/ or satellite repo)", [file])
52
- }
53
-
54
- violations[{"id": "TAX-05", "message": msg}] {
55
- input.repository.type == "core"
56
- expected := {"reference", "sdk", "rulesets"}
57
- actual := {dir | dir := input.repository.directories[_]}
58
- missing := expected - actual
59
- count(missing) > 0
60
- msg := sprintf("Core repository missing directories: %v", [concat(", ", missing)])
61
- }
62
-
63
- violations[{"id": "TAX-06", "message": msg}] {
64
- input.repository.type == "satellite"
65
- expected := {"src", "tests", "docs"}
66
- actual := {dir | dir := input.repository.directories[_]}
67
- missing := expected - actual
68
- count(missing) > 0
69
- msg := sprintf("Satellite repository missing directories: %v", [concat(", ", missing)])
70
- }
71
-
72
- is_valid_adr_name(name) {
73
- regex.match(`^[0-9]{4}-[a-z0-9-]+\.md$`, name)
74
- }
75
-
76
- violations[{"id": "TAX-07", "message": msg}] {
77
- adr := input.repository.adrs[_]
78
- name := split(adr, "/")[count(split(adr, "/")) - 1]
79
- not endswith(name, ".es.md")
80
- not is_valid_adr_name(name)
81
- msg := sprintf("ADR filename does not match pattern ^[0-9]{4}-[a-z-]+\\.md$: %v", [name])
82
- }
83
-
84
- violations[{"id": "TAX-08", "message": msg}] {
85
- adr := input.repository.adrs[_]
86
- name := split(adr, "/")[count(split(adr, "/")) - 1]
87
- endswith(name, ".md")
88
- not endswith(name, ".es.md")
89
- es_name := replace(name, ".md", ".es.md")
90
- adrs_set := {split(a, "/")[count(split(a, "/")) - 1] | a := input.repository.adrs[_]}
91
- not adrs_set[es_name]
92
- msg := sprintf("ADR missing bilingual pair: %v", [name])
93
- }
94
-
95
- violations[{"id": "TAX-11", "message": "Root-level topologies/ directory is prohibited"}] {
96
- dir := input.repository.directories[_]
97
- dir == "topologies"
98
- }
@@ -1,91 +0,0 @@
1
- package evolith.repository_taxonomy_test
2
-
3
- import data.evolith.repository_taxonomy
4
-
5
- test_core_with_required_dirs_has_no_violations {
6
- violations := repository_taxonomy.violations with input as {
7
- "repository": {
8
- "type": "core",
9
- "directories": ["reference", "sdk", "rulesets", "src"],
10
- "adrs": ["reference/architecture/adrs/core/0001-monorepo-orchestration.md", "reference/architecture/adrs/core/0001-monorepo-orchestration.es.md"]
11
- }
12
- }
13
- count(violations) == 0
14
- }
15
-
16
- test_core_missing_reference_dir_is_violation {
17
- violations := repository_taxonomy.violations with input as {
18
- "repository": {
19
- "type": "core",
20
- "directories": ["sdk", "rulesets"],
21
- "adrs": []
22
- }
23
- }
24
- violations[_].id == "TAX-05"
25
- }
26
-
27
- test_satellite_with_required_dirs_has_no_violations {
28
- violations := repository_taxonomy.violations with input as {
29
- "repository": {
30
- "type": "satellite",
31
- "directories": ["src", "tests", "docs"],
32
- "adrs": []
33
- }
34
- }
35
- count(violations) == 0
36
- }
37
-
38
- test_satellite_missing_dirs_is_violation {
39
- violations := repository_taxonomy.violations with input as {
40
- "repository": {
41
- "type": "satellite",
42
- "directories": ["src"],
43
- "adrs": []
44
- }
45
- }
46
- violations[_].id == "TAX-06"
47
- }
48
-
49
- test_adr_with_valid_name_has_no_violation {
50
- violations := repository_taxonomy.violations with input as {
51
- "repository": {
52
- "type": "core",
53
- "directories": ["reference", "sdk", "rulesets"],
54
- "adrs": ["reference/architecture/adrs/core/0002-clean-architecture.md", "reference/architecture/adrs/core/0002-clean-architecture.es.md"]
55
- }
56
- }
57
- count(violations) == 0
58
- }
59
-
60
- test_adr_invalid_name_is_violation {
61
- violations := repository_taxonomy.violations with input as {
62
- "repository": {
63
- "type": "core",
64
- "directories": ["reference", "sdk", "rulesets"],
65
- "adrs": ["reference/architecture/adrs/core/invalid-adr-name.md"]
66
- }
67
- }
68
- violations[_].id == "TAX-07"
69
- }
70
-
71
- test_adr_missing_bilingual_pair_is_violation {
72
- violations := repository_taxonomy.violations with input as {
73
- "repository": {
74
- "type": "core",
75
- "directories": ["reference", "sdk", "rulesets"],
76
- "adrs": ["reference/architecture/adrs/core/0001-feature.md"]
77
- }
78
- }
79
- violations[_].id == "TAX-08"
80
- }
81
-
82
- test_root_topologies_dir_is_violation {
83
- violations := repository_taxonomy.violations with input as {
84
- "repository": {
85
- "type": "core",
86
- "directories": ["reference", "sdk", "rulesets", "topologies"],
87
- "adrs": []
88
- }
89
- }
90
- violations[_].id == "TAX-11"
91
- }
@@ -1,42 +0,0 @@
1
- package evolith.satellite_contracts
2
-
3
- violations[{"id": "SVC-01", "message": "evolith.yaml not found at repository root or multiple evolith.yaml files found"}] {
4
- not input.satellite.contracts.hasEvolyamlAtRoot
5
- }
6
-
7
- violations[{"id": "SVC-03", "message": "F1 phase satellite must reference core/ADR-0047 in spec.compliance.adrRegistry"}] {
8
- input.satellite.contracts.phase == "F1"
9
- not input.satellite.contracts.hasAdr0047
10
- }
11
-
12
- violations[{"id": "SVC-04", "message": "F2/F3 satellite missing extraction readiness score documentation"}] {
13
- input.satellite.contracts.phase == "F2"
14
- not input.satellite.contracts.hasExtractionReadinessScore
15
- }
16
-
17
- violations[{"id": "SVC-04", "message": "F2/F3 satellite missing extraction readiness score documentation"}] {
18
- input.satellite.contracts.phase == "F3"
19
- not input.satellite.contracts.hasExtractionReadinessScore
20
- }
21
-
22
- violations[{"id": "SVC-05", "message": "Core version referenced does not exist in Evolith Core registry"}] {
23
- not input.satellite.contracts.coreVersionExists
24
- }
25
-
26
- violations[{"id": "SVC-02", "message": "Satellite name must be unique across all registered Evolith satellites — name conflict detected in registry"}] {
27
- not input.satellite.contracts.nameIsUnique
28
- }
29
-
30
- violations[{"id": "MIG-01", "message": "No documented upgrade path for satellite governance version — run 'evolith upgrade --target <version>' to document the upgrade procedure"}] {
31
- input.satellite.contracts.needsGovernanceUpgrade
32
- not input.satellite.contracts.upgradePathDocumented
33
- }
34
-
35
- violations[{"id": "MIG-02", "message": "Phase transition attempted without Architecture Board approval artifact"}] {
36
- input.satellite.contracts.phaseTransitionWithoutApproval
37
- }
38
-
39
- violations[{"id": "MIG-03", "message": "Satellite deprecated without marking status in evolith.yaml"}] {
40
- input.satellite.contracts.isDeprecated
41
- not input.satellite.contracts.deprecatedStatusMarked
42
- }
@@ -1,70 +0,0 @@
1
- package evolith.satellite_contracts_test
2
-
3
- import data.evolith.satellite_contracts
4
-
5
- compliant_f1_input := {"satellite": {"contracts": {
6
- "hasEvolyamlAtRoot": true,
7
- "phase": "F1",
8
- "hasAdr0047": true,
9
- "hasExtractionReadinessScore": false,
10
- "coreVersionExists": true,
11
- "phaseTransitionWithoutApproval": false,
12
- "isDeprecated": false,
13
- "deprecatedStatusMarked": false,
14
- }}}
15
-
16
- test_compliant_f1_satellite_has_no_violations {
17
- violations := satellite_contracts.violations with input as compliant_f1_input
18
- count(violations) == 0
19
- }
20
-
21
- test_missing_evolyaml_is_rejected {
22
- i := json.patch(compliant_f1_input, [{"op": "replace", "path": "/satellite/contracts/hasEvolyamlAtRoot", "value": false}])
23
- violations := satellite_contracts.violations with input as i
24
- violations[_].id == "SVC-01"
25
- }
26
-
27
- test_f1_missing_adr0047_is_rejected {
28
- i := json.patch(compliant_f1_input, [{"op": "replace", "path": "/satellite/contracts/hasAdr0047", "value": false}])
29
- violations := satellite_contracts.violations with input as i
30
- violations[_].id == "SVC-03"
31
- }
32
-
33
- test_f2_missing_extraction_readiness_is_rejected {
34
- i := json.patch(compliant_f1_input, [
35
- {"op": "replace", "path": "/satellite/contracts/phase", "value": "F2"},
36
- {"op": "replace", "path": "/satellite/contracts/hasExtractionReadinessScore", "value": false},
37
- ])
38
- violations := satellite_contracts.violations with input as i
39
- violations[_].id == "SVC-04"
40
- }
41
-
42
- test_f3_missing_extraction_readiness_is_rejected {
43
- i := json.patch(compliant_f1_input, [
44
- {"op": "replace", "path": "/satellite/contracts/phase", "value": "F3"},
45
- {"op": "replace", "path": "/satellite/contracts/hasExtractionReadinessScore", "value": false},
46
- ])
47
- violations := satellite_contracts.violations with input as i
48
- violations[_].id == "SVC-04"
49
- }
50
-
51
- test_core_version_not_found_is_rejected {
52
- i := json.patch(compliant_f1_input, [{"op": "replace", "path": "/satellite/contracts/coreVersionExists", "value": false}])
53
- violations := satellite_contracts.violations with input as i
54
- violations[_].id == "SVC-05"
55
- }
56
-
57
- test_phase_transition_without_approval_is_rejected {
58
- i := json.patch(compliant_f1_input, [{"op": "replace", "path": "/satellite/contracts/phaseTransitionWithoutApproval", "value": true}])
59
- violations := satellite_contracts.violations with input as i
60
- violations[_].id == "MIG-02"
61
- }
62
-
63
- test_deprecated_without_status_marked_is_rejected {
64
- i := json.patch(compliant_f1_input, [
65
- {"op": "replace", "path": "/satellite/contracts/isDeprecated", "value": true},
66
- {"op": "replace", "path": "/satellite/contracts/deprecatedStatusMarked", "value": false},
67
- ])
68
- violations := satellite_contracts.violations with input as i
69
- violations[_].id == "MIG-03"
70
- }
@@ -1,21 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "https://evolith.dev/schema/opa/abac-mcp-tool-access.input.schema.json",
4
- "title": "ABAC MCP Tool Access OPA Policy Input Schema",
5
- "type": "object",
6
- "required": ["user", "tool_name", "environment"],
7
- "properties": {
8
- "user": {
9
- "type": "object",
10
- "required": ["id", "roles"],
11
- "properties": {
12
- "id": { "type": "string" },
13
- "roles": { "type": "array", "items": { "type": "string" } },
14
- "tenant": { "type": "string" }
15
- }
16
- },
17
- "tool_name": { "type": "string" },
18
- "resource_domain": { "type": "string" },
19
- "environment": { "type": "string" }
20
- }
21
- }