Skip to content

fix(workflow): resume durable subscriptions without duplicate inference - #174

Merged
BerryUIKI merged 5 commits into
devfrom
bugfix/workflow-subscriptions-116
Oct 8, 2026
Merged

BerryUIKI merged 5 commits into
devfrom
bugfix/workflow-subscriptions-116

Conversation

@BerryUIKI

Copy link
Copy Markdown
Owner

Workflow submission is now idempotent and independent of its WebSocket subscribers. The backend persists the immutable request, node inputs/outcomes, provider job IDs and sequenced events. A reconnect only subscribes to the existing run after the last observed sequence. Disconnect does not cancel execution or submit a second inference request. Reusing a run ID with different content returns a conflict.

The canvas submits once over REST, resumes subscriptions and rejects obsolete/duplicate events. The unsupported application PING heartbeat is removed. Shutdown/restart records interrupted or uncertain work without paid resubmission. Existing raw graph WebSocket submissions remain compatible and idempotent when they supply a run ID.

Validation: 311 backend tests and 99 frontend tests passed; typecheck/lint passed (two pre-existing lint warnings). A real TestClient socket disconnect with a counted controllable runner asserts exactly one inference, resumed output, durable history and conflict rejection. Database reopen verifies replay; frontend tests assert cursor resume and stale-event isolation.

  • Four small implementation/test commits
  • Targets dev; all required CI must pass
  • No live inference, secrets or generated runtime files

Fixes #116. Completes workflow durability for #120 alongside #172. Real remote-provider recovery remains unverified; unknown outcomes are never automatically retried.

@BerryUIKI
BerryUIKI merged commit 5e49e6b into dev Oct 8, 2026
3 checks passed
@BerryUIKI
BerryUIKI deleted the bugfix/workflow-subscriptions-116 branch October 8, 2026 17:31
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