-

-
Under Construction
-
This feature is coming soon!
-
- );
-};
-
-export { UnderConstruction };
\ No newline at end of file
diff --git a/frontend/src/shared/state/workflowsSlice.ts b/frontend/src/shared/state/workflowsSlice.ts
index c84373d8..68197ea4 100644
--- a/frontend/src/shared/state/workflowsSlice.ts
+++ b/frontend/src/shared/state/workflowsSlice.ts
@@ -139,16 +139,42 @@ export const createWorkflow = createAsyncThunk(
},
);
-export const updateWorkflow = createAsyncThunk(
+// Optimistic concurrency: PATCH sends If-Match with the workflow's
+// updated_at. If the backend's record changed since we read it (another
+// window, a mid-edit background fire), the server returns 409 and the
+// caller can prompt to reload. Thunk uses rejectWithValue so the FE can
+// distinguish stale-write from network errors.
+export const updateWorkflow = createAsyncThunk<
+ Workflow,
+ { id: string; patch: Partial