yoi/.yoi/tickets/00001KVJABS1A/item.md

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.rsapply_profile_launch_policy() が Profile launch 時に manifest.scopeworkspace_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 と .worktree write 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 と .worktree write deny が引き続き付与されることを確認する。
  • Ticket role launch の scope/delegation 既定が壊れていないことを確認する。
  • 既存 metadata snapshot を restore する場合に override が再評価されない挙動は、今回の修正対象外または明確に別問題として扱う。