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

# Deployments and versions

> Follow a deploy, understand review states, and recover safely.

Every deploy is an attempt to create an immutable app version. A version becomes
live only after Marina has built its source, verified the artifact, and activated
the runtime successfully.

## Deployment states

| State       | Meaning                                                            |
| ----------- | ------------------------------------------------------------------ |
| `queued`    | Marina accepted the upload and is waiting for a worker.            |
| `building`  | The project is being built and verified.                           |
| `succeeded` | The attempt produced a version successfully.                       |
| `refused`   | Marina rejected the project with a reason and suggested action.    |
| `failed`    | Infrastructure or an unexpected build failure stopped the attempt. |

A succeeded deployment may produce either a `published` version or a `proposed`
version awaiting review. The CLI prints a live URL only for a published version.

## Inspect an app

```bash theme={null}
marina status
marina deploys
marina versions
```

Run the commands from a linked project, or add `--app <slug>`.

`marina deploys` shows attempts, including failures and refusals.
`marina versions` shows immutable versions and identifies the current one.

## Roll back

First inspect the published versions:

```bash theme={null}
marina versions --json
```

Then publish an earlier artifact again:

```bash theme={null}
marina rollback --to <artifact-hash>
```

Rollback creates a new published version. Marina never rewrites version history
or silently moves the live pointer backward.

## Diagnose a refusal

Use structured output to capture the stable refusal code, message, next action,
and build-log tail:

```bash theme={null}
marina deploy --json
```

Fix the reported issue locally and deploy again. A refused or failed attempt
does not replace the currently live version.
