@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,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"protocolVersion": "2025-03-26",
|
|
3
|
+
"topologyId": "serverless",
|
|
4
|
+
"description": "MCP interface for the Serverless topology. Provides tools for inspecting and validating serverless function configurations, resources for manifest and ruleset access, and prompts for serverless-readiness and implementation guidance.",
|
|
5
|
+
"capabilities": {
|
|
6
|
+
"tools": {},
|
|
7
|
+
"resources": {},
|
|
8
|
+
"prompts": {}
|
|
9
|
+
},
|
|
10
|
+
"tools": [
|
|
11
|
+
{
|
|
12
|
+
"name": "evolith-topology-inspect",
|
|
13
|
+
"description": "Inspect a Serverless topology configuration and return its parsed manifest, function definitions, and corpus artifact references.",
|
|
14
|
+
"inputSchema": {
|
|
15
|
+
"type": "object",
|
|
16
|
+
"properties": {
|
|
17
|
+
"configPath": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"description": "Path to the Serverless configuration file"
|
|
20
|
+
},
|
|
21
|
+
"includeFunctions": {
|
|
22
|
+
"type": "boolean",
|
|
23
|
+
"description": "Include function-level metadata and triggers"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"required": ["configPath"]
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "evolith-topology-validate",
|
|
31
|
+
"description": "Validate a Serverless configuration against the topology ruleset and OPA policies, returning pass/fail per gate.",
|
|
32
|
+
"inputSchema": {
|
|
33
|
+
"type": "object",
|
|
34
|
+
"properties": {
|
|
35
|
+
"configPath": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"description": "Path to the Serverless configuration to validate"
|
|
38
|
+
},
|
|
39
|
+
"strictMode": {
|
|
40
|
+
"type": "boolean",
|
|
41
|
+
"description": "Fail on warnings, not just errors"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"required": ["configPath"]
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"resources": [
|
|
49
|
+
{
|
|
50
|
+
"uri": "evolith://topologies/serverless/manifest",
|
|
51
|
+
"name": "Serverless Topology Manifest",
|
|
52
|
+
"description": "Full topology manifest for Serverless, including metadata, artifact references, and corpus configuration.",
|
|
53
|
+
"mimeType": "application/json"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"uri": "evolith://topologies/serverless/rulesets",
|
|
57
|
+
"name": "Serverless Rulesets",
|
|
58
|
+
"description": "All ruleset files for Serverless: native rules JSON, OPA Rego policies, and WASM bundle.",
|
|
59
|
+
"mimeType": "application/json"
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"prompts": [
|
|
63
|
+
{
|
|
64
|
+
"name": "serverless-readiness-review",
|
|
65
|
+
"description": "Assesses whether a workload is suitable for serverless deployment, evaluating cold-start tolerance, statelessness, timeout limits, and cost profile."
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "topology-aware-implementation",
|
|
69
|
+
"description": "Guides AI-assisted implementation to respect Serverless topology constraints, ephemeral stateless design, and event-driven triggers."
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
openapi: "3.1.0"
|
|
2
|
+
info:
|
|
3
|
+
title: "Serverless Topology — Core API Surface"
|
|
4
|
+
version: "0.1.0"
|
|
5
|
+
description: >
|
|
6
|
+
REST API surface specific to the Serverless topology.
|
|
7
|
+
Describes endpoints exposed by the Core API for querying,
|
|
8
|
+
inspecting, and validating Serverless 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 Serverless topology information"
|
|
17
|
+
description: >
|
|
18
|
+
Returns the full topology record for Serverless, including
|
|
19
|
+
dimension, status, version, governance metadata, and corpus
|
|
20
|
+
artifact references (rulesets, OPA policies, ADRs, guidance).
|
|
21
|
+
operationId: "getServerlessTopology"
|
|
22
|
+
parameters:
|
|
23
|
+
- name: id
|
|
24
|
+
in: path
|
|
25
|
+
required: true
|
|
26
|
+
schema:
|
|
27
|
+
type: string
|
|
28
|
+
pattern: "^serverless$"
|
|
29
|
+
example: "serverless"
|
|
30
|
+
responses:
|
|
31
|
+
"200":
|
|
32
|
+
description: "Successful response with Serverless 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 Serverless topology manifest"
|
|
43
|
+
description: >
|
|
44
|
+
Returns the full topology manifest for Serverless, with
|
|
45
|
+
artifact references, corpus configuration, and business
|
|
46
|
+
boundary declaration.
|
|
47
|
+
operationId: "getServerlessManifest"
|
|
48
|
+
parameters:
|
|
49
|
+
- name: id
|
|
50
|
+
in: path
|
|
51
|
+
required: true
|
|
52
|
+
schema:
|
|
53
|
+
type: string
|
|
54
|
+
pattern: "^serverless$"
|
|
55
|
+
responses:
|
|
56
|
+
"200":
|
|
57
|
+
description: "Successful response with Serverless 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 Serverless topology rules"
|
|
66
|
+
description: >
|
|
67
|
+
Executes all applicable rulesets and OPA policies for Serverless
|
|
68
|
+
against a submitted configuration, returning pass/fail per gate.
|
|
69
|
+
operationId: "validateServerlessTopology"
|
|
70
|
+
parameters:
|
|
71
|
+
- name: id
|
|
72
|
+
in: path
|
|
73
|
+
required: true
|
|
74
|
+
schema:
|
|
75
|
+
type: string
|
|
76
|
+
pattern: "^serverless$"
|
|
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: "serverless"
|
|
137
|
+
name:
|
|
138
|
+
type: string
|
|
139
|
+
example: "Serverless"
|
|
140
|
+
dimension:
|
|
141
|
+
type: string
|
|
142
|
+
example: "execution"
|
|
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,36 @@
|
|
|
1
|
+
# Guía de Operaciones Sin Servidor
|
|
2
|
+
|
|
3
|
+
> **Navegación Bilingüe:** [English](./operations.md) | [Español](./operations.es.md)
|
|
4
|
+
|
|
5
|
+
**Propietario:** Ingeniería de Plataforma
|
|
6
|
+
**Topología:** Sin Servidor
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Optimización de Inicio en Frío
|
|
11
|
+
|
|
12
|
+
Las funciones deben cumplir con un presupuesto de **1000 ms para inicio en frío** (SV-R04). Utilizar concurrencia provisionada para rutas sensibles a la latencia. Mantener los paquetes de despliegue por debajo de **50 MB** (SV-R03) para reducir el tiempo de inicialización. Evitar dependencias pesadas de runtime; preferir runtimes ligeros (Node.js, Python) sobre stacks pesados.
|
|
13
|
+
|
|
14
|
+
## Límites de Concurrencia
|
|
15
|
+
|
|
16
|
+
Monitorear cuotas de concurrencia regionales. Implementar interruptores de circuito al acercarse a los límites. Utilizar concurrencia reservada para aislar funciones críticas de vecinos ruidosos. Rastrear ejecuciones concurrentes contra los presupuestos para evitar cascadas de limitaciones.
|
|
17
|
+
|
|
18
|
+
## Manejo de Cola de Cartas Muertas (DLQ)
|
|
19
|
+
|
|
20
|
+
Toda invocación asíncrona debe declarar una DLQ (SV-R01). Los mensajes fallidos se enrutan a la DLQ tras agotar los reintentos. Procesar entradas de DLQ con una función dedicada de remediación. Alertar cuando la profundidad de la DLQ exceda cero por más de 5 minutos.
|
|
21
|
+
|
|
22
|
+
## Monitoreo de Funciones
|
|
23
|
+
|
|
24
|
+
Instrumentar invocaciones con logs estructurados, trazas y métricas. Rastrear latencia p50, p95 y p99 por función. Monitorear tasas de error, conteos de limitaciones y frecuencia de inicio en frío. Agregar costos por función para responsabilidad presupuestaria (objetivo: **1 centavo por ejecución**).
|
|
25
|
+
|
|
26
|
+
## Rastreo de Costos
|
|
27
|
+
|
|
28
|
+
Etiquetar cada función con metadatos de centro de costo. Generar reportes diarios de costos por función y por topology. Alertar cuando el costo por ejecución exceda el presupuesto. Revisar funciones inactivas mensualmente y descomisionar recursos no utilizados.
|
|
29
|
+
|
|
30
|
+
## Mitigación de Bloqueo con el Proveedor
|
|
31
|
+
|
|
32
|
+
Abstract las APIs específicas del proveedor detrás de interfaces internas (ADR-0095). Utilizar runtimes de funciones y formatos de eventos portables entre proveedores. Mantener una capa de contrato neutral al proveedor para esquemas de eventos. Documentar optimizaciones específicas del proveedor como compromisos deliberados, no acoplamientos accidentales.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
[Volver al Perfil Sin Servidor](./README.es.md)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Serverless — Operations Guide
|
|
2
|
+
|
|
3
|
+
> **Bilingual Navigation:** [English](./operations.md) | [Español](./operations.es.md)
|
|
4
|
+
|
|
5
|
+
**Owner:** Platform Engineering
|
|
6
|
+
**Topology:** Serverless
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Cold Start Optimization
|
|
11
|
+
|
|
12
|
+
Functions must meet a **1000 ms cold start budget** (SV-R04). Use provisioned concurrency for latency-sensitive paths. Keep deployment packages under **50 MB** (SV-R03) to reduce initialization time. Avoid large runtime dependencies; prefer lightweight runtimes (Node.js, Python) over heavyweight stacks.
|
|
13
|
+
|
|
14
|
+
## Concurrency Limits
|
|
15
|
+
|
|
16
|
+
Monitor regional concurrency quotas. Implement circuit breakers when approaching limits. Use reserved concurrency to isolate critical functions from noisy neighbors. Track concurrent executions against budgets to prevent throttling cascades.
|
|
17
|
+
|
|
18
|
+
## Dead Letter Queue (DLQ) Handling
|
|
19
|
+
|
|
20
|
+
Every asynchronous invocation must declare a DLQ (SV-R01). Failed messages route to the DLQ after retry exhaustion. Process DLQ entries with a dedicated remediation function. Alert on DLQ depth exceeding zero for more than 5 minutes.
|
|
21
|
+
|
|
22
|
+
## Function Monitoring
|
|
23
|
+
|
|
24
|
+
Instrument invocations with structured logs, traces, and metrics. Track p50, p95, and p99 latency per function. Monitor error rates, throttle counts, and cold start frequency. Aggregate costs per function for budget accountability (target: **1 cent per execution**).
|
|
25
|
+
|
|
26
|
+
## Cost Tracking
|
|
27
|
+
|
|
28
|
+
Tag every function with cost-center metadata. Generate daily cost reports per function and per topology. Alert when per-execution cost exceeds budget. Review idle functions monthly and decommission unused resources.
|
|
29
|
+
|
|
30
|
+
## Vendor Lock-in Mitigation
|
|
31
|
+
|
|
32
|
+
Abstract cloud-specific APIs behind internal interfaces (ADR-0095). Use function-runtimes and event formats that portable across providers. Maintain a provider-neutral contract layer for event schemas. Document provider-specific optimizations as deliberate trade-offs, not accidental coupling.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
[Back to Serverless Profile](./README.md)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"input": {
|
|
3
|
+
"topology": "serverless",
|
|
4
|
+
"config": {
|
|
5
|
+
"networkSecurity": { "mtlsEnabled": true },
|
|
6
|
+
"hasContract": false,
|
|
7
|
+
"isStateless": true,
|
|
8
|
+
"hasBoundedPackage": true,
|
|
9
|
+
"hasColdStartReadiness": true
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"expectedNative": [
|
|
13
|
+
{ "ruleId": "SV-R01", "severity": "error", "file": null }
|
|
14
|
+
]
|
|
15
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Guía de Patrones Sin Servidor
|
|
2
|
+
|
|
3
|
+
> **Navegación Bilingüe:** [English](./patterns.md) | [Español](./patterns.es.md)
|
|
4
|
+
|
|
5
|
+
**Propietario:** Ingeniería de Plataforma
|
|
6
|
+
**Topología:** Sin Servidor
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Fan-Out / Fan-In
|
|
11
|
+
|
|
12
|
+
Usar fan-out para distribuir trabajo entre múltiples invocaciones paralelas de funciones. Agregar resultados con una función fan-in o una máquina de estados. Asegurar que cada rama paralela sea idempotente. Monitorear la latencia total del pipeline contra el presupuesto de 1500 ms.
|
|
13
|
+
|
|
14
|
+
## Funciones de Estado / Workflows
|
|
15
|
+
|
|
16
|
+
Orquestar procesos de múltiples pasos con máquinas de estados (SV-R01). Definir estados explícitos, transiciones y manejadores de errores. Persistir el estado del workflow externamente para sobrevivir reinicios de funciones. Usar workflows visuales para lógica de negocio compleja que excede una sola función.
|
|
17
|
+
|
|
18
|
+
## Filtrado de Eventos
|
|
19
|
+
|
|
20
|
+
Filtrar eventos en la fuente para reducir invocaciones innecesarias. Usar reglas de bus de eventos o suscripciones de topics para entrega selectiva. Evitar procesar eventos irrelevantes dentro de la lógica de la función. Medir la efectividad del filtrado rastreando la relación invocación-trabajo-útil.
|
|
21
|
+
|
|
22
|
+
## Composición de Funciones
|
|
23
|
+
|
|
24
|
+
Componer funciones pequeñas y de propósito único en workflows de orden superior. Mantener los límites de composición limpios: cada función posee una capacidad de dominio. Usar mensajería asíncrona para comunicación entre funciones. Evitar cadenas de llamadas síncronas profundas que aumentan la latencia y la exposición a inicios en frío.
|
|
25
|
+
|
|
26
|
+
## Backend-for-Frontend (BFF)
|
|
27
|
+
|
|
28
|
+
Implementar funciones BFF para agregar servicios backend para clientes específicos. Adaptar payloads de respuesta por frontend para reducir sobre-obtención. Mantener funciones BFF delgadas — componen, no transforman lógica de negocio. Almacenar en caché respuestas BFF para patrones con alta carga de lectura.
|
|
29
|
+
|
|
30
|
+
## Disparadores Programados
|
|
31
|
+
|
|
32
|
+
Usar disparadores basados en cron para cargas de trabajo periódicas. Alinear la granularidad del calendario con las necesidades de negocio (minuto, hora, día). Implementar lógica de relleno para calendarios perdidos. Monitorear deriva del calendario y alertar sobre invocaciones perdidas.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
[Volver al Perfil Sin Servidor](./README.es.md)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Serverless — Patterns Guide
|
|
2
|
+
|
|
3
|
+
> **Bilingual Navigation:** [English](./patterns.md) | [Español](./patterns.es.md)
|
|
4
|
+
|
|
5
|
+
**Owner:** Platform Engineering
|
|
6
|
+
**Topology:** Serverless
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Fan-Out / Fan-In
|
|
11
|
+
|
|
12
|
+
Use fan-out to distribute work across multiple parallel function invocations. Aggregate results with a fan-in function or a state machine. Ensure each parallel branch is idempotent. Monitor total pipeline latency against the 1500 ms budget.
|
|
13
|
+
|
|
14
|
+
## Step Functions / Workflows
|
|
15
|
+
|
|
16
|
+
Orchestrate multi-step processes with state machines (SV-R01). Define explicit states, transitions, and error handlers. Persist workflow state externally to survive function restarts. Use visual workflows for complex business logic that exceeds a single function.
|
|
17
|
+
|
|
18
|
+
## Event Filtering
|
|
19
|
+
|
|
20
|
+
Filter events at the source to reduce unnecessary invocations. Use event bus rules or topic subscriptions for selective delivery. Avoid processing irrelevant events inside function logic. Measure filtering effectiveness by tracking invocation-to-useful-work ratio.
|
|
21
|
+
|
|
22
|
+
## Function Composition
|
|
23
|
+
|
|
24
|
+
Compose small, single-purpose functions into higher-order workflows. Keep composition boundaries clean: each function owns one domain capability. Use async messaging for inter-function communication. Avoid deep synchronous call chains that increase latency and cold start exposure.
|
|
25
|
+
|
|
26
|
+
## Backend-for-Frontend (BFF)
|
|
27
|
+
|
|
28
|
+
Implement BFF functions to aggregate backend services for specific clients. Tailor response payloads per frontend to reduce over-fetching. Keep BFF functions thin — they compose, they don't transform business logic. Cache BFF responses for read-heavy patterns.
|
|
29
|
+
|
|
30
|
+
## Scheduled Triggers
|
|
31
|
+
|
|
32
|
+
Use cron-based triggers for periodic workloads. Align schedule granularity with business needs (minute, hour, day). Implement backfill logic for missed schedules. Monitor schedule drift and alert on missed invocations.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
[Back to Serverless Profile](./README.md)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Guía de Resiliencia Sin Servidor
|
|
2
|
+
|
|
3
|
+
> **Navegación Bilingüe:** [English](./resilience.md) | [Español](./resilience.es.md)
|
|
4
|
+
|
|
5
|
+
**Propietario:** Ingeniería de Plataforma
|
|
6
|
+
**Topología:** Sin Servidor
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Idempotencia
|
|
11
|
+
|
|
12
|
+
Cada función debe ser idempotente. Usar claves de idempotencia derivadas del payload del evento o un token proporcionado por el cliente. Almacenar registros de idempotencia en un almacén rápido y duradero con un TTL que coincida con el dominio de negocio. Rechazar invocaciones duplicadas con el resultado original.
|
|
13
|
+
|
|
14
|
+
## Reintento con Backoff Exponencial
|
|
15
|
+
|
|
16
|
+
Configurar reintentos con backoff exponencial y jitter para fallos transitorios. Establecer el número máximo de reintentos basado en el timeout de la función y el presupuesto de latencia (1500 ms total). Distinguir errores reintatables (5xx, limitaciones) de fallos permanentes (4xx, validación). Evitar bucles de reintento ilimitados.
|
|
17
|
+
|
|
18
|
+
## Puntos de Control
|
|
19
|
+
|
|
20
|
+
Para flujos de trabajo de ejecución larga o fan-out, persistir estado interno en almacenamiento externo. Usar colas o bases de datos duraderas como puntos de control. Reanudar desde el último punto de control tras un fallo en lugar de reiniciar todo el flujo de trabajo. Mantener las escrituras de puntos de control atómicas.
|
|
21
|
+
|
|
22
|
+
## Recuperación de DLQ
|
|
23
|
+
|
|
24
|
+
Enrutar fallos irrecuperables a la DLQ. Implementar una función de recuperación dedicada que inspeccione, transforme y reprocese entradas de la DLQ. Alertar inmediatamente cuando la profundidad de la DLQ exceda el umbral. Mantener rastros de auditoría para cada intento de procesamiento de DLQ.
|
|
25
|
+
|
|
26
|
+
## Mitigación de Inicio en Frío
|
|
27
|
+
|
|
28
|
+
Reservar concurrencia provisionada para rutas críticas para mantenerse dentro del presupuesto de 1000 ms de inicio en frío (SV-R04). Calentar funciones en un calendario para prevenir evicciones por timeout de inactividad. Usar runtimes ligeros y minimizar el tamaño del paquete (SV-R03). Perfilar inicios en frío continuamente y regresar en caso de degradación.
|
|
29
|
+
|
|
30
|
+
## Diseño Stateless (SV-R02)
|
|
31
|
+
|
|
32
|
+
Las funciones no deben mantener estado local entre invocaciones. Externalizar todo el estado a almacenes gestionados (base de datos, caché, cola). Tratar cada invocación como independente. Validar esta invariant en pruebas de integración.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
[Volver al Perfil Sin Servidor](./README.es.md)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Serverless — Resilience Guide
|
|
2
|
+
|
|
3
|
+
> **Bilingual Navigation:** [English](./resilience.md) | [Español](./resilience.es.md)
|
|
4
|
+
|
|
5
|
+
**Owner:** Platform Engineering
|
|
6
|
+
**Topology:** Serverless
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Idempotency
|
|
11
|
+
|
|
12
|
+
Every function must be idempotent. Use idempotency keys derived from the event payload or a client-supplied token. Store idempotency records in a fast, durable store with a TTL matching the business domain. Reject duplicate invocations with the original result.
|
|
13
|
+
|
|
14
|
+
## Retry with Exponential Backoff
|
|
15
|
+
|
|
16
|
+
Configure retries with exponential backoff and jitter for transient failures. Set maximum retry attempts based on function timeout and latency budget (1500 ms total). Distinguish retryable errors (5xx, throttling) from permanent failures (4xx, validation). Avoid unbounded retry loops.
|
|
17
|
+
|
|
18
|
+
## Checkpointing
|
|
19
|
+
|
|
20
|
+
For long-running or fan-out workflows, persist intermediate state to external storage. Use durable queues or databases as checkpoints. Resume from the last checkpoint after failure rather than restarting the entire workflow. Keep checkpoint writes atomic.
|
|
21
|
+
|
|
22
|
+
## DLQ Recovery
|
|
23
|
+
|
|
24
|
+
Route unrecoverable failures to the DLQ. Implement a dedicated recovery function that inspects, transforms, and reprocesses DLQ entries. Alert immediately on DLQ depth exceeding threshold. Maintain audit trails for every DLQ processing attempt.
|
|
25
|
+
|
|
26
|
+
## Cold Start Mitigation
|
|
27
|
+
|
|
28
|
+
Reserve provisioned concurrency for critical paths to stay within the 1000 ms cold start budget (SV-R04). Warm functions on a schedule to prevent idle-timeout evictions. Use lightweight runtimes and minimize package size (SV-R03). Profile cold starts continuously and regress on degradation.
|
|
29
|
+
|
|
30
|
+
## Stateless Design (SV-R02)
|
|
31
|
+
|
|
32
|
+
Functions must not hold local state between invocations. Externalize all state to managed stores (database, cache, queue). Treat each invocation as independent. Validate this invariant in integration tests.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
[Back to Serverless Profile](./README.md)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Runbooks Sin Servidor
|
|
2
|
+
|
|
3
|
+
> **Navegación Bilingüe:** [English](./runbooks.md) | [Español](./runbooks.es.md)
|
|
4
|
+
|
|
5
|
+
**Propietario:** Ingeniería de Plataforma
|
|
6
|
+
**Topología:** Sin Servidor
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Runbook 1: Fallo en Despliegue de Función
|
|
11
|
+
|
|
12
|
+
**Disparador:** El pipeline de CI/CD reporta un error de despliegue.
|
|
13
|
+
|
|
14
|
+
1. Revisar logs de despliegue para detalles del error y stack trace.
|
|
15
|
+
2. Verificar permisos del rol IAM para la cuenta de despliegue.
|
|
16
|
+
3. Validar configuración de la función (ruta del handler, runtime, memoria, timeout).
|
|
17
|
+
4. Asegurar que el paquete de despliegue esté bajo 50 MB (SV-R03).
|
|
18
|
+
5. Re-ejecutar el despliegue con logging detallado habilitado.
|
|
19
|
+
6. Si persiste, hacer rollback a la última versión conocida como buena e investigar offline.
|
|
20
|
+
|
|
21
|
+
## Runbook 2: Latencia de Inicio en Frío Excede el Presupuesto
|
|
22
|
+
|
|
23
|
+
**Disparador:** La latencia p95 de inicio en frío excede 1000 ms (SV-R04).
|
|
24
|
+
|
|
25
|
+
1. Identificar la función afectada desde el panel de monitoreo.
|
|
26
|
+
2. Revisar el tamaño del paquete de despliegue y dependencias.
|
|
27
|
+
3. Cambiar a un runtime más ligero si es factible (Node.js, Python).
|
|
28
|
+
4. Habilitar concurrencia provisionada para la función.
|
|
29
|
+
5. Perfilar la fase de init — identificar código de inicialización pesado.
|
|
30
|
+
6. Mover la inicialización fuera del handler donde sea posible.
|
|
31
|
+
7. Validar la mejora contra el presupuesto de 1000 ms.
|
|
32
|
+
|
|
33
|
+
## Runbook 3: Profundidad de DLQ Excede el Umbral
|
|
34
|
+
|
|
35
|
+
**Disparador:** La profundidad de la DLQ excede cero por más de 5 minutos.
|
|
36
|
+
|
|
37
|
+
1. Identificar la función de origen y el tipo de evento fallido.
|
|
38
|
+
2. Inspeccionar entradas de la DLQ para mensajes de error y payloads.
|
|
39
|
+
3. Corregir la causa raíz en la función consumidora.
|
|
40
|
+
4. Reprocesar entradas de la DLQ a través de la función de remediación.
|
|
41
|
+
5. Verificar que la profundidad de la DLQ regresa a cero.
|
|
42
|
+
6. Actualizar umbrales de alerta si el umbral era demasiado sensible.
|
|
43
|
+
|
|
44
|
+
## Runbook 4: Límite de Concurrencia Excedido
|
|
45
|
+
|
|
46
|
+
**Disparador:** Invocaciones de función retornan errores de limitación (429).
|
|
47
|
+
|
|
48
|
+
1. Verificar el uso actual de concurrencia contra la cuota regional.
|
|
49
|
+
2. Identificar qué funciones están consumiendo más concurrencia.
|
|
50
|
+
3. Aumentar concurrencia reservada para funciones críticas si es necesario.
|
|
51
|
+
4. Implementar o ajustar interruptores de circuito en rutas no críticas.
|
|
52
|
+
5. Solicitar aumento de cuota si se espera crecimiento sostenido.
|
|
53
|
+
6. Monitorear durante 30 minutos después de la remediación para confirmar estabilidad.
|
|
54
|
+
|
|
55
|
+
## Runbook 5: Investigación de Timeout de Función
|
|
56
|
+
|
|
57
|
+
**Disparador:** La función excede consistentemente el timeout configurado.
|
|
58
|
+
|
|
59
|
+
1. Revisar logs de ejecución de la función para operaciones lentas.
|
|
60
|
+
2. Verificar latencia de servicios downstream (base de datos, APIs externas).
|
|
61
|
+
3. Aumentar el timeout si la carga de trabajo genuinamente requiere más tiempo.
|
|
62
|
+
4. Optimizar rutas de código — reducir I/O innecesario, operaciones por lotes.
|
|
63
|
+
5. Considerar dividir en funciones más pequeñas si la tarea es demasiado grande.
|
|
64
|
+
6. Validar el nuevo timeout contra el presupuesto de latencia de 1500 ms.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
[Volver al Perfil Sin Servidor](./README.es.md)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Serverless — Runbooks
|
|
2
|
+
|
|
3
|
+
> **Bilingual Navigation:** [English](./runbooks.md) | [Español](./runbooks.es.md)
|
|
4
|
+
|
|
5
|
+
**Owner:** Platform Engineering
|
|
6
|
+
**Topology:** Serverless
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Runbook 1: Function Deployment Failure
|
|
11
|
+
|
|
12
|
+
**Trigger:** CI/CD pipeline reports deployment error.
|
|
13
|
+
|
|
14
|
+
1. Check deployment logs for error details and stack trace.
|
|
15
|
+
2. Verify IAM role permissions for the deployment account.
|
|
16
|
+
3. Validate function configuration (handler path, runtime, memory, timeout).
|
|
17
|
+
4. Ensure deployment package is under 50 MB (SV-R03).
|
|
18
|
+
5. Re-run deployment with verbose logging enabled.
|
|
19
|
+
6. If persistent, rollback to the last known-good version and investigate offline.
|
|
20
|
+
|
|
21
|
+
## Runbook 2: Cold Start Latency Exceeds Budget
|
|
22
|
+
|
|
23
|
+
**Trigger:** p95 cold start latency exceeds 1000 ms (SV-R04).
|
|
24
|
+
|
|
25
|
+
1. Identify the affected function from monitoring dashboard.
|
|
26
|
+
2. Review deployment package size and dependencies.
|
|
27
|
+
3. Switch to a lighter runtime if feasible (Node.js, Python).
|
|
28
|
+
4. Enable provisioned concurrency for the function.
|
|
29
|
+
5. Profile init phase — identify heavy initialization code.
|
|
30
|
+
6. Move initialization outside the handler where possible.
|
|
31
|
+
7. Validate improvement against the 1000 ms budget.
|
|
32
|
+
|
|
33
|
+
## Runbook 3: DLQ Depth Exceeds Threshold
|
|
34
|
+
|
|
35
|
+
**Trigger:** DLQ depth exceeds zero for more than 5 minutes.
|
|
36
|
+
|
|
37
|
+
1. Identify the source function and failing event type.
|
|
38
|
+
2. Inspect DLQ entries for error messages and payloads.
|
|
39
|
+
3. Fix the root cause in the consumer function.
|
|
40
|
+
4. Reprocess DLQ entries via the remediation function.
|
|
41
|
+
5. Verify DLQ depth returns to zero.
|
|
42
|
+
6. Update alerting thresholds if the threshold was too sensitive.
|
|
43
|
+
|
|
44
|
+
## Runbook 4: Concurrency Limit Exceeded
|
|
45
|
+
|
|
46
|
+
**Trigger:** Function invocations returning throttling errors (429).
|
|
47
|
+
|
|
48
|
+
1. Check current concurrency usage against regional quota.
|
|
49
|
+
2. Identify which functions are consuming the most concurrency.
|
|
50
|
+
3. Increase reserved concurrency for critical functions if needed.
|
|
51
|
+
4. Implement or tune circuit breakers on non-critical paths.
|
|
52
|
+
5. Request a quota increase if sustained growth is expected.
|
|
53
|
+
6. Monitor for 30 minutes after remediation to confirm stability.
|
|
54
|
+
|
|
55
|
+
## Runbook 5: Function Timeout Investigation
|
|
56
|
+
|
|
57
|
+
**Trigger:** Function consistently timing out near configured timeout.
|
|
58
|
+
|
|
59
|
+
1. Review function execution logs for slow operations.
|
|
60
|
+
2. Check downstream service latency (database, external APIs).
|
|
61
|
+
3. Increase timeout if the workload genuinely requires more time.
|
|
62
|
+
4. Optimize code paths — reduce unnecessary I/O, batch operations.
|
|
63
|
+
5. Consider splitting into smaller functions if the task is too large.
|
|
64
|
+
6. Validate new timeout against the 1500 ms latency budget.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
[Back to Serverless Profile](./README.md)
|