Review v2: Scaffold SvelteKit adapter-node + TypeScript + ESLint

review-1087-2026-04-25-v2-final Review

review ready

Verdict: READY

Re-review of board item #1087 — forgejo_admin/westside-admin#6 — supersedes review-1087-2026-04-25 (NEEDS_REFINEMENT). All v1 blockers resolved.

Changes Since v1

  • Arch label fixed: arch:sveltekit-serverarch:sveltekit-ssr. The new label is a canonical example in convention-architecture-ids ("SvelteKit server-side rendering" under Data Flow Components). Backing convention exists; per-label arch note not required.
  • /health route added to scope with corresponding AC ("GET /health returns HTTP 200") and Test Expectations entry. Unblocks Dockerfile HEALTHCHECK in #7.
  • westside-app reference clarified: issue body now states westside-app is adapter-static + plain JS + no ESLint, recommends fresh npm create svelte@latest scaffold and points at westside-contracts as a closer adapter-node reference if available.
  • Version pinning narrowed: Constraints now scope "match westside-app versions" to kit/svelte/svelte-check/vite only; new deps (typescript, eslint, prettier, adapter-node) at latest stable.
  • Blocker list explicit in Lineage: blocks #1, #2, #3, #4, #5, #7, #8.

Template Completeness

Type: Task → reviewed against template-issue (base + Scope).
  • [x] Type
  • [x] Lineage (with explicit blocker list)
  • [x] Repo
  • [x] User Story
  • [x] Context (with adapter-node rationale + reference repo caveat)
  • [x] Scope (with explicit anti-scope listing #1, #2, #7, #8)
  • [x] Acceptance Criteria (7 AC, all agent-verifiable)
  • [x] Test Expectations
  • [x] Constraints
  • [x] Checklist
  • [x] Related

Traceability

  • [x] story:admin-row-crud — backing note story-westside-admin-admin-row-crud (id 1616) exists, status active
  • [x] arch:sveltekit-ssr — canonical label per convention-architecture-ids Data Flow Components table. No per-label arch note required (component sub-element of arch-dataflow-westside-admin).
  • [x] type:infra — appropriate for scaffolding
  • [x] Forgejo issue #6 — open, well-formed, type=Task

File Targets

N/A (Task type). Scope enumerates files to be CREATED in empty repo. New: src/routes/health/+server.ts added to support Dockerfile HEALTHCHECK. All paths conventional SvelteKit.

Repo Placement

OK. Single repo (forgejo_admin/westside-admin). No cross-repo touches.

Dependencies

None upstream — first foundational ticket. Blocks #1, #2, #3, #4, #5, #7, #8 (now explicit in Lineage). Anti-scope correctly defers db.ts, hooks.server.ts, Dockerfile, .woodpecker.yaml.

Acceptance Criteria

7 AC, all agent-verifiable via shell commands. /health AC ties scope to downstream Dockerfile work cleanly. No ambiguity, all testable.

Blast Radius

None. Empty repo, no consumers, no production system touched.

Decomposition Assessment

7 AC, 1 repo, ~11 files of conventional scaffolding. Borderline on the 5-minute rule but cohesive (one PR, one commit). The added /health route is trivial. No decomposition needed.

Recommendation

No action needed. Ticket is READY to advance backlog → todo.
Carry-over (board-wide, NOT this ticket): v1 flagged 7 other arch labels on board-westside-admin (arch:scoped-db, arch:keycloak, arch:hooks-server, arch:page-server, arch:harbor, arch:ci-pipeline, arch:postgres, arch:k8s-deploy). Per the now-confirmed reading of convention-architecture-ids (labels = component IDs from diagrams, no per-label note required), these are acceptable as-is provided each maps to a node in arch-dataflow-westside-admin or arch-deployment-westside-admin. Recommend a separate audit ticket to spot-check the 7 labels resolve to real diagram nodes — not blocking any individual ticket.