# Deploy and smoke-test

Publish an immutable deployment and prove the real hosted customer path.

Deployment packages the validated source, creates an immutable deployment record, uploads the source, and lets Salambo prepare and activate the managed runtime.

## 1. Validate immediately before deployment

```bash
salambo doctor
salambo manifest --path . --json
```

## 2. Deploy

```bash
salambo deploy
```

Record the deployment identifier, manifest SHA-256, and source SHA-256 printed by the CLI. Runtime preparation is asynchronous; a source upload is not yet proof that an agent can execute.

## 3. Run the hosted smoke test

```bash
salambo smoke "Read the workspace README and summarize it in three bullets."
```

`smoke` calls the real Native Runs API using the agent from `salambo.yaml`. It
succeeds only when the affected turn reaches `completed`.

For a custom tool, make the expected behavior explicit:

```bash
salambo smoke "Use format_case_reference for case 42 and return only the result."
```

## 4. Inspect evidence

Open the resulting run in Salambo:

| View        | Verify                                                                 |
| ----------- | ---------------------------------------------------------------------- |
| Details     | Deployment, region, machine, workspace, turn count, and final outcome  |
| Activity    | Admission, sandbox, worker, provider, checkpoint, and cleanup sequence |
| Diagnostics | Sanitized technical events and extension hook/tool failures            |
| Turns       | Model output and turn status                                           |
| Artifacts   | Files intentionally published by the agent                             |

## 5. Test a durable follow-up when state matters

Send `POST /api/v1/runs` with the existing `run_id` when your agent depends on
workspace or session state. Confirm that the new turn sees the saved workspace
and restored model and tool selection.

## Failure rule

Do not redeploy blindly. Use the failure stage:

* manifest error: fix source declarations;
* deployment error: inspect build and activation evidence;
* `run_not_executable`: inspect admission and deployment readiness;
* provider error: inspect credentials, egress, model, and billing;
* extension timeout/error: inspect the specific tool or hook event;
* checkpoint error: inspect workspace and cleanup events.

Use [run diagnostics](/docs/operate/diagnostics) for the complete evidence model.
