@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.
- package/README.md +102 -0
- package/dist/domain/services/default-workflow-definition.js +4 -1
- package/dist/domain/services/default-workflow-definition.js.map +1 -1
- package/dist/gates/decision/gate-decision.js.map +1 -1
- package/package.json +1 -2
- package/rulesets/README.es.md +0 -170
- package/rulesets/README.md +0 -170
- package/rulesets/acl/README.es.md +0 -41
- package/rulesets/acl/README.md +0 -41
- package/rulesets/acl/anti-corruption-layer.rules.es.json +0 -99
- package/rulesets/acl/anti-corruption-layer.rules.json +0 -99
- package/rulesets/adr/ADR_COVERAGE.es.md +0 -133
- package/rulesets/adr/ADR_COVERAGE.md +0 -133
- package/rulesets/adr/README.es.md +0 -17
- package/rulesets/adr/README.md +0 -17
- package/rulesets/adr/adr-0002-hexagonal-architecture.rules.json +0 -103
- package/rulesets/adr/adr-0005-cicd-quality-gates.rules.json +0 -102
- package/rulesets/adr/adr-0010-multi-tenancy.rules.json +0 -129
- package/rulesets/adr/adr-0018-testing-pyramid.rules.json +0 -115
- package/rulesets/adr/adr-0032-protocol-selection.rules.json +0 -134
- package/rulesets/adr/adr-0040-multi-runtime.rules.json +0 -131
- package/rulesets/adr/adr-0050-gitflow-branching.rules.json +0 -176
- package/rulesets/adr/generated/adr-0001-monorepo-orchestration-principle.rules.json +0 -29
- package/rulesets/adr/generated/adr-0006-microservices-transition-via-sidecar-pattern.rules.json +0 -29
- package/rulesets/adr/generated/adr-0009-strict-dependency-pinning-and-automated-vulnerability-manage.rules.json +0 -29
- package/rulesets/adr/generated/adr-0011-fault-tolerance-and-resiliency-patterns.rules.json +0 -29
- package/rulesets/adr/generated/adr-0013-cloud-infrastructure-topology-and-disaster-recovery-dr.rules.json +0 -28
- package/rulesets/adr/generated/adr-0014-multi-layer-distributed-caching-strategy.rules.json +0 -29
- package/rulesets/adr/generated/adr-0015-event-driven-architecture-eda-for-intra-domain-communication.rules.json +0 -29
- package/rulesets/adr/generated/adr-0016-immutable-business-audit-trail-and-change-tracking.rules.json +0 -29
- package/rulesets/adr/generated/adr-0017-feature-flagging-strategy-for-progressive-delivery.rules.json +0 -28
- package/rulesets/adr/generated/adr-0019-tactical-design-patterns-for-future-proofing.rules.json +0 -29
- package/rulesets/adr/generated/adr-0020-identity-provider-abstraction-strategy.rules.json +0 -28
- package/rulesets/adr/generated/adr-0024-centralized-configuration-feature-platform.rules.json +0 -28
- package/rulesets/adr/generated/adr-0025-feature-flag-provider-abstraction-strategy.rules.json +0 -29
- package/rulesets/adr/generated/adr-0028-self-hosted-open-source-hybrid-infrastructure.rules.json +0 -29
- package/rulesets/adr/generated/adr-0030-two-tier-distributed-gateway-model.rules.json +0 -28
- package/rulesets/adr/generated/adr-0031-schema-per-bounded-context-and-domain-event-catalog.rules.json +0 -29
- package/rulesets/adr/generated/adr-0033-transactional-outbox-pattern-for-async-messaging.rules.json +0 -28
- package/rulesets/adr/generated/adr-0034-cqrs-pattern-application-matrix.rules.json +0 -29
- package/rulesets/adr/generated/adr-0035-distributed-saga-pattern-implementation-strategy.rules.json +0 -29
- package/rulesets/adr/generated/adr-0036-message-bus-delivery-flow-control-strategy.rules.json +0 -29
- package/rulesets/adr/generated/adr-0037-enterprise-performance-concurrency-chaos-verification-strate.rules.json +0 -28
- package/rulesets/adr/generated/adr-0039-deployment-topology-abstraction-environment-switcher.rules.json +0 -29
- package/rulesets/adr/generated/adr-0041-dual-engine-policy-evaluation-native-opa.rules.json +0 -28
- package/rulesets/adr/generated/adr-0044-configurable-security-persistence-strategy-agnosticism-vs-na.rules.json +0 -29
- package/rulesets/adr/generated/adr-0045-microservice-extraction-readiness-criteria.rules.json +0 -29
- package/rulesets/adr/generated/adr-0046-unified-traceability-via-w3c-tracecontext.rules.json +0 -29
- package/rulesets/adr/generated/adr-0047-progressive-architecture-evolution-framework-modular-monolit.rules.json +0 -29
- package/rulesets/adr/generated/adr-0048-enterprise-taxonomy-standardization-and-reference-layout.rules.json +0 -28
- package/rulesets/adr/generated/adr-0049-naming-semantics-clean-code-policy-e2e-and-global.rules.json +0 -29
- package/rulesets/adr/generated/adr-0051-enterprise-database-engine-selection-strategy.rules.json +0 -29
- package/rulesets/adr/generated/adr-0052-unit-testing-isolation-strategy-mocks-vs-stubs.rules.json +0 -29
- package/rulesets/adr/generated/adr-0053-integration-and-e2e-testing-strategy.rules.json +0 -29
- package/rulesets/adr/generated/adr-0054-database-design-and-normalization-standards.rules.json +0 -29
- package/rulesets/adr/generated/adr-0055-microfrontends-architecture-strategy.rules.json +0 -28
- package/rulesets/adr/generated/adr-0056-enterprise-naming-design-conventions-multi-language-multi-pl.rules.json +0 -29
- package/rulesets/adr/generated/adr-0057-architecture-intelligence-catalog.rules.json +0 -27
- package/rulesets/adr/generated/adr-0058-ai-consumable-architecture-knowledge.rules.json +0 -27
- package/rulesets/adr/generated/adr-0067-modular-monolith-persistence-boundaries.rules.json +0 -28
- package/rulesets/adr/generated/adr-0068-documentation-release-gitflow.rules.json +0 -29
- package/rulesets/adr/generated/adr-0069-ai-agent-context-protocol-integration.rules.json +0 -28
- package/rulesets/adr/generated/adr-0070-lean-root-repository-taxonomy.rules.json +0 -29
- package/rulesets/adr/generated/adr-0071-domain-layer-base-class-and-inheritance-strategy.rules.json +0 -29
- package/rulesets/adr/generated/adr-0072-utc-date-storage-browser-timezone-detection-and-language-res.rules.json +0 -29
- package/rulesets/adr/generated/adr-0073-unified-cli-mcp-output-contract-and-gate-evidence-schema.rules.json +0 -29
- package/rulesets/adr/generated/adr-0074-evolith-core-api-native-exposure-layer.rules.json +0 -29
- package/rulesets/adr/generated/adr-0075-core-api-authentication-strategy.rules.json +0 -28
- package/rulesets/adr/generated/adr-0076-domain-oriented-microservice-architecture-doma.rules.json +0 -28
- package/rulesets/adr/generated/adr-0077-masstransit-v9-commercial-pivot-stay-on-v8-monitor-opentrans.rules.json +0 -28
- package/rulesets/adr/generated/adr-0078-domain-financial-separation-governance.rules.json +0 -29
- package/rulesets/adr/generated/adr-0079-multi-topology-reference-corpus-and-topology-manifest-contra.rules.json +0 -29
- package/rulesets/adr/generated/adr-0080-remote-repository-reference-contract.rules.json +0 -29
- package/rulesets/adr/generated/adr-0081-agentic-ai-sandbox-isolation-boundary.rules.json +0 -29
- package/rulesets/adr/generated/adr-0082-agentic-ai-prompt-context-and-tool-trust-boundary.rules.json +0 -28
- package/rulesets/adr/generated/adr-0083-agentic-ai-action-authorization-and-audit.rules.json +0 -29
- package/rulesets/adr/generated/adr-0084-data-mesh-and-data-as-a-product.rules.json +0 -29
- package/rulesets/adr/generated/adr-0085-agnostic-opa-wasm-distribution-architecture.rules.json +0 -28
- package/rulesets/adr/generated/adr-0086-agentic-ai-telemetry-cost-control-standard.rules.json +0 -27
- package/rulesets/adr/generated/adr-0087-attribute-based-access-control-abac-for-agentic-tool-executi.rules.json +0 -29
- package/rulesets/adr/generated/adr-0088-sovereign-identity-for-agentic-ai.rules.json +0 -29
- package/rulesets/adr/generated/adr-0089-event-driven-agentic-workflow-pattern.rules.json +0 -28
- package/rulesets/adr/generated/adr-0090-rag-knowledge-governance-standard.rules.json +0 -29
- package/rulesets/adr/generated/adr-0091-workload-identity-token-rotation-standard.rules.json +0 -29
- package/rulesets/adr/generated/adr-0092-agent-infinite-loop-prevention-and-circuit-breaker-rules.rules.json +0 -29
- package/rulesets/adr/generated/adr-0093-concurrency-control-and-resource-locking-standard-for-mcp-to.rules.json +0 -29
- package/rulesets/adr/generated/adr-0094-multi-agent-handoff-and-task-delegation-standards.rules.json +0 -29
- package/rulesets/adr/generated/adr-0095-serverless-architecture-governance.rules.json +0 -29
- package/rulesets/adr/generated/adr-0096-edge-computing-architecture-governance.rules.json +0 -29
- package/rulesets/adr/generated/adr-0097-knowledge-lifecycle-governance-standard.rules.json +0 -29
- package/rulesets/adr/generated/adr-0098-rest-uri-versioning-and-deprecation-policy.rules.json +0 -29
- package/rulesets/adr/generated/adr-0099-opa-bundle-distribution-via-s3-minio.rules.json +0 -27
- package/rulesets/adr/generated/adr-ai-augmented-0001-harness-engineering-for-ai-augmented-development.rules.json +0 -29
- package/rulesets/adr/generated/adr-ai-augmented-0002-mcp-integration-protocol-for-agent-tool-invocation.rules.json +0 -29
- package/rulesets/adr/generated/adr-ai-augmented-0003-model-selection-governance-for-ai-augmented-workflows.rules.json +0 -29
- package/rulesets/adr/generated/adr-ai-augmented-0004-agents-md-as-mandatory-repository-artifact.rules.json +0 -29
- package/rulesets/adr/generated/adr-ai-augmented-0005-human-in-the-loop-policy-for-autonomous-agent-operations.rules.json +0 -29
- package/rulesets/adr/generated/adr-android-0042-canonical-android-native-mobile-architecture.rules.json +0 -29
- package/rulesets/adr/generated/adr-dotnet-0041-canonical-net-c-backend-architecture.rules.json +0 -29
- package/rulesets/adr/generated/adr-dotnet-0060-net-multi-tenancy-dual-layer-strategy-ef-core-sql-server.rules.json +0 -29
- package/rulesets/adr/generated/adr-dotnet-0061-transactional-event-lifecycle-in-ef-core.rules.json +0 -28
- package/rulesets/adr/generated/adr-dotnet-0062-net-immutable-audit-trail-via-ddl-triggers-delta-capture.rules.json +0 -29
- package/rulesets/adr/generated/adr-dotnet-0063-b2b-request-idempotency-middleware-in-asp-net-core.rules.json +0 -28
- package/rulesets/adr/generated/adr-dotnet-0064-net-request-scope-observability-context-propagation.rules.json +0 -29
- package/rulesets/adr/generated/adr-dotnet-0065-net-pii-safe-structured-logging-pipeline-serilog.rules.json +0 -29
- package/rulesets/adr/generated/adr-dotnet-0066-net-lightweight-http-idempotency-via-imemorycache-idistribut.rules.json +0 -28
- package/rulesets/adr/generated/adr-dotnet-0069-net-grpc-service-setup-protobuf-contracts.rules.json +0 -29
- package/rulesets/adr/generated/adr-dotnet-0070-net-api-endpoint-strategy.rules.json +0 -29
- package/rulesets/adr/generated/adr-dotnet-0071-net-data-access-strategy-ef-core-as-default-orm-dapper-for-o.rules.json +0 -27
- package/rulesets/adr/generated/adr-dotnet-0072-net-aop-cross-cutting-concern-strategy-dispatchproxy-over-pi.rules.json +0 -29
- package/rulesets/adr/generated/adr-nodejs-0003-strict-typescript-standards.rules.json +0 -29
- package/rulesets/adr/generated/adr-nodejs-0004-frontend-offline-resilience.rules.json +0 -28
- package/rulesets/adr/generated/adr-nodejs-0007-observability-with-opentelemetry-loki-and-jaeger.rules.json +0 -29
- package/rulesets/adr/generated/adr-nodejs-0008-progressive-multi-module-evolution-with-api-gateway-and-bff-.rules.json +0 -28
- package/rulesets/adr/generated/adr-nodejs-0012-advanced-authorization-rbac-abac-strategy.rules.json +0 -28
- package/rulesets/adr/generated/adr-nodejs-0021-high-performance-authentication-graph-compilation.rules.json +0 -28
- package/rulesets/adr/generated/adr-nodejs-0022-contextual-authentication-and-pluggable-output-projections.rules.json +0 -28
- package/rulesets/adr/generated/adr-nodejs-0023-centralized-authorization-core-strategy.rules.json +0 -28
- package/rulesets/adr/generated/adr-nodejs-0026-adaptive-mfa-and-passwordless-platform.rules.json +0 -28
- package/rulesets/adr/generated/adr-nodejs-0027-dual-protocol-api-strategy-rest-grpc.rules.json +0 -28
- package/rulesets/adr/generated/adr-nodejs-0029-adoption-of-tactical-ddd-primitives-library.rules.json +0 -29
- package/rulesets/adr/generated/adr-nodejs-0038-enterprise-error-handling-result-pattern-strategy.rules.json +0 -29
- package/rulesets/adr/generated/adr-nodejs-0043-data-access-and-orm-strategy-for-node-js.rules.json +0 -29
- package/rulesets/adr/generated/adr-nodejs-0044-frontend-clean-architecture-layer-boundaries-react.rules.json +0 -29
- package/rulesets/adr/generated/adr-nodejs-0045-frontend-state-management-zustand-tanstack-query-dual-strate.rules.json +0 -29
- package/rulesets/adr/generated/adr-nodejs-0046-prohibition-of-raw-technical-identifiers-in-user-interfaces.rules.json +0 -29
- package/rulesets/adr/generated/adr-nodejs-0047-actionable-user-error-contract-and-correlated-diagnostics.rules.json +0 -29
- package/rulesets/adr/generated/adr-nodejs-0048-feature-flag-system-scope-and-structured-criteria-model.rules.json +0 -29
- package/rulesets/adr/generated/adr-nodejs-0074-monorepo-orchestration-with-nx.rules.json +0 -29
- package/rulesets/adr/generated/adr-nodejs-0075-application-gateway-bff-with-nestjs.rules.json +0 -29
- package/rulesets/architecture/README.es.md +0 -21
- package/rulesets/architecture/README.md +0 -21
- package/rulesets/architecture/opa/progressive-axis.rego +0 -50
- package/rulesets/cli/README.es.md +0 -17
- package/rulesets/cli/README.md +0 -17
- package/rulesets/cli/core-parity.rules.json +0 -61
- package/rulesets/cli/release-readiness.rules.json +0 -77
- package/rulesets/compliance-baseline/README.es.md +0 -26
- package/rulesets/compliance-baseline/README.md +0 -26
- package/rulesets/compliance-baseline/compliance-baseline.rules.json +0 -81
- package/rulesets/contracts/README.es.md +0 -19
- package/rulesets/contracts/README.md +0 -19
- package/rulesets/contracts/evolith-machine-contracts.json +0 -29
- package/rulesets/contracts/fixtures/gate-evidence.success.json +0 -10
- package/rulesets/contracts/fixtures/output-envelope.success.json +0 -23
- package/rulesets/cross-cutting/README.es.md +0 -14
- package/rulesets/cross-cutting/README.md +0 -14
- package/rulesets/cross-cutting/compliance-baseline.rules.json +0 -81
- package/rulesets/cross-cutting/definition-of-done.rules.json +0 -135
- package/rulesets/cross-cutting/engineering-manifesto.rules.json +0 -145
- package/rulesets/cross-cutting/repository-taxonomy.rules.json +0 -172
- package/rulesets/definition-of-done/README.es.md +0 -26
- package/rulesets/definition-of-done/README.md +0 -26
- package/rulesets/definition-of-done/definition-of-done.rules.json +0 -135
- package/rulesets/engineering-manifesto/README.es.md +0 -26
- package/rulesets/engineering-manifesto/README.md +0 -26
- package/rulesets/engineering-manifesto/engineering-manifesto.rules.json +0 -145
- package/rulesets/evidence/README.es.md +0 -12
- package/rulesets/evidence/README.md +0 -12
- package/rulesets/evidence/evidence-manifest.rules.json +0 -48
- package/rulesets/executive-scorecards/executive-scorecards.rules.es.json +0 -213
- package/rulesets/executive-scorecards/executive-scorecards.rules.json +0 -213
- package/rulesets/governance/README.es.md +0 -13
- package/rulesets/governance/README.md +0 -13
- package/rulesets/governance/abac-mcp-access.rules.es.json +0 -41
- package/rulesets/governance/abac-mcp-access.rules.json +0 -41
- package/rulesets/governance/executive-scorecards.rules.es.json +0 -213
- package/rulesets/governance/executive-scorecards.rules.json +0 -213
- package/rulesets/governance/inheritance.rules.json +0 -115
- package/rulesets/governance/knowledge-intake.rules.json +0 -18
- package/rulesets/governance/open-core-boundary.rules.es.json +0 -148
- package/rulesets/governance/open-core-boundary.rules.json +0 -148
- package/rulesets/governance/satellite-contracts.rules.json +0 -183
- package/rulesets/infrastructure/helm-enforcement.rules.json +0 -21
- package/rulesets/infrastructure/opa/helm-enforcement.rego +0 -25
- package/rulesets/infrastructure/opa/helm-enforcement.test.rego +0 -31
- package/rulesets/infrastructure/opa/opa-sidecar-bundle.rego +0 -115
- package/rulesets/infrastructure/opa/opa-sidecar-bundle.test.rego +0 -66
- package/rulesets/infrastructure/opa-sidecar-bundle.rules.json +0 -18
- package/rulesets/mcp/README.es.md +0 -12
- package/rulesets/mcp/README.md +0 -12
- package/rulesets/mcp/protocol-compliance.rules.json +0 -57
- package/rulesets/observability/README.es.md +0 -12
- package/rulesets/observability/README.md +0 -12
- package/rulesets/observability/telemetry-evidence.rules.json +0 -48
- package/rulesets/opa/README.es.md +0 -22
- package/rulesets/opa/README.md +0 -22
- package/rulesets/opa/abac-mcp-tool-access.rego +0 -122
- package/rulesets/opa/abac-mcp-tool-access.test.rego +0 -33
- package/rulesets/opa/anti-corruption-layer.rego +0 -39
- package/rulesets/opa/anti-corruption-layer.test.rego +0 -118
- package/rulesets/opa/ci-cd.rego +0 -41
- package/rulesets/opa/ci-cd.test.rego +0 -23
- package/rulesets/opa/cicd-quality-gates.rego +0 -29
- package/rulesets/opa/cicd-quality-gates.test.rego +0 -54
- package/rulesets/opa/cli-core-parity.rego +0 -17
- package/rulesets/opa/cli-core-parity.test.rego +0 -39
- package/rulesets/opa/cli-readiness.rego +0 -32
- package/rulesets/opa/cli-readiness.test.rego +0 -23
- package/rulesets/opa/cli-release-readiness.rego +0 -21
- package/rulesets/opa/cli-release-readiness.test.rego +0 -46
- package/rulesets/opa/compliance-baseline.rego +0 -95
- package/rulesets/opa/compliance-baseline.test.rego +0 -89
- package/rulesets/opa/dod.rego +0 -42
- package/rulesets/opa/dod.test.rego +0 -250
- package/rulesets/opa/engineering-manifesto.rego +0 -78
- package/rulesets/opa/engineering-manifesto.test.rego +0 -133
- package/rulesets/opa/evidence.rego +0 -64
- package/rulesets/opa/evidence.test.rego +0 -23
- package/rulesets/opa/executive-scorecards.rego +0 -41
- package/rulesets/opa/executive-scorecards.test.rego +0 -60
- package/rulesets/opa/gitflow-branching.rego +0 -41
- package/rulesets/opa/gitflow-branching.test.rego +0 -60
- package/rulesets/opa/governance.rego +0 -39
- package/rulesets/opa/governance.test.rego +0 -23
- package/rulesets/opa/hexagonal-architecture.rego +0 -33
- package/rulesets/opa/hexagonal-architecture.test.rego +0 -57
- package/rulesets/opa/infrastructure/helm-enforcement.rego +0 -33
- package/rulesets/opa/infrastructure/opa-sidecar-bundle.rego +0 -42
- package/rulesets/opa/knowledge-intake.rego +0 -98
- package/rulesets/opa/knowledge-intake.test.rego +0 -50
- package/rulesets/opa/main.rego +0 -147
- package/rulesets/opa/main_test.rego +0 -149
- package/rulesets/opa/mcp.rego +0 -61
- package/rulesets/opa/mcp.test.rego +0 -27
- package/rulesets/opa/multi-runtime.rego +0 -33
- package/rulesets/opa/multi-runtime.test.rego +0 -53
- package/rulesets/opa/multi-tenancy.rego +0 -33
- package/rulesets/opa/multi-tenancy.test.rego +0 -53
- package/rulesets/opa/open-core-boundary.rego +0 -33
- package/rulesets/opa/open-core-boundary.test.rego +0 -60
- package/rulesets/opa/protocol-selection.rego +0 -29
- package/rulesets/opa/protocol-selection.test.rego +0 -46
- package/rulesets/opa/rbac/gate-role-enforcement.rego +0 -112
- package/rulesets/opa/repository-taxonomy.rego +0 -98
- package/rulesets/opa/repository-taxonomy.test.rego +0 -91
- package/rulesets/opa/satellite-contracts.rego +0 -42
- package/rulesets/opa/satellite-contracts.test.rego +0 -70
- package/rulesets/opa/schemas/abac-mcp-tool-access.input.schema.json +0 -21
- package/rulesets/opa/schemas/anti-corruption-layer.input.schema.json +0 -25
- package/rulesets/opa/schemas/ci-cd.input.schema.json +0 -27
- package/rulesets/opa/schemas/cicd-quality-gates.input.schema.json +0 -33
- package/rulesets/opa/schemas/cli-core-parity.input.schema.json +0 -30
- package/rulesets/opa/schemas/cli-readiness.input.schema.json +0 -28
- package/rulesets/opa/schemas/cli-release-readiness.input.schema.json +0 -26
- package/rulesets/opa/schemas/compliance-baseline.input.schema.json +0 -25
- package/rulesets/opa/schemas/dod.input.schema.json +0 -38
- package/rulesets/opa/schemas/engineering-manifesto.input.schema.json +0 -24
- package/rulesets/opa/schemas/evidence.input.schema.json +0 -35
- package/rulesets/opa/schemas/executive-scorecards.input.schema.json +0 -36
- package/rulesets/opa/schemas/gitflow-branching.input.schema.json +0 -36
- package/rulesets/opa/schemas/governance.input.schema.json +0 -19
- package/rulesets/opa/schemas/hexagonal-architecture.input.schema.json +0 -46
- package/rulesets/opa/schemas/knowledge-intake.input.schema.json +0 -57
- package/rulesets/opa/schemas/mcp.input.schema.json +0 -38
- package/rulesets/opa/schemas/multi-runtime.input.schema.json +0 -27
- package/rulesets/opa/schemas/multi-tenancy.input.schema.json +0 -27
- package/rulesets/opa/schemas/open-core-boundary.input.schema.json +0 -36
- package/rulesets/opa/schemas/protocol-selection.input.schema.json +0 -26
- package/rulesets/opa/schemas/repository-taxonomy.input.schema.json +0 -18
- package/rulesets/opa/schemas/satellite-contracts.input.schema.json +0 -38
- package/rulesets/opa/schemas/taxonomy.input.schema.json +0 -27
- package/rulesets/opa/schemas/testing-pyramid.input.schema.json +0 -42
- package/rulesets/opa/schemas/version-pinning.input.schema.json +0 -39
- package/rulesets/opa/sdlc/coverage.rego +0 -49
- package/rulesets/opa/sdlc/coverage.test.rego +0 -29
- package/rulesets/opa/sdlc/pyramid-distribution.rego +0 -31
- package/rulesets/opa/sdlc/pyramid-distribution.test.rego +0 -33
- package/rulesets/opa/taxonomy.rego +0 -51
- package/rulesets/opa/taxonomy.test.rego +0 -28
- package/rulesets/opa/telemetry-evidence.rego +0 -102
- package/rulesets/opa/testing-pyramid.rego +0 -49
- package/rulesets/opa/testing-pyramid.test.rego +0 -81
- package/rulesets/opa/version-pinning.rego +0 -99
- package/rulesets/opa/version-pinning.test.rego +0 -28
- package/rulesets/phase-gates/README.es.md +0 -28
- package/rulesets/phase-gates/README.md +0 -28
- package/rulesets/phase-gates/phase-gates.rules.json +0 -297
- package/rulesets/quality-thresholds/README.es.md +0 -28
- package/rulesets/quality-thresholds/README.md +0 -28
- package/rulesets/quality-thresholds/quality-thresholds.rules.json +0 -96
- package/rulesets/repository-taxonomy/README.es.md +0 -26
- package/rulesets/repository-taxonomy/README.md +0 -26
- package/rulesets/repository-taxonomy/repository-taxonomy.rules.json +0 -172
- package/rulesets/satellite-contracts/README.es.md +0 -27
- package/rulesets/satellite-contracts/README.md +0 -27
- package/rulesets/satellite-contracts/satellite-contracts.rules.json +0 -183
- package/rulesets/schema/README.es.md +0 -39
- package/rulesets/schema/README.md +0 -39
- package/rulesets/schema/adr.schema.json +0 -138
- package/rulesets/schema/agile-backlog.schema.json +0 -91
- package/rulesets/schema/ballpark-estimation.schema.json +0 -109
- package/rulesets/schema/build-vs-compose.schema.json +0 -98
- package/rulesets/schema/cli-impact-analysis.schema.json +0 -114
- package/rulesets/schema/discovery-canvas.schema.json +0 -92
- package/rulesets/schema/evolith-user-story.schema.json +0 -105
- package/rulesets/schema/evolith-yaml.schema.json +0 -191
- package/rulesets/schema/functional-story.schema.json +0 -111
- package/rulesets/schema/gate-evidence.schema.json +0 -85
- package/rulesets/schema/integration-evidence.schema.json +0 -47
- package/rulesets/schema/knowledge-intake.schema.json +0 -67
- package/rulesets/schema/knowledge-projection.schema.json +0 -24
- package/rulesets/schema/maturity-evidence.schema.json +0 -59
- package/rulesets/schema/observability-validation.schema.json +0 -85
- package/rulesets/schema/on-call-handoff.schema.json +0 -91
- package/rulesets/schema/output-envelope.schema.json +0 -102
- package/rulesets/schema/prd.schema.json +0 -117
- package/rulesets/schema/release-notes.schema.json +0 -138
- package/rulesets/schema/rollback-rehearsal.schema.json +0 -73
- package/rulesets/schema/ruleset-sdlc.schema.json +0 -59
- package/rulesets/schema/ruleset-standard.schema.json +0 -73
- package/rulesets/schema/security-scan-report.schema.json +0 -79
- package/rulesets/schema/source-registry.schema.json +0 -51
- package/rulesets/schema/technical-feasibility.schema.json +0 -66
- package/rulesets/schema/technical-story.schema.json +0 -112
- package/rulesets/schema/test-summary-report.schema.json +0 -158
- package/rulesets/schema/topology-composition.schema.json +0 -43
- package/rulesets/schema/topology-manifest.schema.json +0 -421
- package/rulesets/sdlc/README.es.md +0 -12
- package/rulesets/sdlc/README.md +0 -12
- package/rulesets/sdlc/default-workflow.yaml +0 -73
- package/rulesets/sdlc/dependency-pinning.rules.json +0 -183
- package/rulesets/sdlc/phase-gates.rules.json +0 -297
- package/rulesets/sdlc/quality-thresholds.rules.json +0 -96
- package/rulesets/topologies/README.es.md +0 -42
- package/rulesets/topologies/README.md +0 -42
- package/rulesets/topologies/agentic-ai/README.es.md +0 -142
- package/rulesets/topologies/agentic-ai/README.md +0 -142
- package/rulesets/topologies/agentic-ai/adoption.es.md +0 -37
- package/rulesets/topologies/agentic-ai/adoption.md +0 -37
- package/rulesets/topologies/agentic-ai/agent.config.schema.json +0 -100
- package/rulesets/topologies/agentic-ai/agentic-ai.rego +0 -46
- package/rulesets/topologies/agentic-ai/agentic-ai.rules.json +0 -109
- package/rulesets/topologies/agentic-ai/agentic-ai.test.rego +0 -68
- package/rulesets/topologies/agentic-ai/agentic-ai.wasm +0 -0
- package/rulesets/topologies/agentic-ai/cli/cli-flows.es.md +0 -35
- package/rulesets/topologies/agentic-ai/cli/cli-flows.md +0 -45
- package/rulesets/topologies/agentic-ai/evidence.es.md +0 -25
- package/rulesets/topologies/agentic-ai/evidence.md +0 -25
- package/rulesets/topologies/agentic-ai/evolution.es.md +0 -26
- package/rulesets/topologies/agentic-ai/evolution.md +0 -26
- package/rulesets/topologies/agentic-ai/fixtures/invalid-agent.config.json +0 -48
- package/rulesets/topologies/agentic-ai/fixtures/valid-agent.config.json +0 -48
- package/rulesets/topologies/agentic-ai/maturity.es.md +0 -33
- package/rulesets/topologies/agentic-ai/maturity.md +0 -33
- package/rulesets/topologies/agentic-ai/mcp/mcp-manifest.json +0 -100
- package/rulesets/topologies/agentic-ai/openapi/openapi.yaml +0 -187
- package/rulesets/topologies/agentic-ai/operations.es.md +0 -32
- package/rulesets/topologies/agentic-ai/operations.md +0 -32
- package/rulesets/topologies/agentic-ai/parity-fixtures/compliant.json +0 -18
- package/rulesets/topologies/agentic-ai/parity-fixtures/violation.json +0 -22
- package/rulesets/topologies/agentic-ai/patterns.es.md +0 -32
- package/rulesets/topologies/agentic-ai/patterns.md +0 -32
- package/rulesets/topologies/agentic-ai/resilience.es.md +0 -26
- package/rulesets/topologies/agentic-ai/resilience.md +0 -26
- package/rulesets/topologies/agentic-ai/runbooks.es.md +0 -48
- package/rulesets/topologies/agentic-ai/runbooks.md +0 -48
- package/rulesets/topologies/agentic-ai/security.es.md +0 -26
- package/rulesets/topologies/agentic-ai/security.md +0 -26
- package/rulesets/topologies/agentic-ai/topology.manifest.json +0 -127
- package/rulesets/topologies/data-mesh/README.es.md +0 -69
- package/rulesets/topologies/data-mesh/README.md +0 -69
- package/rulesets/topologies/data-mesh/adoption.es.md +0 -95
- package/rulesets/topologies/data-mesh/adoption.md +0 -95
- package/rulesets/topologies/data-mesh/cli/cli-flows.es.md +0 -41
- package/rulesets/topologies/data-mesh/cli/cli-flows.md +0 -53
- package/rulesets/topologies/data-mesh/data-mesh.rego +0 -11
- package/rulesets/topologies/data-mesh/data-mesh.rules.json +0 -100
- package/rulesets/topologies/data-mesh/data-mesh.test.rego +0 -107
- package/rulesets/topologies/data-mesh/data-mesh.wasm +0 -0
- package/rulesets/topologies/data-mesh/evidence.es.md +0 -111
- package/rulesets/topologies/data-mesh/evidence.md +0 -111
- package/rulesets/topologies/data-mesh/evolution.es.md +0 -67
- package/rulesets/topologies/data-mesh/evolution.md +0 -67
- package/rulesets/topologies/data-mesh/fixtures/invalid.topology.config.json +0 -12
- package/rulesets/topologies/data-mesh/fixtures/valid.topology.config.json +0 -12
- package/rulesets/topologies/data-mesh/maturity.es.md +0 -36
- package/rulesets/topologies/data-mesh/maturity.md +0 -36
- package/rulesets/topologies/data-mesh/mcp/mcp-manifest.json +0 -68
- package/rulesets/topologies/data-mesh/openapi/openapi.yaml +0 -186
- package/rulesets/topologies/data-mesh/operations.es.md +0 -63
- package/rulesets/topologies/data-mesh/operations.md +0 -63
- package/rulesets/topologies/data-mesh/parity-fixtures/compliant.json +0 -18
- package/rulesets/topologies/data-mesh/parity-fixtures/violation.json +0 -21
- package/rulesets/topologies/data-mesh/patterns.es.md +0 -67
- package/rulesets/topologies/data-mesh/patterns.md +0 -67
- package/rulesets/topologies/data-mesh/resilience.es.md +0 -64
- package/rulesets/topologies/data-mesh/resilience.md +0 -64
- package/rulesets/topologies/data-mesh/runbooks.es.md +0 -147
- package/rulesets/topologies/data-mesh/runbooks.md +0 -147
- package/rulesets/topologies/data-mesh/security.es.md +0 -66
- package/rulesets/topologies/data-mesh/security.md +0 -66
- package/rulesets/topologies/data-mesh/topology.config.schema.json +0 -30
- package/rulesets/topologies/data-mesh/topology.manifest.json +0 -107
- package/rulesets/topologies/edge-computing/README.es.md +0 -81
- package/rulesets/topologies/edge-computing/README.md +0 -81
- package/rulesets/topologies/edge-computing/adoption.es.md +0 -268
- package/rulesets/topologies/edge-computing/adoption.md +0 -268
- package/rulesets/topologies/edge-computing/cli/cli-flows.es.md +0 -41
- package/rulesets/topologies/edge-computing/cli/cli-flows.md +0 -53
- package/rulesets/topologies/edge-computing/edge-computing.rego +0 -41
- package/rulesets/topologies/edge-computing/edge-computing.rules.json +0 -50
- package/rulesets/topologies/edge-computing/edge-computing.test.rego +0 -33
- package/rulesets/topologies/edge-computing/edge-computing.wasm +0 -0
- package/rulesets/topologies/edge-computing/evidence.es.md +0 -263
- package/rulesets/topologies/edge-computing/evidence.md +0 -263
- package/rulesets/topologies/edge-computing/evolution.es.md +0 -257
- package/rulesets/topologies/edge-computing/evolution.md +0 -257
- package/rulesets/topologies/edge-computing/fixtures/invalid.topology.config.json +0 -6
- package/rulesets/topologies/edge-computing/fixtures/valid.topology.config.json +0 -6
- package/rulesets/topologies/edge-computing/maturity.es.md +0 -36
- package/rulesets/topologies/edge-computing/maturity.md +0 -36
- package/rulesets/topologies/edge-computing/mcp/mcp-manifest.json +0 -72
- package/rulesets/topologies/edge-computing/openapi/openapi.yaml +0 -187
- package/rulesets/topologies/edge-computing/operations.es.md +0 -148
- package/rulesets/topologies/edge-computing/operations.md +0 -148
- package/rulesets/topologies/edge-computing/parity-fixtures/compliant.json +0 -12
- package/rulesets/topologies/edge-computing/parity-fixtures/violation.json +0 -13
- package/rulesets/topologies/edge-computing/patterns.es.md +0 -291
- package/rulesets/topologies/edge-computing/patterns.md +0 -290
- package/rulesets/topologies/edge-computing/resilience.es.md +0 -232
- package/rulesets/topologies/edge-computing/resilience.md +0 -229
- package/rulesets/topologies/edge-computing/runbooks.es.md +0 -405
- package/rulesets/topologies/edge-computing/runbooks.md +0 -405
- package/rulesets/topologies/edge-computing/security.es.md +0 -218
- package/rulesets/topologies/edge-computing/security.md +0 -218
- package/rulesets/topologies/edge-computing/topology.config.schema.json +0 -13
- package/rulesets/topologies/edge-computing/topology.manifest.json +0 -113
- package/rulesets/topologies/event-driven/README.es.md +0 -71
- package/rulesets/topologies/event-driven/README.md +0 -71
- package/rulesets/topologies/event-driven/adoption.es.md +0 -67
- package/rulesets/topologies/event-driven/adoption.md +0 -67
- package/rulesets/topologies/event-driven/cli/cli-flows.es.md +0 -41
- package/rulesets/topologies/event-driven/cli/cli-flows.md +0 -53
- package/rulesets/topologies/event-driven/event-driven.rego +0 -11
- package/rulesets/topologies/event-driven/event-driven.rules.json +0 -100
- package/rulesets/topologies/event-driven/event-driven.test.rego +0 -107
- package/rulesets/topologies/event-driven/event-driven.wasm +0 -0
- package/rulesets/topologies/event-driven/evidence.es.md +0 -69
- package/rulesets/topologies/event-driven/evidence.md +0 -69
- package/rulesets/topologies/event-driven/evolution.es.md +0 -59
- package/rulesets/topologies/event-driven/evolution.md +0 -59
- package/rulesets/topologies/event-driven/fixtures/invalid.topology.config.json +0 -12
- package/rulesets/topologies/event-driven/fixtures/valid.topology.config.json +0 -12
- package/rulesets/topologies/event-driven/maturity.es.md +0 -36
- package/rulesets/topologies/event-driven/maturity.md +0 -36
- package/rulesets/topologies/event-driven/mcp/mcp-manifest.json +0 -68
- package/rulesets/topologies/event-driven/openapi/openapi.yaml +0 -186
- package/rulesets/topologies/event-driven/operations.es.md +0 -67
- package/rulesets/topologies/event-driven/operations.md +0 -67
- package/rulesets/topologies/event-driven/parity-fixtures/compliant.json +0 -18
- package/rulesets/topologies/event-driven/parity-fixtures/violation.json +0 -21
- package/rulesets/topologies/event-driven/patterns.es.md +0 -68
- package/rulesets/topologies/event-driven/patterns.md +0 -68
- package/rulesets/topologies/event-driven/resilience.es.md +0 -65
- package/rulesets/topologies/event-driven/resilience.md +0 -65
- package/rulesets/topologies/event-driven/runbooks.es.md +0 -79
- package/rulesets/topologies/event-driven/runbooks.md +0 -79
- package/rulesets/topologies/event-driven/security.es.md +0 -59
- package/rulesets/topologies/event-driven/security.md +0 -59
- package/rulesets/topologies/event-driven/topology.config.schema.json +0 -30
- package/rulesets/topologies/event-driven/topology.manifest.json +0 -109
- package/rulesets/topologies/progressive-axis/distributed-modules/distributed-modules.rules.es.json +0 -111
- package/rulesets/topologies/progressive-axis/distributed-modules/distributed-modules.rules.json +0 -111
- package/rulesets/topologies/progressive-axis/microservices/microservices.rules.es.json +0 -106
- package/rulesets/topologies/progressive-axis/microservices/microservices.rules.json +0 -106
- package/rulesets/topologies/progressive-axis/modular-monolith/modular-monolith.rules.es.json +0 -148
- package/rulesets/topologies/progressive-axis/modular-monolith/modular-monolith.rules.json +0 -148
- package/rulesets/topologies/serverless/README.es.md +0 -74
- package/rulesets/topologies/serverless/README.md +0 -74
- package/rulesets/topologies/serverless/adoption.es.md +0 -50
- package/rulesets/topologies/serverless/adoption.md +0 -50
- package/rulesets/topologies/serverless/cli/cli-flows.es.md +0 -41
- package/rulesets/topologies/serverless/cli/cli-flows.md +0 -53
- package/rulesets/topologies/serverless/evidence.es.md +0 -66
- package/rulesets/topologies/serverless/evidence.md +0 -66
- package/rulesets/topologies/serverless/evolution.es.md +0 -36
- package/rulesets/topologies/serverless/evolution.md +0 -36
- package/rulesets/topologies/serverless/fixtures/invalid.topology.config.json +0 -6
- package/rulesets/topologies/serverless/fixtures/valid.topology.config.json +0 -6
- package/rulesets/topologies/serverless/maturity.es.md +0 -36
- package/rulesets/topologies/serverless/maturity.md +0 -36
- package/rulesets/topologies/serverless/mcp/mcp-manifest.json +0 -72
- package/rulesets/topologies/serverless/openapi/openapi.yaml +0 -186
- package/rulesets/topologies/serverless/operations.es.md +0 -36
- package/rulesets/topologies/serverless/operations.md +0 -36
- package/rulesets/topologies/serverless/parity-fixtures/compliant.json +0 -13
- package/rulesets/topologies/serverless/parity-fixtures/violation.json +0 -15
- package/rulesets/topologies/serverless/patterns.es.md +0 -36
- package/rulesets/topologies/serverless/patterns.md +0 -36
- package/rulesets/topologies/serverless/resilience.es.md +0 -36
- package/rulesets/topologies/serverless/resilience.md +0 -36
- package/rulesets/topologies/serverless/runbooks.es.md +0 -68
- package/rulesets/topologies/serverless/runbooks.md +0 -68
- package/rulesets/topologies/serverless/security.es.md +0 -36
- package/rulesets/topologies/serverless/security.md +0 -36
- package/rulesets/topologies/serverless/serverless.rego +0 -32
- package/rulesets/topologies/serverless/serverless.rules.json +0 -33
- package/rulesets/topologies/serverless/serverless.test.rego +0 -28
- package/rulesets/topologies/serverless/serverless.wasm +0 -0
- package/rulesets/topologies/serverless/topology.config.schema.json +0 -28
- package/rulesets/topologies/serverless/topology.manifest.json +0 -114
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"protocolVersion": "2025-03-26",
|
|
3
|
-
"topologyId": "event-driven",
|
|
4
|
-
"description": "MCP interface for the Event-Driven topology. Provides tools for inspecting and validating event-driven configurations, resources for manifest and ruleset access, and prompts for event-governed implementation guidance.",
|
|
5
|
-
"capabilities": {
|
|
6
|
-
"tools": {},
|
|
7
|
-
"resources": {},
|
|
8
|
-
"prompts": {}
|
|
9
|
-
},
|
|
10
|
-
"tools": [
|
|
11
|
-
{
|
|
12
|
-
"name": "evolith-topology-inspect",
|
|
13
|
-
"description": "Inspect an Event-Driven topology configuration and return its parsed manifest, event channels, and corpus artifact references.",
|
|
14
|
-
"inputSchema": {
|
|
15
|
-
"type": "object",
|
|
16
|
-
"properties": {
|
|
17
|
-
"configPath": {
|
|
18
|
-
"type": "string",
|
|
19
|
-
"description": "Path to the Event-Driven configuration file"
|
|
20
|
-
},
|
|
21
|
-
"includeChannels": {
|
|
22
|
-
"type": "boolean",
|
|
23
|
-
"description": "Include event channel and subscription metadata"
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
"required": ["configPath"]
|
|
27
|
-
}
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"name": "evolith-topology-validate",
|
|
31
|
-
"description": "Validate an Event-Driven configuration against the topology ruleset and OPA policies, returning pass/fail per gate.",
|
|
32
|
-
"inputSchema": {
|
|
33
|
-
"type": "object",
|
|
34
|
-
"properties": {
|
|
35
|
-
"configPath": {
|
|
36
|
-
"type": "string",
|
|
37
|
-
"description": "Path to the Event-Driven configuration to validate"
|
|
38
|
-
},
|
|
39
|
-
"strictMode": {
|
|
40
|
-
"type": "boolean",
|
|
41
|
-
"description": "Fail on warnings, not just errors"
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
"required": ["configPath"]
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
],
|
|
48
|
-
"resources": [
|
|
49
|
-
{
|
|
50
|
-
"uri": "evolith://topologies/event-driven/manifest",
|
|
51
|
-
"name": "Event-Driven Topology Manifest",
|
|
52
|
-
"description": "Full topology manifest for Event-Driven, including metadata, artifact references, and corpus configuration.",
|
|
53
|
-
"mimeType": "application/json"
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
"uri": "evolith://topologies/event-driven/rulesets",
|
|
57
|
-
"name": "Event-Driven Rulesets",
|
|
58
|
-
"description": "All ruleset files for Event-Driven: native rules JSON, OPA Rego policies, and WASM bundle.",
|
|
59
|
-
"mimeType": "application/json"
|
|
60
|
-
}
|
|
61
|
-
],
|
|
62
|
-
"prompts": [
|
|
63
|
-
{
|
|
64
|
-
"name": "topology-aware-implementation",
|
|
65
|
-
"description": "Guides AI-assisted implementation to respect Event-Driven topology constraints, message ordering, idempotency, and eventual consistency."
|
|
66
|
-
}
|
|
67
|
-
]
|
|
68
|
-
}
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
openapi: "3.1.0"
|
|
2
|
-
info:
|
|
3
|
-
title: "Event-Driven Topology — Core API Surface"
|
|
4
|
-
version: "0.1.0"
|
|
5
|
-
description: >
|
|
6
|
-
REST API surface specific to the Event-Driven topology.
|
|
7
|
-
Describes endpoints exposed by the Core API for querying,
|
|
8
|
-
inspecting, and validating Event-Driven topology instances.
|
|
9
|
-
servers:
|
|
10
|
-
- url: "https://api.evolith.dev/v1"
|
|
11
|
-
description: "Evolith Core API (production)"
|
|
12
|
-
paths:
|
|
13
|
-
/topologies/{id}:
|
|
14
|
-
get:
|
|
15
|
-
tags: [Topologies]
|
|
16
|
-
summary: "Retrieve Event-Driven topology information"
|
|
17
|
-
description: >
|
|
18
|
-
Returns the full topology record for Event-Driven, including
|
|
19
|
-
dimension, status, version, governance metadata, and corpus
|
|
20
|
-
artifact references (rulesets, OPA policies, ADRs, guidance).
|
|
21
|
-
operationId: "getEventDrivenTopology"
|
|
22
|
-
parameters:
|
|
23
|
-
- name: id
|
|
24
|
-
in: path
|
|
25
|
-
required: true
|
|
26
|
-
schema:
|
|
27
|
-
type: string
|
|
28
|
-
pattern: "^event-driven$"
|
|
29
|
-
example: "event-driven"
|
|
30
|
-
responses:
|
|
31
|
-
"200":
|
|
32
|
-
description: "Successful response with Event-Driven topology data"
|
|
33
|
-
content:
|
|
34
|
-
application/json:
|
|
35
|
-
schema:
|
|
36
|
-
$ref: "#/components/schemas/EnvelopeTopology"
|
|
37
|
-
"404":
|
|
38
|
-
description: "Topology not found"
|
|
39
|
-
/topologies/{id}/manifest:
|
|
40
|
-
get:
|
|
41
|
-
tags: [Topologies]
|
|
42
|
-
summary: "Get Event-Driven topology manifest"
|
|
43
|
-
description: >
|
|
44
|
-
Returns the full topology manifest for Event-Driven, with
|
|
45
|
-
artifact references, corpus configuration, and business
|
|
46
|
-
boundary declaration.
|
|
47
|
-
operationId: "getEventDrivenManifest"
|
|
48
|
-
parameters:
|
|
49
|
-
- name: id
|
|
50
|
-
in: path
|
|
51
|
-
required: true
|
|
52
|
-
schema:
|
|
53
|
-
type: string
|
|
54
|
-
pattern: "^event-driven$"
|
|
55
|
-
responses:
|
|
56
|
-
"200":
|
|
57
|
-
description: "Successful response with Event-Driven manifest"
|
|
58
|
-
content:
|
|
59
|
-
application/json:
|
|
60
|
-
schema:
|
|
61
|
-
$ref: "#/components/schemas/EnvelopeManifest"
|
|
62
|
-
/topologies/{id}/validate:
|
|
63
|
-
post:
|
|
64
|
-
tags: [Topologies]
|
|
65
|
-
summary: "Validate Event-Driven topology rules"
|
|
66
|
-
description: >
|
|
67
|
-
Executes all applicable rulesets and OPA policies for Event-Driven
|
|
68
|
-
against a submitted configuration, returning pass/fail per gate.
|
|
69
|
-
operationId: "validateEventDrivenTopology"
|
|
70
|
-
parameters:
|
|
71
|
-
- name: id
|
|
72
|
-
in: path
|
|
73
|
-
required: true
|
|
74
|
-
schema:
|
|
75
|
-
type: string
|
|
76
|
-
pattern: "^event-driven$"
|
|
77
|
-
requestBody:
|
|
78
|
-
required: true
|
|
79
|
-
content:
|
|
80
|
-
application/json:
|
|
81
|
-
schema:
|
|
82
|
-
$ref: "#/components/schemas/ValidationRequest"
|
|
83
|
-
responses:
|
|
84
|
-
"200":
|
|
85
|
-
description: "Validation results"
|
|
86
|
-
content:
|
|
87
|
-
application/json:
|
|
88
|
-
schema:
|
|
89
|
-
$ref: "#/components/schemas/EnvelopeValidation"
|
|
90
|
-
components:
|
|
91
|
-
schemas:
|
|
92
|
-
Envelope:
|
|
93
|
-
type: object
|
|
94
|
-
properties:
|
|
95
|
-
success:
|
|
96
|
-
type: boolean
|
|
97
|
-
data: {}
|
|
98
|
-
meta:
|
|
99
|
-
type: object
|
|
100
|
-
properties:
|
|
101
|
-
context:
|
|
102
|
-
type: string
|
|
103
|
-
timing:
|
|
104
|
-
type: number
|
|
105
|
-
schemaVersion:
|
|
106
|
-
type: string
|
|
107
|
-
pattern: "^\\d+\\.\\d+\\.\\d+$"
|
|
108
|
-
required: [context, timing, schemaVersion]
|
|
109
|
-
required: [success, data, meta]
|
|
110
|
-
EnvelopeTopology:
|
|
111
|
-
allOf:
|
|
112
|
-
- $ref: "#/components/schemas/Envelope"
|
|
113
|
-
- type: object
|
|
114
|
-
properties:
|
|
115
|
-
data:
|
|
116
|
-
$ref: "#/components/schemas/TopologyRecord"
|
|
117
|
-
EnvelopeManifest:
|
|
118
|
-
allOf:
|
|
119
|
-
- $ref: "#/components/schemas/Envelope"
|
|
120
|
-
- type: object
|
|
121
|
-
properties:
|
|
122
|
-
data:
|
|
123
|
-
$ref: "#/components/schemas/TopologyManifest"
|
|
124
|
-
EnvelopeValidation:
|
|
125
|
-
allOf:
|
|
126
|
-
- $ref: "#/components/schemas/Envelope"
|
|
127
|
-
- type: object
|
|
128
|
-
properties:
|
|
129
|
-
data:
|
|
130
|
-
$ref: "#/components/schemas/ValidationResult"
|
|
131
|
-
TopologyRecord:
|
|
132
|
-
type: object
|
|
133
|
-
properties:
|
|
134
|
-
id:
|
|
135
|
-
type: string
|
|
136
|
-
example: "event-driven"
|
|
137
|
-
name:
|
|
138
|
-
type: string
|
|
139
|
-
example: "Event-Driven"
|
|
140
|
-
dimension:
|
|
141
|
-
type: string
|
|
142
|
-
example: "integration"
|
|
143
|
-
status:
|
|
144
|
-
type: string
|
|
145
|
-
enum: [accepted, draft, deprecated]
|
|
146
|
-
version:
|
|
147
|
-
type: string
|
|
148
|
-
example: "0.1.0"
|
|
149
|
-
TopologyManifest:
|
|
150
|
-
type: object
|
|
151
|
-
properties:
|
|
152
|
-
apiVersion:
|
|
153
|
-
type: string
|
|
154
|
-
example: "evolith.dev/topology/v1"
|
|
155
|
-
kind:
|
|
156
|
-
type: string
|
|
157
|
-
example: "TopologyManifest"
|
|
158
|
-
metadata:
|
|
159
|
-
type: object
|
|
160
|
-
spec:
|
|
161
|
-
type: object
|
|
162
|
-
ValidationRequest:
|
|
163
|
-
type: object
|
|
164
|
-
properties:
|
|
165
|
-
config:
|
|
166
|
-
type: object
|
|
167
|
-
description: "Configuration to validate against topology rules"
|
|
168
|
-
required: [config]
|
|
169
|
-
ValidationResult:
|
|
170
|
-
type: object
|
|
171
|
-
properties:
|
|
172
|
-
passed:
|
|
173
|
-
type: boolean
|
|
174
|
-
gates:
|
|
175
|
-
type: array
|
|
176
|
-
items:
|
|
177
|
-
type: object
|
|
178
|
-
properties:
|
|
179
|
-
gate:
|
|
180
|
-
type: string
|
|
181
|
-
passed:
|
|
182
|
-
type: boolean
|
|
183
|
-
evidence:
|
|
184
|
-
type: array
|
|
185
|
-
items:
|
|
186
|
-
type: string
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
# Guía de Operaciones Orientada a Eventos
|
|
2
|
-
|
|
3
|
-
> **Navegación Bilingüe:** [English](./operations.md) | [Español](./operations.es.md)
|
|
4
|
-
|
|
5
|
-
**Propietario:** Junta de Arquitectura
|
|
6
|
-
**Topología:** Orientada a Eventos
|
|
7
|
-
|
|
8
|
-
## Propósito
|
|
9
|
-
|
|
10
|
-
Definir procedimientos operativos para la gestión de brokers de eventos, el monitoreo de retraso de consumidores, el manejo de colas de letras muertas (DLQ), la observabilidad del flujo de eventos y la gestión de particiones en arquitecturas orientadas a eventos.
|
|
11
|
-
|
|
12
|
-
## Gestión del Broker
|
|
13
|
-
|
|
14
|
-
### Monitoreo de Salud
|
|
15
|
-
|
|
16
|
-
- Rastrear tiempo de actividad del broker, conteo de conexiones y throughput por tema.
|
|
17
|
-
- Configurar verificaciones de salud en probes de disponibilidad y vitalidad del broker.
|
|
18
|
-
- Alertar cuando el uso de memoria del broker exceda el 80% de la capacidad asignada.
|
|
19
|
-
|
|
20
|
-
### Planificación de Capacidad
|
|
21
|
-
|
|
22
|
-
- Monitorear el conteo de particiones del tema contra el paralelismo del consumidor.
|
|
23
|
-
- Escalar nodos del broker cuando el throughput sostenido exceda el 70% de la capacidad pico.
|
|
24
|
-
- Revisar configuraciones de retención trimestralmente para alinear con presupuestos de almacenamiento.
|
|
25
|
-
|
|
26
|
-
## Monitoreo de Retraso de Consumidores
|
|
27
|
-
|
|
28
|
-
- Exponer métricas de retraso del consumidor mediante herramientas nativas del broker (por ejemplo, Consumer Groups de Kafka).
|
|
29
|
-
- Configurar umbrales de alerta: advertencia a 10,000 mensajes, crítico a 100,000 mensajes de retraso.
|
|
30
|
-
- Rastrear tendencias de retraso semanalmente; investigar crecimiento persistente del retraso.
|
|
31
|
-
|
|
32
|
-
## Manejo de Cola de Letras Muertas (DLQ) — ED-R03
|
|
33
|
-
|
|
34
|
-
- Enviar mensajes no procesables a DLQ después del agotamiento configurable de reintentos (predeterminado: 3 intentos).
|
|
35
|
-
- Monitorear la profundidad de DLQ diariamente; mensajes mayores a 72 horas requieren triaje manual.
|
|
36
|
-
- Implementar herramientas de reproducción de DLQ con protecciones de idempotencia antes de reprocesar.
|
|
37
|
-
|
|
38
|
-
## Observabilidad del Flujo de Eventos — ED-R08
|
|
39
|
-
|
|
40
|
-
- Instrumentar productores y consumidores con tracing distribuido (OpenTelemetry).
|
|
41
|
-
- Capturar metadatos del evento: tema, partición, offset, timestamp, ID del productor.
|
|
42
|
-
- Mantener paneles de control del flujo de eventos mostrando tasas de producción/consumo, tasas de error y latencia de extremo a extremo.
|
|
43
|
-
|
|
44
|
-
## Gestión de Particiones — ED-R04
|
|
45
|
-
|
|
46
|
-
- Diseñar claves de partición para garantizar ordenamiento donde sea necesario.
|
|
47
|
-
- Evitar particiones calientes distribuyendo claves en dominios de alta cardinalidad.
|
|
48
|
-
- Monitorear throughput por partición; rebalancear cuando la varianza exceda 3x entre particiones.
|
|
49
|
-
|
|
50
|
-
## Aplicabilidad Componible
|
|
51
|
-
|
|
52
|
-
| Componible | Orientación |
|
|
53
|
-
|---|---|
|
|
54
|
-
| Monolito Modular | Broker embebido; la gestión de particiones es intra-proceso. |
|
|
55
|
-
| Módulos Distribuidos | Cluster de broker compartido; se requiere monitoreo de retraso de consumidores entre módulos. |
|
|
56
|
-
| Microservicios | Infraestructura completa de broker; aislamiento de grupo de consumidores por servicio. |
|
|
57
|
-
| Serverless | Servicios de broker gestionados; el escalado de particiones lo maneja el proveedor. |
|
|
58
|
-
| Computación Edge | Instancias de broker locales con sincronización periódica a la nube. |
|
|
59
|
-
|
|
60
|
-
## Referencias ADR
|
|
61
|
-
|
|
62
|
-
- **ADR-0015**: Infraestructura de broker de eventos y estrategia de particionamiento.
|
|
63
|
-
- **ADR-0079**: Estándares de observabilidad y monitoreo de eventos.
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
[Volver al Perfil Orientado a Eventos](./README.es.md)
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
# Event-Driven — Operations Guide
|
|
2
|
-
|
|
3
|
-
> **Bilingual Navigation:** [English](./operations.md) | [Español](./operations.es.md)
|
|
4
|
-
|
|
5
|
-
**Owner:** Architecture Board
|
|
6
|
-
**Topology:** Event-Driven
|
|
7
|
-
|
|
8
|
-
## Purpose
|
|
9
|
-
|
|
10
|
-
Define operational procedures for managing event brokers, monitoring consumer lag, handling dead-letter queues (DLQs), ensuring event flow observability, and managing partitions in event-driven architectures.
|
|
11
|
-
|
|
12
|
-
## Broker Management
|
|
13
|
-
|
|
14
|
-
### Health Monitoring
|
|
15
|
-
|
|
16
|
-
- Track broker uptime, connection count, and message throughput per topic.
|
|
17
|
-
- Configure health checks on broker readiness and liveness probes.
|
|
18
|
-
- Alert on broker memory usage exceeding 80% of allocated capacity.
|
|
19
|
-
|
|
20
|
-
### Capacity Planning
|
|
21
|
-
|
|
22
|
-
- Monitor topic partition count against consumer parallelism.
|
|
23
|
-
- Scale broker nodes when sustained throughput exceeds 70% of peak capacity.
|
|
24
|
-
- Review retention settings quarterly to align with storage budgets.
|
|
25
|
-
|
|
26
|
-
## Consumer Lag Monitoring
|
|
27
|
-
|
|
28
|
-
- Expose consumer lag metrics via broker-native tooling (e.g., Kafka Consumer Groups).
|
|
29
|
-
- Set alert thresholds: warning at 10,000 messages, critical at 100,000 messages lag.
|
|
30
|
-
- Track lag trends weekly; investigate persistent lag growth.
|
|
31
|
-
|
|
32
|
-
## Dead-Letter Queue (DLQ) Handling — ED-R03
|
|
33
|
-
|
|
34
|
-
- Route unprocessable messages to DLQ after configurable retry exhaustion (default: 3 attempts).
|
|
35
|
-
- Monitor DLQ depth daily; messages older than 72 hours require manual triage.
|
|
36
|
-
- Implement DLQ replay tooling with idempotency guards before reprocessing.
|
|
37
|
-
|
|
38
|
-
## Event Flow Observability — ED-R08
|
|
39
|
-
|
|
40
|
-
- Instrument producers and consumers with distributed tracing (OpenTelemetry).
|
|
41
|
-
- Capture event metadata: topic, partition, offset, timestamp, producer ID.
|
|
42
|
-
- Maintain event flow dashboards showing produce/consume rates, error rates, and end-to-end latency.
|
|
43
|
-
|
|
44
|
-
## Partition Management — ED-R04
|
|
45
|
-
|
|
46
|
-
- Design partition keys to ensure ordering guarantees where required.
|
|
47
|
-
- Avoid hot partitions by distributing keys across high-cardinality domains.
|
|
48
|
-
- Monitor per-partition throughput; rebalance when variance exceeds 3x across partitions.
|
|
49
|
-
|
|
50
|
-
## Composable Applicability
|
|
51
|
-
|
|
52
|
-
| Composable | Guidance |
|
|
53
|
-
|---|---|
|
|
54
|
-
| Modular Monolith | Embedded broker; partition management is intra-process. |
|
|
55
|
-
| Distributed Modules | Shared broker cluster; cross-module consumer lag monitoring required. |
|
|
56
|
-
| Microservices | Full broker infrastructure; per-service consumer group isolation. |
|
|
57
|
-
| Serverless | Managed broker services; partition scaling handled by provider. |
|
|
58
|
-
| Edge Computing | Local broker instances with periodic cloud sync. |
|
|
59
|
-
|
|
60
|
-
## ADR References
|
|
61
|
-
|
|
62
|
-
- **ADR-0015**: Event broker infrastructure and partitioning strategy.
|
|
63
|
-
- **ADR-0079**: Event observability and monitoring standards.
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
[Back to Event-Driven Profile](./README.md)
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"input": {
|
|
3
|
-
"satellite": {
|
|
4
|
-
"eventDriven": {
|
|
5
|
-
"hasStrictAsyncApi": true,
|
|
6
|
-
"hasOutbox": true,
|
|
7
|
-
"hasDlq": true,
|
|
8
|
-
"hasOrderingGuarantee": true,
|
|
9
|
-
"hasIdempotencyKey": true,
|
|
10
|
-
"hasBackwardCompatibleSchema": true,
|
|
11
|
-
"hasRetentionPolicy": true,
|
|
12
|
-
"hasEventCorrelation": true,
|
|
13
|
-
"hasConsumerGroupRegistry": true
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
"expectedNative": []
|
|
18
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"input": {
|
|
3
|
-
"satellite": {
|
|
4
|
-
"eventDriven": {
|
|
5
|
-
"hasStrictAsyncApi": false,
|
|
6
|
-
"hasOutbox": true,
|
|
7
|
-
"hasDlq": true,
|
|
8
|
-
"hasOrderingGuarantee": false,
|
|
9
|
-
"hasIdempotencyKey": true,
|
|
10
|
-
"hasBackwardCompatibleSchema": true,
|
|
11
|
-
"hasRetentionPolicy": true,
|
|
12
|
-
"hasEventCorrelation": true,
|
|
13
|
-
"hasConsumerGroupRegistry": true
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
"expectedNative": [
|
|
18
|
-
{ "ruleId": "ED-R01", "severity": "error", "file": null },
|
|
19
|
-
{ "ruleId": "ED-R04", "severity": "error", "file": null }
|
|
20
|
-
]
|
|
21
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
# Guía de Patrones Orientada a Eventos
|
|
2
|
-
|
|
3
|
-
> **Navegación Bilingüe:** [English](./patterns.md) | [Español](./patterns.es.md)
|
|
4
|
-
|
|
5
|
-
**Propietario:** Junta de Arquitectura
|
|
6
|
-
**Topología:** Orientada a Eventos
|
|
7
|
-
|
|
8
|
-
## Propósito
|
|
9
|
-
|
|
10
|
-
Documentar patrones fundamentales orientados a eventos: almacenamiento de eventos, CQRS, saga, outbox transaccional, captura de cambios de datos (CDC) y tradeoffs entre coreografía y orquestación.
|
|
11
|
-
|
|
12
|
-
## Almacenamiento de Eventos (Event Sourcing)
|
|
13
|
-
|
|
14
|
-
- Persistir estado como una secuencia inmutable de eventos en lugar de instantáneas del estado actual.
|
|
15
|
-
- Reconstruir estado reproduciendo eventos desde el inicio del flujo.
|
|
16
|
-
- Usar snapshots periódicamente para acotar el tiempo de reproducción (por ejemplo, cada 1,000 eventos).
|
|
17
|
-
|
|
18
|
-
## CQRS (Segregación de Responsabilidades de Comando y Consulta)
|
|
19
|
-
|
|
20
|
-
- Separar modelo de escritura (comandos) del modelo de lectura (consultas) para escalado independiente.
|
|
21
|
-
- Sincronizar modelo de lectura mediante eventos publicados desde el lado de escritura.
|
|
22
|
-
- Aceptar consistencia eventual entre modelos de escritura y lectura; diseñar UIs en consecuencia.
|
|
23
|
-
|
|
24
|
-
## Patrón Saga
|
|
25
|
-
|
|
26
|
-
- Coordinar procesos de negocio de múltiples pasos como una secuencia de transacciones locales.
|
|
27
|
-
- Implementar transacciones compensatorias para reversión cuando un paso falla.
|
|
28
|
-
- Preferir coreografía (orientada a eventos) para sagas simples; usar orquestación (coordinador central) para flujos de trabajo complejos y de larga ejecución.
|
|
29
|
-
|
|
30
|
-
## Outbox Transaccional — ED-R02
|
|
31
|
-
|
|
32
|
-
- Asegurar publicación confiable de eventos escribiendo eventos en un outbox dentro de la misma transacción de BD que la escritura de negocio.
|
|
33
|
-
- Usar CDC (Debezium) o un editor de sondeo para transmitir eventos del outbox al broker.
|
|
34
|
-
- Deduplicar del lado del consumidor; el outbox puede publicar duplicados durante failover.
|
|
35
|
-
|
|
36
|
-
## Captura de Cambios de Datos (CDC)
|
|
37
|
-
|
|
38
|
-
- Transmitir cambios de base de datos como eventos sin modificar el código de la aplicación.
|
|
39
|
-
- Usar Debezium o conectores equivalentes para PostgreSQL, MySQL o SQL Server.
|
|
40
|
-
- Monitorear retraso del conector; alertar cuando el retraso exceda 5 minutos.
|
|
41
|
-
|
|
42
|
-
## Coreografía vs. Orquestación — ED-R04
|
|
43
|
-
|
|
44
|
-
| Aspecto | Coreografía | Orquestación |
|
|
45
|
-
|---|---|---|
|
|
46
|
-
| Acoplamiento | Loose; los servicios reaccionan a eventos | Más fuerte; el coordinador invoca servicios |
|
|
47
|
-
| Visibilidad | Distribuida; más difícil de rastrear | Centralizada; más fácil de monitorear |
|
|
48
|
-
| Manejo de errores | Eventos compensatorios por servicio | Reintento y compensación centralizados |
|
|
49
|
-
| Caso de uso | Flujos simples de pocos pasos | Complejos, multi-servicio, larga ejecución |
|
|
50
|
-
|
|
51
|
-
## Aplicabilidad Componible
|
|
52
|
-
|
|
53
|
-
| Componible | Orientación |
|
|
54
|
-
|---|---|
|
|
55
|
-
| Monolito Modular | Almacenamiento de eventos y CQRS dentro de límites de módulos; outbox es intra-BD. |
|
|
56
|
-
| Módulos Distribuidos | Saga entre módulos; coreografía preferida para acoplamiento loose. |
|
|
57
|
-
| Microservicios | Saga completo con orquestación o coreografía; CDC para sincronización de datos. |
|
|
58
|
-
| Serverless | Almacenamiento de eventos con flujos gestionados; CDC vía conectores gestionados. |
|
|
59
|
-
| Computación Edge | Almacenamiento de eventos local con sincronización periódica a la nube. |
|
|
60
|
-
|
|
61
|
-
## Referencias ADR
|
|
62
|
-
|
|
63
|
-
- **ADR-0015**: Criterios de adopción de almacenamiento de eventos y CQRS.
|
|
64
|
-
- **ADR-0079**: Marco de decisión de orquestación vs. coreografía en saga.
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
[Volver al Perfil Orientado a Eventos](./README.es.md)
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
# Event-Driven — Patterns Guide
|
|
2
|
-
|
|
3
|
-
> **Bilingual Navigation:** [English](./patterns.md) | [Español](./patterns.es.md)
|
|
4
|
-
|
|
5
|
-
**Owner:** Architecture Board
|
|
6
|
-
**Topology:** Event-Driven
|
|
7
|
-
|
|
8
|
-
## Purpose
|
|
9
|
-
|
|
10
|
-
Document core event-driven patterns: event sourcing, CQRS, saga, transactional outbox, change data capture (CDC), and choreography vs. orchestration tradeoffs.
|
|
11
|
-
|
|
12
|
-
## Event Sourcing
|
|
13
|
-
|
|
14
|
-
- Persist state as an immutable sequence of events rather than current-state snapshots.
|
|
15
|
-
- Rebuild state by replaying events from the beginning of the stream.
|
|
16
|
-
- Use snapshots periodically to bound replay time (e.g., every 1,000 events).
|
|
17
|
-
|
|
18
|
-
## CQRS (Command Query Responsibility Segregation)
|
|
19
|
-
|
|
20
|
-
- Separate write model (commands) from read model (queries) for independent scaling.
|
|
21
|
-
- Synchronize read model via events published from the write side.
|
|
22
|
-
- Accept eventual consistency between write and read models; design UIs accordingly.
|
|
23
|
-
|
|
24
|
-
## Saga Pattern
|
|
25
|
-
|
|
26
|
-
- Coordinate multi-step business processes as a sequence of local transactions.
|
|
27
|
-
- Implement compensating transactions for rollback when a step fails.
|
|
28
|
-
- Prefer choreography (event-driven) for simple sagas; use orchestration (central coordinator) for complex, long-running workflows.
|
|
29
|
-
|
|
30
|
-
## Transactional Outbox — ED-R02
|
|
31
|
-
|
|
32
|
-
- Ensure reliable event publication by writing events to an outbox within the same DB transaction as the business write.
|
|
33
|
-
- Use CDC (Debezium) or a polling publisher to relay outbox events to the broker.
|
|
34
|
-
- Deduplicate at the consumer side; the outbox may publish duplicates during failover.
|
|
35
|
-
|
|
36
|
-
## Change Data Capture (CDC)
|
|
37
|
-
|
|
38
|
-
- Stream database changes as events without modifying application code.
|
|
39
|
-
- Use Debezium or equivalent connectors for PostgreSQL, MySQL, or SQL Server.
|
|
40
|
-
- Monitor connector lag; alert when lag exceeds 5 minutes.
|
|
41
|
-
|
|
42
|
-
## Choreography vs. Orchestration — ED-R04
|
|
43
|
-
|
|
44
|
-
| Aspect | Choreography | Orchestration |
|
|
45
|
-
|---|---|---|
|
|
46
|
-
| Coupling | Loose; services react to events | Tighter; coordinator invokes services |
|
|
47
|
-
| Visibility | Distributed; harder to trace | Centralized; easier to monitor |
|
|
48
|
-
| Error handling | Compensating events per service | Centralized retry and compensation |
|
|
49
|
-
| Use case | Simple, few-step workflows | Complex, multi-service, long-running |
|
|
50
|
-
|
|
51
|
-
## Composable Applicability
|
|
52
|
-
|
|
53
|
-
| Composable | Guidance |
|
|
54
|
-
|---|---|
|
|
55
|
-
| Modular Monolith | Event sourcing and CQRS within module boundaries; outbox is intra-DB. |
|
|
56
|
-
| Distributed Modules | Saga across modules; choreography preferred for loose coupling. |
|
|
57
|
-
| Microservices | Full saga with orchestration or choreography; CDC for data synchronization. |
|
|
58
|
-
| Serverless | Event sourcing with managed streams; CDC via managed connectors. |
|
|
59
|
-
| Edge Computing | Local event sourcing with periodic cloud synchronization. |
|
|
60
|
-
|
|
61
|
-
## ADR References
|
|
62
|
-
|
|
63
|
-
- **ADR-0015**: Event sourcing and CQRS adoption criteria.
|
|
64
|
-
- **ADR-0079**: Saga orchestration vs. choreography decision framework.
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
[Back to Event-Driven Profile](./README.md)
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
# Guía de Resiliencia Orientada a Eventos
|
|
2
|
-
|
|
3
|
-
> **Navegación Bilingüe:** [English](./resilience.md) | [Español](./resilience.es.md)
|
|
4
|
-
|
|
5
|
-
**Propietario:** Junta de Arquitectura
|
|
6
|
-
**Topología:** Orientada a Eventos
|
|
7
|
-
|
|
8
|
-
## Propósito
|
|
9
|
-
|
|
10
|
-
Definir patrones de resiliencia para arquitecturas orientadas a eventos: consumidores idempotentes, semántica de exactamente una vez, manejo de píldoras venenosas, retroceso de reintentos, rebalanceo de consumidores y outbox transaccional.
|
|
11
|
-
|
|
12
|
-
## Consumidores Idempotentes — ED-R05
|
|
13
|
-
|
|
14
|
-
- Cada consumidor DEBE procesar eventos de forma idempotente; se asume entrega duplicada.
|
|
15
|
-
- Usar claves de deduplicación compuestas por `(event-id, consumer-group)` almacenadas en una caché duradera.
|
|
16
|
-
- Establecer la ventana de deduplicación en al menos 2x el período máximo de retención del broker.
|
|
17
|
-
|
|
18
|
-
## Semántica de Exactamente Una Vez
|
|
19
|
-
|
|
20
|
-
- Preferir productores idempotentes con IDs de productor sobre garantías de exactamente una vez a nivel de broker.
|
|
21
|
-
- Para flujos de trabajo críticos, usar productores transaccionales que escriban atómicamente en múltiples temas.
|
|
22
|
-
- Documentar el nivel de garantía semántica (al menos una vez, efectivamente una vez) por consumidor.
|
|
23
|
-
|
|
24
|
-
## Manejo de Píldoras Venenosas — ED-R03
|
|
25
|
-
|
|
26
|
-
- Detectar píldoras venenosas rastreando conteos de reintentos por mensaje en el estado del consumidor.
|
|
27
|
-
- Después del agotamiento configurable de reintentos (predeterminado: 3), enrutar el mensaje a DLQ con contexto completo.
|
|
28
|
-
- Alertar cuando la tasa de píldoras venenosas exceda el 0.1% del volumen total de mensajes.
|
|
29
|
-
|
|
30
|
-
## Retroceso de Reintentos
|
|
31
|
-
|
|
32
|
-
- Implementar retroceso exponencial con jitter: `base * 2^attempto + random(0, base)`.
|
|
33
|
-
- Establecer un máximo de retraso de reintento de 5 minutos; escalar a DLQ después de alcanzar el máximo.
|
|
34
|
-
- Usar colas de reintento separadas para categorías de falla transitoria vs. permanente.
|
|
35
|
-
|
|
36
|
-
## Rebalanceo de Consumidores
|
|
37
|
-
|
|
38
|
-
- Diseñar consumidores para manejar eventos de rebalanceo con gracia; pausar procesamiento durante rebalanceo.
|
|
39
|
-
- Usar asignación de partición cooperativa y pegajosa para minimizar movimiento de particiones.
|
|
40
|
-
- Monitorear frecuencia de rebalanceo; investigar si los rebalanceos exceden 1 por hora por grupo de consumidores.
|
|
41
|
-
|
|
42
|
-
## Outbox Transaccional — ED-R02
|
|
43
|
-
|
|
44
|
-
- Escribir eventos de dominio en una tabla de outbox dentro de la misma transacción que los cambios de estado del negocio.
|
|
45
|
-
- Publicar eventos de outbox mediante CDC o editor de sondeo al broker.
|
|
46
|
-
- Garantizar que los registros de outbox se publiquen eventualmente; monitorear la profundidad del outbox.
|
|
47
|
-
|
|
48
|
-
## Aplicabilidad Componible
|
|
49
|
-
|
|
50
|
-
| Componible | Orientación |
|
|
51
|
-
|---|---|
|
|
52
|
-
| Monolito Modular | El outbox es intra-base de datos; idempotencia vía caché compartida. |
|
|
53
|
-
| Módulos Distribuidos | El outbox entre módulos requiere diseño cuidadoso de límites de transacción. |
|
|
54
|
-
| Microservicios | Outbox por servicio; aislamiento de consumidores por límite de servicio. |
|
|
55
|
-
| Serverless | Deduplicación gestionada; outbox mediante disparadores de base de datos. |
|
|
56
|
-
| Computación Edge | Outbox local con sincronización eventual al broker en la nube. |
|
|
57
|
-
|
|
58
|
-
## Referencias ADR
|
|
59
|
-
|
|
60
|
-
- **ADR-0015**: Estándares de resiliencia de consumidores y políticas de reintento.
|
|
61
|
-
- **ADR-0079**: Patrón de implementación de outbox transaccional.
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
[Volver al Perfil Orientado a Eventos](./README.es.md)
|