# Run Status

Live status strip for a workflow run — queued, working, done, failed, or stopped checking.

## Add it to an app

1. Open the app builder and find **Run Status** in the component palette.
2. Insert it into the intended region or container.
3. Set its properties in the inspector. Use a literal for a fixed value or a binding for a value supplied by the app.
4. Connect its events where the app should respond to a user gesture.
5. Preview with representative data and save after resolving validation problems.

The type name in the builder’s code view is `run_status`.

## Settings

| Setting | Accepted value | Required | Default | What it controls |
| --- | --- | --- | --- | --- |
| Busy text (`busyText`) | string | No | "Working…" | Shown while running. The listed default is inserted when adding a new component. |
| Done text (`doneText`) | string | No | "Done" | The listed default is inserted when adding a new component. |
| Error text (`errorText`) | string | No | "Failed" | Shown as an alert when the run failed. The listed default is inserted when adding a new component. |
| Workflow stages (`phases`) | list of object | No | Not specified | Supports expression bindings. Authored stage definitions ({label, steps, countStep, countField, unit?}). |
| Workflow job progress (`progress`) | list of object | No | Not specified | Supports expression bindings. The run's measured job rows. |
| Queued text (`queuedText`) | string | No | Not specified | Shown while triggering/queued; falls back to the busy text. |
| Show done state (`showDone`) | boolean | No | true | false hides the success line. The listed default is inserted when adding a new component. |
| Status (`status`) | "" / "idle" / "triggering" / "queued" / "running" / "succeeded" / "failed" / "timed_out" | No | "" | Supports expression bindings. The engine-normalized run phase; idle, '' and unknown render nothing. The listed default is inserted when adding a new component. |
| Timed-out text (`timedOutText`) | string | No | "Stopped checking — the run may still be in progress; reload later to check." | Shown when checking stopped before a terminal state (the run may still be going). The listed default is inserted when adding a new component. |

## Values available to bindings

This component declares no published values. Use its settings and any events to configure its behaviour.

## Keyboard and accessible labels

Accessible label source: The phase text; a failure is role=alert.

Updates are announced through the component’s live status region.

## Example: Ingest progress

| Setting | Example value |
| --- | --- |
| `busyText` | "Extracting invoice fields…" |
| `doneText` | "Invoices ingested" |
| `errorText` | "Ingest failed" |
| `queuedText` | "Waiting for ingest to start…" |
| `status` | "{{ dataSources.invoices.runStatus }}" |

## Example: Staged run, success line hidden

| Setting | Example value |
| --- | --- |
| `phases` | [{"countField":"output","countStep":"topics","label":"Searching","steps":["topics","search_web"],"unit":"topics"}] |
| `progress` | "{{ dataSources.news.runSteps }}" |
| `showDone` | false |
| `status` | "{{ dataSources.news.runStatus }}" |

## If it is empty or unavailable

Check the source binding, the selected item, and the app’s access. A hosted document, table, review, or storage component needs the corresponding app capability; an offline preview cannot supply live private data. A source running with no results is different from an invalid binding. Inspect the app’s workflow and data source before changing the presentation.
