Unresolved-step

Recovery surface for an automation step whose reference is broken. When a user clicks a step tile whose `ref` slug matches no existing element, this panel takes the Properties Panel's place and offers two concrete exits: Create the missing element from a type picker, or Remove the dangling step from the automation. It surfaces the unresolved slug, the step's upstream dependencies, and the automation path — a flow-first alternative to a generic "element not found" dead end.

binds_to: automationdensity: comfortablesource: portal/src/canvas/unresolved_step_panel.rs

Live

The real panel component, mounted here over fixture data — the same shipped chrome the workspace renders, not a sketch.

unresolved-step
helpUnresolved step

b1

Monthly shift

Reference slug
monthly-shift — no element with this slug exists in the circle yet
Depends on
applicability
Automation
showcase/month-end-review
● Unresolved step1 pending step

Sketch

Structural preview of the panel chrome. The browser panel renders the real BrowserChrome primitive at miniature scale; the other variants are CSS shape silhouettes. Either way the composition tree below is the authoritative description of what's inside.

Unresolved-stepportal/src/canvas/unresolved_step_panel.rsexisting

States

  • idleBoth exits enabled — Create the element or Remove the step
  • picker_openType picker visible — choose an element type to scaffold
  • busyCreate or Remove in flight — actions disabled, progress shown
  • action_errorCreate or Remove failed — inline error shown
  • action_successElement created or step removed — selection context cleared

Composition

Click any component name to jump to its component-page entry.

WorkspaceShellouterL-chrome (top + body + status) — single role=application landmark, paired structurally with resolved-step. No rail: one broken step, one surface.
WorkspaceTopchromeBreadcrumb chrome naming the automation path and the unresolved step id.
WorkspaceBreadcrumbchromeShows the parent automation path and 'Unresolved · {step-id}'.
WorkspaceBodycontentHosts the unresolved badge, identity, fact list, the create/remove actions, and the conditional type picker + status messaging.
StepBadgecontentHelp-icon + 'Unresolved step' chip — names the failure mode at the body head.
StepFactscontentDefinition list — the unresolved reference slug ('no element exists'), the depends-on list, and the automation path.
StepActionscontrolTwo exits — Create element (primary, opens the type picker) and Remove step (danger, patches the automation spec).
CreatableTypePickercontrolGrid of creatable element types — shown only when Create is toggled open; excludes non-step types (circle, condition, loop, wait).
ActionStatusMessagestateInline progress / success line, e.g. 'Removing step…' or 'Step removed.'
ActionErrorMessagestateInline error line from a failed create or remove flow.
WorkspaceStatuschromeBottom strip — a steady 'Unresolved step' label + dot on the left, a reactive pending-step CounterPill on the right.
CounterPillchromeReactive 'step N of M pending' — tallies unresolved step tiles from the canvas store.

Uses Components

Flat list of every component referenced — verifiable against the composition tree by the future generator audit.