Revert pal-e-docs-app rename — violates definition-app, blocks all CI #110

Open
opened 2026-04-17 04:29:26 +00:00 by forgejo_admin · 3 comments
Contributor

Type

Bug

Lineage

Standalone — discovered during validation of identity wave PRs (#105, #109).
Regression introduced by PR #90 ("rename all pal-e-app references to pal-e-docs-app").
PR #90 closed #87 (the rename request).

Repo

forgejo_admin/pal-e-app

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.

What Broke

PR #90 renamed pal-e-apppal-e-docs-app across 13 files in the source tree. The hostname pal-e-docs-app.tail5b443a.ts.net does not exist — the live Tailscale funnel is pal-e-app.tail5b443a.ts.net (ingress in namespace pal-e-app, ts service ts-pal-e-app-funnel-mmvgv).

Every Woodpecker pipeline since #90 fails at the test step with net::ERR_NAME_NOT_RESOLVED. Cascade:

test (Playwright → ERR_NAME_NOT_RESOLVED) ❌
  └─ build-and-push ❌
      └─ update-kustomize-tag ⏭ skipped
          └─ pal-e-deployments image tag never bumped
              └─ ArgoCD has nothing to roll
                  └─ pod stays on PR #95 (76f316b)

PRs #105 (role extraction + routing) and #109 (My Notes + identity dashboard) merged to main but never reached the cluster. Deployed pod is still on harbor.tail5b443a.ts.net/pal-e-app/app:76f316b87d1fd219711b9fe8f8dbf94722001ff8 (PR #95). All identity-aware UX is missing in production.

The rename also contradicts the canonical dictionary: definition-app lists pal-e-app as the correct name (parallels westside-app, mcd-tracker-app). pal-e-docs-app is not a valid identifier under convention-dictionary-authority or feedback_naming_convention.md.

Repro Steps

  1. Trigger any Woodpecker pipeline on forgejo_admin/pal-e-app (push or PR to main).
  2. test step runs Playwright against https://pal-e-docs-app.tail5b443a.ts.net.
  3. Observe: Error: page.goto: net::ERR_NAME_NOT_RESOLVED for every test → 46 failed.
  4. Pipeline fails → build-and-push fails → update-kustomize-tag skipped.

Confirmed on pipelines #114–#123 (last 10 on main, all status failure).

Expected Behavior

Playwright baseURL resolves to a real ingress (https://pal-e-app.tail5b443a.ts.net). Test step passes, build-and-push runs, kustomize tag updates, ArgoCD rolls #105 + #109.

Environment

  • Cluster/namespace: prod, pal-e-app
  • Service version/commit (deployed): 76f316b87d1fd219711b9fe8f8dbf94722001ff8 (PR #95)
  • Service version/commit (main, at ticket creation): 4454c8d10bb4e3f12044e3ba65646115c61a79ab (PR #109 merge)
  • Failing pipelines: #114–#123 on main
  • Ingress: pal-e-app-funnel in namespace pal-e-app, host pal-e-app.tail5b443a.ts.net
  • Harbor push target: harbor.tail5b443a.ts.net/pal-e-app/appdo 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.
  • 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.

Scope — Files to Revert (verbatim from PR #90)

These are exactly the 13 files PR #90 (commit 7ff61c0) touched. Replace every pal-e-docs-app reference with pal-e-app:

  1. .env.exampleVITE_KEYCLOAK_CLIENT_ID default
  2. .woodpecker.yaml — clone remote URL, Kaniko repo, OVERLAY env var, PLAYWRIGHT_BASE_URL
  3. CLAUDE.md — title, remote URL
  4. README.md — title
  5. e2e/auth.spec.ts — doc comments
  6. e2e/home.spec.ts — doc comments
  7. e2e/public-readiness.spec.ts — doc comments
  8. k8s/deployment.yaml — deployment name, labels, container name, image repo
  9. k8s/service.yaml — service name, labels, selector
  10. package-lock.jsonname field
  11. package.jsonname field
  12. playwright.config.ts — default baseURL, comment
  13. src/lib/keycloak.ts — default clientId, redirect URI comment

Acceptance Criteria

  • All 13 files above reverted: every pal-e-docs-app token → pal-e-app
  • Repo-wide check passes: rg pal-e-docs-app returns zero matches in ~/pal-e-app
  • Cross-repo defensive check: rg pal-e-docs-app in ~/pal-e-deployments returns zero matches (currently passes — confirm no cross-contamination introduced)
  • CI pipeline on main passes through update-kustomize-tag (no skipped step)
  • pal-e-deployments receives a [skip ci] pal-e-app: update image tag to <sha> commit
  • ArgoCD rolls pal-e-app deployment to a commit ≥ 4454c8d10bb4e3f12044e3ba65646115c61a79ab (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)
  • Manual verification: open https://pal-e-app.tail5b443a.ts.net/notes in a logged-in browser session — My Notes view renders (PR #109); admin role lands on /dashboard, non-admin lands on /notes post-login (PR #105). Verify via kubectl rollout status deployment/pal-e-app -n pal-e-app first, then visit URL.
  • 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.

Out of Scope (follow-ups, do NOT block this ticket)

  • Cleanup of any orphan Keycloak client named pal-e-docs-app (if one was created)
  • Cleanup of any orphan Harbor project named pal-e-docs-app (if one was created)
  • 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)
  • Creating a missing arch-pal-e-app architecture note (referenced by arch:pal-e-app label, note does not yet exist)
  • Don't apply the PR #275 pattern from pal-e-platform here. That decouples update-kustomize-tag from test failures. We want tests to gate deploys; the right fix is to make tests work, not to bypass them.
  • pal-e-docs — project this affects
  • definition-app — canonical naming convention (dictionary)
  • convention-dictionary-authority — dictionary precedence
  • feedback_naming_convention.md — pal-e-docs = project, pal-e-api = backend, pal-e-app = frontend
  • PR #90 — original rename to be reverted (commit 7ff61c0, closed #87)
  • Issue #87 — original rename request (verify whether it requested the rename; comment with revert rationale)
  • PRs #105, #109 — blocked from deploy by this regression
  • PR #275 in pal-e-platform — separate fix that decouples update-kustomize-tag from test; not applicable here
  • Review note: review-1015-2026-04-16 (in pal-e-docs)
### Type Bug ### Lineage Standalone — discovered during validation of identity wave PRs (#105, #109). Regression introduced by PR #90 ("rename all pal-e-app references to pal-e-docs-app"). PR #90 closed #87 (the rename request). ### Repo `forgejo_admin/pal-e-app` **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. ### What Broke PR #90 renamed `pal-e-app` → `pal-e-docs-app` across 13 files in the source tree. The hostname `pal-e-docs-app.tail5b443a.ts.net` does **not exist** — the live Tailscale funnel is `pal-e-app.tail5b443a.ts.net` (ingress in namespace `pal-e-app`, ts service `ts-pal-e-app-funnel-mmvgv`). Every Woodpecker pipeline since #90 fails at the `test` step with `net::ERR_NAME_NOT_RESOLVED`. Cascade: ``` test (Playwright → ERR_NAME_NOT_RESOLVED) ❌ └─ build-and-push ❌ └─ update-kustomize-tag ⏭ skipped └─ pal-e-deployments image tag never bumped └─ ArgoCD has nothing to roll └─ pod stays on PR #95 (76f316b) ``` PRs #105 (role extraction + routing) and #109 (My Notes + identity dashboard) merged to `main` but never reached the cluster. Deployed pod is still on `harbor.tail5b443a.ts.net/pal-e-app/app:76f316b87d1fd219711b9fe8f8dbf94722001ff8` (PR #95). All identity-aware UX is missing in production. The rename also contradicts the canonical dictionary: `definition-app` lists `pal-e-app` as the correct name (parallels `westside-app`, `mcd-tracker-app`). `pal-e-docs-app` is not a valid identifier under `convention-dictionary-authority` or `feedback_naming_convention.md`. ### Repro Steps 1. Trigger any Woodpecker pipeline on `forgejo_admin/pal-e-app` (push or PR to `main`). 2. `test` step runs Playwright against `https://pal-e-docs-app.tail5b443a.ts.net`. 3. Observe: `Error: page.goto: net::ERR_NAME_NOT_RESOLVED` for every test → 46 failed. 4. Pipeline fails → `build-and-push` fails → `update-kustomize-tag` skipped. Confirmed on pipelines #114–#123 (last 10 on `main`, all status `failure`). ### Expected Behavior Playwright `baseURL` resolves to a real ingress (`https://pal-e-app.tail5b443a.ts.net`). Test step passes, build-and-push runs, kustomize tag updates, ArgoCD rolls #105 + #109. ### Environment - Cluster/namespace: prod, `pal-e-app` - Service version/commit (deployed): `76f316b87d1fd219711b9fe8f8dbf94722001ff8` (PR #95) - Service version/commit (main, at ticket creation): `4454c8d10bb4e3f12044e3ba65646115c61a79ab` (PR #109 merge) - Failing pipelines: #114–#123 on `main` - Ingress: `pal-e-app-funnel` in namespace `pal-e-app`, host `pal-e-app.tail5b443a.ts.net` - 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. - 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. ### Scope — Files to Revert (verbatim from PR #90) These are exactly the 13 files PR #90 (commit `7ff61c0`) touched. Replace every `pal-e-docs-app` reference with `pal-e-app`: 1. `.env.example` — `VITE_KEYCLOAK_CLIENT_ID` default 2. `.woodpecker.yaml` — clone remote URL, Kaniko `repo`, `OVERLAY` env var, `PLAYWRIGHT_BASE_URL` 3. `CLAUDE.md` — title, remote URL 4. `README.md` — title 5. `e2e/auth.spec.ts` — doc comments 6. `e2e/home.spec.ts` — doc comments 7. `e2e/public-readiness.spec.ts` — doc comments 8. `k8s/deployment.yaml` — deployment name, labels, container name, image repo 9. `k8s/service.yaml` — service name, labels, selector 10. `package-lock.json` — `name` field 11. `package.json` — `name` field 12. `playwright.config.ts` — default `baseURL`, comment 13. `src/lib/keycloak.ts` — default `clientId`, redirect URI comment ### Acceptance Criteria - [ ] All 13 files above reverted: every `pal-e-docs-app` token → `pal-e-app` - [ ] Repo-wide check passes: `rg pal-e-docs-app` returns zero matches in `~/pal-e-app` - [ ] Cross-repo defensive check: `rg pal-e-docs-app` in `~/pal-e-deployments` returns zero matches (currently passes — confirm no cross-contamination introduced) - [ ] CI pipeline on `main` passes through `update-kustomize-tag` (no skipped step) - [ ] `pal-e-deployments` receives a `[skip ci] pal-e-app: update image tag to <sha>` commit - [ ] ArgoCD rolls `pal-e-app` deployment to a commit ≥ `4454c8d10bb4e3f12044e3ba65646115c61a79ab` (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) - [ ] Manual verification: open `https://pal-e-app.tail5b443a.ts.net/notes` in a logged-in browser session — My Notes view renders (PR #109); admin role lands on `/dashboard`, non-admin lands on `/notes` post-login (PR #105). Verify via `kubectl rollout status deployment/pal-e-app -n pal-e-app` first, then visit URL. - [ ] 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. ### Out of Scope (follow-ups, do NOT block this ticket) - Cleanup of any orphan Keycloak client named `pal-e-docs-app` (if one was created) - Cleanup of any orphan Harbor project named `pal-e-docs-app` (if one was created) - 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) - Creating a missing `arch-pal-e-app` architecture note (referenced by `arch:pal-e-app` label, note does not yet exist) - Don't apply the PR #275 pattern from `pal-e-platform` here. That decouples `update-kustomize-tag` from test failures. We **want** tests to gate deploys; the right fix is to make tests work, not to bypass them. ### Related - `pal-e-docs` — project this affects - `definition-app` — canonical naming convention (dictionary) - `convention-dictionary-authority` — dictionary precedence - `feedback_naming_convention.md` — pal-e-docs = project, pal-e-api = backend, pal-e-app = frontend - PR #90 — original rename to be reverted (commit `7ff61c0`, closed #87) - Issue #87 — original rename request (verify whether it requested the rename; comment with revert rationale) - PRs #105, #109 — blocked from deploy by this regression - PR #275 in `pal-e-platform` — separate fix that decouples `update-kustomize-tag` from test; **not applicable here** - Review note: `review-1015-2026-04-16` (in pal-e-docs)
Author
Contributor

Scope Review: NEEDS_REFINEMENT

Review note: review-1015-2026-04-16

Diagnosis is correct and the fix direction is right, but scope is under-specified for a clean dev-agent execution. PR #90's body enumerates every file it touched — that list (13 files, 27+ hits) is the canonical revert checklist and should be reused verbatim instead of "(and elsewhere)." Two values in that list (Keycloak clientId, Harbor image repo) are semantically loaded and need explicit guidance with infra evidence.

Required body fixes (8)

  • [BODY] Replace "(and elsewhere)" with the explicit 13-file list from PR #90 (full enumeration in review note)
  • [BODY] Add: "PR #90 claimed the Forgejo repo was renamed; it was not. Do not rename anything in Forgejo." Verified via API — repo is and always has been forgejo_admin/pal-e-app.
  • [BODY] AC5 references commit ≥ 4454c8d — either confirm this is main HEAD now or instruct dev to use git rev-parse origin/main at execution time
  • [BODY] AC6 ("manual verification") needs a verification recipe (how to test /notes + role routing)
  • [BODY] Add Keycloak callout: revert code defaults to pal-e-app, leave any orphan Keycloak client pal-e-docs-app for follow-up cleanup
  • [BODY] Add Harbor callout: push target is pal-e-app/app, do not create new Harbor project, leave any orphan pal-e-docs-app project alone
  • [BODY] Add new AC: "rg pal-e-docs-app on pal-e-deployments returns zero matches" (confirms no infra cross-contamination — grep currently passes)
  • [BODY] Add Issue #87 guidance — comment on it if it requested the rename, otherwise leave closed

Backlog (do not block this revert)

  • [SCOPE] Create story:app-definition entry on project-pal-e-docs user-stories section (label present on board item, no backing story note exists)
  • [SCOPE] Create architecture note arch-pal-e-app for the frontend component (label present, no backing arch note exists)

What's right

  • "no PR #275 fix here" guidance is unambiguous and correct
  • Cascade diagram (test → build-and-push → update-kustomize-tag → ArgoCD) is exactly the failure mode
  • Pipelines #114-#123 are correctly identified as the failure window
  • Decomposition not needed — 13 files mechanical revert in one repo, single agent ~20 min

Once [BODY] fixes land, this is READY for dev dispatch.

## Scope Review: NEEDS_REFINEMENT Review note: `review-1015-2026-04-16` Diagnosis is correct and the fix direction is right, but scope is under-specified for a clean dev-agent execution. PR #90's body enumerates every file it touched — that list (13 files, 27+ hits) is the canonical revert checklist and should be reused verbatim instead of "(and elsewhere)." Two values in that list (Keycloak clientId, Harbor image repo) are semantically loaded and need explicit guidance with infra evidence. ### Required body fixes (8) - [BODY] Replace "(and elsewhere)" with the explicit 13-file list from PR #90 (full enumeration in review note) - [BODY] Add: "PR #90 claimed the Forgejo repo was renamed; it was not. Do not rename anything in Forgejo." Verified via API — repo is and always has been `forgejo_admin/pal-e-app`. - [BODY] AC5 references commit `≥ 4454c8d` — either confirm this is main HEAD now or instruct dev to use `git rev-parse origin/main` at execution time - [BODY] AC6 ("manual verification") needs a verification recipe (how to test `/notes` + role routing) - [BODY] Add Keycloak callout: revert code defaults to `pal-e-app`, leave any orphan Keycloak client `pal-e-docs-app` for follow-up cleanup - [BODY] Add Harbor callout: push target is `pal-e-app/app`, do not create new Harbor project, leave any orphan `pal-e-docs-app` project alone - [BODY] Add new AC: "`rg pal-e-docs-app` on pal-e-deployments returns zero matches" (confirms no infra cross-contamination — grep currently passes) - [BODY] Add Issue #87 guidance — comment on it if it requested the rename, otherwise leave closed ### Backlog (do not block this revert) - [SCOPE] Create `story:app-definition` entry on project-pal-e-docs user-stories section (label present on board item, no backing story note exists) - [SCOPE] Create architecture note `arch-pal-e-app` for the frontend component (label present, no backing arch note exists) ### What's right - "no PR #275 fix here" guidance is unambiguous and correct - Cascade diagram (test → build-and-push → update-kustomize-tag → ArgoCD) is exactly the failure mode - Pipelines #114-#123 are correctly identified as the failure window - Decomposition not needed — 13 files mechanical revert in one repo, single agent ~20 min Once [BODY] fixes land, this is READY for dev dispatch.
Author
Contributor

Issue body refined per /review-ticket verdict NEEDS_REFINEMENT (review note review-1015-2026-04-16). Changes applied to body:

  1. Replaced "playwright.config.ts (and elsewhere)" with the explicit 13-file list from PR #90's body (verbatim).
  2. Added top-of-body callout: PR #90 falsely claimed Forgejo repo was renamed; verified false via API. Do not rename in Forgejo.
  3. Pinned AC for ArgoCD rollout to full SHA 4454c8d10bb4e3f12044e3ba65646115c61a79ab (PR #109 merge), with refresh recipe.
  4. Manual verification AC now specifies kubectl rollout check + browser flow for /notes (My Notes) and post-login routing (admin → /dashboard, non-admin → /notes).
  5. Keycloak callout: revert src/lib/keycloak.ts defaults to pal-e-app; orphan client cleanup is out of scope (follow-up).
  6. Harbor callout: push to existing pal-e-app/app project; do not create new; orphan project cleanup is out of scope (follow-up).
  7. New AC: rg pal-e-docs-app in ~/pal-e-deployments returns zero matches (defensive cross-repo check).
  8. Issue #87 guidance: PR #90 closed it as the rename trigger; comment with revert rationale, leave closed unless requestor reopens.

Out-of-Scope section also captures the two [SCOPE] follow-ups from review (story-page row + missing arch note).

Re-running /review-ticket next.

Issue body refined per `/review-ticket` verdict NEEDS_REFINEMENT (review note `review-1015-2026-04-16`). Changes applied to body: 1. Replaced "playwright.config.ts (and elsewhere)" with the explicit 13-file list from PR #90's body (verbatim). 2. Added top-of-body callout: PR #90 falsely claimed Forgejo repo was renamed; verified false via API. Do not rename in Forgejo. 3. Pinned AC for ArgoCD rollout to full SHA `4454c8d10bb4e3f12044e3ba65646115c61a79ab` (PR #109 merge), with refresh recipe. 4. Manual verification AC now specifies kubectl rollout check + browser flow for `/notes` (My Notes) and post-login routing (admin → `/dashboard`, non-admin → `/notes`). 5. Keycloak callout: revert `src/lib/keycloak.ts` defaults to `pal-e-app`; orphan client cleanup is out of scope (follow-up). 6. Harbor callout: push to existing `pal-e-app/app` project; do not create new; orphan project cleanup is out of scope (follow-up). 7. New AC: `rg pal-e-docs-app` in `~/pal-e-deployments` returns zero matches (defensive cross-repo check). 8. Issue #87 guidance: PR #90 closed it as the rename trigger; comment with revert rationale, leave closed unless requestor reopens. Out-of-Scope section also captures the two [SCOPE] follow-ups from review (story-page row + missing arch note). Re-running `/review-ticket` next.
Author
Contributor

Scope Review (round 2): APPROVED

Review note: review-1015-2026-04-16-r2

All 8 [BODY] fixes from round 1 verified present and correct against ground truth:

  1. 13-file list matches PR #90 verbatim (cross-checked via Forgejo API /pulls/90/files)
  2. Forgejo no-rename callout present in ### Repo section
  3. AC5 SHA 4454c8d10bb4e3f12044e3ba65646115c61a79ab verified live as current main HEAD with provenance + refresh instruction
  4. AC6 has concrete verification recipe (kubectl rollout + browser visit + role-routing check)
  5. Keycloak orphan callout in ### Environment + ### Out of Scope
  6. Harbor orphan callout in ### Environment + ### Out of Scope (aligns with feedback_harbor_project_naming.md)
  7. Defensive AC for rg pal-e-docs-app in ~/pal-e-deployments (verified zero matches today)
  8. Issue #87 guidance: comment + leave closed unless reopened

The 2 [SCOPE] items (story:app-definition row on project-pal-e-docs, missing arch-pal-e-app note) are correctly captured as Out of Scope follow-ups and do not block this regression revert.

Ticket is ready to advance backlog → todo.

## Scope Review (round 2): APPROVED Review note: `review-1015-2026-04-16-r2` All 8 [BODY] fixes from round 1 verified present and correct against ground truth: 1. 13-file list matches PR #90 verbatim (cross-checked via Forgejo API `/pulls/90/files`) 2. Forgejo no-rename callout present in `### Repo` section 3. AC5 SHA `4454c8d10bb4e3f12044e3ba65646115c61a79ab` verified live as current `main` HEAD with provenance + refresh instruction 4. AC6 has concrete verification recipe (kubectl rollout + browser visit + role-routing check) 5. Keycloak orphan callout in `### Environment` + `### Out of Scope` 6. Harbor orphan callout in `### Environment` + `### Out of Scope` (aligns with `feedback_harbor_project_naming.md`) 7. Defensive AC for `rg pal-e-docs-app` in `~/pal-e-deployments` (verified zero matches today) 8. Issue #87 guidance: comment + leave closed unless reopened The 2 [SCOPE] items (`story:app-definition` row on `project-pal-e-docs`, missing `arch-pal-e-app` note) are correctly captured as Out of Scope follow-ups and do not block this regression revert. Ticket is ready to advance backlog → todo.
Commenting is not possible because the repository is archived.
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ldraney/pal-e-app#110
No description provided.