Review v2: Create westside-admin Keycloak client + document SOP

review-1096-2026-04-25-v2 Review

review ready

Verdict: APPROVED

Re-review of board item #1096 — forgejo_admin/pal-e-platform#301. Original verdict review-1096-2026-04-25 was NEEDS_REFINEMENT due to false-premise (terraform-managed Keycloak client did not exist). Issue body has been entirely rewritten to path A: manually create the client via Keycloak admin console + document procedure as sop-keycloak-client-creation SOP. Re-reviewed 2026-04-25.

Resolution of Original Findings

  • [x] False premise removed — ticket no longer claims a terraform westside-app client to "clone." Lineage section explicitly documents the discovery and links review-1096-2026-04-25.
  • [x] Outage risk acknowledged and avoided — Constraints explicitly prohibit declaring keycloak_realm or adding the mrparkers provider.
  • [x] File path issue moot — no terraform file targets in path A.
  • [x] Public vs confidential decision — explicitly resolved with default (public + PKCE) and pattern-matching fallback (match westside-app's choice).
  • [x] Secret export path — defined: SOPS-encrypted Secret in pal-e-deployments/overlays/westside-admin/prod/westside-admin-secrets.enc.yaml, coordinated with #133.

Template Completeness

  • [x] Type — Task
  • [x] Lineage (with scope-revision history)
  • [x] Repo
  • [x] User Story
  • [x] Scope (two well-bounded deliverables)
  • [x] Acceptance Criteria (8, all testable)
  • [x] Test Expectations
  • [x] Constraints (explicit DO-NOTs that prevent the discovered outage risk)
  • [x] Checklist
  • [x] Related

Traceability

  • [x] story:admin-row-crud — verified in project-westside-admin user-stories section
  • [x] story note story-westside-admin-admin-row-crud exists
  • [x] arch:keycloak label present
  • [ ] arch note arch-keycloak still MISSING — search returned no results. [SCOPE] Carryover from v1 review: create architecture note arch-keycloak. Not blocking this ticket since path A is deliberately admin-console (no IaC); the SOP itself partially compensates by describing the component boundary. Recommend tracking as a separate small backlog item rather than blocking #1096.
  • [x] Forgejo issue #301 — open, rewritten

File Targets

Path A has no source-code file targets in pal-e-platform. Deliverables:
  • [x] Keycloak admin console at https://keycloak.tail5b443a.ts.net/admin — verified URL pattern matches existing infra
  • [x] pal-e-docs SOP note sop-keycloak-client-creation — does not yet exist (verified: search empty), to be created by this ticket
  • [x] Optional: pal-e-deployments/overlays/westside-admin/prod/westside-admin-secrets.enc.yaml — only if confidential client; coordinated with #133

Repo Placement

OK. Tracking in forgejo_admin/pal-e-platform is correct (platform-team responsibility for Keycloak), even though the SOP artifact lands in pal-e-docs. Lineage paragraph explicitly explains the placement.

Dependencies

Cleanly documented:
  • BLOCKS forgejo_admin/westside-admin#2 (auth code consumes client_id)
  • BLOCKS forgejo_admin/pal-e-deployments#133 (overlay's KEYCLOAK_CLIENT_SECRET secret only meaningful if confidential client chosen)
  • No upstream blockers — Keycloak server already deployed

Acceptance Criteria

All 8 ACs are testable. Key strengths: explicit visibility check in admin console, SOP self-sufficiency criterion ("future agent or human can follow it without prior Keycloak knowledge"), explicit "no terraform changes" guard, .well-known endpoint sanity check.

Blast Radius

Path A eliminates the v1 outage risk entirely — no terraform state changes, no realm-level operations, no risk of overwriting existing westside-app SSO. Constraints section explicitly enumerates DO-NOTs that prevent scope creep into IaC territory.

Decomposition Assessment

Two deliverables (admin-console client creation + SOP note) are tightly coupled to a single Keycloak admin session and a single doc-author session. Estimated under 5 minutes for an executor with admin access. No decomposition needed.

Recommendation

APPROVED. Ready to advance backlog → todo.
  • [SCOPE] (non-blocking carryover) Create architecture note arch-keycloak as a separate backlog item documenting the Keycloak component and the admin-console-vs-IaC management boundary. Do not block #1096 on this — the SOP this ticket produces will partially fulfill the same role.
All v1 findings resolved. Body is concrete, ACs are testable, scope is well-bounded, outage risk is avoided.