Re-review: Dedicated Tailscale funnel for svelte-playground

review-376-2026-03-25-r2 Review

review ready

Verdict: READY

Re-review after refinement. Previous review: review-376-2026-03-25 (NEEDS_REFINEMENT, 3 findings).

Template Completeness

  • [x] Lineage
  • [x] Repo
  • [x] User Story
  • [x] Context
  • [x] File Targets
  • [x] Acceptance Criteria
  • [x] Test Expectations
  • [x] Constraints
  • [x] Checklist
  • [x] Related
All required template sections present. Issue body + refinement comment together form the complete spec.

File Targets

pal-e-deployments (files to modify):
  • [x] overlays/playground/prod/deployment.yaml — verified: svelte-playground volumeMount at lines 35-37, hostPath volume at lines 95-98
  • [x] overlays/playground/prod/configmap.yaml — verified: /svelte/ location block at lines 47-52
pal-e-deployments (files to create):
  • [x] overlays/svelte-playground/prod/ directory does not exist — creation target valid
  • [x] Ingress pattern reference (overlays/playground/prod/ingress.yaml) verified — simple Tailscale funnel with ingressClassName + TLS host
svelte-playground (files to modify) — all 8 files verified:
  • [x] vite.config.jsbase: '/svelte/' at line 5 (1 occurrence)
  • [x] index.html — 3 occurrences of /svelte/ (nav brand href, two card hrefs)
  • [x] westside/staff.html — 16 occurrences (nav links, image srcs, og:image meta tags)
  • [x] westside/sponsors.html — 13 occurrences
  • [x] westside/success.html — 12 occurrences
  • [x] westside/index.html — 5 occurrences
  • [x] westside/Nav.svelte — 7 occurrences
  • [x] westside/App.svelte — 1 occurrence
Total: 58 path references across 8 source files. (Refinement comment says "54 across 8" — minor arithmetic discrepancy since 54 refers to the 6 newly-added files only, not all 8. File list itself is complete and per-file counts are accurate.)
pal-e-app/ subdirectory confirmed zero /svelte/ references. package-lock.json has 1 match but it is an npm registry URL, not a path reference.

Repo Placement

OK. Two repos correctly identified: forgejo_admin/pal-e-deployments (k8s manifests) and forgejo_admin/svelte-playground (base path revert). Issue filed on svelte-playground as primary code change repo. Checklist notes PRs needed on both repos.

Dependencies

  • Board item #321 ("Deploy with Tailscale funnel") is in done — the shared deploy being replaced. No conflict.
  • No items in in_progress on the svelte-playground board.
  • Deployment ordering: Refinement adds explicit 3-step ordering (pal-e-deployments first, then svelte-playground, then rebuild+verify). Adequate.

Acceptance Criteria

All criteria are agent-verifiable:
  • Original 7 criteria cover hostname access, base path removal, link resolution, old path removal, existing routes preserved, build correctness, and westside subpath access.
  • Refinement adds 2 strong criteria: (a) westside HTML internal links resolve correctly, (b) grep -r '/svelte/' dist/ returns zero matches. The grep criterion is particularly good — it is machine-verifiable and catches any missed references in the build output.

Blast Radius

  • Other playgrounds (westside-playground, mcd-tracker-playground) do NOT use Vite base paths — no similar pattern elsewhere.
  • Removing svelte-playground volume and /svelte/ location block from shared playground is clean — no other location blocks reference /srv/svelte-playground.
  • Shared playground's other routes (/, /westside/, /mcd-tracker/, /mcp-cover-letter/, /guide/, /upload/) unaffected.
  • No downstream consumers beyond browser access.

Refinement Assessment

All 3 findings from review-376-2026-03-25 addressed:
# Finding Refinement Status
1 6 missing files in File Targets (54 occurrences) All 6 files listed with accurate per-file counts Resolved
2 Missing deployment ordering constraint Explicit 3-step ordering added Resolved
3 Missing acceptance criterion for westside links Two criteria added: link resolution + grep verification Resolved
Minor note: refinement total says "54 path references across 8 files" but actual total is 58. This is cosmetic — the complete file list and per-file counts are correct.

Recommendation

No action needed. Ticket is ready for next_up. The issue body plus refinement comment together form a complete, agent-executable spec. Agent should read both the issue body and comment #7350 when executing.