- Reverse-gate the /setup route: setupComplete===true → SetupPage alreadyLocked (Surface 8 'Setup already complete'); loading → no-flash placeholder; else wizard - Add App.test.tsx reverse-gate tests (already-complete surface + active wizard on /setup) - SetupPage mock now respects the alreadyLocked prop