@evolith/core-domain 1.0.0 → 1.0.1
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/dist/domain/services/default-workflow-definition.js +1 -1
- package/dist/domain/services/default-workflow-definition.js.map +1 -1
- package/package.json +2 -1
- package/rulesets/README.es.md +170 -0
- package/rulesets/README.md +170 -0
- package/rulesets/acl/README.es.md +41 -0
- package/rulesets/acl/README.md +41 -0
- package/rulesets/acl/anti-corruption-layer.rules.es.json +99 -0
- package/rulesets/acl/anti-corruption-layer.rules.json +99 -0
- package/rulesets/adr/ADR_COVERAGE.es.md +133 -0
- package/rulesets/adr/ADR_COVERAGE.md +133 -0
- package/rulesets/adr/README.es.md +17 -0
- package/rulesets/adr/README.md +17 -0
- package/rulesets/adr/adr-0002-hexagonal-architecture.rules.json +103 -0
- package/rulesets/adr/adr-0005-cicd-quality-gates.rules.json +102 -0
- package/rulesets/adr/adr-0010-multi-tenancy.rules.json +129 -0
- package/rulesets/adr/adr-0018-testing-pyramid.rules.json +115 -0
- package/rulesets/adr/adr-0032-protocol-selection.rules.json +134 -0
- package/rulesets/adr/adr-0040-multi-runtime.rules.json +131 -0
- package/rulesets/adr/adr-0050-gitflow-branching.rules.json +176 -0
- package/rulesets/adr/generated/adr-0001-monorepo-orchestration-principle.rules.json +29 -0
- package/rulesets/adr/generated/adr-0006-microservices-transition-via-sidecar-pattern.rules.json +29 -0
- package/rulesets/adr/generated/adr-0009-strict-dependency-pinning-and-automated-vulnerability-manage.rules.json +29 -0
- package/rulesets/adr/generated/adr-0011-fault-tolerance-and-resiliency-patterns.rules.json +29 -0
- package/rulesets/adr/generated/adr-0013-cloud-infrastructure-topology-and-disaster-recovery-dr.rules.json +28 -0
- package/rulesets/adr/generated/adr-0014-multi-layer-distributed-caching-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0015-event-driven-architecture-eda-for-intra-domain-communication.rules.json +29 -0
- package/rulesets/adr/generated/adr-0016-immutable-business-audit-trail-and-change-tracking.rules.json +29 -0
- package/rulesets/adr/generated/adr-0017-feature-flagging-strategy-for-progressive-delivery.rules.json +28 -0
- package/rulesets/adr/generated/adr-0019-tactical-design-patterns-for-future-proofing.rules.json +29 -0
- package/rulesets/adr/generated/adr-0020-identity-provider-abstraction-strategy.rules.json +28 -0
- package/rulesets/adr/generated/adr-0024-centralized-configuration-feature-platform.rules.json +28 -0
- package/rulesets/adr/generated/adr-0025-feature-flag-provider-abstraction-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0028-self-hosted-open-source-hybrid-infrastructure.rules.json +29 -0
- package/rulesets/adr/generated/adr-0030-two-tier-distributed-gateway-model.rules.json +28 -0
- package/rulesets/adr/generated/adr-0031-schema-per-bounded-context-and-domain-event-catalog.rules.json +29 -0
- package/rulesets/adr/generated/adr-0033-transactional-outbox-pattern-for-async-messaging.rules.json +28 -0
- package/rulesets/adr/generated/adr-0034-cqrs-pattern-application-matrix.rules.json +29 -0
- package/rulesets/adr/generated/adr-0035-distributed-saga-pattern-implementation-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0036-message-bus-delivery-flow-control-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0037-enterprise-performance-concurrency-chaos-verification-strate.rules.json +28 -0
- package/rulesets/adr/generated/adr-0039-deployment-topology-abstraction-environment-switcher.rules.json +29 -0
- package/rulesets/adr/generated/adr-0041-dual-engine-policy-evaluation-native-opa.rules.json +28 -0
- package/rulesets/adr/generated/adr-0044-configurable-security-persistence-strategy-agnosticism-vs-na.rules.json +29 -0
- package/rulesets/adr/generated/adr-0045-microservice-extraction-readiness-criteria.rules.json +29 -0
- package/rulesets/adr/generated/adr-0046-unified-traceability-via-w3c-tracecontext.rules.json +29 -0
- package/rulesets/adr/generated/adr-0047-progressive-architecture-evolution-framework-modular-monolit.rules.json +29 -0
- package/rulesets/adr/generated/adr-0048-enterprise-taxonomy-standardization-and-reference-layout.rules.json +28 -0
- package/rulesets/adr/generated/adr-0049-naming-semantics-clean-code-policy-e2e-and-global.rules.json +29 -0
- package/rulesets/adr/generated/adr-0051-enterprise-database-engine-selection-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0052-unit-testing-isolation-strategy-mocks-vs-stubs.rules.json +29 -0
- package/rulesets/adr/generated/adr-0053-integration-and-e2e-testing-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0054-database-design-and-normalization-standards.rules.json +29 -0
- package/rulesets/adr/generated/adr-0055-microfrontends-architecture-strategy.rules.json +28 -0
- package/rulesets/adr/generated/adr-0056-enterprise-naming-design-conventions-multi-language-multi-pl.rules.json +29 -0
- package/rulesets/adr/generated/adr-0057-architecture-intelligence-catalog.rules.json +27 -0
- package/rulesets/adr/generated/adr-0058-ai-consumable-architecture-knowledge.rules.json +27 -0
- package/rulesets/adr/generated/adr-0067-modular-monolith-persistence-boundaries.rules.json +28 -0
- package/rulesets/adr/generated/adr-0068-documentation-release-gitflow.rules.json +29 -0
- package/rulesets/adr/generated/adr-0069-ai-agent-context-protocol-integration.rules.json +28 -0
- package/rulesets/adr/generated/adr-0070-lean-root-repository-taxonomy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0071-domain-layer-base-class-and-inheritance-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0072-utc-date-storage-browser-timezone-detection-and-language-res.rules.json +29 -0
- package/rulesets/adr/generated/adr-0073-unified-cli-mcp-output-contract-and-gate-evidence-schema.rules.json +29 -0
- package/rulesets/adr/generated/adr-0074-evolith-core-api-native-exposure-layer.rules.json +29 -0
- package/rulesets/adr/generated/adr-0075-core-api-authentication-strategy.rules.json +28 -0
- package/rulesets/adr/generated/adr-0076-domain-oriented-microservice-architecture-doma.rules.json +28 -0
- package/rulesets/adr/generated/adr-0077-masstransit-v9-commercial-pivot-stay-on-v8-monitor-opentrans.rules.json +28 -0
- package/rulesets/adr/generated/adr-0078-domain-financial-separation-governance.rules.json +29 -0
- package/rulesets/adr/generated/adr-0079-multi-topology-reference-corpus-and-topology-manifest-contra.rules.json +29 -0
- package/rulesets/adr/generated/adr-0080-remote-repository-reference-contract.rules.json +29 -0
- package/rulesets/adr/generated/adr-0081-agentic-ai-sandbox-isolation-boundary.rules.json +29 -0
- package/rulesets/adr/generated/adr-0082-agentic-ai-prompt-context-and-tool-trust-boundary.rules.json +28 -0
- package/rulesets/adr/generated/adr-0083-agentic-ai-action-authorization-and-audit.rules.json +29 -0
- package/rulesets/adr/generated/adr-0084-data-mesh-and-data-as-a-product.rules.json +29 -0
- package/rulesets/adr/generated/adr-0085-agnostic-opa-wasm-distribution-architecture.rules.json +28 -0
- package/rulesets/adr/generated/adr-0086-agentic-ai-telemetry-cost-control-standard.rules.json +27 -0
- package/rulesets/adr/generated/adr-0087-attribute-based-access-control-abac-for-agentic-tool-executi.rules.json +29 -0
- package/rulesets/adr/generated/adr-0088-sovereign-identity-for-agentic-ai.rules.json +29 -0
- package/rulesets/adr/generated/adr-0089-event-driven-agentic-workflow-pattern.rules.json +28 -0
- package/rulesets/adr/generated/adr-0090-rag-knowledge-governance-standard.rules.json +29 -0
- package/rulesets/adr/generated/adr-0091-workload-identity-token-rotation-standard.rules.json +29 -0
- package/rulesets/adr/generated/adr-0092-agent-infinite-loop-prevention-and-circuit-breaker-rules.rules.json +29 -0
- package/rulesets/adr/generated/adr-0093-concurrency-control-and-resource-locking-standard-for-mcp-to.rules.json +29 -0
- package/rulesets/adr/generated/adr-0094-multi-agent-handoff-and-task-delegation-standards.rules.json +29 -0
- package/rulesets/adr/generated/adr-0095-serverless-architecture-governance.rules.json +29 -0
- package/rulesets/adr/generated/adr-0096-edge-computing-architecture-governance.rules.json +29 -0
- package/rulesets/adr/generated/adr-0097-knowledge-lifecycle-governance-standard.rules.json +29 -0
- package/rulesets/adr/generated/adr-0098-rest-uri-versioning-and-deprecation-policy.rules.json +29 -0
- package/rulesets/adr/generated/adr-0099-opa-bundle-distribution-via-s3-minio.rules.json +27 -0
- package/rulesets/adr/generated/adr-ai-augmented-0001-harness-engineering-for-ai-augmented-development.rules.json +29 -0
- package/rulesets/adr/generated/adr-ai-augmented-0002-mcp-integration-protocol-for-agent-tool-invocation.rules.json +29 -0
- package/rulesets/adr/generated/adr-ai-augmented-0003-model-selection-governance-for-ai-augmented-workflows.rules.json +29 -0
- package/rulesets/adr/generated/adr-ai-augmented-0004-agents-md-as-mandatory-repository-artifact.rules.json +29 -0
- package/rulesets/adr/generated/adr-ai-augmented-0005-human-in-the-loop-policy-for-autonomous-agent-operations.rules.json +29 -0
- package/rulesets/adr/generated/adr-android-0042-canonical-android-native-mobile-architecture.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0041-canonical-net-c-backend-architecture.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0060-net-multi-tenancy-dual-layer-strategy-ef-core-sql-server.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0061-transactional-event-lifecycle-in-ef-core.rules.json +28 -0
- package/rulesets/adr/generated/adr-dotnet-0062-net-immutable-audit-trail-via-ddl-triggers-delta-capture.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0063-b2b-request-idempotency-middleware-in-asp-net-core.rules.json +28 -0
- package/rulesets/adr/generated/adr-dotnet-0064-net-request-scope-observability-context-propagation.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0065-net-pii-safe-structured-logging-pipeline-serilog.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0066-net-lightweight-http-idempotency-via-imemorycache-idistribut.rules.json +28 -0
- package/rulesets/adr/generated/adr-dotnet-0069-net-grpc-service-setup-protobuf-contracts.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0070-net-api-endpoint-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-dotnet-0071-net-data-access-strategy-ef-core-as-default-orm-dapper-for-o.rules.json +27 -0
- package/rulesets/adr/generated/adr-dotnet-0072-net-aop-cross-cutting-concern-strategy-dispatchproxy-over-pi.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0003-strict-typescript-standards.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0004-frontend-offline-resilience.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0007-observability-with-opentelemetry-loki-and-jaeger.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0008-progressive-multi-module-evolution-with-api-gateway-and-bff-.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0012-advanced-authorization-rbac-abac-strategy.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0021-high-performance-authentication-graph-compilation.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0022-contextual-authentication-and-pluggable-output-projections.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0023-centralized-authorization-core-strategy.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0026-adaptive-mfa-and-passwordless-platform.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0027-dual-protocol-api-strategy-rest-grpc.rules.json +28 -0
- package/rulesets/adr/generated/adr-nodejs-0029-adoption-of-tactical-ddd-primitives-library.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0038-enterprise-error-handling-result-pattern-strategy.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0043-data-access-and-orm-strategy-for-node-js.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0044-frontend-clean-architecture-layer-boundaries-react.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0045-frontend-state-management-zustand-tanstack-query-dual-strate.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0046-prohibition-of-raw-technical-identifiers-in-user-interfaces.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0047-actionable-user-error-contract-and-correlated-diagnostics.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0048-feature-flag-system-scope-and-structured-criteria-model.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0074-monorepo-orchestration-with-nx.rules.json +29 -0
- package/rulesets/adr/generated/adr-nodejs-0075-application-gateway-bff-with-nestjs.rules.json +29 -0
- package/rulesets/architecture/README.es.md +21 -0
- package/rulesets/architecture/README.md +21 -0
- package/rulesets/architecture/opa/progressive-axis.rego +50 -0
- package/rulesets/cli/README.es.md +17 -0
- package/rulesets/cli/README.md +17 -0
- package/rulesets/cli/core-parity.rules.json +61 -0
- package/rulesets/cli/release-readiness.rules.json +77 -0
- package/rulesets/compliance-baseline/README.es.md +26 -0
- package/rulesets/compliance-baseline/README.md +26 -0
- package/rulesets/compliance-baseline/compliance-baseline.rules.json +81 -0
- package/rulesets/contracts/README.es.md +19 -0
- package/rulesets/contracts/README.md +19 -0
- package/rulesets/contracts/evolith-machine-contracts.json +29 -0
- package/rulesets/contracts/fixtures/gate-evidence.success.json +10 -0
- package/rulesets/contracts/fixtures/output-envelope.success.json +23 -0
- package/rulesets/cross-cutting/README.es.md +14 -0
- package/rulesets/cross-cutting/README.md +14 -0
- package/rulesets/cross-cutting/compliance-baseline.rules.json +81 -0
- package/rulesets/cross-cutting/definition-of-done.rules.json +135 -0
- package/rulesets/cross-cutting/engineering-manifesto.rules.json +145 -0
- package/rulesets/cross-cutting/repository-taxonomy.rules.json +172 -0
- package/rulesets/definition-of-done/README.es.md +26 -0
- package/rulesets/definition-of-done/README.md +26 -0
- package/rulesets/definition-of-done/definition-of-done.rules.json +135 -0
- package/rulesets/engineering-manifesto/README.es.md +26 -0
- package/rulesets/engineering-manifesto/README.md +26 -0
- package/rulesets/engineering-manifesto/engineering-manifesto.rules.json +145 -0
- package/rulesets/evidence/README.es.md +12 -0
- package/rulesets/evidence/README.md +12 -0
- package/rulesets/evidence/evidence-manifest.rules.json +48 -0
- package/rulesets/executive-scorecards/executive-scorecards.rules.es.json +213 -0
- package/rulesets/executive-scorecards/executive-scorecards.rules.json +213 -0
- package/rulesets/governance/README.es.md +13 -0
- package/rulesets/governance/README.md +13 -0
- package/rulesets/governance/abac-mcp-access.rules.es.json +41 -0
- package/rulesets/governance/abac-mcp-access.rules.json +41 -0
- package/rulesets/governance/executive-scorecards.rules.es.json +213 -0
- package/rulesets/governance/executive-scorecards.rules.json +213 -0
- package/rulesets/governance/inheritance.rules.json +115 -0
- package/rulesets/governance/knowledge-intake.rules.json +18 -0
- package/rulesets/governance/open-core-boundary.rules.es.json +148 -0
- package/rulesets/governance/open-core-boundary.rules.json +148 -0
- package/rulesets/governance/satellite-contracts.rules.json +183 -0
- package/rulesets/infrastructure/helm-enforcement.rules.json +21 -0
- package/rulesets/infrastructure/opa/helm-enforcement.rego +25 -0
- package/rulesets/infrastructure/opa/helm-enforcement.test.rego +31 -0
- package/rulesets/infrastructure/opa/opa-sidecar-bundle.rego +115 -0
- package/rulesets/infrastructure/opa/opa-sidecar-bundle.test.rego +66 -0
- package/rulesets/infrastructure/opa-sidecar-bundle.rules.json +18 -0
- package/rulesets/mcp/README.es.md +12 -0
- package/rulesets/mcp/README.md +12 -0
- package/rulesets/mcp/protocol-compliance.rules.json +57 -0
- package/rulesets/observability/README.es.md +12 -0
- package/rulesets/observability/README.md +12 -0
- package/rulesets/observability/telemetry-evidence.rules.json +48 -0
- package/rulesets/opa/README.es.md +22 -0
- package/rulesets/opa/README.md +22 -0
- package/rulesets/opa/abac-mcp-tool-access.rego +122 -0
- package/rulesets/opa/abac-mcp-tool-access.test.rego +33 -0
- package/rulesets/opa/anti-corruption-layer.rego +39 -0
- package/rulesets/opa/anti-corruption-layer.test.rego +118 -0
- package/rulesets/opa/ci-cd.rego +41 -0
- package/rulesets/opa/ci-cd.test.rego +23 -0
- package/rulesets/opa/cicd-quality-gates.rego +29 -0
- package/rulesets/opa/cicd-quality-gates.test.rego +54 -0
- package/rulesets/opa/cli-core-parity.rego +17 -0
- package/rulesets/opa/cli-core-parity.test.rego +39 -0
- package/rulesets/opa/cli-readiness.rego +32 -0
- package/rulesets/opa/cli-readiness.test.rego +23 -0
- package/rulesets/opa/cli-release-readiness.rego +21 -0
- package/rulesets/opa/cli-release-readiness.test.rego +46 -0
- package/rulesets/opa/compliance-baseline.rego +95 -0
- package/rulesets/opa/compliance-baseline.test.rego +89 -0
- package/rulesets/opa/dod.rego +42 -0
- package/rulesets/opa/dod.test.rego +250 -0
- package/rulesets/opa/engineering-manifesto.rego +78 -0
- package/rulesets/opa/engineering-manifesto.test.rego +133 -0
- package/rulesets/opa/evidence.rego +64 -0
- package/rulesets/opa/evidence.test.rego +23 -0
- package/rulesets/opa/executive-scorecards.rego +41 -0
- package/rulesets/opa/executive-scorecards.test.rego +60 -0
- package/rulesets/opa/gitflow-branching.rego +41 -0
- package/rulesets/opa/gitflow-branching.test.rego +60 -0
- package/rulesets/opa/governance.rego +39 -0
- package/rulesets/opa/governance.test.rego +23 -0
- package/rulesets/opa/hexagonal-architecture.rego +33 -0
- package/rulesets/opa/hexagonal-architecture.test.rego +57 -0
- package/rulesets/opa/infrastructure/helm-enforcement.rego +33 -0
- package/rulesets/opa/infrastructure/opa-sidecar-bundle.rego +42 -0
- package/rulesets/opa/knowledge-intake.rego +98 -0
- package/rulesets/opa/knowledge-intake.test.rego +50 -0
- package/rulesets/opa/main.rego +147 -0
- package/rulesets/opa/main_test.rego +149 -0
- package/rulesets/opa/mcp.rego +61 -0
- package/rulesets/opa/mcp.test.rego +27 -0
- package/rulesets/opa/multi-runtime.rego +33 -0
- package/rulesets/opa/multi-runtime.test.rego +53 -0
- package/rulesets/opa/multi-tenancy.rego +33 -0
- package/rulesets/opa/multi-tenancy.test.rego +53 -0
- package/rulesets/opa/open-core-boundary.rego +33 -0
- package/rulesets/opa/open-core-boundary.test.rego +60 -0
- package/rulesets/opa/protocol-selection.rego +29 -0
- package/rulesets/opa/protocol-selection.test.rego +46 -0
- package/rulesets/opa/rbac/gate-role-enforcement.rego +112 -0
- package/rulesets/opa/repository-taxonomy.rego +98 -0
- package/rulesets/opa/repository-taxonomy.test.rego +91 -0
- package/rulesets/opa/satellite-contracts.rego +42 -0
- package/rulesets/opa/satellite-contracts.test.rego +70 -0
- package/rulesets/opa/schemas/abac-mcp-tool-access.input.schema.json +21 -0
- package/rulesets/opa/schemas/anti-corruption-layer.input.schema.json +25 -0
- package/rulesets/opa/schemas/ci-cd.input.schema.json +27 -0
- package/rulesets/opa/schemas/cicd-quality-gates.input.schema.json +33 -0
- package/rulesets/opa/schemas/cli-core-parity.input.schema.json +30 -0
- package/rulesets/opa/schemas/cli-readiness.input.schema.json +28 -0
- package/rulesets/opa/schemas/cli-release-readiness.input.schema.json +26 -0
- package/rulesets/opa/schemas/compliance-baseline.input.schema.json +25 -0
- package/rulesets/opa/schemas/dod.input.schema.json +38 -0
- package/rulesets/opa/schemas/engineering-manifesto.input.schema.json +24 -0
- package/rulesets/opa/schemas/evidence.input.schema.json +35 -0
- package/rulesets/opa/schemas/executive-scorecards.input.schema.json +36 -0
- package/rulesets/opa/schemas/gitflow-branching.input.schema.json +36 -0
- package/rulesets/opa/schemas/governance.input.schema.json +19 -0
- package/rulesets/opa/schemas/hexagonal-architecture.input.schema.json +46 -0
- package/rulesets/opa/schemas/knowledge-intake.input.schema.json +57 -0
- package/rulesets/opa/schemas/mcp.input.schema.json +38 -0
- package/rulesets/opa/schemas/multi-runtime.input.schema.json +27 -0
- package/rulesets/opa/schemas/multi-tenancy.input.schema.json +27 -0
- package/rulesets/opa/schemas/open-core-boundary.input.schema.json +36 -0
- package/rulesets/opa/schemas/protocol-selection.input.schema.json +26 -0
- package/rulesets/opa/schemas/repository-taxonomy.input.schema.json +18 -0
- package/rulesets/opa/schemas/satellite-contracts.input.schema.json +38 -0
- package/rulesets/opa/schemas/taxonomy.input.schema.json +27 -0
- package/rulesets/opa/schemas/testing-pyramid.input.schema.json +42 -0
- package/rulesets/opa/schemas/version-pinning.input.schema.json +39 -0
- package/rulesets/opa/sdlc/coverage.rego +49 -0
- package/rulesets/opa/sdlc/coverage.test.rego +29 -0
- package/rulesets/opa/sdlc/pyramid-distribution.rego +31 -0
- package/rulesets/opa/sdlc/pyramid-distribution.test.rego +33 -0
- package/rulesets/opa/taxonomy.rego +51 -0
- package/rulesets/opa/taxonomy.test.rego +28 -0
- package/rulesets/opa/telemetry-evidence.rego +102 -0
- package/rulesets/opa/testing-pyramid.rego +49 -0
- package/rulesets/opa/testing-pyramid.test.rego +81 -0
- package/rulesets/opa/version-pinning.rego +99 -0
- package/rulesets/opa/version-pinning.test.rego +28 -0
- package/rulesets/phase-gates/README.es.md +28 -0
- package/rulesets/phase-gates/README.md +28 -0
- package/rulesets/phase-gates/phase-gates.rules.json +297 -0
- package/rulesets/quality-thresholds/README.es.md +28 -0
- package/rulesets/quality-thresholds/README.md +28 -0
- package/rulesets/quality-thresholds/quality-thresholds.rules.json +96 -0
- package/rulesets/repository-taxonomy/README.es.md +26 -0
- package/rulesets/repository-taxonomy/README.md +26 -0
- package/rulesets/repository-taxonomy/repository-taxonomy.rules.json +172 -0
- package/rulesets/satellite-contracts/README.es.md +27 -0
- package/rulesets/satellite-contracts/README.md +27 -0
- package/rulesets/satellite-contracts/satellite-contracts.rules.json +183 -0
- package/rulesets/schema/README.es.md +39 -0
- package/rulesets/schema/README.md +39 -0
- package/rulesets/schema/adr.schema.json +138 -0
- package/rulesets/schema/agile-backlog.schema.json +91 -0
- package/rulesets/schema/ballpark-estimation.schema.json +109 -0
- package/rulesets/schema/build-vs-compose.schema.json +98 -0
- package/rulesets/schema/cli-impact-analysis.schema.json +114 -0
- package/rulesets/schema/discovery-canvas.schema.json +92 -0
- package/rulesets/schema/evolith-user-story.schema.json +105 -0
- package/rulesets/schema/evolith-yaml.schema.json +191 -0
- package/rulesets/schema/functional-story.schema.json +111 -0
- package/rulesets/schema/gate-evidence.schema.json +85 -0
- package/rulesets/schema/integration-evidence.schema.json +47 -0
- package/rulesets/schema/knowledge-intake.schema.json +67 -0
- package/rulesets/schema/knowledge-projection.schema.json +24 -0
- package/rulesets/schema/maturity-evidence.schema.json +59 -0
- package/rulesets/schema/observability-validation.schema.json +85 -0
- package/rulesets/schema/on-call-handoff.schema.json +91 -0
- package/rulesets/schema/output-envelope.schema.json +102 -0
- package/rulesets/schema/prd.schema.json +117 -0
- package/rulesets/schema/release-notes.schema.json +138 -0
- package/rulesets/schema/rollback-rehearsal.schema.json +73 -0
- package/rulesets/schema/ruleset-sdlc.schema.json +59 -0
- package/rulesets/schema/ruleset-standard.schema.json +73 -0
- package/rulesets/schema/security-scan-report.schema.json +79 -0
- package/rulesets/schema/source-registry.schema.json +51 -0
- package/rulesets/schema/technical-feasibility.schema.json +66 -0
- package/rulesets/schema/technical-story.schema.json +112 -0
- package/rulesets/schema/test-summary-report.schema.json +158 -0
- package/rulesets/schema/topology-composition.schema.json +43 -0
- package/rulesets/schema/topology-manifest.schema.json +421 -0
- package/rulesets/sdlc/README.es.md +12 -0
- package/rulesets/sdlc/README.md +12 -0
- package/rulesets/sdlc/default-workflow.yaml +73 -0
- package/rulesets/sdlc/dependency-pinning.rules.json +183 -0
- package/rulesets/sdlc/phase-gates.rules.json +297 -0
- package/rulesets/sdlc/quality-thresholds.rules.json +96 -0
- package/rulesets/topologies/README.es.md +42 -0
- package/rulesets/topologies/README.md +42 -0
- package/rulesets/topologies/agentic-ai/README.es.md +142 -0
- package/rulesets/topologies/agentic-ai/README.md +142 -0
- package/rulesets/topologies/agentic-ai/adoption.es.md +37 -0
- package/rulesets/topologies/agentic-ai/adoption.md +37 -0
- package/rulesets/topologies/agentic-ai/agent.config.schema.json +100 -0
- package/rulesets/topologies/agentic-ai/agentic-ai.rego +46 -0
- package/rulesets/topologies/agentic-ai/agentic-ai.rules.json +109 -0
- package/rulesets/topologies/agentic-ai/agentic-ai.test.rego +68 -0
- package/rulesets/topologies/agentic-ai/agentic-ai.wasm +0 -0
- package/rulesets/topologies/agentic-ai/cli/cli-flows.es.md +35 -0
- package/rulesets/topologies/agentic-ai/cli/cli-flows.md +45 -0
- package/rulesets/topologies/agentic-ai/evidence.es.md +25 -0
- package/rulesets/topologies/agentic-ai/evidence.md +25 -0
- package/rulesets/topologies/agentic-ai/evolution.es.md +26 -0
- package/rulesets/topologies/agentic-ai/evolution.md +26 -0
- package/rulesets/topologies/agentic-ai/fixtures/invalid-agent.config.json +48 -0
- package/rulesets/topologies/agentic-ai/fixtures/valid-agent.config.json +48 -0
- package/rulesets/topologies/agentic-ai/maturity.es.md +33 -0
- package/rulesets/topologies/agentic-ai/maturity.md +33 -0
- package/rulesets/topologies/agentic-ai/mcp/mcp-manifest.json +100 -0
- package/rulesets/topologies/agentic-ai/openapi/openapi.yaml +187 -0
- package/rulesets/topologies/agentic-ai/operations.es.md +32 -0
- package/rulesets/topologies/agentic-ai/operations.md +32 -0
- package/rulesets/topologies/agentic-ai/parity-fixtures/compliant.json +18 -0
- package/rulesets/topologies/agentic-ai/parity-fixtures/violation.json +22 -0
- package/rulesets/topologies/agentic-ai/patterns.es.md +32 -0
- package/rulesets/topologies/agentic-ai/patterns.md +32 -0
- package/rulesets/topologies/agentic-ai/resilience.es.md +26 -0
- package/rulesets/topologies/agentic-ai/resilience.md +26 -0
- package/rulesets/topologies/agentic-ai/runbooks.es.md +48 -0
- package/rulesets/topologies/agentic-ai/runbooks.md +48 -0
- package/rulesets/topologies/agentic-ai/security.es.md +26 -0
- package/rulesets/topologies/agentic-ai/security.md +26 -0
- package/rulesets/topologies/agentic-ai/topology.manifest.json +127 -0
- package/rulesets/topologies/data-mesh/README.es.md +69 -0
- package/rulesets/topologies/data-mesh/README.md +69 -0
- package/rulesets/topologies/data-mesh/adoption.es.md +95 -0
- package/rulesets/topologies/data-mesh/adoption.md +95 -0
- package/rulesets/topologies/data-mesh/cli/cli-flows.es.md +41 -0
- package/rulesets/topologies/data-mesh/cli/cli-flows.md +53 -0
- package/rulesets/topologies/data-mesh/data-mesh.rego +11 -0
- package/rulesets/topologies/data-mesh/data-mesh.rules.json +100 -0
- package/rulesets/topologies/data-mesh/data-mesh.test.rego +107 -0
- package/rulesets/topologies/data-mesh/data-mesh.wasm +0 -0
- package/rulesets/topologies/data-mesh/evidence.es.md +111 -0
- package/rulesets/topologies/data-mesh/evidence.md +111 -0
- package/rulesets/topologies/data-mesh/evolution.es.md +67 -0
- package/rulesets/topologies/data-mesh/evolution.md +67 -0
- package/rulesets/topologies/data-mesh/fixtures/invalid.topology.config.json +12 -0
- package/rulesets/topologies/data-mesh/fixtures/valid.topology.config.json +12 -0
- package/rulesets/topologies/data-mesh/maturity.es.md +36 -0
- package/rulesets/topologies/data-mesh/maturity.md +36 -0
- package/rulesets/topologies/data-mesh/mcp/mcp-manifest.json +68 -0
- package/rulesets/topologies/data-mesh/openapi/openapi.yaml +186 -0
- package/rulesets/topologies/data-mesh/operations.es.md +63 -0
- package/rulesets/topologies/data-mesh/operations.md +63 -0
- package/rulesets/topologies/data-mesh/parity-fixtures/compliant.json +18 -0
- package/rulesets/topologies/data-mesh/parity-fixtures/violation.json +21 -0
- package/rulesets/topologies/data-mesh/patterns.es.md +67 -0
- package/rulesets/topologies/data-mesh/patterns.md +67 -0
- package/rulesets/topologies/data-mesh/resilience.es.md +64 -0
- package/rulesets/topologies/data-mesh/resilience.md +64 -0
- package/rulesets/topologies/data-mesh/runbooks.es.md +147 -0
- package/rulesets/topologies/data-mesh/runbooks.md +147 -0
- package/rulesets/topologies/data-mesh/security.es.md +66 -0
- package/rulesets/topologies/data-mesh/security.md +66 -0
- package/rulesets/topologies/data-mesh/topology.config.schema.json +30 -0
- package/rulesets/topologies/data-mesh/topology.manifest.json +107 -0
- package/rulesets/topologies/edge-computing/README.es.md +81 -0
- package/rulesets/topologies/edge-computing/README.md +81 -0
- package/rulesets/topologies/edge-computing/adoption.es.md +268 -0
- package/rulesets/topologies/edge-computing/adoption.md +268 -0
- package/rulesets/topologies/edge-computing/cli/cli-flows.es.md +41 -0
- package/rulesets/topologies/edge-computing/cli/cli-flows.md +53 -0
- package/rulesets/topologies/edge-computing/edge-computing.rego +41 -0
- package/rulesets/topologies/edge-computing/edge-computing.rules.json +50 -0
- package/rulesets/topologies/edge-computing/edge-computing.test.rego +33 -0
- package/rulesets/topologies/edge-computing/edge-computing.wasm +0 -0
- package/rulesets/topologies/edge-computing/evidence.es.md +263 -0
- package/rulesets/topologies/edge-computing/evidence.md +263 -0
- package/rulesets/topologies/edge-computing/evolution.es.md +257 -0
- package/rulesets/topologies/edge-computing/evolution.md +257 -0
- package/rulesets/topologies/edge-computing/fixtures/invalid.topology.config.json +6 -0
- package/rulesets/topologies/edge-computing/fixtures/valid.topology.config.json +6 -0
- package/rulesets/topologies/edge-computing/maturity.es.md +36 -0
- package/rulesets/topologies/edge-computing/maturity.md +36 -0
- package/rulesets/topologies/edge-computing/mcp/mcp-manifest.json +72 -0
- package/rulesets/topologies/edge-computing/openapi/openapi.yaml +187 -0
- package/rulesets/topologies/edge-computing/operations.es.md +148 -0
- package/rulesets/topologies/edge-computing/operations.md +148 -0
- package/rulesets/topologies/edge-computing/parity-fixtures/compliant.json +12 -0
- package/rulesets/topologies/edge-computing/parity-fixtures/violation.json +13 -0
- package/rulesets/topologies/edge-computing/patterns.es.md +291 -0
- package/rulesets/topologies/edge-computing/patterns.md +290 -0
- package/rulesets/topologies/edge-computing/resilience.es.md +232 -0
- package/rulesets/topologies/edge-computing/resilience.md +229 -0
- package/rulesets/topologies/edge-computing/runbooks.es.md +405 -0
- package/rulesets/topologies/edge-computing/runbooks.md +405 -0
- package/rulesets/topologies/edge-computing/security.es.md +218 -0
- package/rulesets/topologies/edge-computing/security.md +218 -0
- package/rulesets/topologies/edge-computing/topology.config.schema.json +13 -0
- package/rulesets/topologies/edge-computing/topology.manifest.json +113 -0
- package/rulesets/topologies/event-driven/README.es.md +71 -0
- package/rulesets/topologies/event-driven/README.md +71 -0
- package/rulesets/topologies/event-driven/adoption.es.md +67 -0
- package/rulesets/topologies/event-driven/adoption.md +67 -0
- package/rulesets/topologies/event-driven/cli/cli-flows.es.md +41 -0
- package/rulesets/topologies/event-driven/cli/cli-flows.md +53 -0
- package/rulesets/topologies/event-driven/event-driven.rego +11 -0
- package/rulesets/topologies/event-driven/event-driven.rules.json +100 -0
- package/rulesets/topologies/event-driven/event-driven.test.rego +107 -0
- package/rulesets/topologies/event-driven/event-driven.wasm +0 -0
- package/rulesets/topologies/event-driven/evidence.es.md +69 -0
- package/rulesets/topologies/event-driven/evidence.md +69 -0
- package/rulesets/topologies/event-driven/evolution.es.md +59 -0
- package/rulesets/topologies/event-driven/evolution.md +59 -0
- package/rulesets/topologies/event-driven/fixtures/invalid.topology.config.json +12 -0
- package/rulesets/topologies/event-driven/fixtures/valid.topology.config.json +12 -0
- package/rulesets/topologies/event-driven/maturity.es.md +36 -0
- package/rulesets/topologies/event-driven/maturity.md +36 -0
- package/rulesets/topologies/event-driven/mcp/mcp-manifest.json +68 -0
- package/rulesets/topologies/event-driven/openapi/openapi.yaml +186 -0
- package/rulesets/topologies/event-driven/operations.es.md +67 -0
- package/rulesets/topologies/event-driven/operations.md +67 -0
- package/rulesets/topologies/event-driven/parity-fixtures/compliant.json +18 -0
- package/rulesets/topologies/event-driven/parity-fixtures/violation.json +21 -0
- package/rulesets/topologies/event-driven/patterns.es.md +68 -0
- package/rulesets/topologies/event-driven/patterns.md +68 -0
- package/rulesets/topologies/event-driven/resilience.es.md +65 -0
- package/rulesets/topologies/event-driven/resilience.md +65 -0
- package/rulesets/topologies/event-driven/runbooks.es.md +79 -0
- package/rulesets/topologies/event-driven/runbooks.md +79 -0
- package/rulesets/topologies/event-driven/security.es.md +59 -0
- package/rulesets/topologies/event-driven/security.md +59 -0
- package/rulesets/topologies/event-driven/topology.config.schema.json +30 -0
- package/rulesets/topologies/event-driven/topology.manifest.json +109 -0
- package/rulesets/topologies/progressive-axis/distributed-modules/distributed-modules.rules.es.json +111 -0
- package/rulesets/topologies/progressive-axis/distributed-modules/distributed-modules.rules.json +111 -0
- package/rulesets/topologies/progressive-axis/microservices/microservices.rules.es.json +106 -0
- package/rulesets/topologies/progressive-axis/microservices/microservices.rules.json +106 -0
- package/rulesets/topologies/progressive-axis/modular-monolith/modular-monolith.rules.es.json +148 -0
- package/rulesets/topologies/progressive-axis/modular-monolith/modular-monolith.rules.json +148 -0
- package/rulesets/topologies/serverless/README.es.md +74 -0
- package/rulesets/topologies/serverless/README.md +74 -0
- package/rulesets/topologies/serverless/adoption.es.md +50 -0
- package/rulesets/topologies/serverless/adoption.md +50 -0
- package/rulesets/topologies/serverless/cli/cli-flows.es.md +41 -0
- package/rulesets/topologies/serverless/cli/cli-flows.md +53 -0
- package/rulesets/topologies/serverless/evidence.es.md +66 -0
- package/rulesets/topologies/serverless/evidence.md +66 -0
- package/rulesets/topologies/serverless/evolution.es.md +36 -0
- package/rulesets/topologies/serverless/evolution.md +36 -0
- package/rulesets/topologies/serverless/fixtures/invalid.topology.config.json +6 -0
- package/rulesets/topologies/serverless/fixtures/valid.topology.config.json +6 -0
- package/rulesets/topologies/serverless/maturity.es.md +36 -0
- package/rulesets/topologies/serverless/maturity.md +36 -0
- package/rulesets/topologies/serverless/mcp/mcp-manifest.json +72 -0
- package/rulesets/topologies/serverless/openapi/openapi.yaml +186 -0
- package/rulesets/topologies/serverless/operations.es.md +36 -0
- package/rulesets/topologies/serverless/operations.md +36 -0
- package/rulesets/topologies/serverless/parity-fixtures/compliant.json +13 -0
- package/rulesets/topologies/serverless/parity-fixtures/violation.json +15 -0
- package/rulesets/topologies/serverless/patterns.es.md +36 -0
- package/rulesets/topologies/serverless/patterns.md +36 -0
- package/rulesets/topologies/serverless/resilience.es.md +36 -0
- package/rulesets/topologies/serverless/resilience.md +36 -0
- package/rulesets/topologies/serverless/runbooks.es.md +68 -0
- package/rulesets/topologies/serverless/runbooks.md +68 -0
- package/rulesets/topologies/serverless/security.es.md +36 -0
- package/rulesets/topologies/serverless/security.md +36 -0
- package/rulesets/topologies/serverless/serverless.rego +32 -0
- package/rulesets/topologies/serverless/serverless.rules.json +33 -0
- package/rulesets/topologies/serverless/serverless.test.rego +28 -0
- package/rulesets/topologies/serverless/serverless.wasm +0 -0
- package/rulesets/topologies/serverless/topology.config.schema.json +28 -0
- package/rulesets/topologies/serverless/topology.manifest.json +114 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
openapi: "3.1.0"
|
|
2
|
+
info:
|
|
3
|
+
title: "Data Mesh Topology — Core API Surface"
|
|
4
|
+
version: "0.1.0"
|
|
5
|
+
description: >
|
|
6
|
+
REST API surface specific to the Data Mesh topology.
|
|
7
|
+
Describes endpoints exposed by the Core API for querying,
|
|
8
|
+
inspecting, and validating Data Mesh 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 Data Mesh topology information"
|
|
17
|
+
description: >
|
|
18
|
+
Returns the full topology record for Data Mesh, including
|
|
19
|
+
dimension, status, version, governance metadata, and corpus
|
|
20
|
+
artifact references (rulesets, OPA policies, ADRs, guidance).
|
|
21
|
+
operationId: "getDataMeshTopology"
|
|
22
|
+
parameters:
|
|
23
|
+
- name: id
|
|
24
|
+
in: path
|
|
25
|
+
required: true
|
|
26
|
+
schema:
|
|
27
|
+
type: string
|
|
28
|
+
pattern: "^data-mesh$"
|
|
29
|
+
example: "data-mesh"
|
|
30
|
+
responses:
|
|
31
|
+
"200":
|
|
32
|
+
description: "Successful response with Data Mesh 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 Data Mesh topology manifest"
|
|
43
|
+
description: >
|
|
44
|
+
Returns the full topology manifest for Data Mesh, with
|
|
45
|
+
artifact references, corpus configuration, and business
|
|
46
|
+
boundary declaration.
|
|
47
|
+
operationId: "getDataMeshManifest"
|
|
48
|
+
parameters:
|
|
49
|
+
- name: id
|
|
50
|
+
in: path
|
|
51
|
+
required: true
|
|
52
|
+
schema:
|
|
53
|
+
type: string
|
|
54
|
+
pattern: "^data-mesh$"
|
|
55
|
+
responses:
|
|
56
|
+
"200":
|
|
57
|
+
description: "Successful response with Data Mesh 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 Data Mesh topology rules"
|
|
66
|
+
description: >
|
|
67
|
+
Executes all applicable rulesets and OPA policies for Data Mesh
|
|
68
|
+
against a submitted configuration, returning pass/fail per gate.
|
|
69
|
+
operationId: "validateDataMeshTopology"
|
|
70
|
+
parameters:
|
|
71
|
+
- name: id
|
|
72
|
+
in: path
|
|
73
|
+
required: true
|
|
74
|
+
schema:
|
|
75
|
+
type: string
|
|
76
|
+
pattern: "^data-mesh$"
|
|
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: "data-mesh"
|
|
137
|
+
name:
|
|
138
|
+
type: string
|
|
139
|
+
example: "Data Mesh"
|
|
140
|
+
dimension:
|
|
141
|
+
type: string
|
|
142
|
+
example: "data"
|
|
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
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Guía de Operaciones de Malla de Datos
|
|
2
|
+
|
|
3
|
+
> **Navegación Bilingüe:** [English](./operations.md) | [Español](./operations.es.md)
|
|
4
|
+
|
|
5
|
+
**Propietario:** Arquitectura de Datos
|
|
6
|
+
**Topología:** Malla de Datos
|
|
7
|
+
**Reglas Relacionadas:** DAM-R01, DAM-R03
|
|
8
|
+
**ADRs Relacionados:** ADR-0084
|
|
9
|
+
|
|
10
|
+
## Propósito
|
|
11
|
+
|
|
12
|
+
Esta guía define los procedimientos operativos para gestionar los productos de datos a lo largo de su ciclo de vida, desde la designación de dominio hasta la deprecación. Establece el modelo de propiedad de dominio, la gobernanza de la plataforma de autoservicio y el monitoreo de salud de los flujos de datos necesarios para operaciones sostenibles de la malla.
|
|
13
|
+
|
|
14
|
+
## Modelo de Propiedad de Dominio
|
|
15
|
+
|
|
16
|
+
Cada dominio es responsable de sus productos de datos de extremo a extremo. Los propietarios de productos de datos de dominio son responsables de la calidad, disponibilidad y cumplimiento de contratos con consumidores. Las transferencias de propiedad requieren una entrega formal con SLAs actualizados y notificación a consumidores.
|
|
17
|
+
|
|
18
|
+
Los equipos de dominio deben designar un líder de producto de datos que sirva como punto de contacto principal para todos los consumidores. El líder es responsable del esquema, los SLAs de calidad y las decisiones de ciclo de vida del producto.
|
|
19
|
+
|
|
20
|
+
## Ciclo de Vida del Producto de Datos
|
|
21
|
+
|
|
22
|
+
Los productos de datos siguen un ciclo de vida de cuatro etapas: borrador, publicado, deprecado y archivado. Cada etapa tiene criterios de entrada y salida explícitos definidos en DAM-R01. Los productos en estado de borrador no son descubribles a través de la plataforma de autoservicio. Los productos deprecados deben mantener compatibilidad backward por un período mínimo de transición.
|
|
23
|
+
|
|
24
|
+
### Definiciones de Etapa
|
|
25
|
+
|
|
26
|
+
- **Borrador:** Prototipo interno del dominio. Sin SLA. No descubrible en el catálogo de la plataforma.
|
|
27
|
+
- **Publicado:** Listo para consumidores. SLA activo. Registrado en el índice de descubrimiento.
|
|
28
|
+
- **Deprecado:** Programado para eliminación. Compatibilidad backward mantenida según DAM-R08. Consumidores notificados.
|
|
29
|
+
- **Archivado:** Solo lectura. No se aceptan nuevos consumidores. Política de retención según DAM-R05.
|
|
30
|
+
|
|
31
|
+
## Gobernanza de la Plataforma de Autoservicio
|
|
32
|
+
|
|
33
|
+
La plataforma de autoservicio es la interfaz principal para el registro, descubrimiento y consumo de productos de datos. Los equipos de plataforma proporcionan la infraestructura; los equipos de dominio operan sus productos a través de ella.
|
|
34
|
+
|
|
35
|
+
La gobernanza de la plataforma requiere que todos los metadatos del producto de datos — propiedad, esquema, SLAs, clasificación — estén registrados antes de la publicación. Los productos no registrados no deben aparecer en el índice de descubrimiento.
|
|
36
|
+
|
|
37
|
+
## Monitoreo de Flujos de Datos
|
|
38
|
+
|
|
39
|
+
Los equipos de dominio son responsables de monitorear sus flujos de ingesta y la frescura de las salidas. La plataforma proporciona paneles de observabilidad centralizados; los equipos configuran sus propios umbrales de alerta alineados con los SLAs del producto.
|
|
40
|
+
|
|
41
|
+
Dimensiones clave de monitoreo: latencia del flujo, frescura de salida, conteo de registros, deriva de esquema y tasas de error. Todas las métricas deben exponerse a través de la plataforma de autoservicio para visibilidad interdominio.
|
|
42
|
+
|
|
43
|
+
## Verificaciones de Salud del Producto
|
|
44
|
+
|
|
45
|
+
Las verificaciones de salud automatizadas se ejecutan en un horario configurable. El estado de salud se publica en el índice de descubrimiento y es consumido por productos dependientes. Los criterios de verificación incluyen frescura, completitud, unicidad y validez de datos según DAM-R07.
|
|
46
|
+
|
|
47
|
+
Los productos que fallan las verificaciones se marcan en el catálogo de la plataforma y activan notificaciones a consumidores dentro de la ventana de alerta configurada.
|
|
48
|
+
|
|
49
|
+
## Comandos de Validación
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Verificar registro del producto
|
|
53
|
+
node .harness/scripts/ci/01-validate-docs.mjs --target data-mesh
|
|
54
|
+
|
|
55
|
+
# Verificar paridad bilingüe
|
|
56
|
+
node .harness/scripts/ci/04-check-bilingual-parity.mjs
|
|
57
|
+
|
|
58
|
+
# Ejecutar panel de cobertura
|
|
59
|
+
node .harness/scripts/coverage-dashboard.mjs --area data-mesh
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
[Volver al Perfil de Malla de Datos](./README.es.md)
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Data Mesh — Operations Guide
|
|
2
|
+
|
|
3
|
+
> **Bilingual Navigation:** [English](./operations.md) | [Español](./operations.es.md)
|
|
4
|
+
|
|
5
|
+
**Owner:** Data Architecture
|
|
6
|
+
**Topology:** Data Mesh
|
|
7
|
+
**Related Rules:** DAM-R01, DAM-R03
|
|
8
|
+
**Related ADRs:** ADR-0084
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
|
|
12
|
+
This guide defines operational procedures for managing data products across their lifecycle, from domain designation through deprecation. It establishes the domain ownership model, self-serve platform governance, and pipeline health monitoring required for sustainable mesh operations.
|
|
13
|
+
|
|
14
|
+
## Domain Ownership Model
|
|
15
|
+
|
|
16
|
+
Each domain owns its data products end-to-end. Domain data product owners are accountable for quality, availability, and consumer contract compliance. Ownership transfers require formal handoff with updated SLAs and consumer notification.
|
|
17
|
+
|
|
18
|
+
Domain teams must designate a data product lead who serves as the primary point of contact for all consumers. The lead owns the product's schema, quality SLOs, and lifecycle decisions.
|
|
19
|
+
|
|
20
|
+
## Data Product Lifecycle
|
|
21
|
+
|
|
22
|
+
Data products follow a four-stage lifecycle: draft, published, deprecated, and archived. Each stage has explicit entry and exit criteria defined in DAM-R01. Products in draft status are not discoverable through the self-serve platform. Deprecated products must maintain backward compatibility for a minimum transition period.
|
|
23
|
+
|
|
24
|
+
### Stage Definitions
|
|
25
|
+
|
|
26
|
+
- **Draft:** Internal domain prototype. No SLA. Not discoverable via platform catalog.
|
|
27
|
+
- **Published:** Consumer-ready. SLA active. Registered in discovery index.
|
|
28
|
+
- **Deprecated:** Scheduled for removal. Backward compatibility maintained per DAM-R08. Consumers notified.
|
|
29
|
+
- **Archived:** Read-only. No new consumers accepted. Retention policy per DAM-R05.
|
|
30
|
+
|
|
31
|
+
## Self-Serve Platform Governance
|
|
32
|
+
|
|
33
|
+
The self-serve platform is the primary interface for data product registration, discovery, and consumption. Platform teams provide the infrastructure; domain teams operate their products through it.
|
|
34
|
+
|
|
35
|
+
Platform governance requires that all data product metadata — ownership, schema, SLAs, classification — is registered before publication. Unregistered products must not appear in the discovery index.
|
|
36
|
+
|
|
37
|
+
## Pipeline Monitoring
|
|
38
|
+
|
|
39
|
+
Domain teams are responsible for monitoring their ingestion pipelines and output freshness. Platform provides centralized observability dashboards; teams configure their own alerting thresholds aligned to product SLOs.
|
|
40
|
+
|
|
41
|
+
Key monitoring dimensions: pipeline latency, output freshness, record counts, schema drift, and error rates. All metrics must be exposed through the self-serve platform for cross-domain visibility.
|
|
42
|
+
|
|
43
|
+
## Product Health Checks
|
|
44
|
+
|
|
45
|
+
Automated health checks run on a configurable schedule. Health status is published to the discovery index and consumed by dependent products. Health check criteria include data freshness, completeness, uniqueness, and validity as defined in DAM-R07.
|
|
46
|
+
|
|
47
|
+
Products failing health checks are flagged in the platform catalog and trigger consumer notifications within the configured alert window.
|
|
48
|
+
|
|
49
|
+
## Validation Commands
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Verify product registration
|
|
53
|
+
node .harness/scripts/ci/01-validate-docs.mjs --target data-mesh
|
|
54
|
+
|
|
55
|
+
# Check bilingual parity
|
|
56
|
+
node .harness/scripts/ci/04-check-bilingual-parity.mjs
|
|
57
|
+
|
|
58
|
+
# Run coverage dashboard
|
|
59
|
+
node .harness/scripts/coverage-dashboard.mjs --area data-mesh
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
[Back to Data Mesh Profile](./README.md)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"input": {
|
|
3
|
+
"satellite": {
|
|
4
|
+
"dataMesh": {
|
|
5
|
+
"isDataProduct": true,
|
|
6
|
+
"hasDataContracts": true,
|
|
7
|
+
"federatedGovernance": true,
|
|
8
|
+
"hasLineageTracking": true,
|
|
9
|
+
"hasRetentionPolicy": true,
|
|
10
|
+
"hasConsumptionContracts": true,
|
|
11
|
+
"hasDataQualitySLO": true,
|
|
12
|
+
"hasBackwardCompatibleContracts": true,
|
|
13
|
+
"hasDiscoveryRegistration": true
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"expectedNative": []
|
|
18
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"input": {
|
|
3
|
+
"satellite": {
|
|
4
|
+
"dataMesh": {
|
|
5
|
+
"isDataProduct": false,
|
|
6
|
+
"hasDataContracts": true,
|
|
7
|
+
"federatedGovernance": true,
|
|
8
|
+
"hasLineageTracking": false,
|
|
9
|
+
"hasRetentionPolicy": true,
|
|
10
|
+
"hasConsumptionContracts": true,
|
|
11
|
+
"hasDataQualitySLO": true,
|
|
12
|
+
"hasBackwardCompatibleContracts": true,
|
|
13
|
+
"hasDiscoveryRegistration": true
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"expectedNative": [
|
|
18
|
+
{ "ruleId": "DAM-R01", "severity": "error", "file": null },
|
|
19
|
+
{ "ruleId": "DAM-R04", "severity": "error", "file": null }
|
|
20
|
+
]
|
|
21
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Guía de Patrones de Malla de Datos
|
|
2
|
+
|
|
3
|
+
> **Navegación Bilingüe:** [English](./patterns.md) | [Español](./patterns.es.md)
|
|
4
|
+
|
|
5
|
+
**Propietario:** Arquitectura de Datos
|
|
6
|
+
**Topología:** Malla de Datos
|
|
7
|
+
**Reglas Relacionadas:** DAM-R01, DAM-R02, DAM-R06
|
|
8
|
+
**ADRs Relacionados:** ADR-0084, ADR-0079
|
|
9
|
+
|
|
10
|
+
## Propósito
|
|
11
|
+
|
|
12
|
+
Esta guía describe los patrones arquitectónicos centrales que definen la topología de malla de datos. Cada patrón aborda una preocupación específica — diseño de producto, gobernanza, contratos, plataforma, descubrimiento o propiedad. Estos patrones son componibles con topologías de módulos distribuidos, microservicios, event-driven, serverless y agentic-ai.
|
|
13
|
+
|
|
14
|
+
## Datos como Producto
|
|
15
|
+
|
|
16
|
+
Los productos de datos son entidades arquitectónicas de primera clase con propiedad explícita, SLAs, esquemas y gestión de ciclo de vida. Los productos no son extracciones o vistas ad-hoc — son activos gestionados gobernados por DAM-R01.
|
|
17
|
+
|
|
18
|
+
Cada producto expone una interfaz estable definida por su esquema. Los cambios siguen los requisitos de compatibilidad backward de DAM-R08. Los productos deben ser descubribles, direccionables y confiables.
|
|
19
|
+
|
|
20
|
+
## Gobernanza Federada
|
|
21
|
+
|
|
22
|
+
La gobernanza opera en dos niveles: definición central de políticas y aplicación a nivel de dominio. El órgano central de gobernanza establece estándares — clasificación, seguridad, cumplimiento — mientras los dominios los implementan dentro de los límites de sus productos.
|
|
23
|
+
|
|
24
|
+
Este patrón previene cuellos de botella de gobernanza mientras mantiene la consistencia organizacional. Las excepciones de gobernanza requieren aprobación formal y se rastrean como excepciones en el registro de gobernanza según DAM-R03.
|
|
25
|
+
|
|
26
|
+
## Contratos de Datos (DAM-R02)
|
|
27
|
+
|
|
28
|
+
Los contratos de datos son acuerdos formales entre productores y consumidores. Un contrato especifica el esquema, garantías de calidad, SLAs de frescura y políticas de acceso para un producto de datos. Los contratos se versionan y están sujetos a reglas de compatibilidad backward.
|
|
29
|
+
|
|
30
|
+
Los contratos deben ser legibles por máquina y ejecutados por la plataforma. Los acuerdos manuales no son contratos válidos. La plataforma de autoservicio media todas las operaciones del ciclo de vida de contratos.
|
|
31
|
+
|
|
32
|
+
## Contratos de Consumo (DAM-R06)
|
|
33
|
+
|
|
34
|
+
Los contratos de consumo definen cómo los consumidores acceden y usan los productos de datos. Especifican patrones de consulta, alcance de acceso y restricciones de uso. Los contratos de consumo complementan los contratos de producción documentando obligaciones del lado del consumidor.
|
|
35
|
+
|
|
36
|
+
Los consumidores deben registrar sus contratos de consumo en la plataforma. Los consumidores no registrados pueden ser bloqueados del acceso a productos hasta el registro del contrato.
|
|
37
|
+
|
|
38
|
+
## Plataforma de Autoservicio
|
|
39
|
+
|
|
40
|
+
La plataforma de autoservicio es la columna vertebral operativa de la malla. Proporciona descubrimiento, registro, ejecución de políticas, monitoreo y gestión de contratos. Los equipos de plataforma son dueños de la infraestructura; los equipos de dominio operan a través de ella.
|
|
41
|
+
|
|
42
|
+
Las capacidades de la plataforma deben incluir: registro de productos, gestión de esquemas, configuración de políticas de acceso, monitoreo de salud, rastreo de linaje y incorporación de consumidores.
|
|
43
|
+
|
|
44
|
+
## Descubrimiento y Registro (DAM-R09)
|
|
45
|
+
|
|
46
|
+
Todos los productos de datos publicados deben registrarse en el índice de descubrimiento. El registro incluye propiedad, esquema, clasificación, SLAs e información de contacto. Los productos no registrados son invisibles para los consumidores y no deben usarse para intercambio de datos interdominio.
|
|
47
|
+
|
|
48
|
+
El registro de descubrimiento es un requisito previo para la publicación. Los productos en estado de borrador se excluyen del índice de descubrimiento según DAM-R01.
|
|
49
|
+
|
|
50
|
+
## Propiedad de Dominio
|
|
51
|
+
|
|
52
|
+
Cada dominio de negocio es dueño de sus productos de datos. La propiedad incluye diseño, implementación, operación y deprecación. Los equipos de dominio son responsables de la calidad del producto, satisfacción del consumidor y cumplimiento.
|
|
53
|
+
|
|
54
|
+
Las transferencias de propiedad requieren procedimientos formales de entrega que incluyen renegociación de SLAs, notificación a consumidores y actualización de metadatos de la plataforma. La propiedad no es compartida — cada producto tiene exactamente un dominio propietario.
|
|
55
|
+
|
|
56
|
+
## Comandos de Validación
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Verificar cumplimiento de patrones
|
|
60
|
+
node .harness/scripts/ci/01-validate-docs.mjs --target data-mesh
|
|
61
|
+
|
|
62
|
+
# Verificar paridad bilingüe
|
|
63
|
+
node .harness/scripts/ci/04-check-bilingual-parity.mjs
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
[Volver al Perfil de Malla de Datos](./README.es.md)
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Data Mesh — Patterns Guide
|
|
2
|
+
|
|
3
|
+
> **Bilingual Navigation:** [English](./patterns.md) | [Español](./patterns.es.md)
|
|
4
|
+
|
|
5
|
+
**Owner:** Data Architecture
|
|
6
|
+
**Topology:** Data Mesh
|
|
7
|
+
**Related Rules:** DAM-R01, DAM-R02, DAM-R06
|
|
8
|
+
**Related ADRs:** ADR-0084, ADR-0079
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
|
|
12
|
+
This guide describes the core architectural patterns that define data mesh topology. Each pattern addresses a specific concern — product design, governance, contracts, platform, discovery, or ownership. These patterns are composable with distributed-modules, microservices, event-driven, serverless, and agentic-ai topologies.
|
|
13
|
+
|
|
14
|
+
## Data as a Product
|
|
15
|
+
|
|
16
|
+
Data products are first-class architectural entities with explicit ownership, SLAs, schemas, and lifecycle management. Products are not ad-hoc extracts or views — they are managed assets governed by DAM-R01.
|
|
17
|
+
|
|
18
|
+
Each product exposes a stable interface defined by its schema. Changes follow the backward-compatibility requirements of DAM-R08. Products must be discoverable, addressable, and trustworthy.
|
|
19
|
+
|
|
20
|
+
## Federated Governance
|
|
21
|
+
|
|
22
|
+
Governance operates at two levels: central policy definition and domain-level enforcement. The central governance body establishes standards — classification, security, compliance — while domains implement them within their product boundaries.
|
|
23
|
+
|
|
24
|
+
This pattern prevents governance bottlenecks while maintaining organizational consistency. Governance exceptions require formal approval and are tracked as exceptions in the governance registry per DAM-R03.
|
|
25
|
+
|
|
26
|
+
## Data Contracts (DAM-R02)
|
|
27
|
+
|
|
28
|
+
Data contracts are formal agreements between producers and consumers. A contract specifies the schema, quality guarantees, freshness SLAs, and access policies for a data product. Contracts are versioned and subject to backward-compatibility rules.
|
|
29
|
+
|
|
30
|
+
Contracts must be machine-readable and enforced by the platform. Manual agreements are not valid contracts. The self-serve platform mediates all contract lifecycle operations.
|
|
31
|
+
|
|
32
|
+
## Consumption Contracts (DAM-R06)
|
|
33
|
+
|
|
34
|
+
Consumption contracts define how consumers access and use data products. They specify query patterns, access scope, and usage constraints. Consumption contracts complement production contracts by documenting consumer-side obligations.
|
|
35
|
+
|
|
36
|
+
Consumers must register their consumption contracts in the platform. Unregistered consumers may be blocked from accessing products pending contract registration.
|
|
37
|
+
|
|
38
|
+
## Self-Serve Platform
|
|
39
|
+
|
|
40
|
+
The self-serve platform is the operational backbone of the mesh. It provides discovery, registration, policy enforcement, monitoring, and contract management. Platform teams own the infrastructure; domain teams operate through it.
|
|
41
|
+
|
|
42
|
+
Platform capabilities must include: product registration, schema management, access policy configuration, health monitoring, lineage tracking, and consumer onboarding.
|
|
43
|
+
|
|
44
|
+
## Discovery and Registration (DAM-R09)
|
|
45
|
+
|
|
46
|
+
All published data products must be registered in the discovery index. Registration includes ownership, schema, classification, SLAs, and contact information. Unregistered products are invisible to consumers and must not be used for cross-domain data sharing.
|
|
47
|
+
|
|
48
|
+
Discovery registration is a prerequisite for publication. Products in draft status are excluded from the discovery index per DAM-R01.
|
|
49
|
+
|
|
50
|
+
## Domain Ownership
|
|
51
|
+
|
|
52
|
+
Each business domain owns its data products. Ownership includes design, implementation, operation, and deprecation. Domain teams are accountable for product quality, consumer satisfaction, and compliance.
|
|
53
|
+
|
|
54
|
+
Ownership transfers require formal handoff procedures including SLA renegotiation, consumer notification, and platform metadata updates. Ownership is not shared — each product has exactly one owning domain.
|
|
55
|
+
|
|
56
|
+
## Validation Commands
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Verify pattern compliance
|
|
60
|
+
node .harness/scripts/ci/01-validate-docs.mjs --target data-mesh
|
|
61
|
+
|
|
62
|
+
# Check bilingual parity
|
|
63
|
+
node .harness/scripts/ci/04-check-bilingual-parity.mjs
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
[Back to Data Mesh Profile](./README.md)
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Guía de Resiliencia de Malla de Datos
|
|
2
|
+
|
|
3
|
+
> **Navegación Bilingüe:** [English](./resilience.md) | [Español](./resilience.es.md)
|
|
4
|
+
|
|
5
|
+
**Propietario:** Arquitectura de Datos
|
|
6
|
+
**Topología:** Malla de Datos
|
|
7
|
+
**Reglas Relacionadas:** DAM-R07
|
|
8
|
+
**ADRs Relacionados:** ADR-0084
|
|
9
|
+
|
|
10
|
+
## Propósito
|
|
11
|
+
|
|
12
|
+
Esta guía define las prácticas de resiliencia para los productos de datos en una topología de malla. Cubre gestión de SLAs, estrategias de respaldo, caché, monitoreo de disponibilidad, recuperación de fallos de flujos y garantías de frescura. La resiliencia es de propiedad del dominio pero validada por la plataforma.
|
|
13
|
+
|
|
14
|
+
## SLAs de Productos de Datos
|
|
15
|
+
|
|
16
|
+
Cada producto de datos publicado debe declarar un SLA que cubra disponibilidad, frescura y completitud. Los SLAs se registran en la plataforma de autoservicio y se utilizan para verificaciones de salud automatizadas según DAM-R07.
|
|
17
|
+
|
|
18
|
+
Niveles de SLA: crítico (99.9% disponibilidad, <1h frescura), estándar (99% disponibilidad, <4h frescura), mejor esfuerzo (sin garantía de disponibilidad, frescura al mejor esfuerzo). Los consumidores seleccionan productos según la alineación de SLA con sus requisitos.
|
|
19
|
+
|
|
20
|
+
## Consultas de Respaldo
|
|
21
|
+
|
|
22
|
+
Los consumidores deben definir estrategias de respaldo para fallos de productos aguas arriba. Las estrategias incluyen: leer de capturas en caché, cambiar a productos de menor fidelidad o pausar procesamiento dependiente. La configuración de respaldo es parte del contrato del consumidor.
|
|
23
|
+
|
|
24
|
+
Los equipos de dominio deben documentar el comportamiento de respaldo en los READMEs de productos y ponerlo disponible a través de la plataforma de autoservicio para orquestación automatizada.
|
|
25
|
+
|
|
26
|
+
## Caché
|
|
27
|
+
|
|
28
|
+
La plataforma proporciona caché incorporado para productos de acceso frecuente. Los dominios pueden configurar políticas de caché por producto según requisitos de frescura y patrones de acceso. La invalidación de caché se activa por fallos en verificaciones de salud o cambios de esquema.
|
|
29
|
+
|
|
30
|
+
Los datos en caché deben respetar los mismos controles de acceso que el producto fuente. El TTL de caché se alinea con el SLA de frescura del producto.
|
|
31
|
+
|
|
32
|
+
## Monitoreo de Disponibilidad
|
|
33
|
+
|
|
34
|
+
La infraestructura de la plataforma proporciona monitoreo de disponibilidad centralizado para todos los productos publicados. Los equipos de dominio configuran umbrales de alerta alineados con sus SLAs declarados. Las métricas de disponibilidad se publican en el índice de descubrimiento para consumo de los consumidores.
|
|
35
|
+
|
|
36
|
+
El monitoreo cubre: accesibilidad de extremos, tasas de éxito de consultas, percentiles de latencia y categorización de errores. Las interrupciones se clasifican y escalan por nivel de severidad.
|
|
37
|
+
|
|
38
|
+
## Recuperación de Fallos de Flujos
|
|
39
|
+
|
|
40
|
+
Los equipos de dominio definen procedimientos de recuperación para sus flujos de ingesta. Los procedimientos de recuperación deben documentarse y probarse. La plataforma proporciona patrones de circuit-breaker para consumidores downstream cuando fallan flujos aguas arriba.
|
|
41
|
+
|
|
42
|
+
Los procedimientos de recuperación deben incluir: lógica de reintento automático, colas de cartas muertas para registros no procesables, disparadores de intervención manual y validación posterior a la recuperación. Todas las acciones de recuperación se registran para fines de auditoría.
|
|
43
|
+
|
|
44
|
+
## Garantías de Frescura
|
|
45
|
+
|
|
46
|
+
Los SLAs de frescura especifican el retraso máximo aceptable entre actualizaciones de datos fuente y disponibilidad del producto. La plataforma rastrea métricas de frescura contra SLAs declarados. Los consumidores pueden consultar el estado de frescura a través de la plataforma de autoservicio.
|
|
47
|
+
|
|
48
|
+
Los productos que incumplen SLAs de frescura se marcan automáticamente. Los consumidores reciben notificaciones según sus preferencias de alerta configuradas. Las violaciones de frescura activan el proceso de respuesta a incidentes de calidad.
|
|
49
|
+
|
|
50
|
+
## Comandos de Validación
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Validar declaraciones de SLA
|
|
54
|
+
node .harness/scripts/ci/01-validate-docs.mjs --target data-mesh
|
|
55
|
+
|
|
56
|
+
# Verificar paridad bilingüe
|
|
57
|
+
node .harness/scripts/ci/04-check-bilingual-parity.mjs
|
|
58
|
+
|
|
59
|
+
# Ejecutar verificación de cobertura
|
|
60
|
+
node .harness/scripts/coverage-dashboard.mjs --area data-mesh
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
[Volver al Perfil de Malla de Datos](./README.es.md)
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Data Mesh — Resilience Guide
|
|
2
|
+
|
|
3
|
+
> **Bilingual Navigation:** [English](./resilience.md) | [Español](./resilience.es.md)
|
|
4
|
+
|
|
5
|
+
**Owner:** Data Architecture
|
|
6
|
+
**Topology:** Data Mesh
|
|
7
|
+
**Related Rules:** DAM-R07
|
|
8
|
+
**Related ADRs:** ADR-0084
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
|
|
12
|
+
This guide defines resilience practices for data products in a mesh topology. It covers SLA management, fallback strategies, caching, availability monitoring, pipeline failure recovery, and freshness guarantees. Resilience is domain-owned but platform-validated.
|
|
13
|
+
|
|
14
|
+
## Data Product SLAs
|
|
15
|
+
|
|
16
|
+
Each published data product must declare an SLA covering availability, freshness, and completeness. SLAs are registered in the self-serve platform and used for automated health checks per DAM-R07.
|
|
17
|
+
|
|
18
|
+
SLA tiers: critical (99.9% availability, <1h freshness), standard (99% availability, <4h freshness), best-effort (no availability guarantee, freshness best-effort). Consumers select products based on SLA alignment with their requirements.
|
|
19
|
+
|
|
20
|
+
## Fallback Queries
|
|
21
|
+
|
|
22
|
+
Consumers must define fallback strategies for upstream product failures. Strategies include: reading from cached snapshots, switching to lower-fidelity products, or pausing dependent processing. Fallback configuration is part of the consumer contract.
|
|
23
|
+
|
|
24
|
+
Domain teams must document fallback behavior in product READMEs and make it available through the self-serve platform for automated orchestration.
|
|
25
|
+
|
|
26
|
+
## Caching
|
|
27
|
+
|
|
28
|
+
The platform provides built-in caching for frequently accessed products. Domains may configure cache policies per product based on freshness requirements and access patterns. Cache invalidation is triggered by product health check failures or schema changes.
|
|
29
|
+
|
|
30
|
+
Cached data must respect the same access controls as the source product. Cache TTL aligns with the product's freshness SLA.
|
|
31
|
+
|
|
32
|
+
## Availability Monitoring
|
|
33
|
+
|
|
34
|
+
Platform infrastructure provides centralized availability monitoring for all published products. Domain teams configure alerting thresholds aligned to their declared SLAs. Availability metrics are published to the discovery index for consumer consumption.
|
|
35
|
+
|
|
36
|
+
Monitoring covers: endpoint reachability, query success rates, latency percentiles, and error categorization. Outages are classified and escalated per severity tier.
|
|
37
|
+
|
|
38
|
+
## Pipeline Failure Recovery
|
|
39
|
+
|
|
40
|
+
Domain teams define recovery procedures for their ingestion pipelines. Recovery procedures must be documented and tested. The platform provides circuit-breaker patterns for downstream consumers when upstream pipelines fail.
|
|
41
|
+
|
|
42
|
+
Recovery procedures must include: automatic retry logic, dead-letter queues for unprocessable records, manual intervention triggers, and post-recovery validation. All recovery actions are logged for audit purposes.
|
|
43
|
+
|
|
44
|
+
## Freshness Guarantees
|
|
45
|
+
|
|
46
|
+
Freshness SLAs specify the maximum acceptable delay between source data updates and product availability. The platform tracks freshness metrics against declared SLAs. Consumers can query freshness status through the self-serve platform.
|
|
47
|
+
|
|
48
|
+
Products failing freshness SLAs are flagged automatically. Consumers receive notifications per their configured alerting preferences. Freshness violations trigger the quality incident response process.
|
|
49
|
+
|
|
50
|
+
## Validation Commands
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Validate SLA declarations
|
|
54
|
+
node .harness/scripts/ci/01-validate-docs.mjs --target data-mesh
|
|
55
|
+
|
|
56
|
+
# Check bilingual parity
|
|
57
|
+
node .harness/scripts/ci/04-check-bilingual-parity.mjs
|
|
58
|
+
|
|
59
|
+
# Run coverage check
|
|
60
|
+
node .harness/scripts/coverage-dashboard.mjs --area data-mesh
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
[Back to Data Mesh Profile](./README.md)
|