@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,65 +0,0 @@
|
|
|
1
|
-
# Event-Driven — Resilience Guide
|
|
2
|
-
|
|
3
|
-
> **Bilingual Navigation:** [English](./resilience.md) | [Español](./resilience.es.md)
|
|
4
|
-
|
|
5
|
-
**Owner:** Architecture Board
|
|
6
|
-
**Topology:** Event-Driven
|
|
7
|
-
|
|
8
|
-
## Purpose
|
|
9
|
-
|
|
10
|
-
Define resilience patterns for event-driven architectures: idempotent consumers, exactly-once semantics, poison pill handling, retry backoff, consumer rebalancing, and transactional outbox.
|
|
11
|
-
|
|
12
|
-
## Idempotent Consumers — ED-R05
|
|
13
|
-
|
|
14
|
-
- Every consumer MUST process events idempotently; duplicate delivery is assumed.
|
|
15
|
-
- Use deduplication keys composed of `(event-id, consumer-group)` stored in a durable cache.
|
|
16
|
-
- Set deduplication window to at least 2x the broker's maximum retention period.
|
|
17
|
-
|
|
18
|
-
## Exactly-Once Semantics
|
|
19
|
-
|
|
20
|
-
- Prefer idempotent producers with producer IDs over broker-level exactly-once guarantees.
|
|
21
|
-
- For critical workflows, use transactional producers that atomically write to multiple topics.
|
|
22
|
-
- Document the semantic guarantee level (at-least-once, effectively-once) per consumer.
|
|
23
|
-
|
|
24
|
-
## Poison Pill Handling — ED-R03
|
|
25
|
-
|
|
26
|
-
- Detect poison pills by tracking per-message retry counts in consumer state.
|
|
27
|
-
- After configurable retry exhaustion (default: 3), route message to DLQ with full context.
|
|
28
|
-
- Alert on poison pill rate exceeding 0.1% of total message volume.
|
|
29
|
-
|
|
30
|
-
## Retry Backoff
|
|
31
|
-
|
|
32
|
-
- Implement exponential backoff with jitter: `base * 2^attempt + random(0, base)`.
|
|
33
|
-
- Cap maximum retry delay at 5 minutes; escalate to DLQ after cap is reached.
|
|
34
|
-
- Use separate retry queues for transient vs. permanent failure categories.
|
|
35
|
-
|
|
36
|
-
## Consumer Rebalancing
|
|
37
|
-
|
|
38
|
-
- Design consumers to handle rebalance events gracefully; pause processing during rebalance.
|
|
39
|
-
- Use cooperative sticky partition assignment to minimize partition movement.
|
|
40
|
-
- Monitor rebalance frequency; investigate if rebalances exceed 1 per hour per consumer group.
|
|
41
|
-
|
|
42
|
-
## Transactional Outbox — ED-R02
|
|
43
|
-
|
|
44
|
-
- Write domain events to an outbox table within the same transaction as business state changes.
|
|
45
|
-
- Publish outbox events via CDC or polling publisher to the broker.
|
|
46
|
-
- Guarantee that outbox records are eventually published; monitor outbox depth.
|
|
47
|
-
|
|
48
|
-
## Composable Applicability
|
|
49
|
-
|
|
50
|
-
| Composable | Guidance |
|
|
51
|
-
|---|---|
|
|
52
|
-
| Modular Monolith | Outbox is intra-database; idempotency via shared cache. |
|
|
53
|
-
| Distributed Modules | Cross-module outbox requires careful transaction boundary design. |
|
|
54
|
-
| Microservices | Per-service outbox; consumer isolation per service boundary. |
|
|
55
|
-
| Serverless | Managed deduplication; outbox via database triggers. |
|
|
56
|
-
| Edge Computing | Local outbox with eventual sync to cloud broker. |
|
|
57
|
-
|
|
58
|
-
## ADR References
|
|
59
|
-
|
|
60
|
-
- **ADR-0015**: Consumer resilience and retry policy standards.
|
|
61
|
-
- **ADR-0079**: Transactional outbox implementation pattern.
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
[Back to Event-Driven Profile](./README.md)
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
# Guía de Manuales Operativos Orientada a Eventos
|
|
2
|
-
|
|
3
|
-
> **Navegación Bilingüe:** [English](./runbooks.md) | [Español](./runbooks.es.md)
|
|
4
|
-
|
|
5
|
-
**Propietario:** Junta de Arquitectura
|
|
6
|
-
**Topología:** Orientada a Eventos
|
|
7
|
-
|
|
8
|
-
## Propósito
|
|
9
|
-
|
|
10
|
-
Proveer manuales operativos para escenarios de falla comunes en arquitecturas orientadas a eventos: failover del broker, rebalanceo de consumidores, migración de esquemas, reproducción de DLQ y recuperación de violaciones de ordenamiento.
|
|
11
|
-
|
|
12
|
-
## Manual 1: Failover del Broker
|
|
13
|
-
|
|
14
|
-
**Disparador:** Nodo del broker no responde o falla verificación de salud del clúster.
|
|
15
|
-
|
|
16
|
-
1. Verificar estado del nodo del broker vía consola de gestión del clúster.
|
|
17
|
-
2. Confirmar que la reasignación de líder de particiones se completó automáticamente.
|
|
18
|
-
3. Verificar retraso del grupo de consumidores para temas afectados; alertar si el retraso excede el umbral.
|
|
19
|
-
4. Validar que los reintentos del productor están teniendo éxito en brokers sobrevivientes.
|
|
20
|
-
5. Post-recuperación: revisar configuración del broker para factor de réplicas y min-insync replicas.
|
|
21
|
-
|
|
22
|
-
## Manual 2: Rebalanceo de Consumidores
|
|
23
|
-
|
|
24
|
-
**Disparador:** Grupo de consumidores experimenta rebalanceos repetidos o tormenta de rebalanceo.
|
|
25
|
-
|
|
26
|
-
1. Identificar el desencadenante del rebalanceo: nuevo ingreso de consumidor, crash de consumidor o timeout de heartbeat.
|
|
27
|
-
2. Verificar salud de la instancia del consumidor: memoria, CPU, pausas de GC.
|
|
28
|
-
3. Revisar configuración de session.timeout.ms y heartbeat.interval.ms.
|
|
29
|
-
4. Si hay tormenta de rebalanceo: reducir temporalmente instancias de consumidor para estabilizar.
|
|
30
|
-
5. Post-recuperación: ajustar configuraciones de timeout; considerar estrategia de asignación cooperativa y pegajosa.
|
|
31
|
-
|
|
32
|
-
## Manual 3: Migración de Esquemas
|
|
33
|
-
|
|
34
|
-
**Disparador:** El esquema del evento requiere un cambio rupturante.
|
|
35
|
-
|
|
36
|
-
1. Registrar nueva versión del esquema en el registro de esquemas con modo de compatibilidad configurado.
|
|
37
|
-
2. Desplegar consumidores actualizados que toleren versiones de esquema antigua y nueva.
|
|
38
|
-
3. Habilitar escritura dual en productores: emitir eventos en ambos formatos antiguo y nuevo.
|
|
39
|
-
4. Monitorear tasas de error de consumidores durante la ventana de migración.
|
|
40
|
-
5. Después de que todos los consumidores se actualicen: eliminar escritura dual; deprecar esquema antiguo.
|
|
41
|
-
|
|
42
|
-
## Manual 4: Reproducción de DLQ — ED-R03
|
|
43
|
-
|
|
44
|
-
**Disparador:** Profundidad de DLQ excede umbral o el negocio requiere reprocesamiento.
|
|
45
|
-
|
|
46
|
-
1. Identificar tema DLQ y grupo de consumidores afectado.
|
|
47
|
-
2. Revisar mensajes de DLQ: confirmar que la causa raíz está resuelta (por ejemplo, corrección de esquema desplegada).
|
|
48
|
-
3. Usar herramienta de reproducción de DLQ para republicar mensajes al tema original.
|
|
49
|
-
4. Monitorear procesamiento del consumidor; confirmar que los mensajes se consumen exitosamente.
|
|
50
|
-
5. Post-reproducción: verificar que la profundidad de DLQ regresa a cero; documentar causa raíz.
|
|
51
|
-
|
|
52
|
-
## Manual 5: Violación de Ordenamiento — ED-R04
|
|
53
|
-
|
|
54
|
-
**Disparador:** Consumidor detecta eventos procesados fuera del orden esperado.
|
|
55
|
-
|
|
56
|
-
1. Identificar partición afectada y secuencia de eventos.
|
|
57
|
-
2. Verificar distribución de clave de partición del productor; confirmar que la clave es estable.
|
|
58
|
-
3. Verificar que el consumidor no esté procesando desde múltiples particiones concurrentemente sin lógica de ordenamiento.
|
|
59
|
-
4. Si el ordenamiento es crítico: forzar consumo de un solo hilo por partición.
|
|
60
|
-
5. Post-recuperación: revisar estrategia de clave de partición; considerar rediseño de clave si se detecta partición caliente.
|
|
61
|
-
|
|
62
|
-
## Aplicabilidad Componible
|
|
63
|
-
|
|
64
|
-
| Componible | Orientación |
|
|
65
|
-
|---|---|
|
|
66
|
-
| Monolito Modular | Manuales simplificados; failover intra-proceso es automático. |
|
|
67
|
-
| Módulos Distribuidos | Coordinación entre módulos durante failover y rebalanceo. |
|
|
68
|
-
| Microservicios | Alcance completo de manuales; DLQ y gestión de ordenamiento por servicio. |
|
|
69
|
-
| Serverless | Failover gestionado por proveedor; manuales se enfocan en recuperación a nivel de aplicación. |
|
|
70
|
-
| Computación Edge | Failover local; manuales incluyen pasos de recuperación de sincronización a la nube. |
|
|
71
|
-
|
|
72
|
-
## Referencias ADR
|
|
73
|
-
|
|
74
|
-
- **ADR-0015**: Procedimientos de failover del broker y rebalanceo de consumidores.
|
|
75
|
-
- **ADR-0079**: Estándares de migración de esquemas y reproducción de DLQ.
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
[Volver al Perfil Orientado a Eventos](./README.es.md)
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
# Event-Driven — Runbooks Guide
|
|
2
|
-
|
|
3
|
-
> **Bilingual Navigation:** [English](./runbooks.md) | [Español](./runbooks.es.md)
|
|
4
|
-
|
|
5
|
-
**Owner:** Architecture Board
|
|
6
|
-
**Topology:** Event-Driven
|
|
7
|
-
|
|
8
|
-
## Purpose
|
|
9
|
-
|
|
10
|
-
Provide operational runbooks for common event-driven failure scenarios: broker failover, consumer rebalancing, schema migration, DLQ replay, and ordering violation recovery.
|
|
11
|
-
|
|
12
|
-
## Runbook 1: Broker Failover
|
|
13
|
-
|
|
14
|
-
**Trigger:** Broker node becomes unresponsive or cluster health check fails.
|
|
15
|
-
|
|
16
|
-
1. Verify broker node status via cluster management console.
|
|
17
|
-
2. Confirm partition leader reassignment has completed automatically.
|
|
18
|
-
3. Check consumer group lag for affected topics; alert if lag exceeds threshold.
|
|
19
|
-
4. Validate that producer retries are succeeding on surviving brokers.
|
|
20
|
-
5. Post-recovery: review broker configuration for replication factor and min-insync replicas.
|
|
21
|
-
|
|
22
|
-
## Runbook 2: Consumer Rebalancing
|
|
23
|
-
|
|
24
|
-
**Trigger:** Consumer group experiences repeated rebalances or rebalance storm.
|
|
25
|
-
|
|
26
|
-
1. Identify the rebalance trigger: new consumer join, consumer crash, or heartbeat timeout.
|
|
27
|
-
2. Check consumer instance health: memory, CPU, GC pauses.
|
|
28
|
-
3. Review session.timeout.ms and heartbeat.interval.ms configuration.
|
|
29
|
-
4. If rebalance storm: temporarily reduce consumer instances to stabilize.
|
|
30
|
-
5. Post-recovery: tune timeout settings; consider cooperative sticky assignment strategy.
|
|
31
|
-
|
|
32
|
-
## Runbook 3: Schema Migration
|
|
33
|
-
|
|
34
|
-
**Trigger:** Event schema requires a breaking change.
|
|
35
|
-
|
|
36
|
-
1. Register new schema version in schema registry with compatibility mode set.
|
|
37
|
-
2. Deploy updated consumers that tolerate both old and new schema versions.
|
|
38
|
-
3. Enable dual-write on producers: emit events in both old and new formats.
|
|
39
|
-
4. Monitor consumer error rates during migration window.
|
|
40
|
-
5. After all consumers updated: remove dual-write; deprecate old schema.
|
|
41
|
-
|
|
42
|
-
## Runbook 4: DLQ Replay — ED-R03
|
|
43
|
-
|
|
44
|
-
**Trigger:** DLQ depth exceeds threshold or business requires reprocessing.
|
|
45
|
-
|
|
46
|
-
1. Identify DLQ topic and affected consumer group.
|
|
47
|
-
2. Review DLQ messages: confirm root cause is resolved (e.g., schema fix deployed).
|
|
48
|
-
3. Use DLQ replay tool to republish messages to the original topic.
|
|
49
|
-
4. Monitor consumer processing; confirm messages are consumed successfully.
|
|
50
|
-
5. Post-replay: verify DLQ depth returns to zero; document root cause.
|
|
51
|
-
|
|
52
|
-
## Runbook 5: Ordering Violation — ED-R04
|
|
53
|
-
|
|
54
|
-
**Trigger:** Consumer detects events processed out of expected order.
|
|
55
|
-
|
|
56
|
-
1. Identify affected partition and event sequence.
|
|
57
|
-
2. Check producer partition key distribution; confirm key is stable.
|
|
58
|
-
3. Verify consumer is not processing from multiple partitions concurrently without ordering logic.
|
|
59
|
-
4. If ordering is critical: enforce single-threaded consumption per partition.
|
|
60
|
-
5. Post-recovery: review partition key strategy; consider key redesign if hot partition detected.
|
|
61
|
-
|
|
62
|
-
## Composable Applicability
|
|
63
|
-
|
|
64
|
-
| Composable | Guidance |
|
|
65
|
-
|---|---|
|
|
66
|
-
| Modular Monolith | Simplified runbooks; intra-process failover is automatic. |
|
|
67
|
-
| Distributed Modules | Cross-module coordination during failover and rebalancing. |
|
|
68
|
-
| Microservices | Full runbook scope; per-service DLQ and ordering management. |
|
|
69
|
-
| Serverless | Provider-managed failover; runbooks focus on application-level recovery. |
|
|
70
|
-
| Edge Computing | Local failover; runbooks include cloud sync recovery steps. |
|
|
71
|
-
|
|
72
|
-
## ADR References
|
|
73
|
-
|
|
74
|
-
- **ADR-0015**: Broker failover and consumer rebalancing procedures.
|
|
75
|
-
- **ADR-0079**: Schema migration and DLQ replay standards.
|
|
76
|
-
|
|
77
|
-
---
|
|
78
|
-
|
|
79
|
-
[Back to Event-Driven Profile](./README.md)
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# Guía de Seguridad Orientada a Eventos
|
|
2
|
-
|
|
3
|
-
> **Navegación Bilingüe:** [English](./security.md) | [Español](./security.es.md)
|
|
4
|
-
|
|
5
|
-
**Propietario:** Junta de Arquitectura
|
|
6
|
-
**Topología:** Orientada a Eventos
|
|
7
|
-
|
|
8
|
-
## Propósito
|
|
9
|
-
|
|
10
|
-
Establecer controles de seguridad para arquitecturas orientadas a eventos que cubren autenticación de eventos, validación de esquemas en los límites de publicación/suscripción, control de acceso a temas, cifrado de carga útil y requisitos de auditoría de rastro.
|
|
11
|
-
|
|
12
|
-
## Autenticación de Eventos
|
|
13
|
-
|
|
14
|
-
- Requerir TLS mutuo (mTLS) entre productores y el broker, y entre el broker y los consumidores.
|
|
15
|
-
- Usar tokens de corta vida (JWT/OAuth2) para autenticación servicio-a-evento donde mTLS no esté disponible.
|
|
16
|
-
- Rotar credenciales automáticamente; enforce duración máxima de token de 1 hora.
|
|
17
|
-
|
|
18
|
-
## Validación de Esquemas — ED-R01, ED-R06
|
|
19
|
-
|
|
20
|
-
- Validar cargas útiles de eventos contra el esquema AsyncAPI registrado al momento de publicar.
|
|
21
|
-
- Rechazar eventos no conformes en el broker antes de que ingresen al tema.
|
|
22
|
-
- Mantener un registro de esquemas con historial de versiones; descontinuar esquemas mediante un ciclo de vida formal.
|
|
23
|
-
|
|
24
|
-
## Control de Acceso a Temas
|
|
25
|
-
|
|
26
|
-
- Implementar ACLs a nivel de tema: los productores solo pueden escribir en temas autorizados; los consumidores solo pueden suscribirse a temas autorizados.
|
|
27
|
-
- Usar prefijos de namespace (por ejemplo, `dominio.entorno.nombre-evento`) para enforce aislamiento.
|
|
28
|
-
- Auditar cambios de acceso a temas; requerir revisión de pares para escaladas de privilegios.
|
|
29
|
-
|
|
30
|
-
## Cifrado de Carga Útil
|
|
31
|
-
|
|
32
|
-
- Cifrar campos sensibles en la capa de aplicación antes de publicar (cifrado a nivel de campo).
|
|
33
|
-
- Usar cifrado nativo del broker en repositorio para almacenamiento de temas.
|
|
34
|
-
- Nunca incrustar secretos o credenciales en texto plano en cargas útiles de eventos.
|
|
35
|
-
|
|
36
|
-
## Auditoría de Rastro — ED-R08
|
|
37
|
-
|
|
38
|
-
- Registrar todos los eventos de registro y desregistro de esquemas.
|
|
39
|
-
- Rastrear cambios de ACL de temas con identidad del actor y marca de tiempo.
|
|
40
|
-
- Retener registros de auditoría por un mínimo de 90 días en almacenamiento inmutable.
|
|
41
|
-
|
|
42
|
-
## Aplicabilidad Componible
|
|
43
|
-
|
|
44
|
-
| Componible | Orientación |
|
|
45
|
-
|---|---|
|
|
46
|
-
| Monolito Modular | Los eventos intra-proceso pueden omitir mTLS; la validación de esquemas sigue siendo requerida. |
|
|
47
|
-
| Módulos Distribuidos | Enforce completo de mTLS y ACLs entre límites de módulos. |
|
|
48
|
-
| Microservicios | Delimitación de credenciales por servicio; aislamiento de ACLs de temas. |
|
|
49
|
-
| Serverless | Políticas de seguridad de broker gestionadas; vinculación IAM a nivel de función. |
|
|
50
|
-
| Computación Edge | Cifrado de broker local; sincronizar registros de auditoría al almacén central. |
|
|
51
|
-
|
|
52
|
-
## Referencias ADR
|
|
53
|
-
|
|
54
|
-
- **ADR-0015**: Modelo de autenticación y autorización del broker de eventos.
|
|
55
|
-
- **ADR-0079**: Estándares de gobernanza y validación de esquemas.
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
[Volver al Perfil Orientado a Eventos](./README.es.md)
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# Event-Driven — Security Guide
|
|
2
|
-
|
|
3
|
-
> **Bilingual Navigation:** [English](./security.md) | [Español](./security.es.md)
|
|
4
|
-
|
|
5
|
-
**Owner:** Architecture Board
|
|
6
|
-
**Topology:** Event-Driven
|
|
7
|
-
|
|
8
|
-
## Purpose
|
|
9
|
-
|
|
10
|
-
Establish security controls for event-driven architectures covering event authentication, schema validation at publish/subscribe boundaries, topic access control, payload encryption, and audit trail requirements.
|
|
11
|
-
|
|
12
|
-
## Event Authentication
|
|
13
|
-
|
|
14
|
-
- Require mutual TLS (mTLS) between producers and the broker, and between broker and consumers.
|
|
15
|
-
- Use short-lived tokens (JWT/OAuth2) for service-to-event authentication where mTLS is unavailable.
|
|
16
|
-
- Rotate credentials automatically; enforce maximum token lifetime of 1 hour.
|
|
17
|
-
|
|
18
|
-
## Schema Validation — ED-R01, ED-R06
|
|
19
|
-
|
|
20
|
-
- Validate event payloads against the registered AsyncAPI schema at publish time.
|
|
21
|
-
- Reject non-conforming events at the broker before they enter the topic.
|
|
22
|
-
- Maintain a schema registry with version history; deprecate schemas through a formal lifecycle.
|
|
23
|
-
|
|
24
|
-
## Topic Access Control
|
|
25
|
-
|
|
26
|
-
- Implement topic-level ACLs: producers may only write to authorized topics; consumers may only subscribe to authorized topics.
|
|
27
|
-
- Use namespace prefixes (e.g., `domain.environment.event-name`) to enforce isolation.
|
|
28
|
-
- Audit topic access changes; require peer review for privilege escalations.
|
|
29
|
-
|
|
30
|
-
## Payload Encryption
|
|
31
|
-
|
|
32
|
-
- Encrypt sensitive fields at the application layer before publishing (field-level encryption).
|
|
33
|
-
- Use broker-native encryption at rest for topic storage.
|
|
34
|
-
- Never embed plaintext secrets or credentials in event payloads.
|
|
35
|
-
|
|
36
|
-
## Audit Trail — ED-R08
|
|
37
|
-
|
|
38
|
-
- Log all schema registration and deregistration events.
|
|
39
|
-
- Record topic ACL changes with actor identity and timestamp.
|
|
40
|
-
- Retain audit logs for a minimum of 90 days in immutable storage.
|
|
41
|
-
|
|
42
|
-
## Composable Applicability
|
|
43
|
-
|
|
44
|
-
| Composable | Guidance |
|
|
45
|
-
|---|---|
|
|
46
|
-
| Modular Monolith | Intra-process events may skip mTLS; schema validation still required. |
|
|
47
|
-
| Distributed Modules | Full mTLS and ACL enforcement across module boundaries. |
|
|
48
|
-
| Microservices | Per-service credential scoping; topic ACL isolation. |
|
|
49
|
-
| Serverless | Managed broker security policies; function-level IAM binding. |
|
|
50
|
-
| Edge Computing | Local broker encryption; sync audit logs to central store. |
|
|
51
|
-
|
|
52
|
-
## ADR References
|
|
53
|
-
|
|
54
|
-
- **ADR-0015**: Event broker authentication and authorization model.
|
|
55
|
-
- **ADR-0079**: Schema governance and validation standards.
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
[Back to Event-Driven Profile](./README.md)
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"title": "Event-Driven Topology Configuration",
|
|
4
|
-
"type": "object",
|
|
5
|
-
"additionalProperties": false,
|
|
6
|
-
"required": [
|
|
7
|
-
"topology",
|
|
8
|
-
"strictAsyncApi",
|
|
9
|
-
"transactionalOutbox",
|
|
10
|
-
"deadLetterQueue",
|
|
11
|
-
"hasOrderingGuarantee",
|
|
12
|
-
"hasIdempotencyKey",
|
|
13
|
-
"hasBackwardCompatibleSchema",
|
|
14
|
-
"hasRetentionPolicy",
|
|
15
|
-
"hasEventCorrelation",
|
|
16
|
-
"hasConsumerGroupRegistry"
|
|
17
|
-
],
|
|
18
|
-
"properties": {
|
|
19
|
-
"topology": { "const": "event-driven" },
|
|
20
|
-
"strictAsyncApi": { "const": true },
|
|
21
|
-
"transactionalOutbox": { "const": true },
|
|
22
|
-
"deadLetterQueue": { "const": true },
|
|
23
|
-
"hasOrderingGuarantee": { "const": true },
|
|
24
|
-
"hasIdempotencyKey": { "const": true },
|
|
25
|
-
"hasBackwardCompatibleSchema": { "const": true },
|
|
26
|
-
"hasRetentionPolicy": { "const": true },
|
|
27
|
-
"hasEventCorrelation": { "const": true },
|
|
28
|
-
"hasConsumerGroupRegistry": { "const": true }
|
|
29
|
-
}
|
|
30
|
-
}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"apiVersion": "evolith.dev/topology/v1",
|
|
3
|
-
"kind": "TopologyManifest",
|
|
4
|
-
"metadata": {
|
|
5
|
-
"id": "event-driven",
|
|
6
|
-
"name": "Event-Driven",
|
|
7
|
-
"dimension": "integration",
|
|
8
|
-
"status": "accepted",
|
|
9
|
-
"version": "1.0.0",
|
|
10
|
-
"governance": {
|
|
11
|
-
"owner": "Architecture Board",
|
|
12
|
-
"criticality": "P0"
|
|
13
|
-
}
|
|
14
|
-
},
|
|
15
|
-
"spec": {
|
|
16
|
-
"summary": "Asynchronous integration topology for explicit event contracts, reliable publication, idempotent consumers, and observable cross-boundary message flow.",
|
|
17
|
-
"topologyType": "event-driven",
|
|
18
|
-
"compatibility": {
|
|
19
|
-
"progressiveAxis": {
|
|
20
|
-
"phase": "cross",
|
|
21
|
-
"profile": "cross"
|
|
22
|
-
},
|
|
23
|
-
"composableWith": [
|
|
24
|
-
"modular-monolith",
|
|
25
|
-
"distributed-modules",
|
|
26
|
-
"microservices",
|
|
27
|
-
"serverless",
|
|
28
|
-
"edge-computing",
|
|
29
|
-
"data-mesh",
|
|
30
|
-
"agentic-ai"
|
|
31
|
-
]
|
|
32
|
-
},
|
|
33
|
-
"artifacts": {
|
|
34
|
-
"adrs": [
|
|
35
|
-
"reference/architecture/adrs/core/0015-event-driven-architecture-intra-domain.md",
|
|
36
|
-
"reference/architecture/adrs/core/0079-multi-topology-reference-corpus.md"
|
|
37
|
-
],
|
|
38
|
-
"rulesets": [
|
|
39
|
-
"rulesets/topologies/event-driven/event-driven.rules.json"
|
|
40
|
-
],
|
|
41
|
-
"opaPolicies": [
|
|
42
|
-
"rulesets/topologies/event-driven/event-driven.rego"
|
|
43
|
-
],
|
|
44
|
-
"aiRulesets": [
|
|
45
|
-
"rulesets/topologies/event-driven/README.md"
|
|
46
|
-
],
|
|
47
|
-
"umsContracts": [
|
|
48
|
-
"reference/knowledge/demo/ums-reference-model.md"
|
|
49
|
-
]
|
|
50
|
-
},
|
|
51
|
-
"corpus": {
|
|
52
|
-
"guidance": {
|
|
53
|
-
"profile": "rulesets/topologies/event-driven/README.md",
|
|
54
|
-
"maturityGuide": "rulesets/topologies/event-driven/maturity.md"
|
|
55
|
-
},
|
|
56
|
-
"configurationContract": "rulesets/topologies/event-driven/topology.config.schema.json",
|
|
57
|
-
"fixtures": {
|
|
58
|
-
"valid": "rulesets/topologies/event-driven/fixtures/valid.topology.config.json",
|
|
59
|
-
"invalid": "rulesets/topologies/event-driven/fixtures/invalid.topology.config.json"
|
|
60
|
-
},
|
|
61
|
-
"nativeEvaluator": "packages/core-domain/src/application/validators/ruleset-validator.service.ts",
|
|
62
|
-
"tests": {
|
|
63
|
-
"positive": "packages/core-domain/src/application/validators/ruleset-validator-architecture.spec.ts",
|
|
64
|
-
"negative": "packages/core-domain/src/application/validators/ruleset-validator-architecture.spec.ts"
|
|
65
|
-
},
|
|
66
|
-
"evidence": "reference/governance/standards/vision/maturity-evidence.json"
|
|
67
|
-
},
|
|
68
|
-
"operationalInterfaces": {
|
|
69
|
-
"cli": {
|
|
70
|
-
"validators": [
|
|
71
|
-
"validate-architecture",
|
|
72
|
-
"validate-topology"
|
|
73
|
-
]
|
|
74
|
-
},
|
|
75
|
-
"mcp": {
|
|
76
|
-
"resources": [
|
|
77
|
-
"evolith://topologies/event-driven/manifest",
|
|
78
|
-
"evolith://topologies/event-driven/rulesets"
|
|
79
|
-
],
|
|
80
|
-
"tools": [
|
|
81
|
-
"evolith-topology-inspect",
|
|
82
|
-
"evolith-topology-validate"
|
|
83
|
-
],
|
|
84
|
-
"prompts": [
|
|
85
|
-
"topology-aware-implementation"
|
|
86
|
-
]
|
|
87
|
-
},
|
|
88
|
-
"coreApi": {
|
|
89
|
-
"endpoints": [
|
|
90
|
-
"GET /topologies/{id}",
|
|
91
|
-
"GET /topologies/{id}/manifest",
|
|
92
|
-
"POST /topologies/{id}/validate"
|
|
93
|
-
]
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
},
|
|
97
|
-
"businessBoundary": {
|
|
98
|
-
"technicalOnly": true,
|
|
99
|
-
"trackerOwns": [
|
|
100
|
-
"timing",
|
|
101
|
-
"ownership",
|
|
102
|
-
"prioritization",
|
|
103
|
-
"roi",
|
|
104
|
-
"cost",
|
|
105
|
-
"budget",
|
|
106
|
-
"funnel-0"
|
|
107
|
-
]
|
|
108
|
-
}
|
|
109
|
-
}
|
package/rulesets/topologies/progressive-axis/distributed-modules/distributed-modules.rules.es.json
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "../../../../schema/ruleset-standard.schema.json",
|
|
3
|
-
"$id": "https://evolith.dev/rulesets/topologies/progressive-axis/distributed-modules/distributed-modules.rules.es.json",
|
|
4
|
-
"title": "Reglas de Arquitectura Módulos Distribuidos",
|
|
5
|
-
"description": "Reglas que gobiernan los límites de módulos formalizados y contratos inter-módulo en el eje progresivo.",
|
|
6
|
-
"version": "1.0.0",
|
|
7
|
-
"phase": "distributed-modules",
|
|
8
|
-
"effectiveDate": "2026-01-01",
|
|
9
|
-
"rules": [
|
|
10
|
-
{
|
|
11
|
-
"id": "DM-R01",
|
|
12
|
-
"severity": "MUST",
|
|
13
|
-
"category": "module-autonomy",
|
|
14
|
-
"title": "El Módulo es Dueño de su Ciclo de Vida",
|
|
15
|
-
"description": "Cada módulo distribuido DEBE tener su propio cadencia de releases, pipeline de CI/CD y versión. No se requieren releases coordinados entre múltiples módulos.",
|
|
16
|
-
"rationale": "El versionado independiente de módulos permite que los equipos iteren de forma autónoma. Los releases coordinados reintroducen el acoplamiento del monolito.",
|
|
17
|
-
"validationQuery": "Cada módulo tiene pipeline de CI dedicado. La versión del módulo no requiere sincronización con otros módulos.",
|
|
18
|
-
"blocking": true
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"id": "DM-R02",
|
|
22
|
-
"severity": "MUST",
|
|
23
|
-
"category": "contract-stability",
|
|
24
|
-
"title": "Los Contratos Inter-Módulo son Explícitos y Versionados",
|
|
25
|
-
"description": "Toda comunicación inter-módulo DEBE usar definiciones de contrato explícitas (Protobuf, JSON Schema u OpenAPI). Los contratos están versionados y son retrocompatibles.",
|
|
26
|
-
"rationale": "Sin contratos explícitos, la evolución de un módulo rompe a los módulos dependientes. core/ADR-0032 exige gRPC para la interoperabilidad interna.",
|
|
27
|
-
"validationQuery": "Definiciones de contratos en la biblioteca Contracts compartida. Los cambios de ruptura requieren nueva versión mayor. CI valida retrocompatibilidad.",
|
|
28
|
-
"blocking": true
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
"id": "DM-R03",
|
|
32
|
-
"severity": "MUST",
|
|
33
|
-
"category": "data-ownership",
|
|
34
|
-
"title": "Aislamiento de Datos del Módulo Aplicado",
|
|
35
|
-
"description": "Ningún módulo puede consultar directamente la capa de persistencia de otro módulo. Todo acceso a datos va a través de la interfaz publicada del módulo propietario.",
|
|
36
|
-
"rationale": "La propiedad de datos es el núcleo de la independencia del contexto acotado. Las consultas directas a la BD entre módulos crean acoplamiento oculto.",
|
|
37
|
-
"validationQuery": "Sin consultas de base de datos entre módulos en el código. El acceso a datos pasa únicamente por los puertos de la capa Application.",
|
|
38
|
-
"blocking": true
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"id": "DM-R04",
|
|
42
|
-
"severity": "MUST",
|
|
43
|
-
"category": "async-communication",
|
|
44
|
-
"title": "Los Eventos Asíncronos Tienen Payloads Validados por Esquema",
|
|
45
|
-
"description": "Todos los eventos asíncronos inter-módulo DEBEN tener definiciones de esquema JSON Schema o Protobuf. La validación de esquema ocurre al publicar y al suscribirse.",
|
|
46
|
-
"rationale": "Los eventos validados por esquema previenen roturas en consumidores por deriva de esquema del productor. Permite una evolución asíncrona confiable.",
|
|
47
|
-
"validationQuery": "Todos los tipos de evento tienen definiciones de esquema en la biblioteca Contracts. La validación en el lado consumidor rechaza campos desconocidos.",
|
|
48
|
-
"blocking": false
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
"id": "DM-R05",
|
|
52
|
-
"severity": "MUST",
|
|
53
|
-
"category": "observability",
|
|
54
|
-
"title": "Trazado Distribuido entre Módulos",
|
|
55
|
-
"description": "Todas las llamadas inter-módulo DEBEN propagar el contexto de traza W3C. Una sola solicitud de usuario que abarca múltiples módulos produce una traza con múltiples spans.",
|
|
56
|
-
"rationale": "El trazado distribuido es obligatorio para depurar problemas entre módulos. Sin él, el diagnóstico en producción es imposible.",
|
|
57
|
-
"validationQuery": "El TraceId aparece de forma consistente en todos los logs de módulos para una sola transacción de usuario.",
|
|
58
|
-
"blocking": true
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
"id": "DM-R06",
|
|
62
|
-
"severity": "MUST",
|
|
63
|
-
"category": "deployment",
|
|
64
|
-
"title": "Los Módulos son Desplegables de Forma Independiente",
|
|
65
|
-
"description": "Cada módulo DEBE poder desplegarse sin coordinar despliegues con otros módulos. Los cambios de contrato retrocompatibles permiten el despliegue simultáneo.",
|
|
66
|
-
"rationale": "La deployabilidad independiente es el prerrequisito para los microservicios F3. Si se necesita coordinación, el satélite sigue en F1.",
|
|
67
|
-
"validationQuery": "El pipeline de despliegue de cada módulo es independiente. Ningún módulo tiene un 'bloqueo de despliegue' sobre otro módulo.",
|
|
68
|
-
"blocking": true
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
"id": "DM-R07",
|
|
72
|
-
"severity": "MUST",
|
|
73
|
-
"category": "resiliency",
|
|
74
|
-
"title": "Circuit Breaker para Llamadas Inter-Módulo",
|
|
75
|
-
"description": "Todas las llamadas sincrónicas inter-módulo DEBEN implementar el patrón circuit breaker (core/ADR-0011). Un fallo de módulo NO DEBE propagarse como fallo al llamador.",
|
|
76
|
-
"rationale": "Los circuit breakers previenen fallos en cascada entre límites de módulos. Sin ellos, el fallo de un módulo causa una interrupción a nivel de sistema.",
|
|
77
|
-
"validationQuery": "El circuit breaker está presente en todas las llamadas HTTP/gRPC inter-módulo. El comportamiento de fallback está definido para cada llamada.",
|
|
78
|
-
"blocking": false
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
"id": "DM-R08",
|
|
82
|
-
"severity": "MUST",
|
|
83
|
-
"category": "extraction-readiness",
|
|
84
|
-
"title": "Mantener Puntuación de Preparación F2 para Extracción",
|
|
85
|
-
"description": "El satélite DEBE registrar la preparación para extracción según core/ADR-0045 con criterios específicos de F3. La puntuación DEBE ser >= 80% para superar el gate de Diseño Fase 2 cuando F3 está planificado.",
|
|
86
|
-
"rationale": "La extracción F3 requiere mayor madurez: deployabilidad independiente, circuit breakers, trazado distribuido y contratos explícitos deben estar todos en su lugar.",
|
|
87
|
-
"validationQuery": "Puntuación de preparación para extracción F3 documentada y >= 80%. Todas las reglas de Módulos Distribuidos en verde.",
|
|
88
|
-
"blocking": false
|
|
89
|
-
}
|
|
90
|
-
],
|
|
91
|
-
"f3Prerequisites": {
|
|
92
|
-
"minScore": 80,
|
|
93
|
-
"requiredRules": [
|
|
94
|
-
"DM-R01",
|
|
95
|
-
"DM-R02",
|
|
96
|
-
"DM-R03",
|
|
97
|
-
"DM-R05",
|
|
98
|
-
"DM-R06"
|
|
99
|
-
],
|
|
100
|
-
"reference": "adr/0045-microservice-extraction-readiness-criteria.md"
|
|
101
|
-
},
|
|
102
|
-
"exitGate": {
|
|
103
|
-
"description": "Módulos Distribuidos sale cuando la puntuación de preparación para extracción F3 es >= 80% Y el consejo de arquitectura aprueba la transición a F3.",
|
|
104
|
-
"requiredArtifacts": [
|
|
105
|
-
"Evaluación de preparación F3 de core/ADR-0045 (>= 80%)",
|
|
106
|
-
"Registro de contratos con historial de versiones",
|
|
107
|
-
"Documentación de circuit breaker por módulo",
|
|
108
|
-
"Evidencia de despliegue independiente"
|
|
109
|
-
]
|
|
110
|
-
}
|
|
111
|
-
}
|