Convert app/api/admin/sites, trucks, users from Supabase PostgREST to Drizzle ORM. All data ops use asAdmin(); all audit writes use withUser(session.sub, tx => writeAuditLog(tx, ...)). Zero supabase imports remain in the three files. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>