easterbrooka switches Mike's secrets to envelope encryption
API keys, model settings and shared-workflow records now live as encrypted blobs, with the plaintext kept on standby during cutover.
easterbrooka has flipped the live request path onto envelope-encrypted storage: every user API key, model preference and workflow share is now sealed under a per-user key, while the old plaintext columns keep getting written in parallel so a rollback to an earlier image stays safe through the soak period. A one-shot backfill walks existing rows and seeds the encrypted columns where they're missing.
The trickier piece is sharing. Anywhere Mike used to match collaborators by email address - access checks, the shared-workflow list, share creation - it now matches on a keyed hash instead, so the database never has to see the address in the clear to find a record. Production deploys now refuse to start unless the key-management service and the hashing secret are both configured, making a half-wired environment fail at boot rather than at the first user request.
Spotted something wrong? Or know the PR text has fresher detail than the writeup above?