# Runway

URL: /workflows/processes/runway · Id: `process:runway`

> Runway tells the Founder every week whether the Startup reaches profit before its cash runs out.

Runway tells the [Founder](/agents/founding/founder) every week whether the [Startup](/business/nouns/startup) reaches profit before its cash runs out.

## Outcome
| Part | This Process |
| --- | --- |
| Outcome | Each week the Founder knows, at trailing rates, whether the Startup reaches profit before its cash runs out. |
| Reads | [Transaction](/business/nouns/transaction), [Metric](/business/nouns/metric) |
| Leaves | [Document](/business/nouns/document) |
| Runs in | Each Startup |

## Accountable
[Finance Lead](/agents/finance/finance-lead), [Finance Team](/agents/finance).

## Workflows
| Workflow | Runs | Team |
| --- | --- | --- |
| [Default-alive check](/workflows/processes/runway/default-alive-check) | every week | [Finance Team](/agents/finance) |

## Who does each step

| Workflow | Step | Role | Calls | Approval |
| --- | --- | --- | --- | --- |
| [Default-alive check](/workflows/processes/runway/default-alive-check) | 1. Read cash, net burn, and weekly growth. | [Finance Lead](/agents/finance/finance-lead) | [Metric.query](/business/nouns/metric/query) | None |
| [Default-alive check](/workflows/processes/runway/default-alive-check) | 2. Project both forward at the trailing rates. | [Finance Lead](/agents/finance/finance-lead) | [Forecast.create](/business/nouns/forecast/create) | None |
| [Default-alive check](/workflows/processes/runway/default-alive-check) | 3. Report default alive or default dead to the Founder. | [Finance Lead](/agents/finance/finance-lead) | [Message.create](/business/nouns/message/create) | None |

## Events
| Direction | When | What happens |
| --- | --- | --- |
| In | Every week | Starts [Default-alive check](/workflows/processes/runway/default-alive-check) |
| Out | [`Metric.queried`](/business/events/Metric.queried) | Raised by step 1 of [Default-alive check](/workflows/processes/runway/default-alive-check) |
| Out | `Forecast.created` | Raised by step 2 of [Default-alive check](/workflows/processes/runway/default-alive-check) |
| Out | `Message.created` | Raised by step 3 of [Default-alive check](/workflows/processes/runway/default-alive-check) |

## Plays
No Play names this Process.

## Controls
No Control names this Process or a Workflow of it.

## Settings
| Setting | Type | Default | Say | Set with |
| --- | --- | --- | --- | --- |
| `runway.reportDay` | `string` | `mon` | Send the runway check on Mondays | [Setting.update](/business/nouns/setting/update) |

## Failure
A failed step retries; when retries run out, the Action goes to the [Finance Lead](/agents/finance/finance-lead).

## Loop
No loop: the path is never randomized, because it serves [Risk assessment](/systems/trust-and-governance/controls/risk-assessment).

## Code

**Ask**

```text
Turn on runway
```

**API**

```bash
curl -X POST https://api.sb/leaseline.app/processes/process_1/enable \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
```

**SDK**

```ts
import { $ } from 'startup-builder'

await $.Process.enable({ process: 'process_1' })
```

**CLI**

```bash
npx startup-builder do Process.enable --json '{"process":"process_1"}'
```

**MCP**

```json
{
  "name": "do",
  "arguments": {
    "code": "return await $.Process.enable({ process: 'process_1' })"
  }
}
```

## Enable
On by default for every Product Template. [Process.pause](/business/nouns/process/pause) stops new Actions; Actions in progress finish.

**Ask**

```text
Send the runway check on Mondays
```

**API**

```bash
curl -X PATCH https://api.sb/leaseline.app/settings/setting_1 \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"value":"mon","key":"runway.reportDay"}'
```

**SDK**

```ts
import { $ } from 'startup-builder'

await $.Setting.update({ id: 'setting_1', value: 'mon', key: 'runway.reportDay' })
```

**CLI**

```bash
npx startup-builder do Setting.update --json '{"id":"setting_1","value":"mon","key":"runway.reportDay"}'
```

**MCP**

```json
{
  "name": "do",
  "arguments": {
    "code": "return await $.Setting.update({ id: 'setting_1', value: 'mon', key: 'runway.reportDay' })"
  }
}
```

## Example
A podcast-editing marketplace has $80,000 in cash, burns $10,000 a month and grows revenue 5% a week. [Default-alive check](/workflows/processes/runway/default-alive-check) reports default alive, with profit in month 6, and the Founder reads it each week.