ticket: align embedded policy with filesystem authority

This commit is contained in:
Keisuke Hirata 2026-07-11 06:54:22 +09:00
parent 5c228a7fae
commit f7191056b7
No known key found for this signature in database
3 changed files with 22 additions and 12 deletions

View File

@ -5,7 +5,7 @@
"ticket_id": "00001KX6WVNPD", "ticket_id": "00001KX6WVNPD",
"kind": "depends_on", "kind": "depends_on",
"target": "00001KX6Y2A9Q", "target": "00001KX6Y2A9Q",
"note": "Embedded no-workdir Worker policy requires WorkerFilesystemAuthority::None so cwd/workspace-root fallback is not filesystem authority.", "note": "Embedded no-workdir Worker policy requires WorkerFilesystemAuthority::None so workspace-root/default-scope fallback is not filesystem authority.",
"author": "yoi ticket", "author": "yoi ticket",
"at": "2026-07-10T21:24:10Z" "at": "2026-07-10T21:24:10Z"
} }

View File

@ -3,7 +3,7 @@ title: 'Embedded no-workdir Worker authority policy'
state: 'planning' state: 'planning'
priority: 'P1' priority: 'P1'
created_at: '2026-07-10T20:52:43Z' created_at: '2026-07-10T20:52:43Z'
updated_at: '2026-07-10T21:32:47Z' updated_at: '2026-07-10T21:54:14Z'
assignee: null assignee: null
--- ---
@ -11,24 +11,25 @@ assignee: null
`worker/new` では現在 workdir 選択が必須になっているが、embedded Runtime 上に Worker を作る場合は workdir 無しで案内専用の Worker を起動できるようにしたい。 `worker/new` では現在 workdir 選択が必須になっているが、embedded Runtime 上に Worker を作る場合は workdir 無しで案内専用の Worker を起動できるようにしたい。
現状の整理では、`worker-runtime` の `CreateWorkerRequest` / `WorkerRecord.request` には `working_directory_request` / `working_directory` を保持でき、execution status にも `working_directory` を載せられる。一方、実際の FS tools の向き先はまだ Worker process の `cwd``manifest.scope` に依存している。`Read` / `Write` / `Edit` は絶対パス必須なので相対パスが即 cwd に吸われる問題は限定的だが、`Glob` / `Grep` の path 省略は `ScopedFs.cwd()` を使い、`Bash` は cwd を初期位置にするだけで filesystem sandbox ではない 現状の整理では、前提チケット `00001KX6Y2A9Q` で Worker の filesystem authority が `WorkerFilesystemAuthority::{None, Local}` に分離され、Worker 直下の作業ディレクトリ property は削除される。このチケットではその前提を使い、embedded Runtime の workdir 未指定 spawn を `WorkerFilesystemAuthority::None` として扱う
embedded no-workdir Worker では、workspace root への cwd fallback や default scope によって意図せず repository filesystem authority を持たないようにする必要がある。 embedded no-workdir Worker では、workspace root や default scope によって意図せず repository filesystem authority を持たないようにする必要がある。
## 要件 ## 要件
- `worker/new` は、選択 Runtime が embedded の場合に限り workdir 未指定で Create できる。 - `worker/new` は、選択 Runtime が embedded の場合に限り workdir 未指定で Create できる。
- embedded + workdir ありの場合は、Runtime/Execution backend が materialized working directory binding を Worker の effective cwd / status に反映する。 - embedded + workdir ありの場合は、Runtime/Execution backend が materialized working directory binding を `WorkerFilesystemAuthority::Local` と Worker status に反映する。
- embedded + workdir なしの場合は、workspace root fallback を filesystem authority として扱わない。 - embedded + workdir なしの場合は、`WorkerFilesystemAuthority::None` を指定し、workspace root fallback を filesystem authority として扱わない。
- embedded + workdir なしの場合は manifest overlay 等で filesystem tools / Bash / write-capable tools を無効化し、案内・会話中心の read-only/guidance-only Worker として扱う。 - embedded + workdir なしの場合は filesystem tools / Bash / write-capable tools を登録せず、案内・会話中心の read-only/guidance-only Worker として扱う。
- FS tools は ambient process cwd ではなく、Worker の explicit effective working directory / authority を基準にする方向へ整理する。 - FS tools は ambient process directory ではなく、Worker の explicit filesystem authority を基準に登録される。
- Bash は cwd 変更だけでは sandbox にならないため、no-workdir embedded では少なくとも無効化される - Bash は filesystem sandbox ではないため、no-workdir embedded では登録しない
## 受け入れ条件 ## 受け入れ条件
- embedded Runtime 選択時、UI/API 経由で workdir 未指定 Worker を作成できる。 - embedded Runtime 選択時、UI/API 経由で workdir 未指定 Worker を作成できる。
- non-embedded または filesystem authority が必要な Runtime/launch path では、既存の workdir 必須制約または明示 authority 要求が維持される。 - non-embedded または filesystem authority が必要な Runtime/launch path では、既存の workdir 必須制約または明示 authority 要求が維持される。
- embedded no-workdir Worker の manifest/effective tool surface から repository FS 操作と Bash が利用できないことをテストで確認できる。 - embedded no-workdir Worker は `WorkerFilesystemAuthority::None` で作成される。
- embedded workdir あり Worker では、working directory status が Worker summary/detail に投影され、tools の基準 cwd が binding に一致する。 - embedded no-workdir Worker の model-visible tool surface に filesystem tools と Bash が現れないことをテストで確認できる。
- `Glob` / `Grep` の path 省略や `Bash` の cwd に関する挙動が、no-workdir embedded の権限漏れにならない。 - embedded workdir あり Worker では、working directory status が Worker summary/detail に投影され、tools の working directory base が `WorkerFilesystemAuthority::Local` に一致する。
- `Glob` / `Grep` の path 省略や `Bash` の初期ディレクトリ指定が、no-workdir embedded の権限漏れにならない。
- 変更後に `cargo test``nix build .#yoi` が通る。 - 変更後に `cargo test``nix build .#yoi` が通る。

View File

@ -28,4 +28,13 @@ LocalTicketBackend によって作成されました。
Hard dependencies は WorkerFilesystemAuthority を共通前提に限定する。WorkspaceBackend 分離は embedded no-workdir policy の MVP には related だが depends_on にはしない。 Hard dependencies は WorkerFilesystemAuthority を共通前提に限定する。WorkspaceBackend 分離は embedded no-workdir policy の MVP には related だが depends_on にはしない。
---
<!-- event: decision author: hare at: 2026-07-10T21:54:14Z -->
## Decision
前提チケット `00001KX6Y2A9Q` で Worker 直下の作業ディレクトリ property は削除されるため、このチケットはその存在を前提にしない。embedded workdir ありは `WorkerFilesystemAuthority::Local`、workdir なしは `WorkerFilesystemAuthority::None` として扱い、tool registration もその authority から導出する。
--- ---