From f33415c7e2cdf5f4979a42ee3bccd055322a680f Mon Sep 17 00:00:00 2001 From: Hare Date: Sun, 21 Jun 2026 16:46:25 +0900 Subject: [PATCH] ticket: complete workspace web bootstrap --- .yoi/tickets/00001KVMFFYVX/item.md | 4 +- .yoi/tickets/00001KVMFFYVX/resolution.md | 25 ++++++++ .yoi/tickets/00001KVMFFYVX/thread.md | 82 ++++++++++++++++++++++++ 3 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 .yoi/tickets/00001KVMFFYVX/resolution.md diff --git a/.yoi/tickets/00001KVMFFYVX/item.md b/.yoi/tickets/00001KVMFFYVX/item.md index b9d9296d..66021a04 100644 --- a/.yoi/tickets/00001KVMFFYVX/item.md +++ b/.yoi/tickets/00001KVMFFYVX/item.md @@ -1,8 +1,8 @@ --- title: 'Workspace web control plane bootstrap' -state: 'inprogress' +state: 'closed' created_at: '2026-06-21T06:57:06Z' -updated_at: '2026-06-21T07:44:49Z' +updated_at: '2026-06-21T07:46:19Z' assignee: null queued_by: 'workspace-panel' queued_at: '2026-06-21T07:11:58Z' diff --git a/.yoi/tickets/00001KVMFFYVX/resolution.md b/.yoi/tickets/00001KVMFFYVX/resolution.md new file mode 100644 index 00000000..eadcfd62 --- /dev/null +++ b/.yoi/tickets/00001KVMFFYVX/resolution.md @@ -0,0 +1,25 @@ +Workspace web control plane bootstrap を実装し、Orchestrator worktree の `orchestration` branch に統合した。 + +主な成果: +- New backend library crate `yoi-workspace-server` / `crates/workspace-server` を追加。 +- Axum-based read-only HTTP API と static/SPA serving surface を追加。 +- `/api/...` と static/SPA fallback を分離し、API route miss を SPA fallback に飲ませない設計にした。 +- `ControlPlaneStore` trait と SQLite implementation `SqliteWorkspaceStore` を追加。 +- SQLite migration/version table、WAL、foreign keys、busy timeout を設定。 +- `.yoi/tickets` と `.yoi/objectives` を canonical read sources として扱う local project-record bridge を追加し、既存 record workflow を移行・変更しない。 +- Read APIs: `/api/workspace`, `/api/tickets`, `/api/tickets/{id}`, `/api/objectives`, `/api/objectives/{id}`, `/api/runs`, `/api/runners`。 +- Future runner/event-stream extension seams を response/state shape に用意しつつ、scheduler/runner dispatch/write API は実装しない。 +- SvelteKit static SPA skeleton を `web/workspace` に追加し、npm lockfile、static adapter、README、generated artifact ignore/source-filter handling を追加。 +- `Cargo.lock` と `package.nix` cargo hash / source filtering を更新。 + +統合・検証: +- Merge commit: `3e03e536 merge: workspace web control plane` +- Implementation commit: `ab7658c1 feat: bootstrap workspace web control plane` +- Reviewer final verdict: approve +- Validation passed: `cargo fmt --check`, `git diff --check HEAD^1..HEAD`, `cargo test -p yoi-workspace-server`, `cargo check -p yoi-workspace-server`, `cargo check -p yoi`, `cd web/workspace && npm ci && npm run check && npm run build`, `cargo run -p yoi -- ticket doctor`, `cargo run -p yoi -- objective doctor`, and `nix build .#yoi --no-link`。 + +範囲外 / deferrals: +- Product CLI/server launch command は未追加。backend library exposes `serve(...)`; launch surface は future Ticket で設計する。 +- Write API、runner job dispatch、scheduler、hosted/multi-tenant auth、billing/quota、memory migration は実装していない。 +- Event stream implementation は未実装で、extension seam のみ。 +- Generated SPA assets are not committed; configured static directory such as `web/workspace/build` can be served after frontend build。 \ No newline at end of file diff --git a/.yoi/tickets/00001KVMFFYVX/thread.md b/.yoi/tickets/00001KVMFFYVX/thread.md index c7dc1890..7db8f3dc 100644 --- a/.yoi/tickets/00001KVMFFYVX/thread.md +++ b/.yoi/tickets/00001KVMFFYVX/thread.md @@ -331,3 +331,85 @@ Worktree status: - Ignored validation artifacts remain in the implementation worktree: `web/workspace/node_modules/`, `web/workspace/.svelte-kit/`, `web/workspace/build/`。 --- + + + +## Implementation report + +Reviewer r1 approvalを受けて、実装ブランチを Orchestrator worktree の `orchestration` branch に統合した。 + +統合: +- Merge commit: `3e03e536 merge: workspace web control plane` +- Merged branch: `impl/00001KVMFFYVX-workspace-web-control-plane` +- Implementation commit: + - `ab7658c1 feat: bootstrap workspace web control plane` + +Orchestrator worktree validation: +- `cargo fmt --check`: passed +- `git diff --check HEAD^1..HEAD`: passed +- `cargo test -p yoi-workspace-server`: passed +- `cargo check -p yoi-workspace-server`: passed +- `cargo check -p yoi`: passed +- `cd web/workspace && npm ci && npm run check && npm run build`: passed + - `npm ci` reported 4 low severity vulnerabilities via npm audit output; build/check succeeded and no blocking validation failure occurred。 +- `cargo run -p yoi -- ticket doctor`: passed (`doctor: ok`) +- `cargo run -p yoi -- objective doctor`: passed (`doctor: ok`) +- `nix build .#yoi --no-link`: passed + +Validation generated ignored frontend artifacts in Orchestrator worktree: +- `web/workspace/node_modules/` +- `web/workspace/.svelte-kit/` +- `web/workspace/build/` + +These were removed after validation. Final Orchestrator worktree status after validation cleanup is clean on `orchestration` at `3e03e536`。 + +--- + + + +## State changed + +Reviewer approval、Orchestrator worktree への統合、Rust/frontend/Nix/doctor validation が完了したため `done` に遷移する。 + +--- + + + +## State changed + +Ticket を closed にしました。 + + +--- + + + +## 完了 + +Workspace web control plane bootstrap を実装し、Orchestrator worktree の `orchestration` branch に統合した。 + +主な成果: +- New backend library crate `yoi-workspace-server` / `crates/workspace-server` を追加。 +- Axum-based read-only HTTP API と static/SPA serving surface を追加。 +- `/api/...` と static/SPA fallback を分離し、API route miss を SPA fallback に飲ませない設計にした。 +- `ControlPlaneStore` trait と SQLite implementation `SqliteWorkspaceStore` を追加。 +- SQLite migration/version table、WAL、foreign keys、busy timeout を設定。 +- `.yoi/tickets` と `.yoi/objectives` を canonical read sources として扱う local project-record bridge を追加し、既存 record workflow を移行・変更しない。 +- Read APIs: `/api/workspace`, `/api/tickets`, `/api/tickets/{id}`, `/api/objectives`, `/api/objectives/{id}`, `/api/runs`, `/api/runners`。 +- Future runner/event-stream extension seams を response/state shape に用意しつつ、scheduler/runner dispatch/write API は実装しない。 +- SvelteKit static SPA skeleton を `web/workspace` に追加し、npm lockfile、static adapter、README、generated artifact ignore/source-filter handling を追加。 +- `Cargo.lock` と `package.nix` cargo hash / source filtering を更新。 + +統合・検証: +- Merge commit: `3e03e536 merge: workspace web control plane` +- Implementation commit: `ab7658c1 feat: bootstrap workspace web control plane` +- Reviewer final verdict: approve +- Validation passed: `cargo fmt --check`, `git diff --check HEAD^1..HEAD`, `cargo test -p yoi-workspace-server`, `cargo check -p yoi-workspace-server`, `cargo check -p yoi`, `cd web/workspace && npm ci && npm run check && npm run build`, `cargo run -p yoi -- ticket doctor`, `cargo run -p yoi -- objective doctor`, and `nix build .#yoi --no-link`。 + +範囲外 / deferrals: +- Product CLI/server launch command は未追加。backend library exposes `serve(...)`; launch surface は future Ticket で設計する。 +- Write API、runner job dispatch、scheduler、hosted/multi-tenant auth、billing/quota、memory migration は実装していない。 +- Event stream implementation は未実装で、extension seam のみ。 +- Generated SPA assets are not committed; configured static directory such as `web/workspace/build` can be served after frontend build。 + +---