@for (set of datasets; track set.id) { }
Nothing is sent to a customer and no published flow is changed.
@if (hasRun()) { @switch (tab()) { @case ('Trace') {
    @for (step of steps(); track step.nodeId) {
  1. {{ step.label }} {{ step.ms }} ms

    {{ step.detail }}

    @if (writesOf(step).length > 0) {

    @for (write of writesOf(step); track write[0]) { {{ write[0] }} = {{ write[1] }} }

    } @if (step.breakpointId) {

    Matches breakpoint {{ step.breakpointId }} — {{ breakpointOf(step.breakpointId)?.failure }}

    }
  2. }
} @case ('Context') { What this run would carry if the conversation moved to another flow or to a live agent. Anything marked “dropped” is re-derived by the receiving side, so a stale value cannot win. @if (context().length > 0) { } @else { This run collected nothing to carry. } } @case ('Repairs') { @if (proposals().length > 0) { Repairs are proposed for the breakpoints THIS run reproduced. Applying one stages the change — the graph itself is edited on the canvas, so nothing here rewrites a published flow behind your back. @for (fix of proposals(); track fix.id) {

{{ fix.title }}

{{ fix.describe }}

It would add
    @for (add of fix.adds; track add) {
  • {{ add }}
  • }
@if (isApplied(fix.id)) { } @else { }
} } @else { This run reproduced no repairable breakpoint. Try the “API timeout” or “Malformed order id” dataset. } } } } @else { Pick a dataset and run it. The trace, the carried context and any proposed repairs all come from that one run. }

{{ dataset().name }}

{{ dataset().summary }}

Seed values @for (entry of seedEntries(); track entry[0]) { }
@if (hasRun()) {
Result
@if (failedStep(); as failed) {
Where it stopped {{ failed.label }} {{ failed.detail }}
} } @else { Run the dataset to see a result. }