9.1 KiB
9.1 KiB
| title | state | created_at | updated_at | assignee | readiness | risk_flags | queued_by | queued_at | ||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Workspace web SPA の frontend tooling を npm/Node から Deno に移行する | closed | 2026-06-21T10:18:10Z | 2026-06-21T11:14:27Z | null | implementation_ready |
|
workspace-panel | 2026-06-21T10:56:31Z |
User claims / request snapshot
- ユーザーは「今あるフロントSPAを node から deno にしたい」と述べた。
- 参考 URL として
https://hareworks.net/blog/tech/sveltekit-with-denoが提示された。 - この依頼は、Panel から planning に戻された
00001KVMT2J25の requirements sync 中に追加された。
Confirmed facts / sources
00001KVMT2J25は protocol / pod / TUI reconnect / stream-state の Ticket であり、frontend tooling 移行とは別目的である。00001KVMT2J25の thread に、今回の refinement は別 follow-up Ticket として扱うべきことを Intake comment として記録済み。- Closed Ticket
00001KVMFFYVXは Workspace web control plane bootstrap で、SvelteKit static SPA skeleton をweb/workspaceに追加した。 00001KVMFFYVXの resolution は、frontend が npm + committedpackage-lock.jsonを使い、generatednode_modules/,.svelte-kit/,build/を ignore/source-filter する方針だったことを記録している。- 現在の
web/workspace/package.jsonは npm scripts と SvelteKit/Vite devDependencies を持つ。 - 現在の
web/workspace/package-lock.jsonは npm lockfile として存在する。 - 現在の
web/workspace/README.mdは package manager を npm とし、npm install,npm run check,npm run buildを案内している。 - 現在の
web/workspace/svelte.config.jsは@sveltejs/adapter-staticを使い、web/workspace/build/に static output を出す。 - 現在の
package.nixはweb/workspace/node_modules,web/workspace/.svelte-kit,web/workspace/buildを source filter から除外している。 - 現在の
devshell.nixにはdenoが含まれている。 - 参考 URL の内容は untrusted web content として確認した。記事は SvelteKit を Deno task / npm compatibility /
deno.jsonベースで運用する例、Svelte LSP 用tsconfig.jsonが残りうる点、Deno 用 adapter への言及を含む。
Unverified hypotheses
web/workspaceは static SPA skeleton なので、Deno 移行は backend/API authority を変えず frontend tooling の範囲に収められる可能性が高い。- SvelteKit/Vite/svelte-check は Deno の npm compatibility と
deno taskで動かせる可能性が高い。 - Svelte LSP / svelte-check のために
tsconfig.jsonを完全削除できない可能性がある。 - Deno 移行後も
node_modules相当の local generated state が発生する可能性があり、ignore/source-filter の再確認が必要。
Undecided points / open questions
- blocking な未決定点はなし。
package.jsonを完全に削除できるか、SvelteKit/Vite ecosystem 互換のため最小限残すかは実装調査で判断してよい。ただし source-of-truth と command guidance を曖昧にしない。tsconfig.jsonを維持するかdeno.jsonへ寄せるかは、Svelte LSP / svelte-check の実動作に基づいて判断してよい。@sveltejs/adapter-staticを維持するか Deno 向け adapter へ変えるかは、Rust backend が static assets を serve する現方針と矛盾しない範囲で判断してよい。
Background
Workspace web control plane の frontend は web/workspace にある SvelteKit static SPA skeleton である。bootstrap 時点では npm + package-lock.json を採用したが、ユーザーは既存 frontend SPA の tooling を Node/npm 前提から Deno 前提へ移行したい。
この Ticket は frontend tooling / package-manager migration の concrete follow-up であり、protocol reconnect Ticket 00001KVMT2J25 とは別 work item として扱う。
Requirements
web/workspaceの開発・検証・build 手順を npm/Node 前提から Deno 前提へ移行する。- Deno 側の project configuration を明確にする。候補は
deno.jsonまたはdeno.jsonc、deno.lock、deno task。 - SvelteKit static SPA であることを維持する。
- Rust backend が business/API authority を持ち、frontend は lifecycle/business authority を持たない境界を維持する。
- static build output が backend から serve できる形を維持する。既存の
web/workspace/build/を変える場合は backend/README/package hygiene と整合させる。 web/workspace/README.mdの package manager / command guidance を Deno 前提に更新する。- lockfile と依存関係管理を Deno 前提で明確にする。
- 古い npm lockfile / npm scripts / Node-only guidance が不要なら削除し、残す必要がある場合は理由を project files または docs に明記する。
- generated artifacts (
node_modules,.svelte-kit,buildなど) が git / Nix package source に混入しない状態を維持する。 package.nixsource filtering と devshell/package guidance が Deno 移行後の frontend generated state と矛盾しないことを確認する。
Acceptance criteria
web/workspaceの check が Deno command で成功する。web/workspaceの build が Deno command で成功する。- README と project files から、通常の frontend 作業者が Deno で install/check/build できることが分かる。
- npm lockfile / npm scripts / Node-only guidance が不要なら削除されている。
- npm/Node 関連ファイルを残す場合、そのファイルが canonical source-of-truth なのか compatibility artifact なのかが明確である。
- SvelteKit static SPA と Rust backend static serving の前提が壊れていない。
web/workspace/build/,.svelte-kit/,node_modulesまたは Deno 移行後の同等 generated artifacts が git/Nix package source に混入しない。- 既存の
.yoirecords as authority、Ticket/Objective workflow、Rust backend API authority を変更しない。
Binding decisions / invariants
- この Ticket は frontend tooling migration であり、Workspace backend の API authority / Ticket lifecycle authority /
.yoicanonical records を変更しない。 - Frontend を SSR authority や business/lifecycle authority にしない。
- Static SPA と Rust backend serving の境界を維持する。
00001KVMT2J25は protocol reconnect Ticket として残し、本 Ticket に混ぜない。- Tooling source-of-truth を npm と Deno の二重管理で曖昧にしない。
- Generated artifacts を committed source や Nix package source に混入させない。
Implementation latitude
- Deno project layout は
deno.json/deno.lock/deno taskを使う形でよい。 - SvelteKit/Vite を Deno の npm compatibility で動かすか、最小限の package metadata を残すかは実装時に選んでよい。
tsconfig.jsonは Svelte LSP / svelte-check の都合で必要なら残してよい。@sveltejs/adapter-staticを維持してよい。Deno adapter を採用する場合は、この workspace の Rust backend static serving 方針と矛盾しないことを確認する。package.nix/ devshell / README の更新範囲は、Deno 移行後の generated artifact と validation command に合わせて最小限でよい。
Readiness
- readiness: implementation_ready
- risk_flags: [frontend-tooling, packaging, nix-source-filter, validation]
Escalation conditions
- Deno だけでは SvelteKit check/build が安定せず、Node/npm を primary に残す必要が出た場合。
package.json/package-lock.jsonを残すか削除するかが project policy decision になる場合。- Static SPA ではなく SSR / Deno runtime server / Deno Deploy 前提へ移る必要が出た場合。
- Rust backend static serving path や package/Nix build 方針の大きな変更が必要になった場合。
- Generated artifacts の source-filter / ignore 境界が不明確になる場合。
Validation
cd web/workspace && deno task checkcd web/workspace && deno task buildgit diff --check- frontend generated artifacts が ignored / source-filtered されていることの確認。
- packaging/source-filter を変更する場合は
nix build .#yoi --no-linkまたは Orchestrator が妥当と判断する同等確認。 - 必要に応じて
cargo check -p yoi-workspace-serverまたは static serving 周辺の focused tests。
Related work
00001KVMT2J25— protocol reconnect / in-flight stream snapshot Ticket。今回の Deno 移行とは別件。00001KVMFFYVX— Workspace web control plane bootstrap。web/workspaceの SvelteKit static SPA skeleton と npm/package-lock 採用元。- Relevant files:
web/workspace/package.jsonweb/workspace/package-lock.jsonweb/workspace/README.mdweb/workspace/svelte.config.jsweb/workspace/vite.config.tsweb/workspace/tsconfig.jsonweb/workspace/.gitignorepackage.nixdevshell.nix