Skip to content

Show lazy-skipped nodes as 'skipped' (fix stuck-on-running)#181

Merged
bscholer merged 1 commit into
mainfrom
worktree-skipped-status
May 15, 2026
Merged

Show lazy-skipped nodes as 'skipped' (fix stuck-on-running)#181
bscholer merged 1 commit into
mainfrom
worktree-skipped-status

Conversation

@bscholer

Copy link
Copy Markdown
Owner

Summary

Closes a follow-up to #175. The runtime emits `node_skipped` for lazy-skipped nodes, but the UI state machine had no case for it, so the prior `node_started` left the node stuck on `status='running'` indefinitely. Now visible any time you tweak a downstream node and the upstream chain stays cached.

  • Add a new `'skipped'` NodeStatus rather than reusing `'cached'`. Cached entries have files on disk that the preview pane can load; skipped entries don't (the runtime decided nothing downstream would read them). Conflating the two would make the preview pane try to load an image that isn't there.
  • Add `node_skipped` to the UI `JobEventType` union and add the matching `case 'node_skipped'` to `usePipelineState`'s state machine.
  • Backend `EventType` literal picks up the long-missing `node_skipped` and `node_warning` so the cast in `_emit_event` matches reality.
  • Mirror `cached` styling (muted) for the badge. The label "skipped" carries the distinction.

Test plan

  • `npm run check` (svelte-check): 0 errors
  • Backend tests pass (test_lazy_rerun, test_jobs_persistence)
  • Ruff clean
  • In a browser: tweak the stretch node on a project whose register/stack are cached; confirm the upstream nodes flip to "skipped" (not stuck "running")

The runtime emits node_skipped for lazy-skipped nodes (PR #175), but the
UI's state machine had no case for that event, so the prior node_started
left the node stuck at status='running' forever. Visible whenever you
tweak a downstream node and the upstream chain stays cached: the early
steps animated as 'running' for the lifetime of the page.

Add a new 'skipped' NodeStatus rather than reusing 'cached'. The two are
semantically different — cached entries have files on disk that the
preview pane can load; skipped entries don't, because the runtime
decided no downstream consumer would read them. Conflating the two
would make the preview pane attempt to load an image that isn't there.

Backend EventType union also picks up the long-missing node_skipped and
node_warning literals so the cast in _emit_event matches reality.
@bscholer
bscholer merged commit 1c7b3a0 into main May 15, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant