Skip to main content

UX-WF-001 — Protect unsaved workflow edits

FieldValue
StatusOpen; source-verified, live refresh pending
Architecture stateDeployed behavior
SeverityMedium
Affected surfaceCreate and edit forms, modal close, navigation, reload, and session expiry
Componentssparqd/oqullus; sparqd/workflow-backend only if server-side drafts are selected
Associated issueNot opened

Where the problem appears​

Change a workflow form without saving, then close it, navigate away, reload, or allow the session to expire.

Concrete observed case​

Create and edit state lives in component memory. No autosave, durable draft, dirty-state navigation guard, or recovery token was identified. A successful submit resets the form, but interrupted work has no restoration path.

Expected condition​

At minimum, warn before discarding dirty changes. For longer multi-task workflows, save a clearly labelled draft keyed by actor, workspace, workflow identity, and base revision; restore it with conflict detection.

Cause and evidence​

  • Form state is local component state.
  • No draft storage or before-leave handling is present in the Workflow authoring surface.
  • Multi-task configuration can contain substantial schedule, resource, and dependency work.

Why it matters​

Users can lose lengthy workflow definitions silently and may reconstruct them against a newer backend revision without knowing it.

Existing controls and workarounds​

Keep an external copy of important settings before leaving or refreshing. Save in smaller deliberate increments only after reviewing that Save publishes a new revision.

Alternatives considered​

  1. Recommended baseline: dirty warning and explicit discard confirmation.
  2. Server-side drafts with base-revision conflict detection.
  3. Browser-local drafts — helpful for crashes but insufficient across devices and sensitive configuration requires careful storage.

Component involvement​

  • sparqd/oqullus owns dirty state and recovery UX.
  • sparqd/workflow-backend owns optional draft persistence and revision conflicts.
  • Security defines which configuration may be stored locally.

Reproduction and verification​

Follow WF-S015.

Resolution conditions​

Close when close, navigation, reload, expiry, and concurrent-edit scenarios either preserve changes or require explicit discard, and accepted drafts cannot overwrite a newer revision silently.

Validation and blockers​

Oqullus, workflow-backend, UX, product, and security owners must validate.