---
title: Ceilings
description: The limits that an Open body sets on its Chart.
---

# `Ceilings`

Type, in `@jr2/orchestrator/src/open-body.ts`. The signature of an export, or a type that it names, names this type. The [Authoring surface](../authoring-surface.md) page lists each export. This type is not an export of `@jr2/orchestrator`, so a workflow module does not import it by name.

```ts
type Ceilings = {
  turns: number;
  wallClock: Duration;
  transitions: number;
  fanOut: number;
  size: number;
};
```

The limits that an Open body sets on its Chart. Each one is a positive bound. When the Chart gets
to one, the Open body stops it and ends with `{ outcome: "ceiling", ceiling, detail }`.

**Fields**

- `turns`: `number`

  The Agent Turns that start under the Open body, at all levels. The Turns of a lent Machine
  count too.
- `wallClock`: [`Duration`](type-duration.md)

  The time from the start of the Open body, such as `"30m"`. At most about 596 hours.
- `transitions`: `number`

  The transitions of the Chart in the whole run. xstate has no guard against a loop, so this is
  the guard.
- `fanOut`: `number`

  The children that run under the Open body at one time.
- `size`: `number`

  The size of the Chart, as JSON, in bytes. At most 1048576 (1 MiB).
