81 lines
5.2 KiB
Markdown
81 lines
5.2 KiB
Markdown
---
|
|
title: 'Project role profilesをbuiltin profilesへ移行する'
|
|
state: 'closed'
|
|
created_at: '2026-06-10T10:11:51Z'
|
|
updated_at: '2026-06-11T00:05:19Z'
|
|
assignee: null
|
|
queued_by: 'workspace-panel'
|
|
queued_at: '2026-06-10T11:16:43Z'
|
|
---
|
|
|
|
## 背景
|
|
|
|
現在、この workspace の Ticket role 用 Profile は project-local な `.yoi/profiles/*.lua` と `.yoi/profiles.toml` で定義されている。
|
|
|
|
対象例:
|
|
|
|
- `.yoi/profiles/_base.lua`
|
|
- `.yoi/profiles/companion.lua`
|
|
- `.yoi/profiles/intake.lua`
|
|
- `.yoi/profiles/orchestrator.lua`
|
|
- `.yoi/profiles/coder.lua`
|
|
- `.yoi/profiles/reviewer.lua`
|
|
|
|
これらは Yoi の標準的な role behavior / feature policy として汎用性が高く、各 project が個別に持つより builtin profile として提供した方がよい。Lua Profile API も `global yoi`、`yoi.profile.import`、`yoi.profile.extend` へ拡張済みなので、builtin default を base にした role-specific builtin profile を表現できる。
|
|
|
|
この Ticket は、現状 project 定義になっている標準 role profiles を `resources/profiles` 配下の builtin profiles へ移し、project config は builtin selector を参照するだけにするための follow-up である。
|
|
|
|
## 要件
|
|
|
|
- Ticket role 用の標準 Profile を builtin profile として追加する。
|
|
- `builtin:companion`
|
|
- `builtin:intake`
|
|
- `builtin:orchestrator`
|
|
- `builtin:coder`
|
|
- `builtin:reviewer`
|
|
- builtin role profiles は `resources/profiles` 配下で管理し、compile-time embedded resource として登録する。
|
|
- 既存 `builtin:default` と同じ Profile registry / resolver 経路で選択できるようにする。
|
|
- role profile は Lua Profile API の標準形を使う。
|
|
- global `yoi` object を使う。
|
|
- 必要なら `yoi.profile.extend("builtin:default", overrides)` などで default を base にする。
|
|
- `require("yoi.*")` 前提にはしない。
|
|
- 現在 project-local profiles が持っている feature/tool policy を builtin profile へ移す。
|
|
- Companion: direct implementation worker ではなく、Ticket/Pods/Task などの権限を持たない相談・状況把握 role とする。
|
|
- Intake: Ticket intake workflow 用の権限境界を維持する。
|
|
- Orchestrator: Ticket orchestration workflow に必要な権限を維持する。
|
|
- Coder: scoped implementation worker として必要な権限を維持する。
|
|
- Reviewer: review worker として必要な権限を維持する。
|
|
- `.yoi/ticket.config.toml` の role profile selector を project-local selector から builtin selector へ移行する。
|
|
- 例: `profile = "builtin:intake"`
|
|
- `.yoi/profiles.toml` と `.yoi/profiles/*.lua` の扱いを整理する。
|
|
- builtin 移行後に不要な project-local role profiles は削除するか、明示的な project override sample として残すかを判断し、理由を記録する。
|
|
- 残す場合は builtin を override する project-local profile として意味が明確であること。
|
|
- user/project 側で同名 profile を上書き・追加できる既存 registry semantics を壊さない。
|
|
- Profile import/extend は raw Profile artifact レベルで行い、resolved Manifest や runtime-bound field を builtin role profile に混ぜない。
|
|
- LLM-facing prompt / workflow 文言は Profile 内や Rust code に直書きしない。
|
|
- role behavior の文言は `.yoi/workflow` または `resources/prompts` の既存方針に従う。
|
|
- Profile は model / feature / permissions / memory / web / scope などの configuration に留める。
|
|
|
|
## 受け入れ条件
|
|
|
|
- `target/debug/yoi profile` または既存の profile listing/showing 経路で、role builtin profiles が確認できる。
|
|
- `builtin:companion` / `builtin:intake` / `builtin:orchestrator` / `builtin:coder` / `builtin:reviewer` が resolver で解決できる。
|
|
- `.yoi/ticket.config.toml` の roles が builtin profile selector を参照している。
|
|
- Ticket role launcher が builtin role profiles を使って既存通り起動できる。
|
|
- 現在の project-local role profiles と同等の feature/tool policy が維持されている。
|
|
- builtin role profiles は `resources/profiles/default.lua` と同じく global `yoi` style で書かれている。
|
|
- project-local `profiles.toml` / `.yoi/profiles/*.lua` の残存有無について、実装報告で理由が説明されている。
|
|
- Profile validation により、builtin role profiles が runtime-bound field や concrete authority を含まないことが確認されている。
|
|
- manifest crate の builtin profile registry / resolver test が追加・更新されている。
|
|
- Ticket role config / launcher 側の targeted test が必要に応じて追加・更新されている。
|
|
- `cargo test -p manifest profile` または該当 targeted test が通る。
|
|
- `target/debug/yoi ticket doctor` が通る。
|
|
|
|
## 非目標
|
|
|
|
- role workflow 本体を builtin profile に埋め込むこと。
|
|
- LLM-facing prompt 文言を profile file に移すこと。
|
|
- project が独自 role profile を定義・override できる能力を消すこと。
|
|
- Profile registry / selector semantics の大規模再設計。
|
|
- runtime-bound `pod.name`、resolved path、concrete delegated `scope.allow` を builtin profile に持たせること。
|