# user-engine portal on reef-railiance Exercise status: unknown for the procedures in this runbook; no per-procedure successful-run receipt with operator attribution was established in the 2026-09-05 review. See [procedure inventory](../../../docs/attended-procedure-inventory.md). **Apply home moved.** The managed package is `rapp-user-engine`. Render, deploy, verify, and rollback from that repo (`make deploy`, `make verify-live`). These files are historical migration input, not a current apply or rollback procedure. In particular, the old runtime mail binding must not be replayed. This is a stateful `rail-kubernetes` platform workload. It intentionally has no public Ingress until the KeyCape authorization-code/PKCE edge and `user-engine-portal` client are configured. Direct access to protected routes must remain impossible because the application accepts identity only from a trusted edge marker plus verified claims. The portal image is published through the activity-core workload-scoped Forgejo package credential and deployed from `forgejo.coulomb.social/coulomb/user-engine` by immutable digest. The public package read was verified without an image pull Secret; publishing still uses the ExternalSecret-backed credential and temporary client state. The CloudNativePG operator creates `user-engine-pg-app`, including its `uri` field. OpenBao is authoritative for the portal edge marker and provisioner service token at `platform/workloads/user-engine/runtime`. The `openbao-runtime.yaml` stores and ExternalSecrets deliver those values into the existing namespaced Secret names without changing application interfaces. Email delivery now uses email-connect's scoped `user-engine-scoped-mail` ESO contract owned by the provider; the former shared `mail-token` is revoked and must not be restored. The legacy `tools/sync-user-engine-delivery-secret.sh` now refuses before credential or cluster access. Audit sender maintenance must use the audit-core/Platform owner-reviewed delivery path; the existing audit Secret is preserved, not rotated or revoked by source retirement. The managed package's `docs/runtime-contract.md` is the release authority. The desired runtime also projects a short-lived ServiceAccount token with audience `flex-auth` at `/var/run/secrets/flex-auth-caller/token`. user-engine re-reads it per policy decision; it is not a Kubernetes API credential and is not copied into a Secret. This manifest must be promoted with a user-engine image that understands `USER_ENGINE_FLEX_AUTH_TOKEN_FILE` and flex-auth desired state that binds `system:serviceaccount:user-engine:user-engine`. The current pinned digest predates that coordinated rollout. Use `make verify-live` from `rapp-user-engine` for current verification. The former `verify-operability.sh` is retired: its rollback reapplied this migration tree and its fixed July job names could not prove a current restore. Rollback sets the Deployment image to the preceding immutable digest. Database migrations are additive and run before serving; restore uses the standard CNPG recovery contract once the offsite object-store reference is attached.