# Rehearse

URL: /code/builders/startup/rehearse · Id: `capability:rehearse`

> Rehearse runs a whole Startup in the test environment on a Stripe test clock, grades it, and files each miss as an eval case.

Rehearse runs a whole [Startup](/business/nouns/startup) in the test environment on a Stripe test clock, grades it, and files each miss as an [eval](/agents/evals) case.

## Contract
Status `planned`. `Startup.rehearse({ days: 30 })` runs the Startup's own definition against [synthetic walkers](/code/builders/startup/synthetic-walkers) drawn from its [ICP](/business/nouns/icp). The clock is a Stripe test clock, so renewals, dunning, trials and delay windows fire in minutes, and nothing reaches `live`.

It returns a rehearsal, the grade of the business over those days:

| Field | What it holds |
| --- | --- |
| `approvals` | [Approvals](/business/nouns/approval) asked each week, approved, refused and retired, each with the rule that asked and why |
| `actions` | [Actions](/business/nouns/action) per [Role](/business/nouns/role), with who looked at each |
| `escalations` | Work a seat handed to another, by reason |
| `stopped` | [Workflow](/business/nouns/workflow) steps that stopped, each with its transcript line |
| `cost` | [Cost](/business/nouns/cost) by mechanism, such as Stripe fees, model tokens and sends |
| `evalCases` | One eval case per miss, added to the suite of the Role that missed |

## Verbs
None.

## Interfaces
None.

## Example
Leaseline rehearses 30 days before it raises a [Price](/business/nouns/price). Rae sends 96 renewal notices and asks Dana about 3 refunds over $50, all in week one. She stops twice on residents who reply in another language, and both stops become eval cases for the [Success Manager](/agents/customer/success-manager).