Phase 05 Plan S27: Staging OpenIddict Reapply Summary¶
Ordinary staging was moved from the BFF on Auth0 back to the BFF on native Identity, on a fresh session generation. The live run passed, and both retained session cookies from S09 were refused on both replicas. Staging now runs the BFF on OpenIddict; production has not switched.
Timeline¶
| When (UTC) | Event | Revision |
|---|---|---|
| 2026-10-07 | Chris gives the go for the reapply | |
| 2026-10-07 11:04:55 | Reapply: BFF provider auth0 to openiddict, generation s27-staging-openiddict-3 |
camaradesuk/cluster-gitops#1531 |
| 2026-10-07 11:08 | Both API replicas on the new generation (about 3 minutes after the merge) | |
| 2026-10-07 | Live run (run-s09-live.sh s27) passed |
evidence file below |
The three staging generations are now distinct, each from its own revision and Argo sync:
s09-staging-openiddict-1 (#1529, switch), s09-staging-auth0-rollback-2 (#1530, rollback) and
s27-staging-openiddict-3 (#1531, reapply).
What changed (#1531)¶
- BFF provider
auth0toopeniddict, authorityidentity.staging.syrf.org.uk, confidential clientsyrf-web,identityProvider: openiddict, and the chart-default scopes. - New session generation
s27-staging-openiddict-3, so every cookie minted under the two earlier generations is refused. - The Auth0 staging BFF ExternalSecret is kept as a values-only rollback path. Nothing reads it while
the provider is
openiddict, but a rollback to Auth0 stays a one-change GitOps edit.
Live run (passed)¶
Evidence (redaction-checked, mode 0600, git-ignored): .superpowers/sdd/auth-s30-2026-09-25/ ->
s27-reapply-evidence-2026-10-07.json.
- Password sign-in,
/api/auth/me, a protected API call, SignalR reconnect, refresh/logout and the emailed reset. - Two replicas sharing one session.
- Both retained cookies were refused (401) on both replicas: the S09 switch-generation cookie
(
s09-staging-openiddict-1) and the S09 Task 3 Auth0 rollback-generation cookie (s09-staging-auth0-rollback-2). The evidence recordsold_cookies_unauthorized_checked: 2. S09's Task 3 had checked only the first of the two.
Also verified on staging before the reapply (BFF on Auth0, 2026-10-07)¶
- An unverified Auth0 sign-up lands on
/auth/welcome-email-sent, through the #4105 callback-path forwarding. -
4106 ends the Auth0 session in a hidden frame (
Login./v2/logout), so the next Sign in shows Universal¶
Process lesson¶
The first version of #1531 accidentally deleted unrelated staging values. A script that rewrote comments had a bug and removed more than comments. The Claude review blocked it, and it was rebuilt with a block-scoped edit before merge. Lesson: diff the non-comment changes of a GitOps change before requesting review.
Follow-ups (not done)¶
- Delete the two Auth0 staging test users. This needs an Auth0 Management API token from Chris.
- Decide whether to keep the "SyRF staging BFF" Auth0 application and the
syrf-auth0-bff-stagingsecret as a standing rollback rehearsal path. - camaradesuk/cluster-gitops#1616: a comment-only Swagger note.
- Recovery time against an objective was still not measured. The only figures are the rollout times (about 3 minutes for the reapply, 3 m 18 s for the S09 rollback).
Next¶
- S10 (production dark launch) is unblocked by S27. S10-S13 are unchanged.
- S13 is also gated on account-portal slices 1-3 (plan). Slices 1 and 2 are in PR #4113, slice 3 in PRs #4112 and #4114, and step-up hardening is in #4116 (in progress).