Review: App Store rejection: Register button error on iPad (Guideline 2.1(a))
Verdict: NEEDS_REFINEMENT
Template Completeness
- [x] Type (Bug)
- [x] Lineage
- [x] Repo
- [x] What Broke
- [x] Repro Steps
- [x] Expected Behavior
- [x] Environment
- [x] Acceptance Criteria
- [x] Related
All required sections for
template-issue-bug are present and well-written.Traceability
- [x] story:app-store-submission label present
- [ ] story note MISSING — [SCOPE] No
app-store-submissionentry exists in theproject-landscaping-assistantuser-stories section. Create user story entry on project-landscaping-assistant. - [x] arch:keycloak label present
- [ ] arch note MISSING — [SCOPE] No
arch-keycloaknote exists in pal-e-docs. Create architecture note arch-keycloak for the Keycloak realm/client/theme component. - [x] Forgejo issue — #290, open
File Targets
- [x]
docs/app-store-review/2026-07-02-rejection-v1.0.md— verified: exists, documents all three rejection issues including the Register button error (Issue 2) - [x]
keycloak-theme/landscaping/login/resources/css/login.css— verified: exists (340 lines). Styles the#kc-registrationlink but does NOT hide it. Also styles#kc-register-form::beforewith the plant icon, meaning the registration form is part of the themed experience. - [ ] Keycloak realm config — ISSUE: The recommended fix (
registrationAllowed: false) lives inpal-e-services/terraform/k3s.tfvars, not in this repo. No specific file path given in the issue.
Repo Placement
MISMATCH. The issue says
### Repo: ldraney/landscaping-assistant and is filed on that repo. However, the recommended fix ("disable registration in Keycloak realm settings") is a Terraform change in pal-e-services/terraform/k3s.tfvars (line ~72: registration_allowed = true). Two possible fix paths exist:- Terraform fix (pal-e-services): Set
registration_allowed = falsein k3s.tfvars, thentofu apply. This removes the Register link at the Keycloak realm level. - CSS fix (landscaping-assistant): Add
#kc-registration { display: none !important; }tokeycloak-theme/landscaping/login/resources/css/login.css, then deploy the updated ConfigMap via pal-e-platform. This hides the link visually but leaves registration enabled.
Either way, at least two repos are involved. If option 1, the issue should be filed on pal-e-services (or a companion issue created there). If option 2, the theme CSS change is in landscaping-assistant but the ConfigMap deploy requires pal-e-platform. The issue needs to clarify which fix path and list all affected repos.
Dependencies
- Board item #1683 (Forgejo #289) — sibling App Store rejection bug (
arch:ios-pipeline), in backlog. No blocking relationship. - Board item #1685 (Forgejo #291) — sibling App Store rejection feature (
story:app-store-submission), in backlog. No blocking relationship. - Board item #1507 (pal-e-services#122, done) — previous Keycloak client config fix (
root_urlupdate). NOT a duplicate — different issue. - No items currently in
in_progressthat block or are blocked by this ticket.
Acceptance Criteria
Three criteria listed. Assessment:
- "No Register link/button visible on Keycloak login page" — verifiable by navigating to the login page
- "Login flow works correctly on iPad (no error messages)" — verifiable but requires iPad or iPad simulator, which is appropriate given the rejection context
- "Existing login with demo credentials still works" — verifiable via standard login test
Missing criteria:
- Update
docs/keycloak-setup.mdto reflect the registration policy change (currently documentsregistration_allowed = trueas intentional) - Clean up theme CSS if registration is fully disabled (remove
#kc-register-form::beforestyling on line 122)
Blast Radius
ARCHITECTURAL CONFLICT. The ticket proposes disabling registration, but
docs/keycloak-setup.md (line 83-84) explicitly documents registration_allowed = true as an intentional design decision:"registration_allowed = true: new users self-register as clients (the default role on signup per user-stories-auth.md). This is the 'solo client' onboarding flow."
docs/user-stories-auth.md also references the Client role as "Default role on signup," implying self-registration is part of the product design.Disabling registration would abandon the client self-registration flow entirely. This may be acceptable (the app currently manages users via admin), but the ticket does not acknowledge this tradeoff. A human decision is needed: is self-registration being deferred or permanently removed?
If the intent is to defer (re-enable later when registration works correctly), the CSS hide approach is safer. If the intent is to remove permanently, the Terraform approach is correct but requires doc updates across keycloak-setup.md and user-stories-auth.md.
Decomposition Assessment
1-2 file targets across 1-2 repos, 3 acceptance criteria, estimated agent work under 5 minutes. No decomposition needed.
Recommendation
[SCOPE]Human decision needed: Is client self-registration being permanently removed or temporarily deferred? This determines the fix path (Terraform vs CSS) and documentation scope.docs/keycloak-setup.mdanddocs/user-stories-auth.mdboth document self-registration as intentional.[BODY]Clarify fix path: Terraform (registration_allowed = falsein pal-e-services) vs CSS (#kc-registration { display: none }in landscaping-assistant). List all affected repos for the chosen path.[BODY]Add acceptance criterion: updatedocs/keycloak-setup.mdregistration_allowed rationale to reflect the new state.[BODY]If Terraform path chosen, file a companion issue onpal-e-servicesor move this issue there.[SCOPE]Create user story entryapp-store-submissionon project-landscaping-assistant user-stories section.[SCOPE]Create architecture notearch-keycloakfor the Keycloak realm/client/theme component.