<!-- GENERATED by scripts/build-llms.mjs from llms/data.md — do not edit this file. -->

# `lr-flow-run-status`

- **Import** `import '@aceshooting/lyra-ui/components/lr-flow-run-status.js';` (stable tag alias; registers the tag)
- **Class** `LyraFlowRunStatus`, also available unregistered from `@aceshooting/lyra-ui/components/data/flow-run-status/flow-run-status.class.js`
- **Family** `components/data/` — see `llms/index.md` for its siblings
- **Status** `stable` since `9.0.0` — see the maturity and deprecation policy in `llms/shared.md`
- **Release history** [CHANGELOG.md](../../CHANGELOG.md); family-wide breaking-change summaries: [llms-full.txt](../../llms-full.txt)
- **Deprecations** none
- **Optional peers** none
- **Themeable via** 4 parts, 6 custom properties — see this component's own `@csspart`/`@cssprop` list below
- **Library-wide behavior** (events, form association, `locale`/`strings`, tokens, TS types): `llms/shared.md`

---

## `lr-flow-run-status`

Execution-state presentation for a `lr-flow-canvas`: pushes a `FlowRunDecorations` map into the
resolved canvas (the canvas itself renders the node/edge paint) and renders a compact run-summary
strip. Summary/count text and slotted host chrome wrap within narrow allocations. Does not execute,
poll, or time anything — pure pushed state; `durationMs` is host-computed.

**Properties:**

- `for: string = ''` — id of the target `lr-flow-canvas`; empty resolves to the nearest ancestor
- `decorations: FlowRunDecorations = {}` (attribute: false) — a detached, deeply frozen readonly
  record bounded to 10,000 keys plus finite nested depth/entry budgets and pushed onto the resolved
  canvas; invalid statuses and records with unreadable `status`, `progress`, `durationMs` or `detail` fields are omitted independently, retaining valid neighbors, and consumers reassign the record after changes
- `hideSummary: boolean = false` (attribute `hide-summary`) — omits the "{done} of {total} steps
  complete" strip, keeping only the decoration push
- `label: string = ''` — accessible name for the summary strip
- `frame: 'card'|'plain' = 'card'` (reflected) — container treatment, on the library-wide `frame`
  vocabulary. `'plain'` removes the border, background, shadow, padding and radius, so a summary
  strip dropped straight into a host toolbar that already draws its own frame does not double it.
  `'card'` is the standalone floating-strip presentation. The canonical type is `LyraFrame`; there
  is no component-local appearance alias.

**Events:** none dispatched directly.

**Slots:** default — extra host chrome appended to the strip (e.g. a cancel button or a usage
badge).

**CSS parts:** `base`, `summary` (the "{done} of {total} steps complete" line), `count` (one per
status present, text + tone dot, never color-only), `live-region` (a visually-hidden, `aria-hidden`
mirror of the last step-transition announcement).

`live-region` carries no live-region role of its own — it is a styling and inspection surface. The
announcement itself goes to the library's shared **light-DOM** polite region, appended to the
consumer's `<body>` and marked `data-lr-live-region="polite"`, because a live region inside a
shadow root is not reliably announced (JAWS with Firefox ignores one outright). Assert against that
document-level region rather than `::part(live-region)`.

**Themeable custom properties:** shared `--lr-flow-status-color` and the explicit
`--lr-flow-status-pending-color`, `--lr-flow-status-running-color`,
`--lr-flow-status-success-color`, `--lr-flow-status-error-color`, and
`--lr-flow-status-denied-color` hooks, also consumed by `lr-flow-node` and `lr-flow-minimap`.
Set the palette on a canvas/theme ancestor to keep all three presentations in sync.

**Optional peer deps:** none.

```html
<lr-flow-canvas id="canvas" style="height:480px">
  <lr-flow-run-status slot="top-start" for="canvas"></lr-flow-run-status>
</lr-flow-canvas>
<script>
  document.querySelector("lr-flow-run-status").decorations = {
    a: { status: "success", durationMs: 820 },
    b: { status: "running", progress: 40 },
  };
</script>
```

**Known gotchas:**

- Purely a pushed-state conduit: it never starts, stops, or times a run itself — the host recomputes
  `decorations` (including `durationMs`) on whatever cadence its own execution engine ticks at.
- `for` resolution matches `lr-flow-minimap`/`lr-flow-controls`.
- The public identity is `lr-flow-run-status` / `LyraFlowRunStatus`. The former overlay name is
  removed rather than retained as a second runtime tag or public type.

---
