ticket: route embedded no-workdir worker work
This commit is contained in:
parent
0f2d7263a8
commit
83c9d8844d
|
|
@ -1,2 +1,3 @@
|
||||||
{"id":"orch-plan-20260710-220020-1","ticket_id":"00001KX6WVNPD","kind":"after","related_ticket":"00001KX6Y2A9Q","note":"Ticket has explicit typed `depends_on` relation to `00001KX6Y2A9Q`. That prerequisite is currently `inprogress` implementing the WorkerFilesystemAuthority boundary this Ticket relies on. Start only after `00001KX6Y2A9Q` is approved, merged, and closed or an explicit combined-work decision is made.","author":"orchestrator","at":"2026-07-10T22:00:20Z"}
|
{"id":"orch-plan-20260710-220020-1","ticket_id":"00001KX6WVNPD","kind":"after","related_ticket":"00001KX6Y2A9Q","note":"Ticket has explicit typed `depends_on` relation to `00001KX6Y2A9Q`. That prerequisite is currently `inprogress` implementing the WorkerFilesystemAuthority boundary this Ticket relies on. Start only after `00001KX6Y2A9Q` is approved, merged, and closed or an explicit combined-work decision is made.","author":"orchestrator","at":"2026-07-10T22:00:20Z"}
|
||||||
{"id":"orch-plan-20260710-220024-2","ticket_id":"00001KX6WVNPD","kind":"waiting_capacity_note","note":"Dashboard queue routing inspected. This Ticket is otherwise concrete, but typed relation metadata reports blocker `00001KX6Y2A9Q` in state `inprogress`. That prerequisite introduces/removes the Worker filesystem-authority/cwd boundary used by this Ticket. Starting now would duplicate or conflict with that refactor. Leave queued and re-route after prerequisite merge/close.","author":"orchestrator","at":"2026-07-10T22:00:24Z"}
|
{"id":"orch-plan-20260710-220024-2","ticket_id":"00001KX6WVNPD","kind":"waiting_capacity_note","note":"Dashboard queue routing inspected. This Ticket is otherwise concrete, but typed relation metadata reports blocker `00001KX6Y2A9Q` in state `inprogress`. That prerequisite introduces/removes the Worker filesystem-authority/cwd boundary used by this Ticket. Starting now would duplicate or conflict with that refactor. Leave queued and re-route after prerequisite merge/close.","author":"orchestrator","at":"2026-07-10T22:00:24Z"}
|
||||||
|
{"id":"orch-plan-20260710-233758-3","ticket_id":"00001KX6WVNPD","kind":"accepted_plan","accepted_plan":{"summary":"Implement embedded Runtime no-workdir Worker creation policy using the merged `WorkerFilesystemAuthority` boundary: embedded Runtime may create Workers without selected workdir using `WorkerFilesystemAuthority::None`, non-embedded/local-authority paths preserve workdir requirements, no-workdir Workers expose no filesystem/Bash tool surface, and UI/API make workdir optional only for embedded Runtime.","branch":"work/00001KX6WVNPD-embedded-no-workdir-policy","worktree":"/home/hare/Projects/yoi/.worktree/00001KX6WVNPD-embedded-no-workdir-policy","role_plan":"Orchestrator accepts queued Ticket after prerequisite `00001KX6Y2A9Q` was approved, merged, validated, and closed. Use sibling Coder for implementation in a dedicated worktree, then sibling Reviewer for read-only review. Orchestrator retains merge/final-validation/close/worktree cleanup authority. Per current user instruction, do not call StopPod during cleanup."},"author":"orchestrator","at":"2026-07-10T23:37:58Z"}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
---
|
---
|
||||||
title: 'Embedded no-workdir Worker authority policy'
|
title: 'Embedded no-workdir Worker authority policy'
|
||||||
state: 'queued'
|
state: 'inprogress'
|
||||||
priority: 'P1'
|
priority: 'P1'
|
||||||
created_at: '2026-07-10T20:52:43Z'
|
created_at: '2026-07-10T20:52:43Z'
|
||||||
updated_at: '2026-07-10T22:00:33Z'
|
updated_at: '2026-07-10T23:38:34Z'
|
||||||
assignee: null
|
assignee: null
|
||||||
queued_by: 'workspace-panel'
|
queued_by: 'workspace-panel'
|
||||||
queued_at: '2026-07-10T22:00:07Z'
|
queued_at: '2026-07-10T22:00:07Z'
|
||||||
|
|
|
||||||
|
|
@ -88,3 +88,89 @@ Next action:
|
||||||
- Escalate only if a human explicitly requests combined implementation in the same branch/worktree。
|
- Escalate only if a human explicitly requests combined implementation in the same branch/worktree。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<!-- event: decision author: orchestrator at: 2026-07-10T23:38:28Z -->
|
||||||
|
|
||||||
|
## Decision
|
||||||
|
|
||||||
|
Routing decision: implementation_ready
|
||||||
|
|
||||||
|
Reason:
|
||||||
|
- 前提 Ticket `00001KX6Y2A9Q` は approved / merged / final-validated / closed 済みで、`WorkerFilesystemAuthority::{None, Local}` と no-workdir core filesystem/Bash tool omission boundary が利用可能になった。
|
||||||
|
- この Ticket は embedded Runtime の workdir 未指定 Worker 作成 policy と UI/API 制約に集中しており、目的・binding decision・受け入れ条件が具体的である。
|
||||||
|
- `TicketRelationQuery(00001KX6WVNPD)` の blocker view は空で、残る outgoing `depends_on 00001KX6Y2A9Q` は closed prerequisite になっている。
|
||||||
|
- `TicketOrchestrationPlanQuery(00001KX6WVNPD)` の既存 waiting note は prerequisite inprogress を理由にしたものだったため、現在は解消済み。
|
||||||
|
- Orchestrator worktree は clean。既存 child implementation branch/worktree は見当たらない。
|
||||||
|
|
||||||
|
Evidence checked:
|
||||||
|
- Ticket body / thread / relations / orchestration plan。
|
||||||
|
- Related closed Ticket `00001KX6Y2A9Q` resolution/review/validation evidence。
|
||||||
|
- `TicketList(inprogress)`: 0 件。
|
||||||
|
- `git status --short --branch` and `git worktree list` in `/home/hare/Projects/yoi/.worktree/orchestration`。
|
||||||
|
- Current queue also contains related `00001KX6Y6ZEA`, but its Worker workspace-backend refactor touches overlapping Worker context/constructor surfaces; it will be held separately with a conflict/migration-boundary reason rather than started in parallel。
|
||||||
|
|
||||||
|
IntentPacket:
|
||||||
|
|
||||||
|
Intent:
|
||||||
|
- Embedded Runtime 選択時に、workdir 未指定の guidance/conversation-oriented Worker を作成できるようにする。
|
||||||
|
- Embedded no-workdir Worker は `WorkerFilesystemAuthority::None` として作られ、repository filesystem authority / cwd fallback / filesystem tools / Bash を持たない。
|
||||||
|
|
||||||
|
Binding decisions / invariants:
|
||||||
|
- no-workdir authority は merged `WorkerFilesystemAuthority::None` を使う。
|
||||||
|
- workspace root / process cwd / runtime cwd / manifest override / default scope を filesystem authority fallback にしない。
|
||||||
|
- filesystem tools (`Read`, `Write`, `Edit`, `Glob`, `Grep`) と `Bash` は no-workdir embedded Worker では construct/register/model-visible にしない。
|
||||||
|
- Bash は filesystem sandbox ではないため、no-workdir embedded では登録しない。
|
||||||
|
- non-embedded または local/filesystem-authority-required launch path では、既存の workdir 必須制約または明示 authority requirement を維持する。
|
||||||
|
- Worker 直下の `cwd` property / `worker.cwd()` 前提に戻さない。
|
||||||
|
|
||||||
|
Requirements / acceptance criteria:
|
||||||
|
- UI/API 経由で embedded Runtime の workdir 未指定 Worker create ができる。
|
||||||
|
- embedded + workdir ありは materialized binding を `WorkerFilesystemAuthority::Local` と Worker summary/detail に反映する。
|
||||||
|
- embedded + workdir なしは `WorkerFilesystemAuthority::None` になり、model-visible tool surface に fs tools / Bash が出ないことをテストで確認できる。
|
||||||
|
- `Glob` / `Grep` path 省略や `Bash` initial directory が no-workdir embedded の権限漏れにならない。
|
||||||
|
- Browser/UI では workdir optional が embedded Runtime に限られ、non-embedded/local authority path の制約を緩めない。
|
||||||
|
|
||||||
|
Implementation latitude:
|
||||||
|
- API DTO / UI form model / runtime spawn request shape の具体的な整理は coder が既存 pattern に沿って選んでよい。
|
||||||
|
- workdir 未指定状態の UI 表示文言・validation placement は、binding invariant を満たす範囲で local tactic としてよい。
|
||||||
|
- tests の配置は worker-runtime / workspace-server / web の既存近接 test pattern に合わせてよい。
|
||||||
|
|
||||||
|
Escalate if:
|
||||||
|
- embedded no-workdir Worker に workspace API access を付けるために `WorkspaceBackend` / `WorkspaceClient` の先行導入が必須になる場合。
|
||||||
|
- no-workdir Worker へ fs/Bash tool の error-only stub や empty-scope fallback を登録したくなる場合。
|
||||||
|
- non-embedded Worker の workdir requirement を緩める必要が出る場合。
|
||||||
|
- `WorkerFilesystemAuthority` の既存 invariant を変更する必要が出る場合。
|
||||||
|
|
||||||
|
Validation:
|
||||||
|
- `git diff --check`
|
||||||
|
- focused grep/check that no no-workdir path reintroduces `worker.cwd()` or local cwd fallback。
|
||||||
|
- `cargo test -p worker --lib --tests` if worker crate is touched。
|
||||||
|
- `cargo test -p worker-runtime --features ws-server,fs-store`
|
||||||
|
- `cargo test -p yoi-workspace-server --lib`
|
||||||
|
- `cargo check -p yoi`
|
||||||
|
- `cd web/workspace && deno task check && deno task test` if web/API/types are touched。
|
||||||
|
- `yoi ticket doctor`
|
||||||
|
- `nix build .#yoi --no-link`
|
||||||
|
|
||||||
|
Current code map / likely touch points:
|
||||||
|
- `crates/worker/src/worker.rs`, `crates/worker/src/controller.rs` for existing authority boundary verification only if needed。
|
||||||
|
- `crates/worker-runtime/src/worker_backend.rs` / working-directory binding and embedded spawn paths。
|
||||||
|
- `crates/workspace-server/src/server.rs` / API DTOs for Worker create/runtime options。
|
||||||
|
- `web/workspace` worker creation UI/types if workdir optionality is exposed there。
|
||||||
|
|
||||||
|
Critical risks / reviewer focus:
|
||||||
|
- Hidden filesystem authority through workspace root / process cwd / runtime cwd fallback。
|
||||||
|
- no-workdir Worker showing fs tools/Bash in model-visible schema。
|
||||||
|
- empty-scope/error-only fs tool registration rather than no registration。
|
||||||
|
- UI/API accidentally allowing non-embedded no-workdir Worker where local filesystem authority is still required。
|
||||||
|
- regression of embedded workdir-present Worker status/tool cwd behavior。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<!-- event: state_changed author: orchestrator at: 2026-07-10T23:38:34Z from: queued to: inprogress reason: accepted_for_implementation field: state -->
|
||||||
|
|
||||||
|
## State changed
|
||||||
|
|
||||||
|
Prerequisite `00001KX6Y2A9Q` is now closed and merged. This Ticket is accepted for implementation before creating a worktree or spawning role Pods.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,3 @@
|
||||||
{"id":"orch-plan-20260710-220343-1","ticket_id":"00001KX6Y6ZEA","kind":"after","related_ticket":"00001KX6Y2A9Q","note":"Ticket has explicit typed `depends_on` relation to `00001KX6Y2A9Q`. The prerequisite WorkerFilesystemAuthority refactor is currently `inprogress` and establishes the filesystem-authority/workspace-boundary this Ticket builds on. Start only after the prerequisite is approved, merged, and closed or an explicit combined-work decision is made.","author":"orchestrator","at":"2026-07-10T22:03:43Z"}
|
{"id":"orch-plan-20260710-220343-1","ticket_id":"00001KX6Y6ZEA","kind":"after","related_ticket":"00001KX6Y2A9Q","note":"Ticket has explicit typed `depends_on` relation to `00001KX6Y2A9Q`. The prerequisite WorkerFilesystemAuthority refactor is currently `inprogress` and establishes the filesystem-authority/workspace-boundary this Ticket builds on. Start only after the prerequisite is approved, merged, and closed or an explicit combined-work decision is made.","author":"orchestrator","at":"2026-07-10T22:03:43Z"}
|
||||||
{"id":"orch-plan-20260710-220349-2","ticket_id":"00001KX6Y6ZEA","kind":"waiting_capacity_note","note":"Dashboard queue routing inspected. This Ticket is concrete but blocked by typed `depends_on` relation to `00001KX6Y2A9Q`, which is currently inprogress. Starting now would conflict with the Worker struct/context/constructor refactor and filesystem-authority boundary. Leave queued and re-route after prerequisite merge/close.","author":"orchestrator","at":"2026-07-10T22:03:49Z"}
|
{"id":"orch-plan-20260710-220349-2","ticket_id":"00001KX6Y6ZEA","kind":"waiting_capacity_note","note":"Dashboard queue routing inspected. This Ticket is concrete but blocked by typed `depends_on` relation to `00001KX6Y2A9Q`, which is currently inprogress. Starting now would conflict with the Worker struct/context/constructor refactor and filesystem-authority boundary. Leave queued and re-route after prerequisite merge/close.","author":"orchestrator","at":"2026-07-10T22:03:49Z"}
|
||||||
|
{"id":"orch-plan-20260710-233841-3","ticket_id":"00001KX6Y6ZEA","kind":"waiting_capacity_note","note":"Queue review resumed after prerequisite `00001KX6Y2A9Q` closed. `00001KX6WVNPD` was accepted first because it is the smaller embedded no-workdir policy MVP and explicitly does not require WorkspaceBackend migration. This Ticket remains queued due migration-boundary/conflict risk: it removes Worker `workspace_root` and introduces WorkspaceBackend/WorkspaceClient surfaces in the same Worker context/constructor/runtime code that `00001KX6WVNPD` is now changing. Re-route after `00001KX6WVNPD` is reviewed/merged/closed, unless a human explicitly requests a combined branch.","author":"orchestrator","at":"2026-07-10T23:38:41Z"}
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ title: 'Replace Worker workspace_root path with WorkspaceBackend'
|
||||||
state: 'queued'
|
state: 'queued'
|
||||||
priority: 'P1'
|
priority: 'P1'
|
||||||
created_at: '2026-07-10T21:16:22Z'
|
created_at: '2026-07-10T21:16:22Z'
|
||||||
updated_at: '2026-07-10T22:03:57Z'
|
updated_at: '2026-07-10T23:38:54Z'
|
||||||
assignee: null
|
assignee: null
|
||||||
queued_by: 'workspace-panel'
|
queued_by: 'workspace-panel'
|
||||||
queued_at: '2026-07-10T22:03:27Z'
|
queued_at: '2026-07-10T22:03:27Z'
|
||||||
|
|
|
||||||
|
|
@ -98,3 +98,29 @@ Next action:
|
||||||
- Escalate only if a human explicitly requests combined implementation in the same branch/worktree。
|
- Escalate only if a human explicitly requests combined implementation in the same branch/worktree。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<!-- event: decision author: orchestrator at: 2026-07-10T23:38:54Z -->
|
||||||
|
|
||||||
|
## Decision
|
||||||
|
|
||||||
|
Routing decision: hold_queued_due_migration_boundary_conflict
|
||||||
|
|
||||||
|
Reason:
|
||||||
|
- 前提 `00001KX6Y2A9Q` は closed になったため dependency 自体は解消済み。
|
||||||
|
- ただし、この routing pass では `00001KX6WVNPD` を先に受理した。
|
||||||
|
- `00001KX6WVNPD` は embedded no-workdir policy MVP であり、WorkspaceBackend migration を必要としない小さい境界変更である。
|
||||||
|
- この Ticket は Worker `workspace_root` path を `WorkspaceBackend` に置き換える refactor で、Worker struct/context/constructor/runtime spawn/UI API 周辺に触れる。
|
||||||
|
- `00001KX6WVNPD` も同じ Worker create / embedded runtime / no-workdir authority surface に触るため、並行 branch で進めると conflict と review boundary 混濁の可能性が高い。
|
||||||
|
- よって、この Ticket は `queued` のまま保持し、`00001KX6WVNPD` が reviewed/merged/closed になってから再 routing する。
|
||||||
|
|
||||||
|
Evidence checked:
|
||||||
|
- Ticket body / thread / relations / orchestration plan。
|
||||||
|
- `TicketRelationQuery(00001KX6Y6ZEA)`: prerequisite `00001KX6Y2A9Q` は closed。
|
||||||
|
- `TicketList(inprogress)`: routing pass 中に `00001KX6WVNPD` を accepted for implementation。
|
||||||
|
- Orchestrator worktree status: clean。
|
||||||
|
|
||||||
|
Next action:
|
||||||
|
- `00001KX6WVNPD` の implementation/review/merge/close を完了後、この Ticket を再 routing する。
|
||||||
|
- 人間が combined branch を明示希望する場合のみ、この待機判断を再検討する。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user