2.6 KiB
2.6 KiB
| title | state | created_at | updated_at | assignee | queued_by | queued_at |
|---|---|---|---|---|---|---|
| Profile launch should preserve override scope allowances | closed | 2026-06-20T10:48:57Z | 2026-06-20T12:13:32Z | null | workspace-panel | 2026-06-20T11:52:33Z |
背景
yoi pod の Profile launch で workspace-local .yoi/override.local.toml に [[scope.allow]] を追加しても、起動後の Pod が追加 scope を読めない問題がある。
調査では、resolver は override を検出しており、Pod metadata の resolved_manifest_snapshot.profile.workspace_override に override path も記録されていた。一方で、最終的な resolved_manifest_snapshot.scope.allow には workspace root の write scope だけが残り、override 由来の追加 read scope が消えていた。
原因は crates/pod/src/entrypoint.rs の apply_profile_launch_policy() が Profile launch 時に manifest.scope を workspace_scope(...) で丸ごと再代入しているため。crates/manifest/src/profile.rs で workspace override は一旦 merge されるが、その後段で scope が上書きされる。
再現例:
# /home/hare/Projects/yoi-discord-bridge/.yoi/override.local.toml
[[scope.allow]]
target = "/home/hare/Projects/yoi"
permission = "read"
recursive = true
yoi-discord-bridge Pod の metadata では workspace_override は上記 override を指すが、resolved_manifest_snapshot.scope.allow に /home/hare/Projects/yoi が含まれない。
要件
- Profile launch policy は workspace 用の安全な既定 scope / delegation を付与しつつ、Profile/override で明示された追加
scope.allowを失わない。 - workspace root write scope と
.worktreewrite deny の既定挙動は維持する。 - Ticket role 用の Profile launch policy でも、既存の role 制約を破らない形で追加 scope の扱いを明確化する。
resolved_manifest_snapshotに保存される最終 Manifest が、実際に model/tool に提示される readable/writable scope と一致する。
受け入れ条件
.yoi/override.local.tomlの追加[[scope.allow]]が Profile launch 後のresolved_manifest_snapshot.scope.allowに残ることをテストで確認する。- 通常 Pod launch で workspace root write scope と
.worktreewrite deny が引き続き付与されることを確認する。 - Ticket role launch の scope/delegation 既定が壊れていないことを確認する。
- 既存 metadata snapshot を restore する場合に override が再評価されない挙動は、今回の修正対象外または明確に別問題として扱う。