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
What it checks

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"
Message
Synchronous edge '{{edge.from}}' -> '{{edge.to}}' crosses a cell boundary while the design requires cell isolation.

{{node.id}} style paths are filled in from the node, the edge or the design the finding is about.

Applies to · 2,366 components

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.
Tripped by · 3

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.

Source
# 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."

The same page as markdown, for an agent: /catalogue/rules/cross-cell-call.md