# RunHistory

> A runs list with status filter and search beside a run detail showing per-step state, timings, input, output, logs and screenshots, the failing step, a span timeline with attributes, and the raw payload.

Source: https://docs.nasaqui.com/components/run-history

## Install

```bash
npx shadcn@latest add https://docs.nasaqui.com/r/run-history.json
```

Answers "what happened when it ran?". Runs are listed newest first with a status filter and search. Choosing one shows
its steps on a shared time axis, each expandable to its input, output, logs and screenshots; the step that failed is
called out and opened for you. A Trace tab lays the spans out as a waterfall with attributes, and a Raw tab shows the
payload. `RunDetail` is exported on its own for a page that already knows which run to show.

## When to use

- The execution log of a workflow, job or automation.
- A detail page for one run reached from an alert or a list.

## When not to use

- Live request tracing across services with sampling and percentiles: use `apm-panels`.
- Editing the workflow itself: use `workflow-canvas` or `step-editor`.

## Import

```tsx
import { RunHistory, RunDetail } from "@fadymondy/nasaq/web";
// inside this monorepo: "@nasaq/web"
```

## Quick start

```tsx
import { RunHistory, type RunRecord } from "@fadymondy/nasaq/web";

export function Runs({ runs }: { runs: RunRecord[] }) {
  return <RunHistory runs={runs} onRetry={async (run) => { await rerun(run.id); }} />;
}
```

## Anatomy

```
RunHistory                data-slot="run-history"
├─ list section           search, status ToggleGroup with counts, run rows (data-run-row)
└─ detail section
   └─ RunDetail           data-slot="run-detail"
      ├─ header           status, id, started, duration, trigger, Run again / Cancel
      ├─ Alert            failing step with a "Show the step" button
      └─ Tabs             Steps (data-step rows) | Trace (run-trace, run-span-detail) | Raw
```

## API

### RunHistory

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `runs` | `readonly RunRecord[]` | required | Any order; shown newest first. |
| `selectedId / defaultSelectedId` | `string \| null` | `null` | Controlled or initial selection. |
| `onSelect` | `(run \| null) => void` | none | Selection changed. |
| `onRetry` | `(run) => Promise<void \| { error?: string }>` | none | Shows "Run again" on finished runs. |
| `onCancel` | `(run) => Promise<void \| { error?: string }>` | none | Shows "Cancel run" on running ones. |
| `loading` | `boolean` | `false` | Skeleton list. |
| `labels` | `Partial<RunHistoryLabels>` | none | Override any string. |

### RunDetail

`run`, `onRetry`, `onCancel`, `defaultTab` (`"steps" | "trace" | "raw"`), `leading`, `labels`.

### RunRecord

`{ id, name?, status, startedAt, durationMs?, trigger?, steps: RunStep[], spans?: RunSpan[], payload?, error? }`.
`RunStep` has `startedAtMs?`, `durationMs?`, `depth?` (for nested steps), `input?`, `output?`, `error?`, `logs?`, `screenshots?`, `attempt?`.
`RunSpan` has `id`, `parentId?`, `name`, `service?`, `startMs`, `durationMs`, `error?`, `attributes?`.

Statuses are the workflow ones: `idle`, `running`, `success`, `error`, `waiting`, `skipped`.

## Examples

Start on the trace of one run:

```tsx
<RunDetail run={run} defaultTab="trace" />
```

## Accessibility

| Key | Action |
| --- | --- |
| Tab | Moves through search, filters, runs, tabs and step rows. |
| Enter / Space | Selects a run, expands a step, selects a span, enlarges a screenshot. |
| Arrow keys | Move between tabs and filter toggles. |

Status is an icon plus a word. Step rows are buttons with `aria-expanded`. Span bars carry a text alternative with the duration. The span detail is a polite live region. Screenshots open in a dialog with their alt text.

## RTL & i18n

- The layout mirrors: bars grow from the start edge, the back arrow flips, nesting indents on the start side.
- Ids, span names, attributes, durations and code stay left-to-right.
- English and Arabic strings ship; pass `labels` to change any.

## Styling & tokens

- Uses `--nq-danger-soft`, `--nq-selected`, `--nq-hover` and border tokens. Extend with `className`; never pass raw hex.

## Do / Don't

- Do record `startedAtMs` on steps so the bars show real overlap.
- Do keep screenshots small or served by URL.
- Don't put secrets in `input`, `output` or `payload`; they are displayed.

## Related

