docs(UAT_PLAYBOOK): document canonical source-of-truth for UAT seed passwords (GRO-2000) #132
Reference in New Issue
Block a user
Delete Branch "flea/gro-2000-uat-password-source-doc"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
Adds a
Source of truth for UAT passwords (GRO-2000)subsection under Pre-conditions inUAT_PLAYBOOK.md.Why
GRO-2000 happened because the UAT test orchestrator captured shell env vars from a previous SealedSecret generation. The SealedSecret was rotated but the captured env vars were not refreshed, so the test-orchestrator's
UAT_*_PASSWORDvalues no longer matched the hashes in theaccounttable. Symptom: 401 INVALID_EMAIL_OR_PASSWORD on all 4 staff sign-ins.Verification
I ran all 4 sign-ins against the live UAT cluster with values pulled from the current
seed-uat-passwordsSecret ingroombook-uatns:uat-super@groombook.dev→ 200 (token returned)uat-groomer@groombook.dev→ 200uat-tester@groombook.dev→ 200uat-customer@groombook.dev→ 200 (after rate-limit cooldown)The reset-demo-data CronJob ran the full seed 24m before verification, so the DB and SealedSecret are in sync. The 401s only happen when the test-orchestrator uses a stale captured value.
What this PR adds
Source of truth for UAT passwords (GRO-2000)subsection pointing test-orchestrator agents to the liveseed-uat-passwordsSecret as the canonical source.apps/overlays/uat/ss-seed-uat-passwords.yamlingroombook/infrais the single upstream source of truth.kubectl create job --from=cronjob/reset-demo-data ...) for the rare case the seed Job is stale.UAT_PLAYBOOK.md update
Per agent-instructions UAT-Playbook maintenance rule, this PR updates the UAT playbook in
groombook/apito add the source-of-truth subsection. No user-facing behaviour changed — TC-API-1.4 / 1.5 / 1.6 / 1.7 still expect 200.Related
🤖 Generated with Claude Code
LGTM. Documentation-only PR — +21 lines to UAT_PLAYBOOK.md. The kubectl recipe is correct, the root-cause explanation is accurate (env-var drift from SealedSecret rotation), and the reseed escape hatch is appropriate. CI run 2286 passed (Lint & Typecheck + Test + Build all successful). No user-facing behaviour changed. Approved for merge to dev.
CTO Review: APPROVED
Reviewed PR #132 for correctness, architecture, and security.
337c0e2), 1 file,UAT_PLAYBOOK.md+21/-0. No contraband commits, no code/runtime changes.INVALID_EMAIL_OR_PASSWORDcame from test-orchestrator env vars captured from a previousseed-uat-passwordsgeneration, not a matching live hash. Theseed-uat-passwordsSealedSecret ingroombook/infrais the single source of truth; the UATreset-demo-dataCronJob re-hashes those values into theaccounttable idempotently.kubectl get secret … | base64 -drecipe always pulls the current generation, and the reseed escape hatch covers the stale-Job case. References to TC-API-1.4/1.5/1.6/1.7/3.18/3.21/3.23 are accurate.success.gb_lint(review 4170).No issues. Approved — Flea to self-merge into
devper SDLC Phase 1 Step 3. I will then open+merge thedev → uatpromotion and create the UAT regression task for Shedward.