Review (round 2): Revert pal-e-docs-app rename — unblock CI + ship #105/#109

review-1015-2026-04-16-r2 Doc

review approved

Verdict: APPROVED

Round 2 re-review of board item #1015 (Forgejo issue forgejo_admin/pal-e-app#110). All 8 [BODY] recommendations from review-1015-2026-04-16 have been applied to the issue body and verified against ground truth (Forgejo API, repo state, current main HEAD). The 2 [SCOPE] items (missing story:app-definition entry on project-pal-e-docs, missing arch-pal-e-app note) are correctly captured in the issue's "Out of Scope" section as follow-ups and do not block this revert. Ticket is ready to advance from backlog to todo.

Round 2 Fix Verification

Each [BODY] item from round 1 verified against the live issue body fetched from the Forgejo API and against ground truth.

Fix 1: Explicit 13-file list from PR #90

  • [x] Issue body section ### Scope — Files to Revert (verbatim from PR #90) contains a numbered list of exactly 13 files.
  • [x] Cross-checked against Forgejo API /repos/forgejo_admin/pal-e-app/pulls/90/files: PR #90 touched exactly 13 files. All 13 PR file paths match the issue list verbatim:
  • [x] Each entry includes which token(s) to flip (e.g., .woodpecker.yaml calls out clone remote URL, Kaniko repo, OVERLAY, PLAYWRIGHT_BASE_URL).

Fix 2: Forgejo no-rename callout

  • [x] Issue body ### Repo section contains a bolded callout: "Important — no Forgejo repo rename: PR #90's body states 'repo was renamed from pal-e-app to pal-e-docs-app' but this is false. The Forgejo repo is still forgejo_admin/pal-e-app (verified via API). Do not rename anything in Forgejo as part of this revert."
  • [x] Verified via API call to /repos/forgejo_admin/pal-e-app: full_name returns forgejo_admin/pal-e-app (no rename ever happened).

