7.3 KiB
| title | state | created_at | updated_at | assignee | queued_by | queued_at |
|---|---|---|---|---|---|---|
| Panel Orchestrator起動時に専用orchestration worktreeを自動作成・再利用する | inprogress | 2026-06-11T05:15:14Z | 2026-06-11T07:54:44Z | null | workspace-panel | 2026-06-11T07:41:37Z |
背景
00001KTTB479X で、Orchestrator の runtime workspace / Ticket backend root と、implementation worktree を作る original workspace root、および merge target workspace root を分離する 4-root model が導入された。
role_workspace_root
original_workspace_root
implementation_worktree_root
merge_target_workspace_root
ただし、現時点では Panel / workspace orchestration が実際に dedicated orchestration worktree を作成し、その worktree を role_workspace_root として Orchestrator を起動する経路は follow-up 境界として残っている。通常起動では多くの場合、role_workspace_root == original_workspace_root == merge_target_workspace_root のままである。
filesystem Ticket backend では .yoi/tickets が Git 管理ファイルであるため、ユーザーの main workspace と Orchestrator が同じ worktree / branch の Ticket record を同時に触ると、draft / queue / orchestration progress / project record / Git dirty state が混ざりやすい。Orchestrator を専用 orchestration worktree で実行し、main workspace の未投入 draft と Orchestrator の active queue / progress を分離する必要がある。
ゴール
Workspace Panel から Orchestrator を起動・復元する際に、original workspace root 配下の .worktree に専用 orchestration worktree を自動作成または再利用し、その worktree を Orchestrator Pod の workspace_root / role_workspace_root として使う。
Implementation worktree は引き続き original workspace root の .worktree/<ticket-or-task> に sibling として作成し、orchestration worktree の子や相対 path にはしない。
要件
- Panel / workspace Orchestrator lifecycle に dedicated orchestration worktree launch path を追加する。
- Orchestrator 起動時の root を明確に分ける。
role_workspace_root: dedicated orchestration worktree。original_workspace_root: Panel を開いた元 workspace root。implementation_worktree_root:<original_workspace_root>/.worktree。merge_target_workspace_root: default は original workspace root。将来 configured target branch/workspace を許容できる設計にする。
- orchestration worktree の path / branch naming policy を定義する。
- 例:
<original_workspace_root>/.worktree/orchestration/<workspace-or-session-slug>。 - branch 例:
orchestration/<workspace-or-session-slug>。 - path/branch 名は collision-safe かつ workspace ごとに安定する。
- 例:
- 既存 orchestration worktree がある場合の reuse / attach / fail policy を定義する。
- clean and valid なら reuse する。
- dirty / missing branch / inconsistent Git metadata / live conflicting Pod がある場合は安全に診断し、破壊的 cleanup はしない。
- orchestration worktree 作成は explicit Panel Orchestrator lifecycle の一部として扱い、通常の implementation worktree 作成とは区別する。
- Orchestrator role launch では
TicketRoleLaunchContextに distinct roots を populate する。workspace_rootは orchestration worktree。original_workspace_rootは元 workspace root。target_workspace_rootは merge target workspace root。
SpawnConfig.workspace_rootは Orchestrator の runtime workspace / Ticket backend root として orchestration worktree を指す。- Orchestrator prompt の
Workspace routing contextに distinct roots が出ることを維持する。 - main workspace の未投入 Ticket draft / local planning は、明示的に orchestration worktree へ取り込むまで Orchestrator queue として扱わない。
- implementation worktree は orchestration worktree から派生させず、original workspace root の
.worktree/<ticket-or-task>に作る guidance / launch context を維持する。 - merge-completion は process cwd ではなく recorded
merge_target_workspace_rootで実行する guidance を維持する。 - cleanup 方針を最小限定義する。
- orchestration worktree の自動削除はこの Ticket では慎重に扱い、少なくとも dirty/unknown worktree を自動削除しない。
- implementation worktree cleanup とは別物として扱う。
- UI / diagnostics で、Panel が見ている Orchestrator / Ticket backend root が main workspace ではなく orchestration worktree であることを確認できるようにする。
- Git 操作は安全側に倒す。
git worktree add/ branch 作成前に existing path/branch/worktree を確認する。- unrelated dirty state を破壊しない。
- push はしない。
受け入れ条件
- Ticket-enabled workspace で Panel が Orchestrator を spawn する際、dedicated orchestration worktree が作成または再利用される。
- Orchestrator Pod の
workspace_root/ runtime cwd / Ticket backend root が orchestration worktree になる。 - Orchestrator launch prompt に distinct root context が含まれる。
role_workspace_root= orchestration worktree。original_workspace_root= 元 workspace root。implementation_worktree_root=<original_workspace_root>/.worktree。merge_target_workspace_root= target workspace root。
- Orchestrator が implementation worktree を作る際の guidance は original workspace root 配下を指す。
- Orchestrator が merge/validation/cleanup する際の guidance は recorded merge target workspace を指す。
- 既存 orchestration worktree を安全に reuse できる。
- dirty / inconsistent / conflicting orchestration worktree がある場合、Panel は分かる診断を出し、破壊的 cleanup や上書きをしない。
- main workspace の Ticket draft が、単に main workspace に存在するだけでは dedicated orchestration worktree の Orchestrator queue にならない運用境界が維持される。
- tests が追加・更新されている。
- orchestration worktree path/branch naming。
- existing worktree reuse / unsafe state diagnostics。
TicketRoleLaunchContextroots population。SpawnConfig.workspace_rootが orchestration worktree を指すこと。- prompt に root context が出ること。
cargo test -p tuiまたは targeted TUI/client tests、cargo fmt --check、git diff --check、target/debug/yoi ticket doctorが通る。
非目標
- Ticket backend を Git 外 store に移行すること。
- implementation worktree の host-side full automation を再設計すること。
- Orchestrator が push すること。
- orchestration worktree の破壊的自動 cleanup を導入すること。
- main workspace への project record publication policy を完全に解くこと。
- Git worktree を使わない project 向けの別 storage backend をこの Ticket で設計すること。
関連
00001KTTB479X: 4-root model と prompt/workflow guidance。dedicated Orchestrator worktree の実起動は follow-up 境界。00001KTG3AZQ8: implementation worktree + coder/reviewer routing。host-side Git automation ではなく Orchestrator guidance ベース。