@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,98 +0,0 @@
1
- package evolith.knowledge_intake
2
-
3
- violations[{"id": "KI-R01", "message": "Knowledge candidate must declare provenance and permitted retention rights."}] {
4
- not input.source.class
5
- }
6
-
7
- violations[{"id": "KI-R01", "message": "Knowledge candidate must declare provenance and permitted retention rights."}] {
8
- not input.source.locator
9
- }
10
-
11
- violations[{"id": "KI-R01", "message": "Knowledge candidate must declare provenance and permitted retention rights."}] {
12
- not input.source.retrieved_at
13
- }
14
-
15
- violations[{"id": "KI-R01", "message": "Knowledge candidate must declare provenance and permitted retention rights."}] {
16
- not input.source.rights_status
17
- }
18
-
19
- violations[{"id": "KI-R02", "message": "Knowledge candidate must be reviewed by @winston and have a next review date."}] {
20
- input.review.owner != "@winston"
21
- }
22
-
23
- violations[{"id": "KI-R02", "message": "Knowledge candidate must be reviewed by @winston and have a next review date."}] {
24
- not input.review.next_review_at
25
- }
26
-
27
- violations[{"id": "KI-R02", "message": "Knowledge candidate must have a review_freshness date."}] {
28
- not input.review.review_freshness
29
- }
30
-
31
- violations[{"id": "KI-R03", "message": "Executable knowledge requires ADR, Native rule, OPA policy, and fixtures."}] {
32
- input.promotion.status == "executable"
33
- not input.promotion.adr
34
- }
35
-
36
- violations[{"id": "KI-R03", "message": "Executable knowledge requires ADR, Native rule, OPA policy, and fixtures."}] {
37
- input.promotion.status == "executable"
38
- not input.promotion.native_rule
39
- }
40
-
41
- violations[{"id": "KI-R03", "message": "Executable knowledge requires ADR, Native rule, OPA policy, and fixtures."}] {
42
- input.promotion.status == "executable"
43
- not input.promotion.opa_policy
44
- }
45
-
46
- violations[{"id": "KI-R03", "message": "Executable knowledge requires ADR, Native rule, OPA policy, and fixtures."}] {
47
- input.promotion.status == "executable"
48
- count(input.promotion.fixtures) == 0
49
- }
50
-
51
- violations[{"id": "KI-R04", "message": "Knowledge candidate must declare maturity."}] {
52
- not input.assessment.maturity
53
- }
54
-
55
- violations[{"id": "KI-R04", "message": "Knowledge candidate must list preconditions."}] {
56
- not input.assessment.preconditions
57
- }
58
-
59
- violations[{"id": "KI-R04", "message": "Knowledge candidate must list anti-patterns."}] {
60
- not input.assessment.anti_patterns
61
- }
62
-
63
- violations[{"id": "KI-R04", "message": "Knowledge candidate must list alternatives."}] {
64
- not input.assessment.alternatives
65
- }
66
-
67
- violations[{"id": "KI-R05", "message": "Knowledge candidate must link to a source registry entry via source_registry_id."}] {
68
- input.source_registry_id == null
69
- }
70
-
71
- violations[{"id": "KI-R05", "message": "Knowledge candidate must link to a source registry entry via source_registry_id."}] {
72
- not input.source_registry_id
73
- }
74
-
75
- violations[{"id": "KI-R06", "message": "Non-candidate promotion must record promoted_at and promoted_by."}] {
76
- input.promotion.status != "candidate"
77
- not input.promotion.promoted_at
78
- }
79
-
80
- violations[{"id": "KI-R06", "message": "Non-candidate promotion must record promoted_at and promoted_by."}] {
81
- input.promotion.status != "candidate"
82
- not input.promotion.promoted_by
83
- }
84
-
85
- violations[{"id": "KI-R07", "message": "Accepted or executable status requires a non-null ADR reference."}] {
86
- input.promotion.status == "accepted"
87
- input.promotion.adr == null
88
- }
89
-
90
- violations[{"id": "KI-R07", "message": "Accepted or executable status requires a non-null ADR reference."}] {
91
- input.promotion.status == "executable"
92
- input.promotion.adr == null
93
- }
94
-
95
- violations[{"id": "KI-R07", "message": "Retired status requires a non-null disposition reason."}] {
96
- input.promotion.status == "retired"
97
- input.promotion.disposition == null
98
- }
@@ -1,50 +0,0 @@
1
- package evolith.knowledge_intake_test
2
-
3
- import data.evolith.knowledge_intake
4
-
5
- valid_candidate := {"source_registry_id": "SRC-TEST-001", "source": {"class": "book", "locator": "chapter", "retrieved_at": "2026-06-20", "rights_status": "citation-and-synthesis-only"}, "assessment": {"maturity": "proven", "preconditions": ["domain-modeling"], "anti_patterns": ["anemic"], "alternatives": ["event-sourcing"]}, "review": {"owner": "@winston", "next_review_at": "2026-12-20", "review_freshness": "2026-06-20"}, "promotion": {"status": "candidate", "fixtures": []}}
6
-
7
- test_candidate_with_provenance_has_no_violations {
8
- violations := knowledge_intake.violations with input as valid_candidate
9
- count(violations) == 0
10
- }
11
-
12
- test_missing_rights_is_rejected {
13
- candidate := {"source_registry_id": "SRC-TEST-001", "source": {"class": "book", "locator": "chapter", "retrieved_at": "2026-06-20"}, "assessment": {"maturity": "proven", "preconditions": ["domain-modeling"], "anti_patterns": ["anemic"], "alternatives": ["event-sourcing"]}, "review": {"owner": "@winston", "next_review_at": "2026-12-20", "review_freshness": "2026-06-20"}, "promotion": {"status": "candidate", "fixtures": []}}
14
- knowledge_intake.violations[_].id == "KI-R01" with input as candidate
15
- }
16
-
17
- test_executable_without_fixtures_is_rejected {
18
- candidate := object.union(valid_candidate, {"promotion": {"status": "executable", "adr": "ADR-0100", "native_rule": "KI-R01", "opa_policy": "knowledge-intake.rego", "fixtures": []}})
19
- knowledge_intake.violations[_].id == "KI-R03" with input as candidate
20
- }
21
-
22
- test_missing_maturity_is_rejected {
23
- candidate := {"source_registry_id": "SRC-TEST-001", "source": {"class": "book", "locator": "chapter", "retrieved_at": "2026-06-20", "rights_status": "citation-and-synthesis-only"}, "assessment": {"preconditions": ["domain-modeling"], "anti_patterns": ["anemic"], "alternatives": ["event-sourcing"]}, "review": {"owner": "@winston", "next_review_at": "2026-12-20", "review_freshness": "2026-06-20"}, "promotion": {"status": "candidate", "fixtures": []}}
24
- knowledge_intake.violations[_].id == "KI-R04" with input as candidate
25
- }
26
-
27
- test_missing_source_registry_link_is_rejected {
28
- candidate := {"source": {"class": "book", "locator": "chapter", "retrieved_at": "2026-06-20", "rights_status": "citation-and-synthesis-only"}, "assessment": {"maturity": "proven", "preconditions": ["domain-modeling"], "anti_patterns": ["anemic"], "alternatives": ["event-sourcing"]}, "review": {"owner": "@winston", "next_review_at": "2026-12-20", "review_freshness": "2026-06-20"}, "promotion": {"status": "candidate", "fixtures": []}}
29
- knowledge_intake.violations[_].id == "KI-R05" with input as candidate
30
- }
31
-
32
- test_missing_review_freshness_is_rejected {
33
- candidate := {"source_registry_id": "SRC-TEST-001", "source": {"class": "book", "locator": "chapter", "retrieved_at": "2026-06-20", "rights_status": "citation-and-synthesis-only"}, "assessment": {"maturity": "proven", "preconditions": ["domain-modeling"], "anti_patterns": ["anemic"], "alternatives": ["event-sourcing"]}, "review": {"owner": "@winston", "next_review_at": "2026-12-20"}, "promotion": {"status": "candidate", "fixtures": []}}
34
- knowledge_intake.violations[_].id == "KI-R02" with input as candidate
35
- }
36
-
37
- test_accepted_without_adr_is_rejected {
38
- candidate := {"source_registry_id": "SRC-TEST-001", "source": {"class": "book", "locator": "chapter", "retrieved_at": "2026-06-20", "rights_status": "citation-and-synthesis-only"}, "assessment": {"maturity": "proven", "preconditions": ["domain-modeling"], "anti_patterns": ["anemic"], "alternatives": ["event-sourcing"]}, "review": {"owner": "@winston", "next_review_at": "2026-12-20", "review_freshness": "2026-06-20"}, "promotion": {"status": "accepted", "promoted_at": "2026-06-21", "promoted_by": "@winston", "adr": null, "fixtures": []}}
39
- knowledge_intake.violations[_].id == "KI-R07" with input as candidate
40
- }
41
-
42
- test_retired_without_disposition_is_rejected {
43
- candidate := {"source_registry_id": "SRC-TEST-001", "source": {"class": "book", "locator": "chapter", "retrieved_at": "2026-06-20", "rights_status": "citation-and-synthesis-only"}, "assessment": {"maturity": "proven", "preconditions": ["domain-modeling"], "anti_patterns": ["anemic"], "alternatives": ["event-sourcing"]}, "review": {"owner": "@winston", "next_review_at": "2026-12-20", "review_freshness": "2026-06-20"}, "promotion": {"status": "retired", "promoted_at": "2026-06-21", "promoted_by": "@winston", "disposition": null, "fixtures": []}}
44
- knowledge_intake.violations[_].id == "KI-R07" with input as candidate
45
- }
46
-
47
- test_evaluated_without_promoted_at_is_rejected {
48
- candidate := {"source_registry_id": "SRC-TEST-001", "source": {"class": "book", "locator": "chapter", "retrieved_at": "2026-06-20", "rights_status": "citation-and-synthesis-only"}, "assessment": {"maturity": "proven", "preconditions": ["domain-modeling"], "anti_patterns": ["anemic"], "alternatives": ["event-sourcing"]}, "review": {"owner": "@winston", "next_review_at": "2026-12-20", "review_freshness": "2026-06-20"}, "promotion": {"status": "evaluated", "promoted_by": "@winston", "fixtures": []}}
49
- knowledge_intake.violations[_].id == "KI-R06" with input as candidate
50
- }
@@ -1,147 +0,0 @@
1
- package evolith.main
2
-
3
- import data.evolith.version_pinning.violations as vp_violations
4
- import data.evolith.taxonomy.violations as taxonomy_violations
5
- import data.evolith.cli_readiness.violations as cli_violations
6
- import data.evolith.evidence.violations as evidence_violations
7
- import data.evolith.mcp.violations as mcp_violations
8
- import data.evolith.ci_cd.violations as ci_cd_violations
9
- import data.evolith.governance.violations as gov_violations
10
- import data.evolith.abac.violations as abac_violations
11
- import data.evolith.acl.violations as acl_violations
12
- import data.evolith.cicd_quality_gates.violations as cicd_qg_violations
13
- import data.evolith.cli_core_parity.violations as cli_cp_violations
14
- import data.evolith.cli_release_readiness.violations as cli_rr_violations
15
- import data.evolith.compliance_baseline.violations as cb_violations
16
- import data.evolith.dod.violations as dod_violations
17
- import data.evolith.engineering_manifesto.violations as em_violations
18
- import data.evolith.executive_scorecards.violations as exec_violations
19
- import data.evolith.gitflow_branching.violations as git_violations
20
- import data.evolith.hexagonal_architecture.violations as hxa_violations
21
- import data.evolith.knowledge_intake.violations as ki_violations
22
- import data.evolith.multi_runtime.violations as runt_violations
23
- import data.evolith.multi_tenancy.violations as mtn_violations
24
- import data.evolith.open_core_boundary.violations as ocb_violations
25
- import data.evolith.protocol_selection.violations as prot_violations
26
- import data.evolith.repository_taxonomy.violations as repo_tax_violations
27
- import data.evolith.satellite_contracts.violations as svc_violations
28
- import data.evolith.testing_pyramid.violations as tpy_violations
29
- import data.evolith.telemetry_evidence.violations as telemetry_violations
30
- import data.evolith.infrastructure.helm.violations as helm_violations
31
- import data.evolith.infrastructure.opa_sidecar.violations as opa_sidecar_violations
32
-
33
- violations[v] {
34
- v := vp_violations[_]
35
- }
36
-
37
- violations[v] {
38
- v := taxonomy_violations[_]
39
- }
40
-
41
- violations[v] {
42
- v := cli_violations[_]
43
- }
44
-
45
- violations[v] {
46
- v := evidence_violations[_]
47
- }
48
-
49
- violations[v] {
50
- v := mcp_violations[_]
51
- }
52
-
53
- violations[v] {
54
- v := ci_cd_violations[_]
55
- }
56
-
57
- violations[v] {
58
- v := gov_violations[_]
59
- }
60
-
61
- violations[v] {
62
- v := abac_violations[_]
63
- }
64
-
65
- violations[v] {
66
- v := acl_violations[_]
67
- }
68
-
69
- violations[v] {
70
- v := cicd_qg_violations[_]
71
- }
72
-
73
- violations[v] {
74
- v := cli_cp_violations[_]
75
- }
76
-
77
- violations[v] {
78
- v := cli_rr_violations[_]
79
- }
80
-
81
- violations[v] {
82
- v := cb_violations[_]
83
- }
84
-
85
- violations[v] {
86
- v := dod_violations[_]
87
- }
88
-
89
- violations[v] {
90
- v := em_violations[_]
91
- }
92
-
93
- violations[v] {
94
- v := exec_violations[_]
95
- }
96
-
97
- violations[v] {
98
- v := git_violations[_]
99
- }
100
-
101
- violations[v] {
102
- v := hxa_violations[_]
103
- }
104
-
105
- violations[v] {
106
- v := ki_violations[_]
107
- }
108
-
109
- violations[v] {
110
- v := runt_violations[_]
111
- }
112
-
113
- violations[v] {
114
- v := mtn_violations[_]
115
- }
116
-
117
- violations[v] {
118
- v := ocb_violations[_]
119
- }
120
-
121
- violations[v] {
122
- v := prot_violations[_]
123
- }
124
-
125
- violations[v] {
126
- v := repo_tax_violations[_]
127
- }
128
-
129
- violations[v] {
130
- v := svc_violations[_]
131
- }
132
-
133
- violations[v] {
134
- v := tpy_violations[_]
135
- }
136
-
137
- violations[v] {
138
- v := telemetry_violations[_]
139
- }
140
-
141
- violations[v] {
142
- v := helm_violations[_]
143
- }
144
-
145
- violations[v] {
146
- v := opa_sidecar_violations[_]
147
- }
@@ -1,149 +0,0 @@
1
- package evolith.main_test
2
-
3
- import data.evolith.main
4
-
5
- test_empty_violations {
6
- violations := main.violations with data.evolith.version_pinning.violations as {}
7
- with data.evolith.taxonomy.violations as {}
8
- with data.evolith.cli_readiness.violations as {}
9
- with data.evolith.evidence.violations as {}
10
- with data.evolith.mcp.violations as {}
11
- with data.evolith.ci_cd.violations as {}
12
- with data.evolith.governance.violations as {}
13
- with data.evolith.abac.violations as {}
14
- with data.evolith.acl.violations as {}
15
- with data.evolith.cicd_quality_gates.violations as {}
16
- with data.evolith.cli_core_parity.violations as {}
17
- with data.evolith.cli_release_readiness.violations as {}
18
- with data.evolith.compliance_baseline.violations as {}
19
- with data.evolith.dod.violations as {}
20
- with data.evolith.engineering_manifesto.violations as {}
21
- with data.evolith.executive_scorecards.violations as {}
22
- with data.evolith.gitflow_branching.violations as {}
23
- with data.evolith.hexagonal_architecture.violations as {}
24
- with data.evolith.knowledge_intake.violations as {}
25
- with data.evolith.multi_runtime.violations as {}
26
- with data.evolith.multi_tenancy.violations as {}
27
- with data.evolith.open_core_boundary.violations as {}
28
- with data.evolith.protocol_selection.violations as {}
29
- with data.evolith.repository_taxonomy.violations as {}
30
- with data.evolith.satellite_contracts.violations as {}
31
- with data.evolith.testing_pyramid.violations as {}
32
-
33
- count(violations) == 0
34
- }
35
-
36
- test_single_source_violations {
37
- violations := main.violations with data.evolith.version_pinning.violations as {{"id": "DEP-01", "message": "fail"}}
38
- with data.evolith.taxonomy.violations as {}
39
- with data.evolith.cli_readiness.violations as {}
40
- with data.evolith.evidence.violations as {}
41
- with data.evolith.mcp.violations as {}
42
- with data.evolith.ci_cd.violations as {}
43
- with data.evolith.governance.violations as {}
44
- with data.evolith.abac.violations as {}
45
- with data.evolith.acl.violations as {}
46
- with data.evolith.cicd_quality_gates.violations as {}
47
- with data.evolith.cli_core_parity.violations as {}
48
- with data.evolith.cli_release_readiness.violations as {}
49
- with data.evolith.compliance_baseline.violations as {}
50
- with data.evolith.dod.violations as {}
51
- with data.evolith.engineering_manifesto.violations as {}
52
- with data.evolith.executive_scorecards.violations as {}
53
- with data.evolith.gitflow_branching.violations as {}
54
- with data.evolith.hexagonal_architecture.violations as {}
55
- with data.evolith.knowledge_intake.violations as {}
56
- with data.evolith.multi_runtime.violations as {}
57
- with data.evolith.multi_tenancy.violations as {}
58
- with data.evolith.open_core_boundary.violations as {}
59
- with data.evolith.protocol_selection.violations as {}
60
- with data.evolith.repository_taxonomy.violations as {}
61
- with data.evolith.satellite_contracts.violations as {}
62
- with data.evolith.testing_pyramid.violations as {}
63
-
64
- count(violations) == 1
65
- violations[_].id == "DEP-01"
66
- }
67
-
68
- test_multi_source_violations {
69
- violations := main.violations with data.evolith.version_pinning.violations as {{"id": "DEP-01", "message": "fail1"}}
70
- with data.evolith.taxonomy.violations as {}
71
- with data.evolith.cli_readiness.violations as {}
72
- with data.evolith.evidence.violations as {}
73
- with data.evolith.mcp.violations as {}
74
- with data.evolith.ci_cd.violations as {{"id": "DEP-04", "message": "fail2"}}
75
- with data.evolith.governance.violations as {}
76
- with data.evolith.abac.violations as {}
77
- with data.evolith.acl.violations as {}
78
- with data.evolith.cicd_quality_gates.violations as {}
79
- with data.evolith.cli_core_parity.violations as {}
80
- with data.evolith.cli_release_readiness.violations as {}
81
- with data.evolith.compliance_baseline.violations as {}
82
- with data.evolith.dod.violations as {}
83
- with data.evolith.engineering_manifesto.violations as {}
84
- with data.evolith.executive_scorecards.violations as {}
85
- with data.evolith.gitflow_branching.violations as {}
86
- with data.evolith.hexagonal_architecture.violations as {}
87
- with data.evolith.knowledge_intake.violations as {}
88
- with data.evolith.multi_runtime.violations as {}
89
- with data.evolith.multi_tenancy.violations as {}
90
- with data.evolith.open_core_boundary.violations as {}
91
- with data.evolith.protocol_selection.violations as {}
92
- with data.evolith.repository_taxonomy.violations as {}
93
- with data.evolith.satellite_contracts.violations as {}
94
- with data.evolith.testing_pyramid.violations as {}
95
-
96
- count(violations) == 2
97
- violations[_].id == "DEP-01"
98
- violations[_].id == "DEP-04"
99
- }
100
-
101
- test_new_policy_violations {
102
- violations := main.violations with data.evolith.version_pinning.violations as {}
103
- with data.evolith.taxonomy.violations as {}
104
- with data.evolith.cli_readiness.violations as {}
105
- with data.evolith.evidence.violations as {}
106
- with data.evolith.mcp.violations as {}
107
- with data.evolith.ci_cd.violations as {}
108
- with data.evolith.governance.violations as {}
109
- with data.evolith.abac.violations as {{"id": "ABAC-01", "message": "abac fail"}}
110
- with data.evolith.acl.violations as {{"id": "ACL-01", "message": "acl fail"}}
111
- with data.evolith.cicd_quality_gates.violations as {{"id": "CICD-01", "message": "cicd fail"}}
112
- with data.evolith.cli_core_parity.violations as {{"id": "CLI-PAR-01", "message": "parity fail"}}
113
- with data.evolith.cli_release_readiness.violations as {{"id": "CLI-RR-01", "message": "release fail"}}
114
- with data.evolith.compliance_baseline.violations as {{"id": "CB-VAL-01", "message": "compliance fail"}}
115
- with data.evolith.dod.violations as {{"id": "DOD-01", "message": "dod fail"}}
116
- with data.evolith.engineering_manifesto.violations as {{"id": "EM-S-01", "message": "manifesto fail"}}
117
- with data.evolith.executive_scorecards.violations as {{"id": "DORA-01", "message": "dora fail"}}
118
- with data.evolith.gitflow_branching.violations as {{"id": "GIT-01", "message": "gitflow fail"}}
119
- with data.evolith.hexagonal_architecture.violations as {{"id": "HXA-01", "message": "hexagonal fail"}}
120
- with data.evolith.knowledge_intake.violations as {{"id": "KI-R01", "message": "ki fail"}}
121
- with data.evolith.multi_runtime.violations as {{"id": "RUNT-01", "message": "runtime fail"}}
122
- with data.evolith.multi_tenancy.violations as {{"id": "MTN-01", "message": "tenancy fail"}}
123
- with data.evolith.open_core_boundary.violations as {{"id": "OCB-01", "message": "ocb fail"}}
124
- with data.evolith.protocol_selection.violations as {{"id": "PROT-01", "message": "protocol fail"}}
125
- with data.evolith.repository_taxonomy.violations as {{"id": "TAX-05", "message": "taxonomy fail"}}
126
- with data.evolith.satellite_contracts.violations as {{"id": "SVC-01", "message": "satellite fail"}}
127
- with data.evolith.testing_pyramid.violations as {{"id": "TPY-01", "message": "testing fail"}}
128
-
129
- count(violations) == 19
130
- violations[_].id == "ABAC-01"
131
- violations[_].id == "ACL-01"
132
- violations[_].id == "CICD-01"
133
- violations[_].id == "CLI-PAR-01"
134
- violations[_].id == "CLI-RR-01"
135
- violations[_].id == "CB-VAL-01"
136
- violations[_].id == "DOD-01"
137
- violations[_].id == "EM-S-01"
138
- violations[_].id == "DORA-01"
139
- violations[_].id == "GIT-01"
140
- violations[_].id == "HXA-01"
141
- violations[_].id == "KI-R01"
142
- violations[_].id == "RUNT-01"
143
- violations[_].id == "MTN-01"
144
- violations[_].id == "OCB-01"
145
- violations[_].id == "PROT-01"
146
- violations[_].id == "TAX-05"
147
- violations[_].id == "SVC-01"
148
- violations[_].id == "TPY-01"
149
- }
@@ -1,61 +0,0 @@
1
- package evolith.mcp
2
-
3
- smoke_keys := [k | input.core.evidence[k]; contains(k, "mcp")]
4
-
5
- violations[{"id": "MCP-01", "message": "Run .harness/scripts/mcp-smoke.mjs to generate evidence"}] {
6
- count(smoke_keys) == 0
7
- }
8
-
9
- violations[{"id": "MCP-02", "message": "Run .harness/scripts/mcp-smoke.mjs to generate evidence"}] {
10
- count(smoke_keys) == 0
11
- }
12
-
13
- violations[{"id": "MCP-03", "message": "Run .harness/scripts/mcp-smoke.mjs to generate evidence"}] {
14
- count(smoke_keys) == 0
15
- }
16
-
17
- violations[{"id": "MCP-01", "message": "Evidence missing results field"}] {
18
- count(smoke_keys) > 0
19
- smoke := input.core.evidence[smoke_keys[0]]
20
- not smoke.results
21
- }
22
-
23
- violations[{"id": "MCP-01", "message": "initialize response missing from evidence"}] {
24
- count(smoke_keys) > 0
25
- smoke := input.core.evidence[smoke_keys[0]]
26
- smoke.results
27
- not smoke.results["initialize"]
28
- }
29
-
30
- violations[{"id": "MCP-02", "message": "tools/list response missing from evidence"}] {
31
- count(smoke_keys) > 0
32
- smoke := input.core.evidence[smoke_keys[0]]
33
- smoke.results
34
- not smoke.results["tools/list"]
35
- }
36
-
37
- violations[{"id": "MCP-03", "message": "resources/list response missing from evidence"}] {
38
- count(smoke_keys) > 0
39
- smoke := input.core.evidence[smoke_keys[0]]
40
- smoke.results
41
- not smoke.results["resources/list"]
42
- }
43
-
44
- violations[{"id": "MCP-04", "message": "MCP server.ts not found"}] {
45
- not input.core.cli.mcpServerSource
46
- }
47
-
48
- violations[{"id": "MCP-04", "message": "MCP transport config missing apiKey or local-only restriction"}] {
49
- src := input.core.cli.mcpServerSource
50
- not contains(src, "apiKey")
51
- not contains(src, "local-only")
52
- not contains(src, "localhost")
53
- }
54
-
55
- violations[{"id": "MCP-05", "message": "MCP tool calls SHOULD emit latency, success, failure, and error class metrics — no metrics instrumentation detected in MCP server source"}] {
56
- src := input.core.cli.mcpServerSource
57
- not contains(src, "latency")
58
- not contains(src, "metrics")
59
- not contains(src, "histogram")
60
- not contains(src, "counter")
61
- }
@@ -1,27 +0,0 @@
1
- package evolith.mcp_test
2
-
3
- import data.evolith.mcp
4
-
5
- test_complete_mcp_has_no_violations {
6
- input := {"core": {"cli": {"mcpServerSource": "apiKey localhost"}, "evidence": {"mcp-smoke.json": {"results": {"initialize": {}, "tools/list": {}, "resources/list": {}}, "status": "passed"}}}}
7
- violations := mcp.violations with input as input
8
- count(violations) == 0
9
- }
10
-
11
- test_missing_mcp_evidence_is_rejected {
12
- input := {"core": {"cli": {"mcpServerSource": ""}, "evidence": {}}}
13
- violations := mcp.violations with input as input
14
- violations[_].id == "MCP-01"
15
- }
16
-
17
- test_missing_server_source_is_rejected {
18
- input := {"core": {"cli": {"mcpServerSource": ""}, "evidence": {"mcp-smoke.json": {"results": {"initialize": {}, "tools/list": {}, "resources/list": {}}, "status": "passed"}}}}
19
- violations := mcp.violations with input as input
20
- violations[_].id == "MCP-04"
21
- }
22
-
23
- test_missing_resources_list_is_rejected {
24
- input := {"core": {"cli": {"mcpServerSource": "apiKey"}, "evidence": {"mcp-smoke.json": {"results": {"initialize": {}, "tools/list": {}}, "status": "passed"}}}}
25
- violations := mcp.violations with input as input
26
- violations[_].id == "MCP-03"
27
- }
@@ -1,33 +0,0 @@
1
- package evolith.multi_runtime
2
-
3
- violations[{"id": "RUNT-01", "message": "Runtime selection not documented or justified by workload profile"}] {
4
- not input.satellite.runtime.selectionDocumented
5
- }
6
-
7
- violations[{"id": "RUNT-02", "message": "Web APIs/BFF not using Node.js/TypeScript — required for I/O-bound workloads"}] {
8
- input.satellite.runtime.webApisNotNodeJs
9
- }
10
-
11
- violations[{"id": "RUNT-03", "message": "High compute/batch workloads not using .NET (C#) — required for compute-bound workloads"}] {
12
- input.satellite.runtime.highComputeNotDotNet
13
- }
14
-
15
- violations[{"id": "RUNT-05", "message": "Direct runtime dependency detected — cross-runtime calls must go through protocol boundaries"}] {
16
- input.satellite.runtime.hasDirectRuntimeDependency
17
- }
18
-
19
- violations[{"id": "RUNT-06", "message": "Synchronous inter-runtime communication not using gRPC"}] {
20
- input.satellite.runtime.syncInteropNotGrpc
21
- }
22
-
23
- violations[{"id": "RUNT-04", "message": "Mobile workloads with hardware access (camera, GPS, sensors) must use Android/Kotlin — not cross-platform web wrappers"}] {
24
- input.satellite.runtime.mobileHardwareNotKotlin
25
- }
26
-
27
- violations[{"id": "RUNT-07", "message": "Asynchronous inter-runtime communication must use a message broker (Kafka, RabbitMQ, NATS) — direct async calls between runtimes are prohibited"}] {
28
- input.satellite.runtime.asyncInteropNotMessageBroker
29
- }
30
-
31
- violations[{"id": "RUNT-08", "message": "Inter-runtime contracts not centrally stored and versioned"}] {
32
- not input.satellite.runtime.contractsCentralized
33
- }
@@ -1,53 +0,0 @@
1
- package evolith.multi_runtime_test
2
-
3
- import data.evolith.multi_runtime
4
-
5
- compliant_input := {"satellite": {"runtime": {
6
- "selectionDocumented": true,
7
- "webApisNotNodeJs": false,
8
- "highComputeNotDotNet": false,
9
- "hasDirectRuntimeDependency": false,
10
- "syncInteropNotGrpc": false,
11
- "contractsCentralized": true,
12
- }}}
13
-
14
- test_compliant_multi_runtime_has_no_violations {
15
- violations := multi_runtime.violations with input as compliant_input
16
- count(violations) == 0
17
- }
18
-
19
- test_runtime_selection_not_documented_is_rejected {
20
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/runtime/selectionDocumented", "value": false}])
21
- violations := multi_runtime.violations with input as i
22
- violations[_].id == "RUNT-01"
23
- }
24
-
25
- test_web_apis_not_nodejs_is_rejected {
26
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/runtime/webApisNotNodeJs", "value": true}])
27
- violations := multi_runtime.violations with input as i
28
- violations[_].id == "RUNT-02"
29
- }
30
-
31
- test_high_compute_not_dotnet_is_rejected {
32
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/runtime/highComputeNotDotNet", "value": true}])
33
- violations := multi_runtime.violations with input as i
34
- violations[_].id == "RUNT-03"
35
- }
36
-
37
- test_direct_runtime_dependency_is_rejected {
38
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/runtime/hasDirectRuntimeDependency", "value": true}])
39
- violations := multi_runtime.violations with input as i
40
- violations[_].id == "RUNT-05"
41
- }
42
-
43
- test_sync_interop_not_grpc_is_rejected {
44
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/runtime/syncInteropNotGrpc", "value": true}])
45
- violations := multi_runtime.violations with input as i
46
- violations[_].id == "RUNT-06"
47
- }
48
-
49
- test_contracts_not_centralized_is_rejected {
50
- i := json.patch(compliant_input, [{"op": "replace", "path": "/satellite/runtime/contractsCentralized", "value": false}])
51
- violations := multi_runtime.violations with input as i
52
- violations[_].id == "RUNT-08"
53
- }
@@ -1,33 +0,0 @@
1
- package evolith.multi_tenancy
2
-
3
- violations[{"id": "MTN-01", "message": "Application-layer tenant filtering not applied — all queries must include tenant_id filter"}] {
4
- not input.satellite.multiTenancy.applicationFiltering
5
- }
6
-
7
- violations[{"id": "MTN-02", "message": "Database-native tenant enforcement (RLS) not enabled as secondary failsafe"}] {
8
- not input.satellite.multiTenancy.databaseEnforcement
9
- }
10
-
11
- violations[{"id": "MTN-03", "message": "Tenant context not propagated through all layers"}] {
12
- not input.satellite.multiTenancy.tenantContextPropagation
13
- }
14
-
15
- violations[{"id": "MTN-04", "message": "Cross-tenant data access detected — strictly prohibited"}] {
16
- input.satellite.multiTenancy.crossTenantAccess
17
- }
18
-
19
- violations[{"id": "MTN-05", "message": "Multi-tenant schema strategy not defined in evolith.yaml"}] {
20
- not input.satellite.multiTenancy.schemaStrategyDefined
21
- }
22
-
23
- violations[{"id": "MTN-06", "message": "Tenant-scoped audit trail not maintained — all tenant data mutations must be logged with tenant context and actor"}] {
24
- not input.satellite.multiTenancy.tenantAuditTrailEnabled
25
- }
26
-
27
- violations[{"id": "MTN-07", "message": "Tenant migration path not defined — schema changes affecting tenant isolation must have a documented migration path"}] {
28
- not input.satellite.multiTenancy.tenantMigrationPathDefined
29
- }
30
-
31
- violations[{"id": "MTN-08", "message": "External APIs do not validate tenant context on every request"}] {
32
- not input.satellite.multiTenancy.apiTenantValidation
33
- }