- [`workflow-canvas`](https://docs.nasaqui.com/components/workflow-canvas)
- [`cron-builder`](https://docs.nasaqui.com/components/cron-builder)
- [`apm-panels`](https://docs.nasaqui.com/components/apm-panels)

## Lab

https://docs.nasaqui.com/?path=/docs/components-workflow-run-history--docs

## Code

### React

```tsx
import { RunHistory, type RunRecord } from "@fadymondy/nasaq/web";

export function Runs({ runs }: { runs: RunRecord[] }) {
  return <RunHistory runs={runs} onRetry={async (run) => { await rerun(run.id); }} />;
}
```

### shadcn

```tsx
import { RunHistory, type RunRecord } from "@/components/ui/run-history";

export function Runs({ runs }: { runs: RunRecord[] }) {
  return <RunHistory runs={runs} onRetry={async (run) => { await rerun(run.id); }} />;
}
```

### Vue

```vue
<script setup lang="ts">
import { NqRunHistory, type RunRecord } from "@fadymondy/nasaq/vue";

// Your data: any order, newest shown first.
const runs: RunRecord[] = [
  {
    id: "run_8f2a",
    name: "Nightly sync",
    status: "error",
    startedAt: "2026-09-29T08:40:00Z",
    durationMs: 4200,
    trigger: "Schedule",
    error: "Upstream returned 502",
    steps: [
      { id: "fetch", name: "Fetch orders", status: "success", startedAtMs: 0, durationMs: 1200, output: { count: 42 } },
      { id: "push", name: "Push to warehouse", status: "error", startedAtMs: 1200, durationMs: 3000, error: "Upstream returned 502", logs: ["POST /v1/orders", "502 Bad Gateway"] },
    ],
    spans: [
      { id: "s1", name: "sync", service: "worker", startMs: 0, durationMs: 4200 },
      { id: "s2", parentId: "s1", name: "POST /v1/orders", service: "http", startMs: 1200, durationMs: 3000, error: true, attributes: { "http.status": 502 } },
    ],
  },
  {
    id: "run_7c10",
    name: "Nightly sync",
    status: "success",
    startedAt: "2026-09-28T08:40:00Z",
    durationMs: 2100,
    trigger: "Schedule",
    steps: [
      { id: "fetch", name: "Fetch orders", status: "success", startedAtMs: 0, durationMs: 1100 },
      { id: "push", name: "Push to warehouse", status: "success", startedAtMs: 1100, durationMs: 1000 },
    ],
  },
];

// Your API call.
const rerun = async (run: RunRecord) => {
  await fetch(`/api/runs/${run.id}/retry`, { method: "POST" });
};
</script>

<template>
  <NqRunHistory :runs="runs" :on-retry="rerun" />
</template>
```

### Blade

```blade
@php
    $runs = [
        [
            'id' => 'run_8f2a', 'name' => 'Nightly sync', 'status' => 'error', 'startedAt' => now()->startOfDay()->addHours(8)->addMinutes(40), 'durationMs' => 4200,
            'trigger' => 'Schedule', 'error' => 'Upstream returned 502',
            'steps' => [
                ['id' => 'fetch', 'name' => 'Fetch orders', 'status' => 'success', 'startedAtMs' => 0, 'durationMs' => 1200, 'output' => ['count' => 42]],
                ['id' => 'push', 'name' => 'Push to warehouse', 'status' => 'error', 'startedAtMs' => 1200, 'durationMs' => 3000, 'error' => 'Upstream returned 502', 'logs' => ['POST /v1/orders', '502 Bad Gateway']],
            ],
            'spans' => [
                ['id' => 's1', 'name' => 'sync', 'service' => 'worker', 'startMs' => 0, 'durationMs' => 4200],
                ['id' => 's2', 'parentId' => 's1', 'name' => 'POST /v1/orders', 'service' => 'http', 'startMs' => 1200, 'durationMs' => 3000, 'error' => true, 'attributes' => ['http.status' => 502]],
            ],
        ],
        [
            'id' => 'run_7c10', 'name' => 'Nightly sync', 'status' => 'success', 'startedAt' => now()->startOfDay()->subDay()->addHours(8)->addMinutes(40), 'durationMs' => 2100,
            'trigger' => 'Schedule',
            'steps' => [
                ['id' => 'fetch', 'name' => 'Fetch orders', 'status' => 'success', 'startedAtMs' => 0, 'durationMs' => 1100],
                ['id' => 'push', 'name' => 'Push to warehouse', 'status' => 'success', 'startedAtMs' => 1100, 'durationMs' => 1000],
            ],
        ],
    ];
@endphp
{{-- Your API call starts the run again; the button waits for it. Resolve { error: "…" } or reject to show why it failed. --}}
<x-nq::run-history :runs="$runs" retryable
    x-on:nq-run-retry="$event.detail.waitUntil(new Promise((done) => setTimeout(done, 300)))" />
```

### HTML + Alpine

```html
<div data-slot="run-history" x-data="nqRunHistory(JSON.parse('{\u0022runs\u0022:[{\u0022id\u0022:\u0022run_8f2a\u0022,\u0022category\u0022:\u0022failed\u0022,\u0022text\u0022:\u0022run_8f2a nightly sync schedule upstream returned 502\u0022},{\u0022id\u0022:\u0022run_7c10\u0022,\u0022category\u0022:\u0022success\u0022,\u0022text\u0022:\u0022run_7c10 nightly sync schedule\u0022}],\u0022selected\u0022:null}'))"     x-on:nq-run-retry="$event.detail.waitUntil(new Promise((done) =&gt; setTimeout(done, 300)))" class="grid min-w-0 gap-4 lg:grid-cols-[minmax(0,22rem)_minmax(0,1fr)] lg:items-start">
    <section aria-label="Runs" x-bind:class="selected !== null ? 'hidden lg:flex' : ''" class="flex min-w-0 flex-col gap-3 rounded-card border border-border bg-card p-3">
        <div class="relative">
            <svg aria-hidden="true" class="pointer-events-none absolute inset-y-0 start-3 my-auto size-4 text-muted-foreground" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="m21 21-4.34-4.34"/>
  <circle cx="11" cy="11" r="8"/>
</svg>            <input data-slot="input" type="search"
                    x-model="query" placeholder="Search runs" aria-label="Search runs" class="w-full min-w-0 rounded-control border border-input bg-card px-3 text-body text-foreground min-h-[var(--nq-touch-min,0px)] transition-colors duration-150 ease-nq outline-none placeholder:text-muted-foreground focus-visible:border-nq-focus focus-visible:outline-1 focus-visible:outline-nq-focus data-invalid:border-nq-danger aria-invalid:border-nq-danger disabled:cursor-not-allowed disabled:opacity-50 pointer-coarse:text-[16px] h-control ps-9">
        </div>
        <div role="group" data-slot="toggle-group" data-variant="segmented" data-orientation="horizontal"
    x-data="nqToggleGroup(JSON.parse('[\u0022all\u0022]'), false)" x-modelable="value" x-bind="root"
            x-model="filterSel" aria-label="Filter by status" class="flex w-fit max-w-full gap-0.5 rounded-control bg-secondary p-0.5 flex-wrap">
    <button type="button" data-slot="toggle" aria-pressed="true"
     x-bind="toggle('all')"      data-pressed         class="inline-flex h-7 shrink-0 items-center justify-center gap-1.5 whitespace-nowrap px-3 text-label text-muted-foreground outline-none transition-colors duration-150 ease-nq hover:text-foreground [&_svg]:size-4 [&_svg]:shrink-0 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus data-disabled:pointer-events-none data-disabled:opacity-50 rounded-[calc(var(--radius-control)-2px)] data-pressed:bg-card data-pressed:text-foreground data-pressed:shadow-xs">All
                    <span class="ms-1 text-caption text-muted-foreground tabular-nums">2</span></button>
                            <button type="button" data-slot="toggle" aria-pressed="false"
     x-bind="toggle('failed')"             class="inline-flex h-7 shrink-0 items-center justify-center gap-1.5 whitespace-nowrap px-3 text-label text-muted-foreground outline-none transition-colors duration-150 ease-nq hover:text-foreground [&_svg]:size-4 [&_svg]:shrink-0 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus data-disabled:pointer-events-none data-disabled:opacity-50 rounded-[calc(var(--radius-control)-2px)] data-pressed:bg-card data-pressed:text-foreground data-pressed:shadow-xs">Failed
                    <span class="ms-1 text-caption text-muted-foreground tabular-nums">1</span></button>
                            <button type="button" data-slot="toggle" aria-pressed="false"
     x-bind="toggle('success')"             class="inline-flex h-7 shrink-0 items-center justify-center gap-1.5 whitespace-nowrap px-3 text-label text-muted-foreground outline-none transition-colors duration-150 ease-nq hover:text-foreground [&_svg]:size-4 [&_svg]:shrink-0 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus data-disabled:pointer-events-none data-disabled:opacity-50 rounded-[calc(var(--radius-control)-2px)] data-pressed:bg-card data-pressed:text-foreground data-pressed:shadow-xs">Succeeded
                    <span class="ms-1 text-caption text-muted-foreground tabular-nums">1</span></button>
                            <button type="button" data-slot="toggle" aria-pressed="false"
     x-bind="toggle('running')"             class="inline-flex h-7 shrink-0 items-center justify-center gap-1.5 whitespace-nowrap px-3 text-label text-muted-foreground outline-none transition-colors duration-150 ease-nq hover:text-foreground [&_svg]:size-4 [&_svg]:shrink-0 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus data-disabled:pointer-events-none data-disabled:opacity-50 rounded-[calc(var(--radius-control)-2px)] data-pressed:bg-card data-pressed:text-foreground data-pressed:shadow-xs">Running
                    <span class="ms-1 text-caption text-muted-foreground tabular-nums">0</span></button>
</div>
                    <div x-show="shown === 0"  style="display: none" >
                <div data-slot="empty-state" class="flex flex-col items-center justify-center gap-3 border border-dashed border-border px-6 py-12 text-center rounded-card">
            <span data-slot="state-icon" class="inline-flex size-10 items-center justify-center rounded-control border border-border bg-card [&amp;_svg]:size-5 text-muted-foreground">
            <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="M13 5h8"/>
  <path d="M13 12h8"/>
  <path d="M13 19h8"/>
  <path d="m3 17 2 2 4-4"/>
  <path d="m3 7 2 2 4-4"/>
</svg>        </span>
        <div class="flex max-w-sm flex-col gap-1">
        <p class="text-label text-foreground">No runs match</p>
                    <p class="text-body-sm text-muted-foreground">Change the filter or the search.</p>
            </div>
    </div>
            </div>
                            <ol class="flex max-h-[40rem] flex-col divide-y divide-border overflow-y-auto rounded-control border border-border" x-show="shown !== 0">
                                                                    <li data-run-row="run_8f2a" x-show="visible('run_8f2a')" x-bind:class="selected === 'run_8f2a' ? 'bg-nq-selected' : ''">
                            <button type="button" x-bind:aria-pressed="selected === 'run_8f2a' ? 'true' : 'false'" x-on:click="toggle('run_8f2a')"
                                class="flex w-full items-center gap-3 px-3 py-2.5 text-start outline-none hover:bg-nq-hover focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-nq-focus">
                                <svg role="img" aria-label="Failed" class="shrink-0 text-nq-danger-text size-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <circle cx="12" cy="12" r="10"/>
  <path d="m15 9-6 6"/>
  <path d="m9 9 6 6"/>
</svg>
                                <span class="min-w-0 flex-1">
                                    <span class="block truncate text-label text-foreground">Nightly sync</span>
                                    <span class="block truncate text-caption text-muted-foreground">
                                        <time data-slot="date-time" datetime="2026-09-29T08:40:00+00:00" dir="auto"  title="Sep 29, 2026"     class="tabular-nums [unicode-bidi:isolate]">20 minutes ago</time>
                                         · Schedule                                    </span>
                                </span>
                                <span class="shrink-0 text-caption text-muted-foreground tabular-nums" dir="ltr">4.2 s</span>
                            </button>
                        </li>
                                                                    <li data-run-row="run_7c10" x-show="visible('run_7c10')" x-bind:class="selected === 'run_7c10' ? 'bg-nq-selected' : ''">
                            <button type="button" x-bind:aria-pressed="selected === 'run_7c10' ? 'true' : 'false'" x-on:click="toggle('run_7c10')"
                                class="flex w-full items-center gap-3 px-3 py-2.5 text-start outline-none hover:bg-nq-hover focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-nq-focus">
                                <svg role="img" aria-label="Succeeded" class="shrink-0 text-nq-success-text size-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <circle cx="12" cy="12" r="10"/>
  <path d="m9 12 2 2 4-4"/>
</svg>
                                <span class="min-w-0 flex-1">
                                    <span class="block truncate text-label text-foreground">Nightly sync</span>
                                    <span class="block truncate text-caption text-muted-foreground">
                                        <time data-slot="date-time" datetime="2026-09-28T08:40:00+00:00" dir="auto"  title="Sep 28, 2026"     class="tabular-nums [unicode-bidi:isolate]">1 day ago</time>
                                         · Schedule                                    </span>
                                </span>
                                <span class="shrink-0 text-caption text-muted-foreground tabular-nums" dir="ltr">2.1 s</span>
                            </button>
                        </li>
                                    </ol>
                        </section>
    <section x-bind:class="selected === null ? 'hidden lg:block' : ''" aria-label="Choose a run" class="min-w-0 rounded-card border border-border bg-card p-4">
        <div x-show="selected === null" >
            <div data-slot="empty-state" class="flex flex-col items-center justify-center gap-3 border border-dashed border-border px-6 py-12 text-center rounded-card">
            <span data-slot="state-icon" class="inline-flex size-10 items-center justify-center rounded-control border border-border bg-card [&amp;_svg]:size-5 text-muted-foreground">
            <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="M13 5h8"/>
  <path d="M13 12h8"/>
  <path d="M13 19h8"/>
  <path d="m3 17 2 2 4-4"/>
  <path d="m3 7 2 2 4-4"/>
</svg>        </span>
        <div class="flex max-w-sm flex-col gap-1">
        <p class="text-label text-foreground">Choose a run</p>
                    <p class="text-body-sm text-muted-foreground">Pick a run on the left to see its steps, timing and output.</p>
            </div>
    </div>
        </div>
                    <div x-show="selected === 'run_8f2a'"  style="display: none" >
                <div data-slot="run-detail" x-data="nqRunDetail(JSON.parse('{\u0022id\u0022:\u0022run_8f2a\u0022,\u0022failing\u0022:\u0022push\u0022,\u0022tab\u0022:\u0022steps\u0022,\u0022failed\u0022:\u0022Could not finish. Try again.\u0022}'))"
    class="flex min-w-0 flex-col gap-4">
    <header class="flex flex-wrap items-start gap-3">
        <button data-slot="button"
     type="button"                         aria-label="Back to runs" title="Back to runs" x-on:click="toggle(null)" class="inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-control border border-transparent font-sans text-label transition-colors duration-150 ease-nq min-h-[var(--nq-touch-min,0px)] outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 text-foreground hover:bg-nq-hover size-control-sm p-0 lg:hidden">
        <svg aria-hidden="true" class="rtl:-scale-x-100" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="m12 19-7-7 7-7"/>
  <path d="M19 12H5"/>
</svg></button>
        <div class="min-w-0 flex-1">
            <div class="flex flex-wrap items-center gap-2">
                <svg role="img" aria-label="Failed" class="shrink-0 text-nq-danger-text size-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <circle cx="12" cy="12" r="10"/>
  <path d="m15 9-6 6"/>
  <path d="m9 9 6 6"/>
</svg>
                <h2 class="text-h4 text-foreground">Nightly sync</h2>
                <span data-slot="badge"     class="inline-flex h-5 shrink-0 items-center gap-1 whitespace-nowrap rounded-[4px] border px-1.5 text-caption font-medium [&_svg]:size-3 border-nq-danger/40 bg-nq-danger-soft text-nq-danger-text">Failed</span>
            </div>
            <dl class="mt-1.5 flex flex-wrap gap-x-5 gap-y-1 text-body-sm text-muted-foreground">
                <div class="flex gap-1.5">
                    <dt>Started</dt>
                    <dd class="text-foreground"><time data-slot="date-time" datetime="2026-09-29T08:40:00+00:00" dir="auto"     class="tabular-nums [unicode-bidi:isolate]">Sep 29, 2026, 8:40:00 AM</time>
</dd>
                </div>
                <div class="flex gap-1.5">
                    <dt>Duration</dt>
                    <dd class="text-foreground" dir="ltr">4.2 s</dd>
                </div>
                                    <div class="flex gap-1.5">
                        <dt>Trigger</dt>
                        <dd class="text-foreground">Schedule</dd>
                    </div>
                                <div class="flex gap-1.5">
                    <dt class="sr-only">ID</dt>
                    <dd dir="ltr" class="font-mono text-code">run_8f2a</dd>
                </div>
            </dl>
        </div>
        <div class="flex items-center gap-2">
                            <button data-slot="run-retry"
     type="button"                         x-on:click="retry()" x-bind:disabled="busy" x-bind:aria-busy="ariaBusy" class="inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-control border font-sans text-label transition-colors duration-150 ease-nq min-h-[var(--nq-touch-min,0px)] outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border-border bg-card text-foreground hover:bg-nq-hover h-control-sm px-2.5">
        <template x-if="busy"><svg data-slot="spinner" aria-hidden="true" class="size-4 animate-spin motion-reduce:animate-none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="M21 12a9 9 0 1 1-6.219-8.56"/>
</svg></template>
                    <svg aria-hidden="true" x-show="!busy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/>
  <path d="M3 3v5h5"/>
</svg>                    Run again</button>
                                </div>
    </header>
    <p role="alert" x-show="error" x-text="error" style="display: none" class="rounded-control bg-nq-danger-soft px-3 py-2 text-body-sm text-nq-danger-text"></p>
            <div data-slot="alert" data-tone="danger" role="alert"
        class="relative grid grid-cols-[auto_1fr_auto] items-start gap-x-3 rounded-card border p-3 text-start border-nq-danger/30 bg-nq-danger-soft">
    <svg aria-hidden="true" data-slot="alert-icon" class="mt-0.5 size-4 text-nq-danger-text" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <circle cx="12" cy="12" r="10"/>
  <path d="m15 9-6 6"/>
  <path d="m9 9 6 6"/>
</svg>    <div data-slot="alert-body" class="flex min-w-0 flex-col gap-0.5">
                    <div data-slot="alert-title" class="text-label text-foreground">Failed at Push to warehouse</div>
                            <div data-slot="alert-description" class="text-body-sm text-muted-foreground"><span dir="auto">Upstream returned 502</span></div>
            </div>
            <div data-slot="alert-actions" class="ms-3 flex items-center gap-1">
            <button data-slot="run-show-step"
     type="button"                         x-on:click="showFailing()" class="inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-control border font-sans text-label transition-colors duration-150 ease-nq min-h-[var(--nq-touch-min,0px)] outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border-border bg-card text-foreground hover:bg-nq-hover h-control-sm px-2.5">
        Show the step</button>
                    </div>
    </div>
    <div data-slot="tabs" data-orientation="horizontal" x-data="nqTabs('steps')" x-modelable="value" x-id="['nq-tabs']" x-model="pane" class="flex flex-col gap-4">
    <div data-slot="tabs-list" data-variant="underline" aria-orientation="horizontal" x-bind="list"
    class="relative z-0 flex max-w-full overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden gap-4 border-b border-border">
    <button type="button" data-slot="tabs-tab" x-bind="tab('steps')"
     data-active aria-selected="true"         class="inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap text-label text-muted-foreground outline-none transition-colors duration-150 ease-nq hover:text-foreground data-active:text-foreground [&_svg]:size-4 [&_svg]:shrink-0 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus data-disabled:pointer-events-none data-disabled:opacity-50 h-9 px-0.5">Steps <span class="ms-1 text-caption text-muted-foreground tabular-nums">2</span></button>
            <button type="button" data-slot="tabs-tab" x-bind="tab('trace')"
            class="inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap text-label text-muted-foreground outline-none transition-colors duration-150 ease-nq hover:text-foreground data-active:text-foreground [&_svg]:size-4 [&_svg]:shrink-0 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus data-disabled:pointer-events-none data-disabled:opacity-50 h-9 px-0.5">Trace</button>
            <button type="button" data-slot="tabs-tab" x-bind="tab('raw')"
            class="inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap text-label text-muted-foreground outline-none transition-colors duration-150 ease-nq hover:text-foreground data-active:text-foreground [&_svg]:size-4 [&_svg]:shrink-0 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus data-disabled:pointer-events-none data-disabled:opacity-50 h-9 px-0.5">Raw</button>
</div>
        <div data-slot="tabs-panel" x-bind="panel('steps')"
        class="outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus"><ol class="divide-y divide-border rounded-control border border-border">
                                                                    <li data-step="fetch"  class="scroll-mt-4 ">
                            <button type="button" x-on:click="toggle('fetch')" x-bind:aria-expanded="isOpen('fetch') ? 'true' : 'false'" aria-controls="nq-rd-000001-0-body"
                                x-bind:aria-label="isOpen('fetch') ? 'Hide details of Fetch orders' : 'Show details of Fetch orders'"
                                class="grid w-full grid-cols-[auto_auto_minmax(0,1fr)] items-center gap-x-3 gap-y-1 px-3 py-2.5 text-start outline-none hover:bg-nq-hover focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-nq-focus sm:grid-cols-[auto_auto_minmax(0,14rem)_minmax(0,1fr)_auto]"
                                style="padding-inline-start: calc(0.75rem + 0rem)">
                                <span aria-hidden="true" class="inline-flex transition-transform" x-bind:class="isOpen('fetch') ? 'rotate-90 rtl:rotate-90' : ''">
                                    <svg aria-hidden="true" class="size-4 text-muted-foreground rtl:-scale-x-100" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="m9 18 6-6-6-6"/>
</svg>                                </span>
                                <svg role="img" aria-label="Succeeded" class="shrink-0 text-nq-success-text size-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <circle cx="12" cy="12" r="10"/>
  <path d="m9 12 2 2 4-4"/>
</svg>
                                <span class="flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1">
                                    <span class="truncate text-label text-foreground">Fetch orders</span>
                                                                                                                                            </span>
                                <span aria-hidden="true" class="col-span-full hidden h-2 rounded-full bg-nq-surface-soft sm:col-span-1 sm:block">
                                    <span class="relative block h-full rounded-full bg-primary"
                                        style="margin-inline-start: 0%; width: 28.5714%"></span>
                                </span>
                                <span class="hidden text-caption text-muted-foreground tabular-nums sm:block" dir="ltr">1.2 s</span>
                            </button>
                            <div id="nq-rd-000001-0-body" x-show="isOpen('fetch')"  style="display: none"  class="flex flex-col gap-3 border-t border-border px-4 py-3"
                                style="padding-inline-start: calc(1rem + 0rem)">
                                                                                                <figure data-slot="code-block" data-language="json" dir="ltr" x-data="nqCodeBlock(JSON.parse('{\u0022code\u0022:\u0022{\\n  \\u0022count\\u0022: 42\\n}\u0022,\u0022language\u0022:\u0022json\u0022}'))" x-bind:data-highlighted="highlighted ? '' : null"
    class="group/code relative m-0 overflow-hidden rounded-surface border border-border bg-nq-surface-soft text-start [--shiki-foreground:var(--nq-fg)] [--shiki-background:transparent] [--shiki-token-comment:var(--nq-fg-muted)] [--shiki-token-keyword:var(--nq-accent-text)] [--shiki-token-string:var(--nq-success-text)] [--shiki-token-string-expression:var(--nq-success-text)] [--shiki-token-constant:var(--nq-warning-text)] [--shiki-token-function:var(--nq-info-text)] [--shiki-token-parameter:var(--nq-fg-body)] [--shiki-token-punctuation:var(--nq-fg-muted)] [--shiki-token-link:var(--nq-info-text)]">
            <figcaption data-slot="code-block-header" class="flex h-row items-center justify-between gap-2 border-b border-border ps-3 pe-1.5 font-mono text-caption text-muted-foreground">
            <span class="truncate">Output</span>
                            <span class="contents" x-data="nqCopyButton('{\n  \u0022count\u0022: 42\n}', 1500)">
    <button data-slot="copy-button"
     type="button"                         aria-label="Copy code" x-on:click="copy()" x-bind:data-copied="state === &#039;copied&#039; ? &#039;&#039; : null" class="inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-control border border-transparent font-sans text-label transition-colors duration-150 ease-nq min-h-[var(--nq-touch-min,0px)] outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 text-foreground hover:bg-nq-hover size-control-sm p-0 data-copied:text-nq-success-text">
        <svg aria-hidden="true" x-show="state !== 'copied'" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <rect width="14" height="14" x="8" y="8" rx="2" ry="2"/>
  <path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/>
</svg>        <svg aria-hidden="true" x-show="state === 'copied'" style="display: none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="M20 6 9 17l-5-5"/>
</svg></button>
    <span data-slot="copy-button-status" role="status" aria-live="polite" class="sr-only"
        data-copied-label="Code copied to clipboard" data-failed-label="Could not copy"
        x-text="state === 'copied' ? $el.dataset.copiedLabel : state === 'failed' ? $el.dataset.failedLabel : ''"></span>
</span>
                    </figcaption>
        <pre data-slot="code-block-pre" role="region" tabindex="0" aria-label="Output"
        class="m-0 overflow-auto bg-transparent py-3 font-mono text-code text-[var(--shiki-foreground)] outline-none focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-nq-focus max-h-64"><code class="block w-max min-w-full"><span data-line="1"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>{</span></span><span data-line="2"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  &quot;count&quot;: 42</span></span><span data-line="3"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>}</span></span></code></pre>
</figure>
                                                                                                                            </div>
                        </li>
                                                                    <li data-step="push"  data-failing  class="scroll-mt-4  bg-nq-danger-soft/40 ">
                            <button type="button" x-on:click="toggle('push')" x-bind:aria-expanded="isOpen('push') ? 'true' : 'false'" aria-controls="nq-rd-000001-1-body"
                                x-bind:aria-label="isOpen('push') ? 'Hide details of Push to warehouse' : 'Show details of Push to warehouse'"
                                class="grid w-full grid-cols-[auto_auto_minmax(0,1fr)] items-center gap-x-3 gap-y-1 px-3 py-2.5 text-start outline-none hover:bg-nq-hover focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-nq-focus sm:grid-cols-[auto_auto_minmax(0,14rem)_minmax(0,1fr)_auto]"
                                style="padding-inline-start: calc(0.75rem + 0rem)">
                                <span aria-hidden="true" class="inline-flex transition-transform" x-bind:class="isOpen('push') ? 'rotate-90 rtl:rotate-90' : ''">
                                    <svg aria-hidden="true" class="size-4 text-muted-foreground rtl:-scale-x-100" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="m9 18 6-6-6-6"/>
</svg>                                </span>
                                <svg role="img" aria-label="Failed" class="shrink-0 text-nq-danger-text size-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <circle cx="12" cy="12" r="10"/>
  <path d="m15 9-6 6"/>
  <path d="m9 9 6 6"/>
</svg>
                                <span class="flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1">
                                    <span class="truncate text-label text-foreground">Push to warehouse</span>
                                    <span data-slot="badge"     class="inline-flex h-5 shrink-0 items-center gap-1 whitespace-nowrap rounded-[4px] border px-1.5 text-caption font-medium [&_svg]:size-3 border-nq-danger/40 bg-nq-danger-soft text-nq-danger-text">Failed here</span>
                                                                                                        </span>
                                <span aria-hidden="true" class="col-span-full hidden h-2 rounded-full bg-nq-surface-soft sm:col-span-1 sm:block">
                                    <span class="relative block h-full rounded-full bg-nq-danger"
                                        style="margin-inline-start: 28.5714%; width: 71.4286%"></span>
                                </span>
                                <span class="hidden text-caption text-muted-foreground tabular-nums sm:block" dir="ltr">3 s</span>
                            </button>
                            <div id="nq-rd-000001-1-body" x-show="isOpen('push')"  class="flex flex-col gap-3 border-t border-border px-4 py-3"
                                style="padding-inline-start: calc(1rem + 0rem)">
                                                                    <div role="alert" class="rounded-control border border-nq-danger/40 bg-nq-danger-soft p-3 text-body-sm text-nq-danger-text">
                                        <p class="font-medium">Error</p>
                                        <p dir="auto">Upstream returned 502</p>
                                    </div>
                                                                                                                                <figure data-slot="code-block" data-language="text" dir="ltr" x-data="nqCodeBlock(JSON.parse('{\u0022code\u0022:\u0022POST \\\/v1\\\/orders\\n502 Bad Gateway\u0022,\u0022language\u0022:\u0022text\u0022}'))" x-bind:data-highlighted="highlighted ? '' : null"
    class="group/code relative m-0 overflow-hidden rounded-surface border border-border bg-nq-surface-soft text-start [--shiki-foreground:var(--nq-fg)] [--shiki-background:transparent] [--shiki-token-comment:var(--nq-fg-muted)] [--shiki-token-keyword:var(--nq-accent-text)] [--shiki-token-string:var(--nq-success-text)] [--shiki-token-string-expression:var(--nq-success-text)] [--shiki-token-constant:var(--nq-warning-text)] [--shiki-token-function:var(--nq-info-text)] [--shiki-token-parameter:var(--nq-fg-body)] [--shiki-token-punctuation:var(--nq-fg-muted)] [--shiki-token-link:var(--nq-info-text)]">
            <figcaption data-slot="code-block-header" class="flex h-row items-center justify-between gap-2 border-b border-border ps-3 pe-1.5 font-mono text-caption text-muted-foreground">
            <span class="truncate">Logs</span>
                            <span class="contents" x-data="nqCopyButton('POST \/v1\/orders\n502 Bad Gateway', 1500)">
    <button data-slot="copy-button"
     type="button"                         aria-label="Copy code" x-on:click="copy()" x-bind:data-copied="state === &#039;copied&#039; ? &#039;&#039; : null" class="inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-control border border-transparent font-sans text-label transition-colors duration-150 ease-nq min-h-[var(--nq-touch-min,0px)] outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 text-foreground hover:bg-nq-hover size-control-sm p-0 data-copied:text-nq-success-text">
        <svg aria-hidden="true" x-show="state !== 'copied'" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <rect width="14" height="14" x="8" y="8" rx="2" ry="2"/>
  <path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/>
</svg>        <svg aria-hidden="true" x-show="state === 'copied'" style="display: none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="M20 6 9 17l-5-5"/>
</svg></button>
    <span data-slot="copy-button-status" role="status" aria-live="polite" class="sr-only"
        data-copied-label="Code copied to clipboard" data-failed-label="Could not copy"
        x-text="state === 'copied' ? $el.dataset.copiedLabel : state === 'failed' ? $el.dataset.failedLabel : ''"></span>
</span>
                    </figcaption>
        <pre data-slot="code-block-pre" role="region" tabindex="0" aria-label="Logs"
        class="m-0 overflow-auto bg-transparent py-3 font-mono text-code text-[var(--shiki-foreground)] outline-none focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-nq-focus max-h-48"><code class="block w-max min-w-full"><span data-line="1"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>POST /v1/orders</span></span><span data-line="2"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>502 Bad Gateway</span></span></code></pre>
</figure>
                                                                                            </div>
                        </li>
                                    </ol></div>
        <div data-slot="tabs-panel" x-bind="panel('trace')"
     hidden     class="outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus"><div class="flex flex-col gap-3">
                    <section aria-label="Spans" data-slot="run-trace" class="rounded-control border border-border p-3">
                        <ul class="flex flex-col gap-1">
                                                                                            <li>
                                    <button type="button" x-on:click="pickSpan('s1')" x-bind:aria-pressed="span === 's1' ? 'true' : 'false'" x-bind:class="span === 's1' ? 'bg-nq-selected' : ''"
                                        class="grid w-full grid-cols-[minmax(0,9rem)_1fr] items-center gap-3 rounded-control px-1 py-0.5 text-start outline-none hover:bg-nq-hover focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-nq-focus sm:grid-cols-[minmax(0,14rem)_1fr]">
                                        <span class="min-w-0" style="padding-inline-start: 0rem">
                                            <bdi dir="ltr" class="block truncate font-mono text-code text-foreground">
                                                                                                sync
                                            </bdi>
                                            <span dir="ltr" class="block truncate text-caption text-muted-foreground">worker</span>                                        </span>
                                        <span class="relative h-5 rounded-control bg-nq-surface-soft" role="img" aria-label="sync, 4.2 s">
                                            <span class="absolute inset-y-0.5 rounded-[3px] bg-primary" style="inset-inline-start: 0%; width: 100%"></span>
                                            <span class="absolute inset-y-0 flex items-center text-caption text-foreground tabular-nums" style="inset-inline-start: 78%" dir="ltr">4.2 s</span>
                                        </span>
                                    </button>
                                </li>
                                                                                            <li>
                                    <button type="button" x-on:click="pickSpan('s2')" x-bind:aria-pressed="span === 's2' ? 'true' : 'false'" x-bind:class="span === 's2' ? 'bg-nq-selected' : ''"
                                        class="grid w-full grid-cols-[minmax(0,9rem)_1fr] items-center gap-3 rounded-control px-1 py-0.5 text-start outline-none hover:bg-nq-hover focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-nq-focus sm:grid-cols-[minmax(0,14rem)_1fr]">
                                        <span class="min-w-0" style="padding-inline-start: 0.75rem">
                                            <bdi dir="ltr" class="block truncate font-mono text-code text-foreground">
                                                <svg aria-hidden="true" class="me-1 inline size-3.5 text-nq-danger-text" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <circle cx="12" cy="12" r="10"/>
  <line x1="12" x2="12" y1="8" y2="12"/>
  <line x1="12" x2="12.01" y1="16" y2="16"/>
</svg>                                                POST /v1/orders
                                            </bdi>
                                            <span dir="ltr" class="block truncate text-caption text-muted-foreground">http</span>                                        </span>
                                        <span class="relative h-5 rounded-control bg-nq-surface-soft" role="img" aria-label="POST /v1/orders, 3 s, Failed">
                                            <span class="absolute inset-y-0.5 rounded-[3px] bg-destructive" style="inset-inline-start: 28.5714%; width: 71.4286%"></span>
                                            <span class="absolute inset-y-0 flex items-center text-caption text-foreground tabular-nums" style="inset-inline-start: 78%" dir="ltr">3 s</span>
                                        </span>
                                    </button>
                                </li>
                                                    </ul>
                    </section>
                    <section aria-label="Span details" aria-live="polite" data-slot="run-span-detail" class="rounded-control border border-border p-3">
                        <p x-show="span === null" class="text-body-sm text-muted-foreground">Choose a span to see its attributes.</p>
                                                                                <div x-show="span === 's1'" style="display: none" class="flex flex-col gap-3">
                                <dl class="grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-body-sm">
                                    <dt class="text-muted-foreground">Name</dt>
                                    <dd dir="ltr" class="font-mono text-code">sync</dd>
                                                                            <dt class="text-muted-foreground">Service</dt>
                                        <dd dir="ltr">worker</dd>
                                                                        <dt class="text-muted-foreground">Starts at</dt>
                                    <dd dir="ltr">0 ms</dd>
                                    <dt class="text-muted-foreground">Duration</dt>
                                    <dd dir="ltr">4.2 s</dd>
                                                                    </dl>
                                <div>
                                    <p class="mb-1 text-label text-foreground">Attributes</p>
                                                                            <p class="text-body-sm text-muted-foreground">No attributes.</p>
                                                                    </div>
                            </div>
                                                                                <div x-show="span === 's2'" style="display: none" class="flex flex-col gap-3">
                                <dl class="grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-body-sm">
                                    <dt class="text-muted-foreground">Name</dt>
                                    <dd dir="ltr" class="font-mono text-code">POST /v1/orders</dd>
                                                                            <dt class="text-muted-foreground">Service</dt>
                                        <dd dir="ltr">http</dd>
                                                                        <dt class="text-muted-foreground">Starts at</dt>
                                    <dd dir="ltr">1.2 s</dd>
                                    <dt class="text-muted-foreground">Duration</dt>
                                    <dd dir="ltr">3 s</dd>
                                                                            <dt class="text-muted-foreground">Error</dt>
                                        <dd class="text-nq-danger-text">Failed</dd>
                                                                    </dl>
                                <div>
                                    <p class="mb-1 text-label text-foreground">Attributes</p>
                                                                            <dl class="grid grid-cols-[minmax(0,auto)_minmax(0,1fr)] gap-x-4 gap-y-1 rounded-control bg-nq-surface-soft p-2 text-code" dir="ltr">
                                                                                            <div class="contents">
                                                    <dt class="font-mono text-muted-foreground">http.status</dt>
                                                    <dd class="min-w-0 break-words font-mono text-foreground">502</dd>
                                                </div>
                                                                                    </dl>
                                                                    </div>
                            </div>
                                            </section>
                </div></div>
        <div data-slot="tabs-panel" x-bind="panel('raw')"
     hidden     class="outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus"><figure data-slot="code-block" data-language="json" dir="ltr" x-data="nqCodeBlock(JSON.parse('{\u0022code\u0022:\u0022{\\n  \\u0022id\\u0022: \\u0022run_8f2a\\u0022,\\n  \\u0022name\\u0022: \\u0022Nightly sync\\u0022,\\n  \\u0022status\\u0022: \\u0022error\\u0022,\\n  \\u0022startedAt\\u0022: \\u00222026-09-29T08:40:00.000Z\\u0022,\\n  \\u0022durationMs\\u0022: 4200,\\n  \\u0022trigger\\u0022: \\u0022Schedule\\u0022,\\n  \\u0022error\\u0022: \\u0022Upstream returned 502\\u0022,\\n  \\u0022steps\\u0022: [\\n    {\\n      \\u0022id\\u0022: \\u0022fetch\\u0022,\\n      \\u0022name\\u0022: \\u0022Fetch orders\\u0022,\\n      \\u0022status\\u0022: \\u0022success\\u0022,\\n      \\u0022startedAtMs\\u0022: 0,\\n      \\u0022durationMs\\u0022: 1200,\\n      \\u0022output\\u0022: {\\n        \\u0022count\\u0022: 42\\n      }\\n    },\\n    {\\n      \\u0022id\\u0022: \\u0022push\\u0022,\\n      \\u0022name\\u0022: \\u0022Push to warehouse\\u0022,\\n      \\u0022status\\u0022: \\u0022error\\u0022,\\n      \\u0022startedAtMs\\u0022: 1200,\\n      \\u0022durationMs\\u0022: 3000,\\n      \\u0022error\\u0022: \\u0022Upstream returned 502\\u0022,\\n      \\u0022logs\\u0022: [\\n        \\u0022POST \\\/v1\\\/orders\\u0022,\\n        \\u0022502 Bad Gateway\\u0022\\n      ]\\n    }\\n  ],\\n  \\u0022spans\\u0022: [\\n    {\\n      \\u0022id\\u0022: \\u0022s1\\u0022,\\n      \\u0022name\\u0022: \\u0022sync\\u0022,\\n      \\u0022service\\u0022: \\u0022worker\\u0022,\\n      \\u0022startMs\\u0022: 0,\\n      \\u0022durationMs\\u0022: 4200\\n    },\\n    {\\n      \\u0022id\\u0022: \\u0022s2\\u0022,\\n      \\u0022parentId\\u0022: \\u0022s1\\u0022,\\n      \\u0022name\\u0022: \\u0022POST \\\/v1\\\/orders\\u0022,\\n      \\u0022service\\u0022: \\u0022http\\u0022,\\n      \\u0022startMs\\u0022: 1200,\\n      \\u0022durationMs\\u0022: 3000,\\n      \\u0022error\\u0022: true,\\n      \\u0022attributes\\u0022: {\\n        \\u0022http.status\\u0022: 502\\n      }\\n    }\\n  ]\\n}\u0022,\u0022language\u0022:\u0022json\u0022}'))" x-bind:data-highlighted="highlighted ? '' : null"
    class="group/code relative m-0 overflow-hidden rounded-surface border border-border bg-nq-surface-soft text-start [--shiki-foreground:var(--nq-fg)] [--shiki-background:transparent] [--shiki-token-comment:var(--nq-fg-muted)] [--shiki-token-keyword:var(--nq-accent-text)] [--shiki-token-string:var(--nq-success-text)] [--shiki-token-string-expression:var(--nq-success-text)] [--shiki-token-constant:var(--nq-warning-text)] [--shiki-token-function:var(--nq-info-text)] [--shiki-token-parameter:var(--nq-fg-body)] [--shiki-token-punctuation:var(--nq-fg-muted)] [--shiki-token-link:var(--nq-info-text)]">
            <figcaption data-slot="code-block-header" class="flex h-row items-center justify-between gap-2 border-b border-border ps-3 pe-1.5 font-mono text-caption text-muted-foreground">
            <span class="truncate">run.json</span>
                            <span class="contents" x-data="nqCopyButton('{\n  \u0022id\u0022: \u0022run_8f2a\u0022,\n  \u0022name\u0022: \u0022Nightly sync\u0022,\n  \u0022status\u0022: \u0022error\u0022,\n  \u0022startedAt\u0022: \u00222026-09-29T08:40:00.000Z\u0022,\n  \u0022durationMs\u0022: 4200,\n  \u0022trigger\u0022: \u0022Schedule\u0022,\n  \u0022error\u0022: \u0022Upstream returned 502\u0022,\n  \u0022steps\u0022: [\n    {\n      \u0022id\u0022: \u0022fetch\u0022,\n      \u0022name\u0022: \u0022Fetch orders\u0022,\n      \u0022status\u0022: \u0022success\u0022,\n      \u0022startedAtMs\u0022: 0,\n      \u0022durationMs\u0022: 1200,\n      \u0022output\u0022: {\n        \u0022count\u0022: 42\n      }\n    },\n    {\n      \u0022id\u0022: \u0022push\u0022,\n      \u0022name\u0022: \u0022Push to warehouse\u0022,\n      \u0022status\u0022: \u0022error\u0022,\n      \u0022startedAtMs\u0022: 1200,\n      \u0022durationMs\u0022: 3000,\n      \u0022error\u0022: \u0022Upstream returned 502\u0022,\n      \u0022logs\u0022: [\n        \u0022POST \/v1\/orders\u0022,\n        \u0022502 Bad Gateway\u0022\n      ]\n    }\n  ],\n  \u0022spans\u0022: [\n    {\n      \u0022id\u0022: \u0022s1\u0022,\n      \u0022name\u0022: \u0022sync\u0022,\n      \u0022service\u0022: \u0022worker\u0022,\n      \u0022startMs\u0022: 0,\n      \u0022durationMs\u0022: 4200\n    },\n    {\n      \u0022id\u0022: \u0022s2\u0022,\n      \u0022parentId\u0022: \u0022s1\u0022,\n      \u0022name\u0022: \u0022POST \/v1\/orders\u0022,\n      \u0022service\u0022: \u0022http\u0022,\n      \u0022startMs\u0022: 1200,\n      \u0022durationMs\u0022: 3000,\n      \u0022error\u0022: true,\n      \u0022attributes\u0022: {\n        \u0022http.status\u0022: 502\n      }\n    }\n  ]\n}', 1500)">
    <button data-slot="copy-button"
     type="button"                         aria-label="Copy code" x-on:click="copy()" x-bind:data-copied="state === &#039;copied&#039; ? &#039;&#039; : null" class="inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-control border border-transparent font-sans text-label transition-colors duration-150 ease-nq min-h-[var(--nq-touch-min,0px)] outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 text-foreground hover:bg-nq-hover size-control-sm p-0 data-copied:text-nq-success-text">
        <svg aria-hidden="true" x-show="state !== 'copied'" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <rect width="14" height="14" x="8" y="8" rx="2" ry="2"/>
  <path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/>
</svg>        <svg aria-hidden="true" x-show="state === 'copied'" style="display: none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="M20 6 9 17l-5-5"/>
</svg></button>
    <span data-slot="copy-button-status" role="status" aria-live="polite" class="sr-only"
        data-copied-label="Code copied to clipboard" data-failed-label="Could not copy"
        x-text="state === 'copied' ? $el.dataset.copiedLabel : state === 'failed' ? $el.dataset.failedLabel : ''"></span>
</span>
                    </figcaption>
        <pre data-slot="code-block-pre" role="region" tabindex="0" aria-label="Raw run data"
        class="m-0 overflow-auto bg-transparent py-3 font-mono text-code text-[var(--shiki-foreground)] outline-none focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-nq-focus max-h-[28rem]"><code class="block w-max min-w-full"><span data-line="1"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>{</span></span><span data-line="2"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  &quot;id&quot;: &quot;run_8f2a&quot;,</span></span><span data-line="3"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  &quot;name&quot;: &quot;Nightly sync&quot;,</span></span><span data-line="4"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  &quot;status&quot;: &quot;error&quot;,</span></span><span data-line="5"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  &quot;startedAt&quot;: &quot;2026-09-29T08:40:00.000Z&quot;,</span></span><span data-line="6"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  &quot;durationMs&quot;: 4200,</span></span><span data-line="7"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  &quot;trigger&quot;: &quot;Schedule&quot;,</span></span><span data-line="8"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  &quot;error&quot;: &quot;Upstream returned 502&quot;,</span></span><span data-line="9"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  &quot;steps&quot;: [</span></span><span data-line="10"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>    {</span></span><span data-line="11"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;id&quot;: &quot;fetch&quot;,</span></span><span data-line="12"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;name&quot;: &quot;Fetch orders&quot;,</span></span><span data-line="13"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;status&quot;: &quot;success&quot;,</span></span><span data-line="14"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;startedAtMs&quot;: 0,</span></span><span data-line="15"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;durationMs&quot;: 1200,</span></span><span data-line="16"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;output&quot;: {</span></span><span data-line="17"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>        &quot;count&quot;: 42</span></span><span data-line="18"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      }</span></span><span data-line="19"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>    },</span></span><span data-line="20"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>    {</span></span><span data-line="21"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;id&quot;: &quot;push&quot;,</span></span><span data-line="22"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;name&quot;: &quot;Push to warehouse&quot;,</span></span><span data-line="23"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;status&quot;: &quot;error&quot;,</span></span><span data-line="24"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;startedAtMs&quot;: 1200,</span></span><span data-line="25"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;durationMs&quot;: 3000,</span></span><span data-line="26"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;error&quot;: &quot;Upstream returned 502&quot;,</span></span><span data-line="27"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;logs&quot;: [</span></span><span data-line="28"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>        &quot;POST /v1/orders&quot;,</span></span><span data-line="29"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>        &quot;502 Bad Gateway&quot;</span></span><span data-line="30"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      ]</span></span><span data-line="31"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>    }</span></span><span data-line="32"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  ],</span></span><span data-line="33"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  &quot;spans&quot;: [</span></span><span data-line="34"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>    {</span></span><span data-line="35"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;id&quot;: &quot;s1&quot;,</span></span><span data-line="36"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;name&quot;: &quot;sync&quot;,</span></span><span data-line="37"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;service&quot;: &quot;worker&quot;,</span></span><span data-line="38"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;startMs&quot;: 0,</span></span><span data-line="39"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;durationMs&quot;: 4200</span></span><span data-line="40"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>    },</span></span><span data-line="41"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>    {</span></span><span data-line="42"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;id&quot;: &quot;s2&quot;,</span></span><span data-line="43"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;parentId&quot;: &quot;s1&quot;,</span></span><span data-line="44"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;name&quot;: &quot;POST /v1/orders&quot;,</span></span><span data-line="45"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;service&quot;: &quot;http&quot;,</span></span><span data-line="46"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;startMs&quot;: 1200,</span></span><span data-line="47"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;durationMs&quot;: 3000,</span></span><span data-line="48"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;error&quot;: true,</span></span><span data-line="49"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;attributes&quot;: {</span></span><span data-line="50"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>        &quot;http.status&quot;: 502</span></span><span data-line="51"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      }</span></span><span data-line="52"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>    }</span></span><span data-line="53"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  ]</span></span><span data-line="54"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>}</span></span></code></pre>
</figure></div>
</div>
    </div>
            </div>
                    <div x-show="selected === 'run_7c10'"  style="display: none" >
                <div data-slot="run-detail" x-data="nqRunDetail(JSON.parse('{\u0022id\u0022:\u0022run_7c10\u0022,\u0022failing\u0022:null,\u0022tab\u0022:\u0022steps\u0022,\u0022failed\u0022:\u0022Could not finish. Try again.\u0022}'))"
    class="flex min-w-0 flex-col gap-4">
    <header class="flex flex-wrap items-start gap-3">
        <button data-slot="button"
     type="button"                         aria-label="Back to runs" title="Back to runs" x-on:click="toggle(null)" class="inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-control border border-transparent font-sans text-label transition-colors duration-150 ease-nq min-h-[var(--nq-touch-min,0px)] outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 text-foreground hover:bg-nq-hover size-control-sm p-0 lg:hidden">
        <svg aria-hidden="true" class="rtl:-scale-x-100" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="m12 19-7-7 7-7"/>
  <path d="M19 12H5"/>
</svg></button>
        <div class="min-w-0 flex-1">
            <div class="flex flex-wrap items-center gap-2">
                <svg role="img" aria-label="Succeeded" class="shrink-0 text-nq-success-text size-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <circle cx="12" cy="12" r="10"/>
  <path d="m9 12 2 2 4-4"/>
</svg>
                <h2 class="text-h4 text-foreground">Nightly sync</h2>
                <span data-slot="badge"     class="inline-flex h-5 shrink-0 items-center gap-1 whitespace-nowrap rounded-[4px] border px-1.5 text-caption font-medium [&_svg]:size-3 border-nq-success/40 bg-nq-success-soft text-nq-success-text">Succeeded</span>
            </div>
            <dl class="mt-1.5 flex flex-wrap gap-x-5 gap-y-1 text-body-sm text-muted-foreground">
                <div class="flex gap-1.5">
                    <dt>Started</dt>
                    <dd class="text-foreground"><time data-slot="date-time" datetime="2026-09-28T08:40:00+00:00" dir="auto"     class="tabular-nums [unicode-bidi:isolate]">Sep 28, 2026, 8:40:00 AM</time>
</dd>
                </div>
                <div class="flex gap-1.5">
                    <dt>Duration</dt>
                    <dd class="text-foreground" dir="ltr">2.1 s</dd>
                </div>
                                    <div class="flex gap-1.5">
                        <dt>Trigger</dt>
                        <dd class="text-foreground">Schedule</dd>
                    </div>
                                <div class="flex gap-1.5">
                    <dt class="sr-only">ID</dt>
                    <dd dir="ltr" class="font-mono text-code">run_7c10</dd>
                </div>
            </dl>
        </div>
        <div class="flex items-center gap-2">
                            <button data-slot="run-retry"
     type="button"                         x-on:click="retry()" x-bind:disabled="busy" x-bind:aria-busy="ariaBusy" class="inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-control border font-sans text-label transition-colors duration-150 ease-nq min-h-[var(--nq-touch-min,0px)] outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 border-border bg-card text-foreground hover:bg-nq-hover h-control-sm px-2.5">
        <template x-if="busy"><svg data-slot="spinner" aria-hidden="true" class="size-4 animate-spin motion-reduce:animate-none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="M21 12a9 9 0 1 1-6.219-8.56"/>
</svg></template>
                    <svg aria-hidden="true" x-show="!busy" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/>
  <path d="M3 3v5h5"/>
</svg>                    Run again</button>
                                </div>
    </header>
    <p role="alert" x-show="error" x-text="error" style="display: none" class="rounded-control bg-nq-danger-soft px-3 py-2 text-body-sm text-nq-danger-text"></p>
    <div data-slot="tabs" data-orientation="horizontal" x-data="nqTabs('steps')" x-modelable="value" x-id="['nq-tabs']" x-model="pane" class="flex flex-col gap-4">
    <div data-slot="tabs-list" data-variant="underline" aria-orientation="horizontal" x-bind="list"
    class="relative z-0 flex max-w-full overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden gap-4 border-b border-border">
    <button type="button" data-slot="tabs-tab" x-bind="tab('steps')"
     data-active aria-selected="true"         class="inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap text-label text-muted-foreground outline-none transition-colors duration-150 ease-nq hover:text-foreground data-active:text-foreground [&_svg]:size-4 [&_svg]:shrink-0 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus data-disabled:pointer-events-none data-disabled:opacity-50 h-9 px-0.5">Steps <span class="ms-1 text-caption text-muted-foreground tabular-nums">2</span></button>
            <button type="button" data-slot="tabs-tab" x-bind="tab('trace')"
            class="inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap text-label text-muted-foreground outline-none transition-colors duration-150 ease-nq hover:text-foreground data-active:text-foreground [&_svg]:size-4 [&_svg]:shrink-0 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus data-disabled:pointer-events-none data-disabled:opacity-50 h-9 px-0.5">Trace</button>
            <button type="button" data-slot="tabs-tab" x-bind="tab('raw')"
            class="inline-flex shrink-0 items-center gap-1.5 whitespace-nowrap text-label text-muted-foreground outline-none transition-colors duration-150 ease-nq hover:text-foreground data-active:text-foreground [&_svg]:size-4 [&_svg]:shrink-0 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus data-disabled:pointer-events-none data-disabled:opacity-50 h-9 px-0.5">Raw</button>
</div>
        <div data-slot="tabs-panel" x-bind="panel('steps')"
        class="outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus"><ol class="divide-y divide-border rounded-control border border-border">
                                                                    <li data-step="fetch"  class="scroll-mt-4 ">
                            <button type="button" x-on:click="toggle('fetch')" x-bind:aria-expanded="isOpen('fetch') ? 'true' : 'false'" aria-controls="nq-rd-000002-0-body"
                                x-bind:aria-label="isOpen('fetch') ? 'Hide details of Fetch orders' : 'Show details of Fetch orders'"
                                class="grid w-full grid-cols-[auto_auto_minmax(0,1fr)] items-center gap-x-3 gap-y-1 px-3 py-2.5 text-start outline-none hover:bg-nq-hover focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-nq-focus sm:grid-cols-[auto_auto_minmax(0,14rem)_minmax(0,1fr)_auto]"
                                style="padding-inline-start: calc(0.75rem + 0rem)">
                                <span aria-hidden="true" class="inline-flex transition-transform" x-bind:class="isOpen('fetch') ? 'rotate-90 rtl:rotate-90' : ''">
                                    <svg aria-hidden="true" class="size-4 text-muted-foreground rtl:-scale-x-100" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="m9 18 6-6-6-6"/>
</svg>                                </span>
                                <svg role="img" aria-label="Succeeded" class="shrink-0 text-nq-success-text size-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <circle cx="12" cy="12" r="10"/>
  <path d="m9 12 2 2 4-4"/>
</svg>
                                <span class="flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1">
                                    <span class="truncate text-label text-foreground">Fetch orders</span>
                                                                                                                                            </span>
                                <span aria-hidden="true" class="col-span-full hidden h-2 rounded-full bg-nq-surface-soft sm:col-span-1 sm:block">
                                    <span class="relative block h-full rounded-full bg-primary"
                                        style="margin-inline-start: 0%; width: 52.381%"></span>
                                </span>
                                <span class="hidden text-caption text-muted-foreground tabular-nums sm:block" dir="ltr">1.1 s</span>
                            </button>
                            <div id="nq-rd-000002-0-body" x-show="isOpen('fetch')"  style="display: none"  class="flex flex-col gap-3 border-t border-border px-4 py-3"
                                style="padding-inline-start: calc(1rem + 0rem)">
                                                                                                                                                                                                <p class="text-body-sm text-muted-foreground">No input, output or logs were recorded for this step.</p>                            </div>
                        </li>
                                                                    <li data-step="push"  class="scroll-mt-4 ">
                            <button type="button" x-on:click="toggle('push')" x-bind:aria-expanded="isOpen('push') ? 'true' : 'false'" aria-controls="nq-rd-000002-1-body"
                                x-bind:aria-label="isOpen('push') ? 'Hide details of Push to warehouse' : 'Show details of Push to warehouse'"
                                class="grid w-full grid-cols-[auto_auto_minmax(0,1fr)] items-center gap-x-3 gap-y-1 px-3 py-2.5 text-start outline-none hover:bg-nq-hover focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-nq-focus sm:grid-cols-[auto_auto_minmax(0,14rem)_minmax(0,1fr)_auto]"
                                style="padding-inline-start: calc(0.75rem + 0rem)">
                                <span aria-hidden="true" class="inline-flex transition-transform" x-bind:class="isOpen('push') ? 'rotate-90 rtl:rotate-90' : ''">
                                    <svg aria-hidden="true" class="size-4 text-muted-foreground rtl:-scale-x-100" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="m9 18 6-6-6-6"/>
</svg>                                </span>
                                <svg role="img" aria-label="Succeeded" class="shrink-0 text-nq-success-text size-5" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <circle cx="12" cy="12" r="10"/>
  <path d="m9 12 2 2 4-4"/>
</svg>
                                <span class="flex min-w-0 flex-wrap items-center gap-x-2 gap-y-1">
                                    <span class="truncate text-label text-foreground">Push to warehouse</span>
                                                                                                                                            </span>
                                <span aria-hidden="true" class="col-span-full hidden h-2 rounded-full bg-nq-surface-soft sm:col-span-1 sm:block">
                                    <span class="relative block h-full rounded-full bg-primary"
                                        style="margin-inline-start: 52.381%; width: 47.619%"></span>
                                </span>
                                <span class="hidden text-caption text-muted-foreground tabular-nums sm:block" dir="ltr">1 s</span>
                            </button>
                            <div id="nq-rd-000002-1-body" x-show="isOpen('push')"  style="display: none"  class="flex flex-col gap-3 border-t border-border px-4 py-3"
                                style="padding-inline-start: calc(1rem + 0rem)">
                                                                                                                                                                                                <p class="text-body-sm text-muted-foreground">No input, output or logs were recorded for this step.</p>                            </div>
                        </li>
                                    </ol></div>
        <div data-slot="tabs-panel" x-bind="panel('trace')"
     hidden     class="outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus"><p class="text-body-sm text-muted-foreground">No trace was recorded for this run.</p></div>
        <div data-slot="tabs-panel" x-bind="panel('raw')"
     hidden     class="outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus"><figure data-slot="code-block" data-language="json" dir="ltr" x-data="nqCodeBlock(JSON.parse('{\u0022code\u0022:\u0022{\\n  \\u0022id\\u0022: \\u0022run_7c10\\u0022,\\n  \\u0022name\\u0022: \\u0022Nightly sync\\u0022,\\n  \\u0022status\\u0022: \\u0022success\\u0022,\\n  \\u0022startedAt\\u0022: \\u00222026-09-28T08:40:00.000Z\\u0022,\\n  \\u0022durationMs\\u0022: 2100,\\n  \\u0022trigger\\u0022: \\u0022Schedule\\u0022,\\n  \\u0022steps\\u0022: [\\n    {\\n      \\u0022id\\u0022: \\u0022fetch\\u0022,\\n      \\u0022name\\u0022: \\u0022Fetch orders\\u0022,\\n      \\u0022status\\u0022: \\u0022success\\u0022,\\n      \\u0022startedAtMs\\u0022: 0,\\n      \\u0022durationMs\\u0022: 1100\\n    },\\n    {\\n      \\u0022id\\u0022: \\u0022push\\u0022,\\n      \\u0022name\\u0022: \\u0022Push to warehouse\\u0022,\\n      \\u0022status\\u0022: \\u0022success\\u0022,\\n      \\u0022startedAtMs\\u0022: 1100,\\n      \\u0022durationMs\\u0022: 1000\\n    }\\n  ]\\n}\u0022,\u0022language\u0022:\u0022json\u0022}'))" x-bind:data-highlighted="highlighted ? '' : null"
    class="group/code relative m-0 overflow-hidden rounded-surface border border-border bg-nq-surface-soft text-start [--shiki-foreground:var(--nq-fg)] [--shiki-background:transparent] [--shiki-token-comment:var(--nq-fg-muted)] [--shiki-token-keyword:var(--nq-accent-text)] [--shiki-token-string:var(--nq-success-text)] [--shiki-token-string-expression:var(--nq-success-text)] [--shiki-token-constant:var(--nq-warning-text)] [--shiki-token-function:var(--nq-info-text)] [--shiki-token-parameter:var(--nq-fg-body)] [--shiki-token-punctuation:var(--nq-fg-muted)] [--shiki-token-link:var(--nq-info-text)]">
            <figcaption data-slot="code-block-header" class="flex h-row items-center justify-between gap-2 border-b border-border ps-3 pe-1.5 font-mono text-caption text-muted-foreground">
            <span class="truncate">run.json</span>
                            <span class="contents" x-data="nqCopyButton('{\n  \u0022id\u0022: \u0022run_7c10\u0022,\n  \u0022name\u0022: \u0022Nightly sync\u0022,\n  \u0022status\u0022: \u0022success\u0022,\n  \u0022startedAt\u0022: \u00222026-09-28T08:40:00.000Z\u0022,\n  \u0022durationMs\u0022: 2100,\n  \u0022trigger\u0022: \u0022Schedule\u0022,\n  \u0022steps\u0022: [\n    {\n      \u0022id\u0022: \u0022fetch\u0022,\n      \u0022name\u0022: \u0022Fetch orders\u0022,\n      \u0022status\u0022: \u0022success\u0022,\n      \u0022startedAtMs\u0022: 0,\n      \u0022durationMs\u0022: 1100\n    },\n    {\n      \u0022id\u0022: \u0022push\u0022,\n      \u0022name\u0022: \u0022Push to warehouse\u0022,\n      \u0022status\u0022: \u0022success\u0022,\n      \u0022startedAtMs\u0022: 1100,\n      \u0022durationMs\u0022: 1000\n    }\n  ]\n}', 1500)">
    <button data-slot="copy-button"
     type="button"                         aria-label="Copy code" x-on:click="copy()" x-bind:data-copied="state === &#039;copied&#039; ? &#039;&#039; : null" class="inline-flex shrink-0 select-none items-center justify-center gap-2 whitespace-nowrap rounded-control border border-transparent font-sans text-label transition-colors duration-150 ease-nq min-h-[var(--nq-touch-min,0px)] outline-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-nq-focus disabled:pointer-events-none disabled:opacity-50 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 text-foreground hover:bg-nq-hover size-control-sm p-0 data-copied:text-nq-success-text">
        <svg aria-hidden="true" x-show="state !== 'copied'" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <rect width="14" height="14" x="8" y="8" rx="2" ry="2"/>
  <path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/>
</svg>        <svg aria-hidden="true" x-show="state === 'copied'" style="display: none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
  <path d="M20 6 9 17l-5-5"/>
</svg></button>
    <span data-slot="copy-button-status" role="status" aria-live="polite" class="sr-only"
        data-copied-label="Code copied to clipboard" data-failed-label="Could not copy"
        x-text="state === 'copied' ? $el.dataset.copiedLabel : state === 'failed' ? $el.dataset.failedLabel : ''"></span>
</span>
                    </figcaption>
        <pre data-slot="code-block-pre" role="region" tabindex="0" aria-label="Raw run data"
        class="m-0 overflow-auto bg-transparent py-3 font-mono text-code text-[var(--shiki-foreground)] outline-none focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-nq-focus max-h-[28rem]"><code class="block w-max min-w-full"><span data-line="1"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>{</span></span><span data-line="2"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  &quot;id&quot;: &quot;run_7c10&quot;,</span></span><span data-line="3"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  &quot;name&quot;: &quot;Nightly sync&quot;,</span></span><span data-line="4"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  &quot;status&quot;: &quot;success&quot;,</span></span><span data-line="5"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  &quot;startedAt&quot;: &quot;2026-09-28T08:40:00.000Z&quot;,</span></span><span data-line="6"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  &quot;durationMs&quot;: 2100,</span></span><span data-line="7"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  &quot;trigger&quot;: &quot;Schedule&quot;,</span></span><span data-line="8"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  &quot;steps&quot;: [</span></span><span data-line="9"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>    {</span></span><span data-line="10"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;id&quot;: &quot;fetch&quot;,</span></span><span data-line="11"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;name&quot;: &quot;Fetch orders&quot;,</span></span><span data-line="12"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;status&quot;: &quot;success&quot;,</span></span><span data-line="13"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;startedAtMs&quot;: 0,</span></span><span data-line="14"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;durationMs&quot;: 1100</span></span><span data-line="15"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>    },</span></span><span data-line="16"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>    {</span></span><span data-line="17"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;id&quot;: &quot;push&quot;,</span></span><span data-line="18"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;name&quot;: &quot;Push to warehouse&quot;,</span></span><span data-line="19"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;status&quot;: &quot;success&quot;,</span></span><span data-line="20"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;startedAtMs&quot;: 1100,</span></span><span data-line="21"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>      &quot;durationMs&quot;: 1000</span></span><span data-line="22"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>    }</span></span><span data-line="23"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>  ]</span></span><span data-line="24"  class="flex min-h-[1lh] border-s-2 border-transparent pe-4 whitespace-pre ps-3"><span data-code-line>}</span></span></code></pre>
</figure></div>
</div>
    </div>
            </div>
            </section>
</div>
```
