Synchronous call across cells
errorcross-cell-call
In a cell architecture each cell has to be able to fail on its own. A synchronous call that leaves the cell ties the two cells together and defeats the point of draining one.
- Severity
- error
- Selects
- every synchronous edge
- Components in scope
- 2,366
It looks at every synchronous edge, and fires when:
- — all of these hold:
- — the edge crosses a cell boundary, or at least one end is in no cell at all
- — the design requirement `isolation.tenancy` is "cell"
Synchronous edge '{{edge.from}}' -> '{{edge.to}}' crosses a cell boundary while the design requires cell isolation.This rule is about an edge, so it belongs to a pair of nodes rather than one component.
This rule names no kind: it reads the design as a whole.
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 # In a cell architecture each cell must be able to fail alone. A synchronous call that # leaves the cell couples the fate of both cells and defeats the drain button. # Tripped by: designs/slack-messaging.broken.yaml schemaVersion: "1" type: "rule" id: "cross-cell-call" severity: "error" select: edge: mode: "sync" when: all: - crossesGroup: kind: "cell" - requirement: "isolation.tenancy" equals: "cell" message: "Synchronous edge '{{edge.from}}' -> '{{edge.to}}' crosses a cell boundary while the design requires cell isolation."