30 KiB
作成
LocalTicketBackend によって作成されました。
Decision
調査結果:
crates/podは現 workspace には存在しない。Cargo.tomlworkspace members / workspace dependencies にもcrates/pod/pod = ...はない。したがって「pod crate を消す」作業は既に過去の移行で遂行済みで、この Ticket では不在確認と再導入防止を扱う。- 残っている旧 Pod 関連 crate は
crates/pod-registryとcrates/pod-store。 - これらが残っている理由は、旧 Pod UI crate ではなく、現
worker/tui/yoiの内部がまだ旧 store / registry を使っているため。
現時点の直接依存:
crates/worker/Cargo.tomlpod-store = { workspace = true }pod-registry = { workspace = true }
crates/tui/Cargo.tomlpod-store = { workspace = true }pod-registry = { workspace = true }
crates/yoi/Cargo.tomlpod-store = { workspace = true }
主な残存理由:
-
workercrate の Spawn/Stop/peer discovery/delegated scope 経路がpod-registryを使っている。worker/src/spawn/tool.rs:delegate_scope,release_worker,default_registry_path,LockFileGuard。worker/src/spawn/registry.rs: delegated scope reclaim / release。worker/src/worker.rs: top-level install / adopt allocation / segment update / reclaim。worker/src/discovery.rs: segment lookup / peer discovery。 これは旧 child Pod/Worker process orchestration の実行時 authority が残っているため。
-
workercrate の metadata/session persistence がpod-storeを generic Worker store として使い続けている。worker/src/entrypoint.rs:FsWorkerStore,CombinedStore。worker/src/runtime_adapter.rs:FsWorkerStore,CombinedStore,pod_store_dir。worker/src/controller.rs,worker/src/worker.rs,worker/src/ticket_event_notify.rs, tests。 これは名前は Pod だが、WorkerMetadataStore/WorkerMetadata/FsWorkerStoreが現 Worker 実行にも必要な metadata/session store として残っているため。削除前に Worker/Runtime store 境界へ move/rename が必要。
-
tuicrate が旧 local Worker inventory / picker / dashboard でpod-store/pod-registryを読んでいる。tui/src/picker.rstui/src/worker_list.rstui/src/dashboard/mod.rscurrent Runtime API / Backend Worker list へ置換するか、旧 TUI inventory を削除する必要がある。
-
yoiCLI の session / worker cleanup がpod-storeを読んでいる。yoi/src/session_cli.rsyoi/src/worker_cleanup_cli.rs旧 metadata cleanup / referenced session discovery 用。Runtime/worker-runtime store へ置換するか、旧 cleanup CLI を削除する必要がある。
結論:
crates/podが残っているわけではない。既に消えている。pod-registryは旧 process/delegation/segment/socket 系 authority としてworkerと TUI に残っている。pod-storeは旧名のまま generic Worker metadata/session store としてworker、TUI、CLI に残っている。- 削除作業は「pod crate の削除」ではなく、
pod-registryの旧 orchestration authority 削除と、pod-storeの必要部分を Worker/Runtime store に移管して crate を消す作業になる。
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:
Workspace Dashboard Queue authorized Orchestrator routing, so the Ticket and current workspace state were inspected.
Findings:
- Ticket state:
queued - Outgoing dependency:
depends_on 00001KW7726H9 - Blocking Ticket
00001KW7726H9is currentlyinprogress. - Current inprogress Tickets:
00001KW7726H9 - Orchestration worktree: clean
Decision:
- Leave
00001KW7835H0queued and do not create a child worktree / role Pod yet. - Reason:
pod-registry/pod-storeremoval must follow the canonical Runtime Worker creation authority decision and implementation in00001KW7726H9. Starting both in parallel would risk deleting/moving store/registry paths while the canonical Worker creation API is still being shaped.
Next routing condition:
- Re-evaluate this Ticket after
00001KW7726H9is merged, validated, and closed, or after an explicit replan changes the dependency.
Decision
Routing decision:
The previously blocking dependency 00001KW7726H9 is now merged, validated, closed, and cleaned up. Related fs-store persistence Ticket 00001KW76E8EG is also merged, validated, closed, and cleaned up. Current workspace state was inspected before implementation side effects.
Findings:
- Ticket state:
queued - Blocking dependency:
00001KW7726H9is closed. - Related persistence Ticket:
00001KW76E8EGis closed. - Current
inprogressTickets: 0 - Orchestration worktree: clean
Decision:
- Accept this Ticket for implementation and transition
queued -> inprogressbefore child worktree / Pod side effects.
Plan:
- Worktree:
/home/hare/Projects/yoi/.worktree/00001KW7835H0-old-pod-crate-cleanup - Branch:
work/00001KW7835H0-old-pod-crate-cleanup - Coder Worker will remove old
pod-registry/pod-storecrates and migrate any remaining authority/persistence responsibilities to Worker/Runtime/session-store boundaries. - Reviewer Worker will verify crate removal, dependency graph cleanup, Runtime authority invariants, stale compatibility avoidance, Browser/UI/CLI/prompt/test wording, and validation evidence.
Operational note:
- User instructed not to use
StopPodfor now after repeated stop/hang symptoms. Cleanup will skip role-Pod shutdown and remove only child worktree/branch unless explicitly reauthorized.
State changed
Dependencies are closed, no Ticket is currently inprogress, and the orchestration worktree is clean. Accepting implementation before child worktree / role Pod side effects.
Implementation report
Implementation kickoff:
- Worktree created:
/home/hare/Projects/yoi/.worktree/00001KW7835H0-old-pod-crate-cleanup - Branch:
work/00001KW7835H0-old-pod-crate-cleanup - Coder Worker spawned:
yoi-coder-00001KW7835H0-pod-cleanup
Scope notes:
- Coder write scope covers the old crate directories
crates/pod-registry,crates/pod-store, affected active crates (crates/worker,crates/tui,crates/yoi,crates/worker-runtime,crates/session-store,crates/manifest), prompt/profile/web workspace paths, and root Cargo/package files. crates/podis already absent; Coder is instructed to verify absence and prevent reintroduction.- Coder is instructed not to modify Ticket records and not to operate in root/orchestration worktrees.
Implementation focus:
- remove
crates/pod-registryandcrates/pod-storefrom workspace - migrate/rename any remaining Worker metadata/session persistence to Worker/Runtime/session-store boundaries without active Pod authority naming
- remove old pod-registry path APIs and old Pod metadata inventory/cleanup dependencies from worker/tui/yoi where active
- ensure Runtime Worker identity / creation / persistence remains
worker-runtimefs-store + execution backend mapping authority - do not use old Pod registry/store/socket/name as active authority
- keep historical docs only if clearly historical
- validate dependency graph and run targeted tests/checks
Implementation report
Implementation report:
実装完了。Ticket ファイル編集、merge、close、cleanup は未実施。
Commit:
17a9488a4aa0a3dc83be2d3360b6ffd8ffcaeb5a refactor: remove old pod crates
実装内容:
crates/pod-registry/crates/pod-storeを workspace から削除。Cargo.toml/Cargo.lock/ 各 crate dependency /package.nixから旧 crate 参照を除去。crates/podも引き続き存在しないことを確認。pod-registry/pod-store/crates/pod系の active 参照が残っていないことをrgで確認。
pod-storeの Worker metadata 永続化をsession-store境界へ移動。session_store::worker_metadataとしてFsWorkerStore,WorkerMetadataStore,CombinedStore等を提供。- active storage naming を Worker metadata に寄せ、metadata root も
data_dir/workers側へ変更。
pod-registryの active crate 依存を削除。- Worker 内部の
runtime::worker_allocationモジュールへ、scope allocation 用の実装として分類・移設。 - module comment で「Runtime Worker identity / creation / durable persistence の authority ではない」ことを明記。
- manifest path API は
worker_allocation_path/worker_socket_path名へ置換。
- Worker 内部の
tui/yoi/workerの旧 crate 依存を置換。- TUI の live worker inventory は旧
pod-registrycrate に依存せず、renamed worker allocation table を read-only に読む形へ変更。 - 読み取り時は
fs4の shared lock を使い、writer との競合で partial read しにくい形に修正。
- TUI の live worker inventory は旧
package.nixのcargoHashを更新。
依存監査サマリ:
crates/pod: absentcrates/pod-registry: deletedcrates/pod-store: deleted- workspace/package/lock/source 内の active
pod-registry/pod-store/crates/pod参照: なし - Runtime Worker identity/creation/persistence authority は
worker-runtimefs-store + execution backend mapping のまま維持し、旧 registry/store/socket/name を authority として使わない構成に整理。
Validation:
cargo test -p worker-runtime --features ws-server: successcargo test -p yoi-workspace-server: successcargo test -p worker: successcargo test -p session-store: successcargo check -p yoi: successcd web/workspace && deno task check: successgit diff --check: successgit diff --cached --check: successnix build .#yoi: success
Risks / notes:
- Worker metadata root を
data_dir/pods由来からdata_dir/workers側へ寄せたため、既存ローカル metadata の自動移行は入れていない。Ticket 方針どおり、旧 Pod authority naming 互換を増やさない実装。 - Historical docs は今回の active dependency cleanup の対象外だが、active crate/path/dependency 参照は除去済み。
Implementation report
Review kickoff:
Reviewer Worker spawned for 00001KW7835H0 implementation.
- Reviewer Worker:
yoi-reviewer-00001KW7835H0-pod-cleanup - Review target commit:
17a9488a4aa0a3dc83be2d3360b6ffd8ffcaeb5a refactor: remove old pod crates - Review mode: read-only implementation worktree review
Review focus:
crates/pod-registryandcrates/pod-storeare removed from workspace / Cargo / package / lock / active source referencescrates/podremains absent and is not reintroduced- needed Worker metadata/session persistence moved to Worker/Runtime/session-store boundaries without active Pod authority naming
- old pod-registry APIs are not active authority
- Runtime Worker identity / creation / persistence remains
worker-runtimefs-store + execution backend mapping - UI/CLI/TUI active wording and tests compile
- no stale compatibility alias preserves old Pod store authority
- validation evidence is plausible and sufficient
Review: request changes
request_changes
対象 commit 17a9488a4aa0a3dc83be2d3360b6ffd8ffcaeb5a を read-only で確認した。worktree は clean、git diff --check HEAD^ HEAD は成功。重い cargo / deno / nix は reviewer では再実行せず、報告済み validation は diff/code 上で plausibility を確認した。
満たしている点
crates/pod/crates/pod-registry/crates/pod-storeのディレクトリは存在しない。Cargo.tomlworkspace members/default-members/dependencies、active crateCargo.toml、Cargo.lock、package.nixからpod-registry/pod-storedependency は除去済み。manifest::paths::pod_registry_path/pod_registry::.../pod_store::...参照は active source から消えている。pod-store相当のWorkerMetadataStore/FsWorkerStore/CombinedStoreはsession-store::worker_metadataへ移され、data_dir/workersの Worker metadata と session log store に分離されている。worker-runtime側はRuntimeId + WorkerIdを authority とする fs-store / execution backend mapping が残っており、旧 pod path/socket/session path を authority にしない設計コメント・境界も確認した。
Blockers
-
active CLI output に旧
pod名が残っている。crates/yoi/src/worker_cleanup_cli.rs:242/253でyoi worker deleteの refusal 出力がpod: {}になっている。これは Ticket の「TUI / yoi CLI / worker cleanup CLI から旧 Pod metadata inventory / cleanup 依存を削除」「Active UI / CLI / prompt / test output に旧 Pod concept が正規 concept として残らない」に反する。worker:に直す必要がある。 -
LLM/tool-visible な active Worker allocation error が旧 Pod authority wording のまま。
crates/worker/src/runtime/worker_allocation/error.rs:14,16,29,32に以下が残っている:pod name ... is already registeredconflicts with pod ...pod ... is not registeredsession ... is already held by pod ...
これらは
crates/worker/src/spawn/tool.rs:867-875でToolErrorにe.to_string()として流れるため、単なる内部コメントではなく active tool/user-facing error。旧pod-registrycrate は消えているが、移管先の active scope allocation path が旧 Pod 名で authority/error を表現しており、Ticket intent に対して未完了。 -
active e2e harness artifact に旧 pod registry / metadata path が残っている。
tests/e2e/src/lib.rs:1624-1625がtested_yoi_pod_registry: ... pods.jsonとfixture_pod_metadata_root: ... podsを書き出している。tests/e2eは workspace member なので、historical docs/report ではなく active test source/output と見なされる。現 Runtime/Worker path へ更新するか、legacy/historical fixture として明確に分類・隔離する必要がある。
上記を直したうえで、報告済み validation 一式(少なくとも cargo check -p yoi, cargo test -p worker, cargo test -p worker-runtime --features ws-server, cargo test -p yoi-workspace-server, deno task check, git diff --check, nix build .#yoi --no-link)を再確認すること。
Implementation report
Change-request routing:
Reviewer requested changes for active wording/test artifact leftovers. The original Coder scope did not include tests/e2e, so a focused fix Coder Worker was spawned with additional write scope for the specific blocker areas.
- Fix Coder Worker:
yoi-coder-00001KW7835H0-pod-fix - Worktree:
/home/hare/Projects/yoi/.worktree/00001KW7835H0-old-pod-crate-cleanup
Requested fixes:
- change active
yoi worker deleterefusal output frompod:toworker: - rename active worker allocation tool/user-facing errors away from old Pod authority wording
- update active
tests/e2eharness artifact names/paths away from old pod registry / pod metadata wording or clearly isolate as legacy if required - run focused validation and commit fixes
Implementation report
Change-response implementation report:
Reviewer blockers を修正し、追加 commit を作成済み。Ticket ファイル編集、merge、close、cleanup は未実施。
Commit:
c46e880b fix: finish worker wording cleanup
変更内容:
crates/yoi/src/worker_cleanup_cli.rsyoi worker deleteの refusal 出力をpod:からworker:に修正。
crates/worker/src/runtime/worker_allocation/error.rs- active/user-facing error 文言を旧 Pod 表現から Worker/allocation 表現に修正。
pod name,conflicts with pod,pod ... not registered,held by podを置換。
tests/e2e/src/lib.rs- E2E artifact 名と fixture metadata path を Worker/allocation/metadata 表現に更新。
tested_yoi_pod_registry->tested_yoi_worker_allocationfixture_pod_metadata_root->fixture_worker_metadata_root- fixture path
yoi/pods/...->yoi/workers/... - helper 名を
write_blocking_worker_metadataに更新。
Validation:
cargo fmt: successcargo test -p worker: successcargo check -p yoi: successcargo check -p yoi-e2e: successgit diff --check: success- 対象旧表現の
rg確認: success
Final state:
- child worktree is clean.
Review: request changes
request_changes
再レビューは read-only で実施した。c46e880b は確認済みで、worktree は clean、git diff --check HEAD^ HEAD は成功。重い cargo / deno / nix は read-only 指示のため再実行せず、報告 validation はコード上の整合性を確認した。
前回指摘分のうち、以下は修正済み:
crates/yoi/src/worker_cleanup_cli.rsの active refusal output はpod:ではなくworker:になっている。crates/worker/src/runtime/worker_allocation/error.rsの user-facing error は Pod wording から Worker/allocation wording に変更されている。tests/e2e/src/lib.rsの artifact key / helper 名はtested_yoi_worker_allocation/fixture_worker_metadata_root/write_blocking_worker_metadataに変更されている。crates/pod/crates/pod-registry/crates/pod-storeの crate directory / workspace dependency / lock / package 参照は残っていない。
Blocker
E2E fixture の Worker metadata root が active store と一致していない
tests/e2e/src/lib.rs は現在も Worker metadata を XDG_DATA_HOME 側へ書いている。
tests/e2e/src/lib.rs:1353-1354write_blocking_worker_metadata(&fixture.xdg_data_home, "workspace")?;write_blocking_worker_metadata(&fixture.xdg_data_home, "workspace-orchestrator")?;
tests/e2e/src/lib.rs:1625"fixture_worker_metadata_root": self.xdg_data_home.join("yoi").join("workers")
tests/e2e/src/lib.rs:2000-2003data_home.join("yoi").join("workers").join(worker_name)
しかし active Worker metadata store は manifest::paths::data_dir() ベース:
crates/manifest/src/paths.rs:41-46data_dir()はYOI_DATA_DIR/YOI_HOME/HOMEを見る。XDG_DATA_HOMEは使わない。
crates/worker/src/entrypoint.rs:487-494- worker metadata dir は
paths::data_dir().join("workers")
- worker metadata dir は
crates/yoi/src/worker_cleanup_cli.rs:209-237- cleanup CLI も
paths::data_dir().join("workers")
- cleanup CLI も
E2E harness は HOME と XDG_DATA_HOME を分けて渡しており、YOI_DATA_DIR は設定していない。そのため実際の active metadata root は fixture 上では概ね $HOME/.yoi/workers だが、現在の fixture/helper/artifact は $XDG_DATA_HOME/yoi/workers を指している。
これは表面上の naming は直っているが、移行後の Worker/session-store 境界と一致していないため、E2E fixture が正しい Worker metadata store をブロック・記録できない。Ticket の「必要な Worker metadata/session persistence を Worker/Runtime/session-store boundaries へ移す」「tests が旧 Pod metadata inventory に依存しない」に対して未完了。
修正案:
write_blocking_worker_metadataにfixture.homeまたは解決済みdata_dirを渡し、$HOME/.yoi/workersに書く。- または E2E subprocess に
YOI_DATA_DIRを明示し、helper / artifact / subprocess env が同じ data root を使うように揃える。 fixture_worker_metadata_rootも同じ resolved active path を記録する。
補足: YOI_POD_RUNTIME_COMMAND の残存は既存設計上の dev executable-path override として扱い、今回の blocker にはしていない。
Implementation report
Change-response implementation report:
Reviewer の E2E Worker metadata root blocker を修正し、追加 commit を作成済み。Ticket ファイル編集、merge、close、cleanup は未実施。
Commit:
fdd902d5 fix: align e2e worker metadata root
変更内容:
tests/e2e/src/lib.rs- E2E fixture の Worker metadata helper を active code の
manifest::paths::data_dir()の既定解決に合わせた。 XDG_DATA_HOME/yoi/workersではなく、fixture のHOMEから解決される$HOME/.yoi/workersを使用。fixture_worker_metadata_rootartifact も同じ$HOME/.yoi/workersを記録するよう修正。active_worker_metadata_root(&home)helper を追加し、書き込み先と artifact 記録を同一関数で揃えた。
- E2E fixture の Worker metadata helper を active code の
Validation:
cargo fmt: successcargo check -p yoi-e2e: successgit diff --check: successcargo test -p yoi-e2e: successcargo check -p yoi: success
Final state:
- child worktree is clean.
Review: approve
approve
read-only で再レビューした。対象 HEAD は fdd902d5 fix: align e2e worker metadata root、worktree は clean。
確認した点:
- 前回 blocker の E2E Worker metadata root は解消済み。
tests/e2e/src/lib.rsでactive_worker_metadata_root(&fixture.home)を使い、helper write path と artifact path が同じ$HOME/.yoi/workersを参照している。write_blocking_worker_metadataもactive_worker_metadata_root(home)経由であり、manifest::paths::data_dir()の default HOME 解決と整合している。fixture_worker_metadata_rootartifact も同じ helper 経由で記録されている。
- 前回までの blocker 修正も維持されている。
yoi worker deleterefusal output はworker:。worker_allocationの user-facing error は Pod wording ではなく Worker/allocation wording。- E2E artifact/helper 名は
tested_yoi_worker_allocation/fixture_worker_metadata_root/write_blocking_worker_metadata。
- 旧 crate / authority 参照の除去を再確認。
crates/pod,crates/pod-registry,crates/pod-storeは不在。- workspace / active dependency / lock / package への
pod-registry/pod-store参照は見当たらない。 pod_registry_path,pod_registry::,pod_store::など旧 API authority 参照も active source では見当たらない。
git diff --check HEAD^ HEAD: success。- 報告 validation(
cargo fmt,cargo check -p yoi-e2e,cargo test -p yoi-e2e,cargo check -p yoi)は、今回の diff と import/path 整合性から plausible。read-only 指示のため cargo 系は再実行していない。
ブロッカーはない。
Implementation report
Merge / validation report:
Implementation branch was integrated into the orchestration branch after reviewer approval.
Integrated commits:
17a9488a4aa0a3dc83be2d3360b6ffd8ffcaeb5a refactor: remove old pod cratesc46e880b fix: finish worker wording cleanupfdd902d5 fix: align e2e worker metadata root
Merge commit:
83d433bf merge: old pod crate cleanup
Validation in orchestration worktree:
cargo fmt --all --check: successcargo test -p worker-runtime --features ws-server: successcargo test -p yoi-workspace-server: successcargo test -p worker: successcargo test -p session-store: successcargo check -p yoi: successcargo check -p yoi-e2e: successcd web/workspace && deno task check: successgit diff --check: successnix build .#yoi --no-link: success
Outcome:
crates/pod-registryandcrates/pod-storewere removed from workspace/package/lock/source.crates/podremains absent.- Worker metadata store responsibility moved to
session-store::worker_metadataunder Worker naming. - Runtime allocation implementation now lives under
worker::runtime::worker_allocationand is documented as scope allocation, not Runtime Worker identity/creation/durable-persistence authority. - Active CLI/tool/test output was renamed away from old Pod authority wording.
- E2E worker metadata fixture now uses the active
$HOME/.yoi/workersdata root resolution rather thanXDG_DATA_HOME/yoi/workers. - Runtime Worker identity / creation / persistence remains
worker-runtimefs-store + execution backend mapping authority. - No stale compatibility alias preserving old Pod store authority was introduced.
State changed
Reviewer approval後に implementation branch を orchestration branch へ merge し、要求された validation が成功したため done に遷移する。
Validation:
cargo fmt --all --check: successcargo test -p worker-runtime --features ws-server: successcargo test -p yoi-workspace-server: successcargo test -p worker: successcargo test -p session-store: successcargo check -p yoi: successcargo check -p yoi-e2e: successcd web/workspace && deno task check: successgit diff --check: successnix build .#yoi --no-link: success
State changed
Ticket を closed にしました。
完了
旧 Pod 関連 crate を削除し、Worker/Runtime/session-store 境界へ整理した実装を reviewer approval 後に orchestration branch へ merge した。
実装内容:
crates/pod-registryとcrates/pod-storeを workspace / package / lock / source から削除。crates/podは引き続き absent。pod-store相当の Worker metadata persistence をsession-store::worker_metadataへ移管。- Worker metadata root を active Worker data root 側へ整理。
pod-registry相当の scope allocation 実装をworker::runtime::worker_allocationへ移管し、Runtime Worker identity / creation / durable persistence authority ではないことを明記。- active CLI / tool / test artifact output を旧 Pod authority wording から Worker / allocation / metadata wording へ変更。
- TUI / yoi / worker の active old crate dependency を削除。
- E2E fixture の Worker metadata root を active
manifest::paths::data_dir()default resolution と整合する$HOME/.yoi/workersに変更。 - Runtime Worker identity / creation / persistence authority は
worker-runtimefs-store + execution backend mapping のまま維持。 - old Pod registry/store/socket/name を active authority として残す互換 alias は導入していない。
Integrated commits:
17a9488a4aa0a3dc83be2d3360b6ffd8ffcaeb5a refactor: remove old pod cratesc46e880b fix: finish worker wording cleanupfdd902d5 fix: align e2e worker metadata root- merge:
83d433bf merge: old pod crate cleanup
Validation:
cargo fmt --all --check: successcargo test -p worker-runtime --features ws-server: successcargo test -p yoi-workspace-server: successcargo test -p worker: successcargo test -p session-store: successcargo check -p yoi: successcargo check -p yoi-e2e: successcd web/workspace && deno task check: successgit diff --check: successnix build .#yoi --no-link: success
Operational note:
- User instructed not to use
StopPodfor now after repeated stop/hang symptoms. Cleanup will skip role-Pod shutdown and remove only child implementation worktree / branch.
Implementation report
Cleanup report:
- User instructed not to use
StopPodfor now after repeated stop/hang symptoms. Role Pod shutdown was intentionally skipped. - Child implementation worktree was removed:
/home/hare/Projects/yoi/.worktree/00001KW7835H0-old-pod-crate-cleanup
- Child implementation branch was removed:
work/00001KW7835H0-old-pod-crate-cleanup
- No root/original workspace cleanup was performed.
- Orchestration worktree is clean after worktree/branch cleanup.
Queue note:
- The Dashboard-queued chain related to Runtime Worker launch/fs-store/old Pod crate cleanup is now complete/closed.