Without a prerequisite check, an operator could call POST /api/setup/complete directly, setting setup_complete=true with no admin user or credential row, leaving no recovery path without manual DB surgery. Add an inner join check for an unclaimed user with an associated credential; return 422 if absent. Update /complete tests to seed the prerequisite for the success path and add an explicit 422 regression test. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>