---
id: "cross-cell-call"
type: "rule"
severity: "error"
url: "https://localhost:3000/catalogue/rules/cross-cell-call"
---

# Synchronous call across cells

A synchronous edge crosses a cell boundary while the design requires cell isolation.

| | |
|---|---|
| Severity | error |
| Selects | every synchronous edge |
| Components in scope | 2,366 |

## Why

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.

## 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 template:

```
Synchronous edge '{{edge.from}}' -> '{{edge.to}}' crosses a cell boundary while the design requires cell isolation.
```

## Applies to

This rule is about an edge, so it belongs to a pair of nodes rather than one component.

2,366 catalogue components fall under it.

## Tripped by

Reference designs whose broken twin names this rule in its header:

- [amazon-order](https://localhost:3000/d/zeema/amazon-order)
- [robinhood-trading](https://localhost:3000/d/zeema/robinhood-trading)
- [slack-messaging](https://localhost:3000/d/zeema/slack-messaging)

## Source (`rule` YAML, verbatim)

```yaml
# 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."
```

Human page: https://localhost:3000/catalogue/rules/cross-cell-call
