Inline external call without durable fallback
warningexternal-call-inline-without-durable-path
A service that calls a third party synchronously, with no queue or workflow engine attached, has nowhere to park the request when the third party is slow or down. The failure becomes the user's problem instead of a retried job.
- Severity
- warning
- Selects
- every node of kind app-server
- Components in scope
- 99
It looks at every node of kind app-server, and fires when:
- — all of these hold:
- — the node has at least one synchronous outgoing edge to a third-party-api
- — this does not hold:
- — the node has at least one connected edge joining a workflow-engine or queue
Service '{{node.id}}' calls a third party inline with no queue or workflow engine to fall back to when that call fails.Reference designs whose broken twin names this rule in its header. The gate reads the same header, and fails when a rule no design trips.
# yaml-language-server: $schema=../schema/rule.schema.json # A service that calls a third party synchronously and has no queue or workflow engine # attached has nowhere to park the request when the third party is slow or down. The # failure becomes the user's problem instead of a retried job. # Tripped by: designs/doordash-delivery.broken.yaml schemaVersion: "1" type: "rule" id: "external-call-inline-without-durable-path" severity: "warning" select: node: kind: "app-server" when: all: - hasEdge: direction: "out" mode: "sync" peerKind: "third-party-api" - not: hasEdge: direction: "any" peerKind: ["workflow-engine", "queue"] message: "Service '{{node.id}}' calls a third party inline with no queue or workflow engine to fall back to when that call fails."