# HAC-31 Safe Mutation Guardrails Date: 2026-03-31 Owner: Senior Frontend Engineer Issue: HAC-31 ## Goal Harden current-phase writable operations without expanding product scope beyond existing string save and TTL controls. ## Scope - add a scoped review step before string save - add a scoped review step before TTL set and TTL removal - block no-op mutation submits before they reach the desktop bridge or demo fallback - preserve draft value and TTL input when a live mutation fails ## Explicit Non-Goals - Add Key flow changes - real delete execution - non-string editing - command-surface changes - visual refresh beyond mutation clarity ## Implementation - Added `apps/desktop/src/lib/mutation-guardrails.ts` for mutation summaries and no-op detection helpers. - Updated `apps/desktop/src/App.tsx` so save and TTL actions open a shared review dialog with scoped current-vs-next details. - Disabled string save when no value change is pending. - Disabled TTL set when the requested TTL already matches the active TTL state. - Kept live failure handling on the shared operator notice layer while preserving draft state for retry. ## Verification - `pnpm --filter @redis-gui/desktop test` - `pnpm run desktop:build`