diff --git a/.yoi/tickets/00001KW7726H9/item.md b/.yoi/tickets/00001KW7726H9/item.md index 975ee2b8..59156d72 100644 --- a/.yoi/tickets/00001KW7726H9/item.md +++ b/.yoi/tickets/00001KW7726H9/item.md @@ -1,8 +1,8 @@ --- title: 'Runtime Worker起動経路を正規のExecution/ConfigBundle経路に一本化する' -state: 'inprogress' +state: 'closed' created_at: '2026-06-28T13:35:21Z' -updated_at: '2026-06-28T18:37:36Z' +updated_at: '2026-06-28T18:39:03Z' assignee: null queued_by: 'workspace-panel' queued_at: '2026-06-28T16:47:42Z' diff --git a/.yoi/tickets/00001KW7726H9/resolution.md b/.yoi/tickets/00001KW7726H9/resolution.md new file mode 100644 index 00000000..41fcfb77 --- /dev/null +++ b/.yoi/tickets/00001KW7726H9/resolution.md @@ -0,0 +1,33 @@ +Runtime Worker 起動経路を canonical `ConfigBundleRef + ExecutionBackend` 経路へ一本化し、reviewer approval 後に orchestration branch へ merge した。 + +実装内容: +- Runtime `CreateWorkerRequest` を `config_bundle_ref` と user-only initial input 中心の内部作成契約へ整理。 +- Browser-facing launch semantics と Runtime worker creation request を分離。 +- raw workspace / cwd / tool scope / config store / secret / socket / path 類を Runtime create request に含めない境界にした。 +- ConfigBundle missing / digest mismatch / profile mismatch を typed error / diagnostic として扱う。 +- execution backend 未接続では Worker 作成を拒否し、input-capable Worker が backend 未接続になる経路を塞いだ。 +- create 成功時のみ catalog / transcript / event を永続化し、spawn / initial input dispatch rejection は rollback。 +- execution binding identity を raw handle / secret / path / socket を含まない non-authority projection として永続化。 +- restore 後に live handle がない persisted execution mapping は `stale` として diagnostic `worker_execution_mapping_stale` を出す。 +- System initial input を Runtime boundary で拒否し、launch/create が system transcript を注入できないようにした。 +- Workspace embedded / Companion / remote-facing creation を canonical Runtime create path に寄せた。 +- Remote Runtime projection でも execution status を見て `can_accept_input` / `can_stop` を計算し、stale / unconnected / rejected / errored Workers を input-capable として出さないようにした。 +- fake/providerless response bypass は導入していない。 + +Integrated commits: +- `14bb4934a6374eea64591035e5342088ab0ccd09 runtime: unify worker creation path` +- `c29d10b67bfff1f4a7a1b2742ec05fe63b80c054 runtime: persist execution binding projection` +- `ba7f9d2ee83a946820cc234e847b6531b4a141f3 workspace: respect remote execution projection` +- merge: `bdb339fa merge: runtime worker launch unification` + +Validation: +- `cargo fmt --all --check`: success +- `cargo test -p worker-runtime --features ws-server`: success +- `cargo test -p worker-runtime --features "fs-store ws-server"`: success +- `cargo test -p yoi-workspace-server`: success (`36 passed`) +- `cargo check -p yoi`: success +- `git diff --check`: success +- `nix build .#yoi --no-link`: success + +Operational note: +- User instructed not to use `StopPod` for now after repeated stop/hang symptoms. Cleanup will skip role-Pod shutdown and remove only child implementation worktree / branch. \ No newline at end of file diff --git a/.yoi/tickets/00001KW7726H9/thread.md b/.yoi/tickets/00001KW7726H9/thread.md index bdc7d16a..e732e01e 100644 --- a/.yoi/tickets/00001KW7726H9/thread.md +++ b/.yoi/tickets/00001KW7726H9/thread.md @@ -595,3 +595,107 @@ approve 前回までの blocker(execution binding projection persistence、stale diagnostic、System initial input rejection、remote stale projection)について、現在の差分で受け入れ条件を満たしていると判断する。現時点で concrete blocker はない。 --- + + + +## Implementation report + +Merge / validation report: + +Implementation branch was integrated into the orchestration branch after reviewer approval. + +Integrated commits: +- `14bb4934a6374eea64591035e5342088ab0ccd09 runtime: unify worker creation path` +- `c29d10b67bfff1f4a7a1b2742ec05fe63b80c054 runtime: persist execution binding projection` +- `ba7f9d2ee83a946820cc234e847b6531b4a141f3 workspace: respect remote execution projection` + +Merge commit: +- `bdb339fa merge: runtime worker launch unification` + +Validation in orchestration worktree: +- `cargo fmt --all --check`: success +- `cargo test -p worker-runtime --features ws-server`: success +- `cargo test -p worker-runtime --features "fs-store ws-server"`: success +- `cargo test -p yoi-workspace-server`: success (`36 passed`) +- `cargo check -p yoi`: success +- `git diff --check`: success +- `nix build .#yoi --no-link`: success + +Outcome: +- Runtime Worker creation is unified around canonical `ConfigBundleRef + ExecutionBackend` create semantics. +- Browser-facing launch semantics are separated from Runtime `CreateWorkerRequest`. +- Runtime create request no longer carries raw workspace/cwd/tool-scope/config-store/secret/socket/path semantics. +- ConfigBundle missing/digest/profile mismatch and execution backend missing/provider failures are typed diagnostics/errors. +- Input-capable Workers require execution backend connection. +- Execution binding identity is persisted only as non-authority projection and restore without live handle surfaces stale execution mapping diagnostics. +- System initial input is rejected at Runtime boundary and not persisted as launch-created system transcript. +- Remote Runtime projection respects execution state so stale/unconnected/rejected/errored Workers are not input-capable. +- fake/providerless response bypass was not introduced. + +--- + + + +## State changed + +Reviewer approval後に implementation branch を orchestration branch へ merge し、要求された validation が成功したため done に遷移する。 + +Validation: +- `cargo fmt --all --check`: success +- `cargo test -p worker-runtime --features ws-server`: success +- `cargo test -p worker-runtime --features "fs-store ws-server"`: success +- `cargo test -p yoi-workspace-server`: success (`36 passed`) +- `cargo check -p yoi`: success +- `git diff --check`: success +- `nix build .#yoi --no-link`: success + +--- + + + +## State changed + +Ticket を closed にしました。 + + +--- + + + +## 完了 + +Runtime Worker 起動経路を canonical `ConfigBundleRef + ExecutionBackend` 経路へ一本化し、reviewer approval 後に orchestration branch へ merge した。 + +実装内容: +- Runtime `CreateWorkerRequest` を `config_bundle_ref` と user-only initial input 中心の内部作成契約へ整理。 +- Browser-facing launch semantics と Runtime worker creation request を分離。 +- raw workspace / cwd / tool scope / config store / secret / socket / path 類を Runtime create request に含めない境界にした。 +- ConfigBundle missing / digest mismatch / profile mismatch を typed error / diagnostic として扱う。 +- execution backend 未接続では Worker 作成を拒否し、input-capable Worker が backend 未接続になる経路を塞いだ。 +- create 成功時のみ catalog / transcript / event を永続化し、spawn / initial input dispatch rejection は rollback。 +- execution binding identity を raw handle / secret / path / socket を含まない non-authority projection として永続化。 +- restore 後に live handle がない persisted execution mapping は `stale` として diagnostic `worker_execution_mapping_stale` を出す。 +- System initial input を Runtime boundary で拒否し、launch/create が system transcript を注入できないようにした。 +- Workspace embedded / Companion / remote-facing creation を canonical Runtime create path に寄せた。 +- Remote Runtime projection でも execution status を見て `can_accept_input` / `can_stop` を計算し、stale / unconnected / rejected / errored Workers を input-capable として出さないようにした。 +- fake/providerless response bypass は導入していない。 + +Integrated commits: +- `14bb4934a6374eea64591035e5342088ab0ccd09 runtime: unify worker creation path` +- `c29d10b67bfff1f4a7a1b2742ec05fe63b80c054 runtime: persist execution binding projection` +- `ba7f9d2ee83a946820cc234e847b6531b4a141f3 workspace: respect remote execution projection` +- merge: `bdb339fa merge: runtime worker launch unification` + +Validation: +- `cargo fmt --all --check`: success +- `cargo test -p worker-runtime --features ws-server`: success +- `cargo test -p worker-runtime --features "fs-store ws-server"`: success +- `cargo test -p yoi-workspace-server`: success (`36 passed`) +- `cargo check -p yoi`: success +- `git diff --check`: success +- `nix build .#yoi --no-link`: success + +Operational note: +- User instructed not to use `StopPod` for now after repeated stop/hang symptoms. Cleanup will skip role-Pod shutdown and remove only child implementation worktree / branch. + +---