14 KiB
作成
LocalTicketBackend によって作成されました。
Intake summary
Marked ready by yoi ticket state.
State changed
Marked ready by yoi ticket state.
State changed
Ticket を workspace-panel が queued にしました。
Decision
Routing decision: blocked_by_dependency_or_missing_authority
Reason:
- Dashboard Queue による routing 許可を受けて Ticket / relations / orchestration plan / workspace state を確認した。
- 本 Ticket は
00001KVZKSV6C(Backend RuntimeRegistryの基盤をworker-runtime向けに整理する) にdepends_onrelation を持つ。 00001KVZKSV6Cは現在queuedで、さらに00001KVZBCQH4worker-runtime core がinprogressのため blocked と判断済み。- Embedded Runtime connection は Backend RuntimeRegistry foundation の handle boundary に依存するため、foundation 確定前に implementation side effect を開始しない。
Evidence checked:
- Ticket body: embedded
worker_runtime::Runtimeregistration、direct lib call routing、Backend API exposure、Non-goals。 - Relations: outgoing
depends_on -> 00001KVZKSV6C; incoming dependent00001KVZ9JGK0。 - Orchestration plan: blocker record
orch-plan-20260625-163225-1を追加。 - Workspace state:
00001KVZBCQH4は inprogress、00001KVZKSV6Cは queued/blocked。
Next action:
- 本 Ticket は queued のまま待機。
00001KVZKSV6Cが accepted/completed して Backend Registry foundation が確定した後、再 routing する。
Escalate if:
- Embedded Runtime connection のために
00001KVZKSV6Cの scope/acceptance を変更する必要が出る。 - worker-runtime core API が embedded Backend integration に必要な create/send/projection semantics を満たさない。
Decision
Routing decision: implementation_ready
Reason:
00001KVZKSV6CBackend RuntimeRegistry foundation は done。00001KVZBCQH4worker-runtime core も done。- 本 Ticket の scope は embedded Runtime handle を Backend Registry に接続することで、remote Runtime process / FS store / REST command server / event stream / Web Console / config bundle sync は Non-goals。
- 現在
inprogressは 0 件。実装 surface は主にcrates/workspace-serverの RuntimeRegistry source/route であり、queued の remote/WebConsole/TUI は本 Ticket 完了後に判断すべき依存関係。
Evidence checked:
- Ticket body: embedded Runtime registration、direct lib call Worker operations、Backend API exposure、Non-goals、acceptance criteria。
- Relations: outgoing dependency
00001KVZKSV6Cは done。incoming00001KVZ9JGK0/00001KW04A8K6は後続であり blocker ではない。 - Orchestration plan: accepted plan
orch-plan-20260626-051805-2を記録。 - Workspace state: orchestration worktree clean、WS proxy Ticket は done/cleanup 済み。
IntentPacket:
Intent:
- Workspace Backend の
RuntimeRegistryに embeddedworker_runtime::Runtimesource を追加し、backend-internalRuntime として扱えるようにする。
Binding decisions / invariants:
- Embedded Runtime は HTTP endpoint / token / socket path / session path を持たない。
- Browser-facing API は
runtime_id + worker_idauthority で扱い、embedded Runtime internals / store path / provider credentials を露出しない。 - v0 は memory store / builtin/default Profile fallback / toolsなし Worker でよい。
- Remote Runtime process client、FS store、REST command server、event stream server、Web Console、Profile/config bundle sync は実装しない。
- Local compatibility source は残し、embedded Runtime source と diagnostics / implementation kind で区別する。
Requirements / acceptance criteria:
- Workspace Backend が embedded
worker_runtime::Runtimeを生成・保持し、RuntimeRegistry に登録できる。 - Backend API から
backend-internalRuntime の summary/status/capabilities を確認できる。 - Registry が embedded Runtime の worker list/detail/create/send input/transcript projection を direct lib call で扱える。
- v0 toolsなし Worker が create でき、input acceptance まで確認できる。
- socket/session/runtime internal store/provider credential が Browser-facing API に出ない。
- Focused workspace-server tests cover embedded runtime registration and routing。
Implementation latitude:
- Existing
/api/workers/ runtime list に含めるか、新 runtime-scoped endpoint に寄せるかは Coder が既存 API shape とテスト容易性に基づいて選び、実装報告で方針を明記する。 - Internal source enum/handle/trait の分割、typed error mapping、test fixture の形は既存
hosts.rs/server.rsに合わせてよい。
Escalate if:
worker-runtimepublic API の大幅変更が必要になる。- Profile/config bundle sync を同時に実装しないと embedded Worker create が成立しない場合。
- Browser-facing API schema を大きく変える必要がある場合。
Validation:
cargo fmt --allcargo test -p yoi-workspace-servercargo check -p yoigit diff --check- 可能なら
nix build .#yoi --no-link
Critical risks / reviewer focus:
- Embedded Runtime internals/path/credentials の漏洩。
- Local compatibility source と embedded Runtime source の混同。
runtime_id + worker_idrouting ではなく worker_id-only routing に戻る regression。- Non-goals(remote/REST/WS/WebConsole/Profile sync)への scope creep。
State changed
Routing decision: implementation_ready。
Dependency 00001KVZKSV6C Backend RuntimeRegistry foundation と 00001KVZBCQH4 worker-runtime core は done。Ticket body / relations / workspace state / accepted plan を確認し、embedded worker-runtime Registry connection slice は unblocked と判断した。
これ以降、worktree creation / coder Worker routing などの implementation side effect に進める。
Implementation report
Implementation kickoff:
- Worktree created:
/home/hare/Projects/yoi/.worktree/00001KVZSGT0Q-embedded-runtime-registry - Branch:
work/00001KVZSGT0Q-embedded-runtime-registry - Coder Worker spawned:
yoi-coder-00001KVZSGT0Q-embedded-runtime
Scope notes:
- Coder has read access to the implementation worktree and non-recursive workspace root identity path needed by runtime startup.
- Coder write scope is limited to
crates/workspace-server/**and rootCargo.lockif dependency lock changes are needed. - Coder is instructed not to modify Ticket records and not to operate in root/orchestration worktrees.
Queued capacity note:
00001KVZQHPNYremains queued while this embedded Runtime connection is inprogress to avoid worker creation/profile boundary API churn.- Remote/WebConsole/TUI dependent Tickets remain queued until embedded/remote prerequisite chain is done.
Implementation report
Implementation report:
実装完了。現在のブランチにコミット済み。
Commit:
c8209285 feat: add embedded workspace runtime registry
変更ファイル:
crates/workspace-server/src/hosts.rscrates/workspace-server/src/server.rs
実装概要:
RuntimeRegistryに backend-internal な embeddedworker_runtime::Runtimesource を追加。EmbeddedWorkerRuntime::new_memory(...)RuntimeRegistry::for_workspace(...)RuntimeRegistry::register(...)
- local compatibility source は既存の
local-worker-runtimeとして維持し、embedded source はembedded-worker-runtimeとして distinct な kind / diagnostics に分離。 - embedded Runtime は browser/API に対して以下を露出しない projection にしている。
- HTTP endpoint
- token / credential
- socket / session path
- store path
- provider identity
- Worker 操作は
runtime_id + worker_idで routing。- worker create
- worker detail
- input acceptance
- bounded transcript projection
- v0 として in-memory / tools-less Worker create を実装。
- Ticket role では builtin profile fallback (
builtin:coderなど) - Workspace companion/orchestrator では runtime default profile fallback
- Ticket role では builtin profile fallback (
SocketReadyacceptance は embedded Runtime では明示的に reject。
追加/拡張 API:
POST /api/runtimes/{runtime_id}/workersGET /api/runtimes/{runtime_id}/workers/{worker_id}POST /api/runtimes/{runtime_id}/workers/{worker_id}/inputGET /api/runtimes/{runtime_id}/workers/{worker_id}/transcript?start=...&limit=...
既存 API への反映:
GET /api/runtimesGET /api/workersにも embedded runtime / embedded worker projection が載る。
テスト:
- embedded runtime registration / routing
- local compatibility source と embedded source の分離
- embedded Worker create
- input acceptance
- transcript projection
- wrong runtime_id での worker 操作が通らないこと
- browser-facing projection に内部 path / credential / socket/session 類が混ざらないこと
SocketReadyacceptance が embedded Runtime で reject されること
Validation:
cargo fmt --all: successcargo test -p yoi-workspace-server: successcargo check -p yoi: successgit diff --check: successnix build .#yoi --no-link: success
Residual risks / review focus:
- v0 は intentionally in-memory + tools-less Worker。LLM 実行、remote Runtime process client、FS store、REST command server、event stream server、Web Console、Profile/config sync は未実装。
- embedded runtime の API projection は内部情報を出さない方針だが、diagnostics / evidence / summary JSON に internal identity が混ざっていないか要確認。
requested_worker_nameは authority として使わず、embedded Runtime 側の opaque worker id を採用。UX 的表示名が必要なら別 Ticket で profile/config bundle や display metadata の設計が必要。
Review: approve
Review result: approve
確認結果:
RuntimeRegistryにLocalWorkerRuntimeと別種別のEmbeddedWorkerRuntimeが登録され、backend-internalRuntime として summary/status/capabilities を返す構成になっている。- embedded 側は
worker_runtime::Runtime::new_memoryを保持し、worker list/detail/create/send input/transcript は adapter 経由で direct lib call している。REST/remote process/FS store/WebConsole/Profile sync などへの scope creep は見当たらない。 - embedded Runtime summary/worker projection は endpoint/token/socket/session path/store path/provider credential を露出しておらず、capabilities も内部実装詳細を出さない形。
- local compatibility source は
local-pod-runtime、embedded source はembedded-worker-runtimeとして kind/diagnostics が分離されている。 - API routing は detail/input/transcript が
/api/runtimes/{runtime_id}/workers/{worker_id}系で、worker_id-only の操作経路への回帰は見当たらない。 - tests は registration/routing/projection/error/identity boundary を含み、embedded worker 作成・input acceptance・transcript projection と誤 runtime/worker の失敗系も確認されている。
検証:
- read-only 指示に従い、ビルド/テスト再実行やファイル変更は行わず、対象 commit の差分・実装・テストを静的確認した。報告済み validation 結果と矛盾する点はない。
Implementation report
Integration / validation report:
Integration:
- Implementation branch
work/00001KVZSGT0Q-embedded-runtime-registryを orchestration branch に merge 済み。 - Merge commit:
e0cc7acf merge: 00001KVZSGT0Q embedded runtime registry
Included implementation commit:
c8209285 feat: add embedded workspace runtime registry
Validation in Orchestrator worktree:
cargo fmt --all --check: successcargo test -p yoi-workspace-server: success(29 tests passed)cargo check -p yoi: successgit diff --check: successnix build .#yoi --no-link: success
Review:
- Reviewer approve 済み。embedded Runtime registration/routing、internal path/credential non-leak、local compatibility source separation、runtime_id+worker_id authority に blocker なし。
Outcome:
- Acceptance criteria を満たしたため
doneへ進める。
State changed
Backend RuntimeRegistry embedded worker-runtime connection の実装、review、merge、Orchestrator validation が完了した。
Done evidence:
- Merge commit:
e0cc7acf merge: 00001KVZSGT0Q embedded runtime registry - Reviewer approve 済み。
- Orchestrator validation:
cargo fmt --all --check: successcargo test -p yoi-workspace-server: success(29 tests passed)cargo check -p yoi: successgit diff --check: successnix build .#yoi --no-link: success
Scope:
- Backend RuntimeRegistry に embedded
worker_runtime::Runtimesource を接続。 - Remote process / FS/REST/WS server implementation / Web Console / Profile config sync は Non-goals として未実装。