Fix 3: Pin AC5 SHA

  • [x] AC for ArgoCD roll references 4454c8d10bb4e3f12044e3ba65646115c61a79ab with provenance: "PR #109 merge SHA at ticket creation; refresh via git -C ~/pal-e-app rev-parse origin/main before final verification if more PRs merge."
  • [x] Verified live via Forgejo API /repos/forgejo_admin/pal-e-app/branches/main: current main HEAD is 4454c8d10bb4e3f12044e3ba65646115c61a79ab, commit message feat: My Notes view + identity-aware dashboard + attribution (#109). SHA is real, current, and traceably documented.

Fix 4: Verification recipe in AC6

  • [x] AC for manual verification spells out the recipe: open https://pal-e-app.tail5b443a.ts.net/notes in a logged-in browser session, confirm My Notes view renders (PR #109), confirm admin role lands on /dashboard and non-admin lands on /notes post-login (PR #105). Pre-step: kubectl rollout status deployment/pal-e-app -n pal-e-app.
  • [x] Recipe is concrete enough that a dev agent can execute without asking how.

Fix 5: Keycloak orphan callout

  • [x] ### Environment section: "Keycloak: src/lib/keycloak.ts default clientId reverts to pal-e-app. Any orphan Keycloak client created under pal-e-docs-app is out of scope; flag as a follow-up."
  • [x] Mirrored in ### Out of Scope: "Cleanup of any orphan Keycloak client named pal-e-docs-app (if one was created)."

Fix 6: Harbor orphan callout

  • [x] ### Environment section: "Harbor push target: harbor.tail5b443a.ts.net/pal-e-app/app — do not create a new Harbor project; reuse the existing one. Any orphan pal-e-docs-app Harbor project (if one was created) is out of scope; flag as a follow-up."
  • [x] Mirrored in ### Out of Scope: "Cleanup of any orphan Harbor project named pal-e-docs-app (if one was created)."
  • [x] Lines up with the feedback_harbor_project_naming.md 36-hour-outage lesson — defensive on Harbor.

Fix 7: New AC — rg in pal-e-deployments

  • [x] AC present: "Cross-repo defensive check: rg pal-e-docs-app in ~/pal-e-deployments returns zero matches (currently passes — confirm no cross-contamination introduced)."
  • [x] Verified live: Grep for pal-e-docs-app in /home/ldraney/pal-e-deployments returns 0 matches (0 files). The defensive AC will pass cleanly today; it is here to catch any regression introduced by the revert agent.

Fix 8: Issue #87 guidance

  • [x] AC present: "Issue #87 (the rename request that PR #90 closed): post a comment noting the rename was reverted and why; leave issue closed unless requestor reopens."
  • [x] Related section also references #87: "original rename request (verify whether it requested the rename; comment with revert rationale)."
  • [x] Guidance is unambiguous — dev agent will not accidentally reopen.

[SCOPE] Items Tracked, Not Blocking

  • [x] Out of Scope: "Adding a story:app-definition row to the project-pal-e-docs user-stories table (label is in use but not yet documented on the project page)."
  • [x] Out of Scope: "Creating a missing arch-pal-e-app architecture note (referenced by arch:pal-e-app label, note does not yet exist)."
  • Both are correctly framed as documentation follow-ups. They do not block a regression revert. Ava can spawn separate backlog tickets for these.

Template Completeness

  • [x] Type — Bug
  • [x] Lineage — standalone, regression from PR #90, references closed #87
  • [x] Repo — forgejo_admin/pal-e-app + Forgejo no-rename callout
  • [x] What Broke — clear, with cascade diagram and SHA evidence
  • [x] Repro Steps — pipelines #114-#123 named, command sequence concrete
  • [x] Expected Behavior — present
  • [x] Environment — cluster/namespace, deployed SHA, main SHA, ingress, Harbor target, Keycloak callout
  • [x] Scope (13 files, verbatim from PR #90)
  • [x] Acceptance Criteria — 7 items now (added cross-repo grep AC), all testable, with verification recipes
  • [x] Out of Scope — orphans + missing notes + PR #275 anti-pattern
  • [x] Related — full link set

Traceability

  • [x] story:app-definition label — present on board item #1015 (story note still missing — flagged as Out of Scope follow-up)
  • [x] arch:pal-e-app label — present on board item #1015 (arch note still missing — flagged as Out of Scope follow-up)
  • [x] Forgejo issue — #110 open and well-formed
  • Story/arch notes are correctly tracked as separate follow-ups; do not block this revert (regression fix, not new architecture).

File Targets

13 files listed verbatim from PR #90, matched 1-to-1 against Forgejo API /pulls/90/files response. All paths exist in /home/ldraney/pal-e-app. Token-level scope (which strings to flip per file) is documented in the issue.

Repo Placement

Correct repo (forgejo_admin/pal-e-app). Forgejo no-rename callout prevents the dev agent from attempting a repo rename. Cross-repo defensive AC on pal-e-deployments guards against config drift.

Dependencies

  • Blocks: PR #105 + PR #109 deploys (both merged, stuck on stale image 76f316b)
  • Blocks: every future pal-e-app PR (10 consecutive failed pipelines #114-#123)
  • Anti-pattern explicitly called out: do not apply pal-e-platform PR #275's decoupling pattern here
  • No competing in-flight work on the board (no other pal-e-app revert items in in_progress / next_up)

Acceptance Criteria

7 ACs, all testable, all with concrete verification commands or recipes. AC5 SHA verified live as current main HEAD. AC6 verification recipe is concrete (kubectl rollout + browser visit + role-based redirect check). AC7 (Issue #87 comment guidance) is unambiguous.

Blast Radius

Round 1's blast-radius callouts (Keycloak orphan client, Harbor orphan project, defensive grep on pal-e-deployments, Issue #87 guidance) all incorporated. Cross-repo grep on pal-e-deployments verified clean today.

Decomposition Assessment

13 files in 1 repo, mechanical sed-style revert, 7 ACs. Estimated agent time: ~10-15 min revert + commit + push, ~5 min CI wait. Tightly scoped, mechanical work — no decomposition needed. Single agent pass is correct sizing.

Recommendation

APPROVED. All 8 round-1 [BODY] fixes verified present and correct against ground truth (Forgejo API for PR #90 files + main HEAD SHA, repo grep for pal-e-deployments cleanliness, repo grep for token scope per file). The 2 [SCOPE] items are tracked as Out of Scope follow-ups and do not block this revert. Ticket is ready to advance from backlog → todo. Ava: feel free to flip the column.
Side note for Ava: when this revert lands, also queue:
  • A small backlog item: "Add story:app-definition row to project-pal-e-docs user-stories"
  • A small backlog item: "Create arch-pal-e-app note"
  • A small follow-up: "Sweep Keycloak realm + Harbor catalog for orphan pal-e-docs-app entities; clean if present"