Progress

Progress is scoped per flow, user, and optional workspaceKey. Personal and workspace items use separate generation counters.

Pin revision

Mutations include the published revision. Clients pin to the revision they loaded. Publishing a new revision does not retroactively rewrite stored step states.

Dual generations

personalGeneration and workspaceGeneration increment on successful writes. Every mutation sends the generations the client last saw.

409 stale

When generations mismatch, the adapter returns stale (HTTP 409 on Hosted). The widget reloads progress and retries reconciliation.

requestId vs transitions

requestId idempotents reads and writes. AdapterResult.acceptedTransitions lists events that actually changed state. onEvent fires only when changed: true.

Skip semantics

  • Skip then complete is allowed on optional items.
  • Skip after complete does not uncomplete the step.
  • Required items cannot be skipped unless marked optional.

Related: Completion · Adapter · Facts