# Statuses & limits

URL: https://docs.testvibe.com/testvibe-api/resources/statuses-and-limits

## Feature lifecycle statuses

| Status | Meaning | Runnable? | `draft` | Created, never generated. | No | `generating` | Generation in flight — feature is locked. | No | `generated` | Tests exist. | **Yes** | `failed` | Last generation failed. | No | `cancelled` | Last generation was cancelled. | No | `suggestion` | Proposed by the exploration agent, awaiting review. | No 

## Run statuses

| Status | Meaning | `running` | Queued or executing in the sandbox. | `passed` | Finished, all tests passed. | `failed` | Finished with failures (digest carries errors + log excerpt). 

## Per-test statuses

`passed` , `failed` — anything else (skipped, flaky, …) is counted under `summary.other` .

## Limits

| What | Limit | File writes | Only under `Features/` or `Configurations/` ; no `..` ; ≤ **256 KB** . | `wait_for_run` / `wait_for_generation` | `timeoutSeconds` default **120** , max **170** ; polls every **3 s** . Timing out cancels nothing. | `list_runs` | `limit` default **20** . | Per-test `error` in the run digest | Trimmed to **1 500** characters. | Run `log` excerpt | Trimmed to **4 000** characters; only on non-passed runs. | Generation log lines | Trimmed to **600** characters each. | Artifact download URLs | Short-lived — fetch immediately before downloading. | Concurrent generations | **One per feature** — a second dispatch gets `409 conflict` . 

## Error codes

The four `error` values and when you'll see them are in [Conventions & errors](/testvibe-api/reference/conventions) .
