5.1 KiB
| id | slug | title | status | kind | priority | labels | workflow_state | created_at | updated_at | assignee | legacy_ticket | queued_by | queued_at | |||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 20260608-011036-allow-spawnpod-child-workspace-cwd | allow-spawnpod-child-workspace-cwd | Allow SpawnPod to specify child cwd | open | task | P2 |
|
inprogress | 2026-06-08T01:10:36Z | 2026-06-08T08:08:10Z | null | null | workspace-panel | 2026-06-08T03:06:04Z |
Background
Current multi-agent/worktree workflows assume Coder/Reviewer Pods are spawned with the parent Orchestrator's cwd, usually the main workspace. Worktree isolation is enforced by delegated write scope and by task text instructing the Coder to run every Bash command with cd <repo>/.worktree/<task-name> && ....
Current workflow text explicitly says:
Pod の cwd は main workspace のままになる。必ず作業対象が child worktree であることを明示し、Bash 実行時は毎回 cd <repo>/.worktree/<task-name> && ... させる。
This works but is fragile and awkward:
- Coder can forget to
cdbefore commands. - Bash/tool execution starts from the main workspace even when all edits should happen in the child worktree.
- Command snippets are noisy and error-prone.
- Child worktree behavior is controlled by prompt discipline rather than runtime configuration.
SpawnPod currently has no LLM-facing cwd field; internally child processes are launched with Command::current_dir(self.spawner_pwd).
This ticket is not about changing the child Pod's runtime workspace root. A spawned child remains in the same project/workspace context as its parent. The improvement is only to let the child process/tool cwd point at a child worktree inside that workspace.
Goal
Allow SpawnPod callers to specify the child Pod's process/tool cwd, so implementation Pods can start directly inside their child worktree while inheriting the parent workspace context and keeping explicit scope delegation.
Requirements
- Add a
SpawnPodinput field namedcwdfor the child process/tool working directory. - When omitted, preserve current behavior: child cwd defaults to the spawner Pod's pwd.
cwdmust not change the runtime workspace root.- Child Pods inherit the parent workspace/project context.
- Profile discovery, project records, Ticket config, workflow registry, memory root resolution start point, and Pod identity policy should continue to use the inherited runtime workspace context unless another explicit design says otherwise.
- When
cwdis provided:- Validate the path is absolute.
- Validate the path exists and is a directory.
- Validate the parent has at least read authority for the path.
- Set the child process
current_dirto that path. - Ensure Bash/tool default cwd uses that path.
- Ensure delegated scope remains explicit and independent from cwd.
- cwd does not grant permission by itself.
- Child read/write scope must still be supplied through
scopeand validated against parent/delegation authority.
- Support the standard worktree case:
- inherited workspace root = main repo;
- child cwd =
<repo>/.worktree/<task-name>; - child read scope may include main repo if needed;
- child write scope is the child worktree or narrower.
- Update
worktree-workflowandmulti-agent-workflowto prefer spawning Coder Pods withcwdset to the child worktree instead of telling them tocdevery time. - Keep main workspace authority responsibilities explicit:
- ticket orchestration progress, final review/approval/close, and merge authority remain with Orchestrator/main workspace unless intentionally delegated.
- Ensure child worktree
.yoisparse rules and.yoi/memorybehavior remain intact. - Add diagnostics if requested cwd is not permitted or invalid.
Design notes
- The field should be named
cwd, notworkspace_root, because SpawnPod children should not move into a different workspace. They only need a different process/tool working directory inside the same workspace context. cwdshould not affect default Pod name.SpawnPod.nameis already explicit.cwdshould not affect Profile selection or project profile discovery.- Reviewer Pods may use main workspace cwd or child worktree cwd depending on review style; workflow guidance should state the recommended default rather than make
cwdimply review authority.
Acceptance criteria
SpawnPodcan launch a child Pod with process/tool cwd set to an explicit child worktree path.- The child Pod's Bash tool starts fresh shells rooted at that child worktree without requiring
cdin every command. - Omitting
cwdpreserves current behavior. - Invalid/non-directory/out-of-scope cwd requests fail with clear errors.
- cwd selection does not grant implicit read/write permission and does not alter inherited workspace context.
- Worktree/multi-agent workflows are updated to use the new field for coder Pods.
- Tests cover omitted/default cwd, explicit valid cwd, invalid cwd, permission denial, and workspace-context inheritance.
- Focused tests,
cargo fmt --check,git diff --check, andtarget/debug/yoi ticket doctorpass.