9.4 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 後に Ticket / relations / orchestration plan / workspace state を確認した。
- 本 Ticket は
00001KW55B32Y(worker-runtimeにWorker実行Backend境界を追加する) にdepends_onrelation を持つ。 00001KW55B32Yは本 routing pass で accepted されinprogressになった。- Adapter は execution backend boundary に接続する必要があるため、boundary の shape が review/merge/done になる前に開始しない。
Evidence checked:
- Ticket body: adapter placement/dependency boundary、Profile/config/authority resolution、input/run lifecycle、protocol event bridge、Non-goals。
- Relations: outgoing
depends_on -> 00001KW55B32Y; incoming dependent00001KW55B33H。 - Orchestration plan: blocker record
orch-plan-20260627-190816-1を追加。 - Workspace state:
00001KW55B32Yis inprogress; current worktree clean before implementation side effects.
Next action:
- 本 Ticket は queued のまま待機。
00001KW55B32Yが reviewer approve / merge / validation / done になった後に再 routing する。
Decision
Routing decision:
Queue continuation was explicitly requested. The upstream boundary Ticket 00001KW55B32Y is closed after merge and validation, so this Ticket is now unblocked and accepted for implementation.
Plan:
- Create child implementation worktree:
/home/hare/Projects/yoi/.worktree/00001KW55B33B-worker-runtime-worker-adapter
- Branch:
work/00001KW55B33B-worker-runtime-worker-adapter
- Route implementation to a sibling Coder Worker with focused write scope.
- Route read-only review to a sibling Reviewer Worker after implementation.
- Orchestrator retains merge, final validation, Ticket completion, child worktree/branch cleanup, and role Pod shutdown.
Review/implementation focus:
- choose adapter placement without introducing crate dependency cycles, and record the rationale
- connect embedded
worker-runtimeexecution backend to existingworkercrate execution - preserve Profile/config bundle and authority resolution boundaries
- dispatch input to real Worker run lifecycle, not providerless/fake responses
- bridge
protocol::Eventto Runtime observation bus / Backend WS - return typed diagnostics/rejections for missing config/provider/busy/unsupported operations
- do not expose raw handles, sockets, credentials, session paths, or manifest paths to Browser-facing APIs
- leave
00001KW55B33Hqueued until this adapter is merged/validated
Operational note:
StopPodmust be called serially during cleanup; do not use parallel StopPod calls.
State changed
Queue continuation requested by user. Upstream dependency 00001KW55B32Y is closed with merge and validation complete, and this Ticket has no remaining blockers. Accepting implementation before child worktree / role Pod side effects.
Implementation report
Implementation kickoff:
- Worktree created:
/home/hare/Projects/yoi/.worktree/00001KW55B33B-worker-runtime-worker-adapter - Branch:
work/00001KW55B33B-worker-runtime-worker-adapter - Coder Worker spawned:
yoi-coder-00001KW55B33B-worker-adapter
Scope notes:
- Coder write scope is limited to
crates/worker-runtime/**,crates/worker/**,crates/workspace-server/**, rootCargo.toml,Cargo.lock, andpackage.nixif dependency/package changes are needed. - Coder is instructed not to modify Ticket records and not to operate in root/orchestration worktrees.
Implementation focus:
- adapter placement without crate dependency cycles, with rationale reported back
- connect
worker-runtimeexecution backend boundary to existingworkercrate run lifecycle - bridge existing
protocol::Eventto Runtime observation bus / Backend WS - preserve typed diagnostics for missing config/provider/secret and busy/unsupported operations
- avoid fake/providerless responses and Browser-facing raw handle/path/credential/session leaks
- leave downstream Workspace Companion real execution Ticket
00001KW55B33Hqueued until this adapter is merged/validated
Implementation report
Implementation report:
実装完了。マージ / close / cleanup は未実施。
Commit:
18526ee36264610048f48b07b5db50ce86852fd2 feat: connect runtime worker execution adapter
Adapter 配置方針:
workercrate 側にruntime-adapterfeature 付きで配置。- 理由:
worker-runtimeは Runtime 境界 / 投影 / Backend trait を持つ下位境界として保ち、実 Worker 実装への依存を持たせない。workercrate は既存のWorkerController/WorkerHandle/Method::Runlifecycle を直接扱えるため、fake/canned 応答を挟まずに adapter を組める。workspace-serverがworker = { features = ["runtime-adapter"] }を有効化して embedded Runtime に接続する形にし、crate dependency cycle を避けた。
変更概要:
worker crate
crates/worker/src/runtime_adapter.rsを追加。WorkerRuntimeExecutionBackendを追加し、worker_runtime::execution::WorkerExecutionBackendを実装。- Runtime worker 作成時に
WorkerControllerを spawn し、内部にのみ realWorkerHandleを保持。 - Runtime input は
Method::Run { input: vec![Segment::text(...)] }へ変換して既存 Worker run lifecycle に投入。 - Worker の
protocol::Eventbroadcast を購読し、WorkerExecutionContext::publish_protocol_event経由で Runtime observation bus へ橋渡し。 - Provider/profile/config 不足などは spawn/create 時の typed error/rejection として返し、fake assistant text は生成しない。
- v0 double-run policy として queue は持たず、adapter 側 atomic busy flag + Worker status で二重 input を typed busy rejection。
- stop/cancel は既存
Method::Shutdown/Method::Cancelへ接続。 - Focused test を追加し、fake deterministic LLM client で Runtime input -> real Worker run lifecycle -> assistant output ->
protocol::Event-> Runtime transcript projection の流れを検証。
worker-runtime
observe_worker_eventで受けた realprotocol::Eventから transcript projection を更新。TextDone-> Assistant transcriptError-> System transcriptToolResult-> System transcript
- observation bus には既存
protocol::Eventをそのまま保持し、subset output model は追加していない。
workspace-server
- embedded Runtime 作成時に
WorkerRuntimeExecutionBackendを接続。 EmbeddedWorkerRuntime::new_memory_with_execution_backendを追加。- Browser/API-facing projection に raw
worker::Workerhandle / raw execution handle / socket path / session path / credential / secret ref / manifest path は出していない。
package/dependency
workerに optionalworker-runtimedependency +runtime-adapterfeature を追加。workspace-serverがworkerのruntime-adapterfeature を有効化。Cargo.lockとpackage.nixのcargoHashを更新。
Validation:
cargo fmt --all: successcargo fmt --all --check: successcargo test -p worker --features runtime-adapter runtime_adapter: successcargo test -p worker-runtime --features ws-server: successcargo test -p worker-runtime --features "ws-server fs-store": successcargo test -p yoi-workspace-server: successcargo check -p yoi: successgit diff --check: successnix build .#yoi --no-link: success
Residual risks / review focus:
- Runtime worker profile 解決は production adapter が通常の Worker profile 解決を使う。workspace-server 起動直後に fake 応答へ fallback せず、profile/provider/config 不足は typed error になる。この挙動が downstream
00001KW55B33Hの Companion UX 設計と合っているか確認が必要。 - Transcript projection は現時点で
TextDone/Error/ToolResultを投影。より細かい tool-call lifecycle や thinking block の Browser projection が必要なら downstream で拡張対象。 - Adapter は v0 non-queue policy。二重 input は busy rejection で、background queue/scheduler は実装していない。
workspace-serverがworkerを feature 付きで依存するため、crate layering と public API leak が意図通りかを重点 review してほしい。