A row of macaw_auth_sessions, the native backend's sessions, in the
host's repo (mix macaw_auth.gen.migration writes the table's
migration, separate from the users').
token_hashis the SHA-256 of the session's token, unique. The token itself goes to the client and is never written anywhere: a copy of the table signs nobody in.user_idreferencesmacaw_auth_users; deleting a user deletes their sessions.user_agentis truncated to 255 characters, so a client can't make the row as large as it likes.completed_stepsholds step names as strings ({:array, :string}, a native array on Postgres and JSON text on SQLite). They become the contract's atoms only by lookup amongMacaw.Auth.steps/0, so a row can never create an atom.last_used_atis what idle expiry reads; a request writes it at most hourly (Macaw.Auth.Native.Sessions).