@evolith/core-domain 1.0.1 → 1.0.3

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