> ## Documentation Index
> Fetch the complete documentation index at: https://docs.joystream.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# The lifecycle

> Plan, Build, Conform, Dry Run, Pilot, Live — the stages an agent passes through, and the two loops that compound around them.

Nothing reaches production automatically. Promotion between stages is explicit, and each stage produces the evidence the next one needs.

## The stages

```mermaid theme={null}
flowchart LR
    A[Plan] --> B[Build] --> C[Conform] --> D[Dry Run] --> E[Pilot] --> F[Live]
```

| Stage       | What happens                                                           | Side effects |
| ----------- | ---------------------------------------------------------------------- | ------------ |
| **Plan**    | Draft the capability spec in conversation with Joyvis                  | None         |
| **Build**   | Compile the committed spec into an immutable, versioned package        | None         |
| **Conform** | Prove the built package meets the agent spec                           | None         |
| **Dry Run** | Execute end to end with side-effecting actions held back               | None         |
| **Pilot**   | Controlled real execution — limited scope, access, volume, or audience | Real         |
| **Live**    | Approved production execution                                          | Real         |

<Warning>
  Pilot and Live have real side effects. The CLI asks for confirmation before entering either. Skip the prompt with `--yes` only when you mean it.
</Warning>

Dry Run was previously called Sandbox. The stage is the same; only the name changed.

## Deployments activate a version

An agent version is a portable executable realization. A deployment activates it in a specific operating context, supplying environment-specific bindings: stage, workspace, credentials, integration bindings, schedules, triggers, model access, concurrency limits, cost limits, human approvers, permissions, memory scope, and operational policies.

One agent version may have several deployments — a dry run deployment, a finance-team pilot, a North America live deployment, and a European live deployment with different policies.

## Every production run is version-pinned

A run must be traceable to its capability, spec version, agent version, recipe version, deployment, skills and tools, and runtime configuration.

```text theme={null}
RUN 1842

Capability      Employee Onboarding
Capability spec v4
Agent version   v12
Recipe          v7
Deployment      Production — North America
```

## The two loops

The lifecycle is not a line that ends at deployment. It is two loops that compound.

### The engineering loop

Turns organizational intent into a trusted agent.

```mermaid theme={null}
flowchart LR
    A[Intent] --> B[Job discovery] --> C[Joyvis conversation] --> D[Capability]
    D --> E[Capability spec] --> F[Agent build] --> G[Runtime recipe]
    G --> H[Conformance] --> I[Dry run] --> J[Evidence] --> K[Pilot]
    K --> L[Review] --> M[Promotion]
```

It answers one question: **has this agent earned the right to operate this capability?**

The engineering loop creates trust before production.

### The operating loop

Turns production execution into organizational learning.

```mermaid theme={null}
flowchart LR
    A[Trigger] --> B[Run] --> C[Epic] --> D[Stories] --> E[Outcomes]
    E --> F[Tickets] --> G[Evidence] --> H[Observation] --> I[Memory]
    I --> J[Metrics] --> K[Improvement] --> L[Next version] --> M[Next run]
```

It answers a different question: **is this capability delivering its intended outcome, and how should it improve?**

The engineering loop creates trust. The operating loop compounds it.

## Promotion is a decision, not a default

Production is not the destination of a newly generated agent. Movement from build to dry run to pilot to live requires explicit gates and evidence. People decide when the evidence is sufficient.

`jstm agent readiness <agent-id>` reports blockers and exits non-zero when any exist, so the gate runs in a script as easily as at a terminal.

## Next

<Columns cols={2}>
  <Card title="Promote to production" href="/guides/promote-to-production" icon="rocket">
    Walk the stages with real commands.
  </Card>

  <Card title="Runs and work" href="/concepts/runs-and-work" icon="list-checks">
    What a run produces and how to read it.
  </Card>
</Columns>
