svelte-playground
Notes
Board 1
-
Svelte Playground
board-svelte-playgroundSvelte Playground
Review 4
-
Re-review: Dedicated Tailscale funnel for svelte-playground
review-376-2026-03-25-r2Verdict: 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.js—base: '/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.jsonhas 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) andforgejo_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_progresson 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-25addressed:# 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. -
Review: Dedicated Tailscale funnel for svelte-playground
review-376-2026-03-25Verdict: NEEDS_REFINEMENT
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. Well-written context with SOP reference.
File Targets
pal-e-deployments (files to modify):
- [x]
overlays/playground/prod/deployment.yaml— verified: svelte-playground volume 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 yet — confirmed creation target is valid
svelte-playground (files to modify):
- [x]
vite.config.js— verified:base: '/svelte/'at line 5 - [x]
index.html— verified: 3 occurrences of/svelte/prefix (nav brand href, two card hrefs) - [ ]
westside/staff.html— MISSING from File Targets: 16 occurrences of/svelte/(nav links, image srcs, og:image meta tags) - [ ]
westside/success.html— MISSING from File Targets: 12 occurrences of/svelte/ - [ ]
westside/sponsors.html— MISSING from File Targets: 13 occurrences of/svelte/ - [ ]
westside/index.html— MISSING from File Targets: 5 occurrences of/svelte/ - [ ]
westside/App.svelte— MISSING from File Targets: 1 occurrence of/svelte/ - [ ]
westside/Nav.svelte— MISSING from File Targets: 7 occurrences of/svelte/
Total undocumented scope: 54 additional
/svelte/path references across 6 files not listed in the ticket. An agent following only the listed File Targets would leave broken links in every westside page.Repo Placement
OK. Two repos correctly identified:
forgejo_admin/pal-e-deployments(k8s manifests) andforgejo_admin/svelte-playground(base path revert). Issue is filed on svelte-playground which is appropriate as the primary code change repo. Checklist correctly notes PRs needed on both repos.Dependencies
- Board item #321 ("Deploy with Tailscale funnel") is in
done— this is the shared deploy being replaced. No conflict. - No items in
in_progressthat would conflict. - The pal-e-deployments PR must be applied before the svelte-playground base path revert, or the build will break on the shared playground. Order-of-operations not documented in ticket.
Acceptance Criteria
Mostly testable. Two issues:
- Criterion "Westside prototype accessible at
{hostname}.tail5b443a.ts.net/westside/" is correct —dist/westside/exists and would be served at/westside/from root. However, an agent needs to know this refers to the NEW hostname, not the shared playground. - Missing criterion: all
/svelte/-prefixed internal links in westside HTML pages resolve correctly after rewrite. This is the most likely regression vector.
Blast Radius
- Other playgrounds (westside-playground, mcd-tracker-playground) do NOT use Vite base paths — no similar bug exists elsewhere.
- Removing the svelte-playground volume and location block from the shared playground nginx config is clean — no other location blocks reference
/srv/svelte-playground. - The shared playground's other routes (
/,/westside/,/mcd-tracker/,/mcp-cover-letter/,/guide/,/upload/) are unaffected by removing only the/svelte/block and volume. - No downstream consumers beyond browser access.
Recommendation
Before moving to
next_up, update the File Targets section:- Add 6 missing files to the "Files to modify (svelte-playground)" list:
westside/staff.html,westside/success.html,westside/sponsors.html,westside/index.html,westside/App.svelte,westside/Nav.svelte. Each needs all/svelte/prefixes removed (54 occurrences total). - Add deployment ordering note to Constraints: the pal-e-deployments PR (new namespace + shared playground cleanup) must be applied before the svelte-playground base path revert PR.
- Add acceptance criterion: "All internal links in westside HTML pages (staff, sponsors, success) resolve correctly without
/svelte/prefix."
-
Review: Move kanban prototype from pal-e-playground
review-320-2026-03-24Verdict: READY
Re-review after refinements posted in comment #6584. All three original NEEDS_REFINEMENT issues resolved.
Template Completeness
- [x] Type
- [x] Lineage
- [x] Repo
- [x] User Story
- [x] Context
- [x] File Targets (updated in refinement comment)
- [x] Acceptance Criteria (augmented in refinement comment)
- [x] Test Expectations
- [x] Constraints
- [x] Checklist
- [x] Related
Refinement Resolution
Original Issue Status Evidence Cross-repo scope (pal-e-playground cleanup in svelte-playground ticket) FIXED Split into forgejo_admin/pal-e-playground#9— confirmed issue exists with proper scope (remove pal-e-app/ dir, update hub index)Hub card language ("add card" vs "convert existing") FIXED Refinement comment clarifies: "convert existing Coming Soon div to a working link" Missing acceptance criteria (hub card link, shared.css reference) FIXED Two new ACs added in refinement comment: hub card links to /pal-e-app/ with badge removed; index.html references /shared.css File Targets
Verified against refinement comment's updated file targets (svelte-playground only):
- [x]
pal-e-playground/pal-e-app/index.html— verified source exists, 30 lines, Svelte 5 mount point. References/app.csswhich agent must change to/shared.css - [x]
pal-e-playground/pal-e-app/board.svelte— verified source exists, 368 lines. Usesvar(--color-text-faint)via inline styles (no CSS imports). shared.css provides this token. - [x]
svelte-playground/vite.config.js— verified exists, currently onlymain: resolve(__dirname, 'index.html'). Needs pal-e-app entry added. - [x]
svelte-playground/index.html— verified exists. Line 146-149:<div class="card">with "Coming Soon" badge. Agent must convert to<a href="/pal-e-app/" class="card">and remove badge. - [x]
svelte-playground/shared.css— verified exists, contains--color-text-faint(line 15) which board.svelte depends on - [x]
svelte-playground/pal-e-app/— confirmed does NOT yet exist (correct — target directory to create)
No pal-e-playground file targets remain in scope (moved to pal-e-playground#9).
Repo Placement
OK. Issue is filed on
forgejo_admin/svelte-playground. All file targets are within svelte-playground. Cross-repo cleanup correctly split toforgejo_admin/pal-e-playground#9.Dependencies
- Board item #319 ("Scaffold repo with hub + shared CSS") —
donecolumn. Prerequisite satisfied. - Board item #321 ("Deploy with Tailscale funnel") —
backlogcolumn. Not blocked by or blocking this ticket. forgejo_admin/pal-e-playground#9(cleanup) — independent. Can run after this ticket completes but is not a blocker.- Lineage states "Depends on: repo scaffold" — correctly documented and verified satisfied.
Acceptance Criteria
Combined original + refinement ACs:
- [x] "npm run dev serves kanban board at localhost:5173/pal-e-app/" — testable, agent can verify
- [x] "Drag-and-drop works between columns" — testable with Playwright or manual
- [x] "Filter pills filter by type" — testable
- [x] "Child drill-down expands inline" — testable
- [x] "Hub card links to /pal-e-app/ with Coming Soon badge removed" — testable (added in refinement)
- [x] "pal-e-app/index.html references /shared.css instead of /app.css" — testable (added in refinement)
The original AC "pal-e-playground no longer has pal-e-app/ directory" is superseded by refinement comment — belongs to pal-e-playground#9.
Blast Radius
Low. No external references to
pal-e-playground/pal-e-app/found in pal-e-app, pal-e-docs, or other repos. No downstream consumers affected.Advisory
The refinements live in a comment (comment #6584), not in the edited issue body. The issue body still contains the old File Targets (with pal-e-playground cleanup) and the old acceptance criteria (missing two items, including one cross-repo AC). An agent reading the full thread will see both the original body and the refinement comment — the comment is clear and unambiguous. No action required, but if the body is edited to incorporate refinements before agent dispatch, it would eliminate any ambiguity.
Recommendation
No action needed. Ticket is READY for agent dispatch. All three original refinement items resolved. Cross-repo scope properly split. File targets verified against codebase.
-
Review: Scaffold repo with hub + shared CSS
review-319-2026-03-24Verdict: READY
Template Completeness
- [x] Lineage — present (Standalone — board-svelte-playground setup)
- [x] Repo — present (forgejo_admin/svelte-playground)
- [x] User Story — present and well-formed
- [x] Context — present, explains new repo needs foundational files
- [x] File Targets — present, lists 5 files to create and explicitly says no project subdirectories
- [x] Acceptance Criteria — present, 5 concrete items
- [x] Test Expectations — present, visual + build
- [x] Constraints — present, 3 clear constraints (Svelte 5, no project dirs, pure CSS)
- [x] Checklist — present
- [x] Related — present (project-svelte-playground)
Minor: issue uses a non-standard
### Typeheader (not in template). Harmless — does not block.File Targets
- [x]
pal-e-playground/guide/index.html— verified: exists at~/pal-e-playground/guide/index.html, contains inline CSS with design tokens (Atkinson Hyperlegible, light theme, CSS custom properties at :root) - [x]
pal-e-app/app.css— verified: exists at~/pal-e-app/src/app.css, contains full design system with CSS custom properties. Note: file imports Tailwind (@import 'tailwindcss') so extraction must strip that dependency. Ticket constraint ("no Tailwind") correctly addresses this. - [x]
pal-e-playground/pal-e-app/app.css— verified: exists at~/pal-e-playground/pal-e-app/app.css, contains Atkinson Hyperlegible font import and full token set — a clean Tailwind-free reference for extraction. - [x] Forgejo repo
forgejo_admin/svelte-playground— verified: exists, currently contains only README.md. Clean slate.
Repo Placement
OK. Issue filed on forgejo_admin/svelte-playground, all work targets that same repo. No cross-repo changes needed.
Dependencies
- Board item #320 ("Move kanban prototype from pal-e-playground") explicitly declares
Depends on: repo scaffold. This ticket (#319) is that scaffold — correctly sequenced. - Board item #321 ("Deploy with Tailscale funnel") is in backlog. No explicit dependency on scaffold, but logically requires something to deploy. No issue — it can wait.
- No blockers on this ticket. It is the first item in the pipeline.
Acceptance Criteria
All 5 criteria are agent-verifiable:
npm install— exits 0, deterministicnpm run dev— starts Vite server, agent can verify process startsnpm run build— exits 0, produces dist/- Hub page at localhost:5173 — verifiable via curl or playwright
- shared.css has design tokens — verifiable via grep for Atkinson Hyperlegible, CSS custom properties
All test commands are real. Visual match to pal-e-playground style is somewhat subjective but the concrete token check anchors it.
Blast Radius
Low. New repo with no downstream consumers. The shared.css will become the design system foundation for all future svelte-playground prototypes, so token accuracy matters, but there is no existing code to break. No sibling services affected.
Recommendation
No action needed. Scope is solid, all source files verified, dependencies are correctly sequenced. Ticket is ready for agent execution.
Project Page 1
-
Project: svelte-playground
project-svelte-playgroundVision
Interactive Svelte prototype hub. Adapts pal-e-playground's CSS-first philosophy with Svelte reactivity for features that need interactivity — kanban boards, drag-and-drop, real-time filters, form wizards. No SvelteKit, no SSR. Svelte + Vite compiles to static files. Each subdirectory is a project prototype. The board tracks which prototypes need building across all projects. Playground-approved designs promote directly to production repos —
.svelte files ARE HTML.User Stories
Who uses this prototype hub, what they need, and how we measure success.
Role Key Story Success Metric Superuser (Lucas) story:prototype-iterateI can see and interact with feature prototypes on my phone, iterate visually, and approve designs before they go to production. Every production feature was playground-approved first. Zero "agent built it but I hate it" moments. Superuser (Lucas) story:client-demoI can share a prototype URL with clients to demo upcoming features before they're production-ready. Client can view prototype on their own device. Agent (Dev) story:agent-promoteI can copy .svelte source from the playground directly into a production repo with minimal changes. Promotion is copy-paste + data bindings, not a rewrite. Plan
No plan yet — this is board-driven work. Prototypes are scoped as tickets on the board.
Board
board-svelte-playgroundStatus
Project created 2026-03-24. Forgejo repo initialized. Hub scaffolded with shared CSS + pal-e-app kanban prototype (issues #1, #2). Deployed to playground Tailscale funnel at
/svelte/via pal-e-deployments PR #48 (issue #3). Live athttps://playground.tail5b443a.ts.net/svelte/.Milestones
None yet.
Architecture
Lightweight — no backend, no database. Svelte + Vite compiles .svelte files to static HTML/JS/CSS. Served by nginx via hostPath volume on k3s (same pattern as pal-e-playground) or dedicated Tailscale funnel.
svelte-playground/ ├── shared.css ← unified CSS design system (source of truth) ├── index.html ← hub landing page ├── package.json ← svelte + vite ├── vite.config.js ← multi-page entry points ├── pal-e-app/ │ ├── index.html ← entry point │ └── board.svelte ← kanban board prototype ├── westside/ ← future ├── mcd-tracker/ ← future └── minio/ ← futureKey decisions:
- Svelte 5 (runes), not SvelteKit — no routing, no SSR, no adapter
- Vite multi-page mode — each HTML file is an entry point
shared.cssis the same design tokens as pal-e-playground (Atkinson Hyperlegible, light theme, CSS custom properties)npm run devfor iteration,npm run buildfor static deployment- Each project subdirectory follows:
index.html(entry) +*.svelte(components)
Repos
Repo Platform Role Status svelte-playground Forgejo Svelte + Vite prototype hub active Backlog
Query:
list_board_items(board_slug="board-svelte-playground", column="backlog")