ticket: approve profile extend removal

This commit is contained in:
Keisuke Hirata 2026-06-14 15:32:06 +09:00
parent 7c6070ef2f
commit c12fbd8eb7
No known key found for this signature in database
3 changed files with 51 additions and 1 deletions

View File

@ -0,0 +1,21 @@
承認します。
Evidence:
- `crates/manifest/src/profile.rs` の Lua API は `yoi.profile.import(...)` を残し、`yoi.profile.extend(...)` は常にエラーにする互換診断スタブに変更されている。旧 `deep_merge_profile_json` と hidden deep-merge composition は削除されており、診断文も `yoi.profile.import(...)` と explicit Lua assignment への移行を示している。
- Builtin role profiles (`resources/profiles/{companion,intake,orchestrator,coder,reviewer}.lua`) は `yoi.profile.import("builtin:default")` 後に Lua の明示代入で必要フィールドだけを上書きしている。feature policy は各 role で全 key を明示し、worker instruction は table mutation で default reasoning 等を保持している。
- scope/delegation は既存 role の明示値を移植しており、profile composition の変更に留まっている。launch policy / authority semantics は別 Ticket `00001KV11DHGZ` の範囲として残され、今回の diff では拡張されていない。
- Tests cover import + explicit assignment, object replacement instead of deep merge, removed extend diagnostic, and builtin role resolution/policy (`profile::tests`).
- Resource embedding/packaging risk is low: changed files are existing `resources/profiles/*.lua` loaded through the existing include table; `cargo build -p yoi` passed.
Validation performed:
- `git diff f709fc10..HEAD` inspected.
- `cargo fmt --check` passed.
- `git diff --check f709fc10..HEAD` passed.
- `cargo test -p manifest profile::tests:: -- --nocapture` passed.
- `cargo build -p yoi` passed.
Not rerun:
- `nix build .#yoi` was not rerun in this reviewer scope because it would write outside the permitted `target/`/Ticket-record areas unless using broader Nix/store/result-link authority. Coder reported it was run; cargo build validated resource embedding on this branch.
Risks / notes:
- Existing callers of `yoi.profile.extend` now fail intentionally; this is the requested break. The retained stub is a diagnostic compatibility trap, not a merge API.

View File

@ -2,7 +2,7 @@
title: 'Profile extend API を廃止して import + Lua 代入に寄せる'
state: 'inprogress'
created_at: '2026-06-13T07:31:09Z'
updated_at: '2026-06-14T06:24:18Z'
updated_at: '2026-06-14T06:29:17Z'
assignee: null
readiness: 'implementation_ready'
risk_flags: ['profiles', 'lua-api', 'builtin-resources', 'migration']

View File

@ -107,4 +107,33 @@ Risks/notes:
- Scope/delegation authority semantics were not expanded; this change only preserves existing builtin profile scope/delegation declarations while changing composition style.
---
<!-- event: review author: hare at: 2026-06-14T06:29:17Z status: approve -->
## Review: approve
承認します。
Evidence:
- `crates/manifest/src/profile.rs` の Lua API は `yoi.profile.import(...)` を残し、`yoi.profile.extend(...)` は常にエラーにする互換診断スタブに変更されている。旧 `deep_merge_profile_json` と hidden deep-merge composition は削除されており、診断文も `yoi.profile.import(...)` と explicit Lua assignment への移行を示している。
- Builtin role profiles (`resources/profiles/{companion,intake,orchestrator,coder,reviewer}.lua`) は `yoi.profile.import("builtin:default")` 後に Lua の明示代入で必要フィールドだけを上書きしている。feature policy は各 role で全 key を明示し、worker instruction は table mutation で default reasoning 等を保持している。
- scope/delegation は既存 role の明示値を移植しており、profile composition の変更に留まっている。launch policy / authority semantics は別 Ticket `00001KV11DHGZ` の範囲として残され、今回の diff では拡張されていない。
- Tests cover import + explicit assignment, object replacement instead of deep merge, removed extend diagnostic, and builtin role resolution/policy (`profile::tests`).
- Resource embedding/packaging risk is low: changed files are existing `resources/profiles/*.lua` loaded through the existing include table; `cargo build -p yoi` passed.
Validation performed:
- `git diff f709fc10..HEAD` inspected.
- `cargo fmt --check` passed.
- `git diff --check f709fc10..HEAD` passed.
- `cargo test -p manifest profile::tests:: -- --nocapture` passed.
- `cargo build -p yoi` passed.
Not rerun:
- `nix build .#yoi` was not rerun in this reviewer scope because it would write outside the permitted `target/`/Ticket-record areas unless using broader Nix/store/result-link authority. Coder reported it was run; cargo build validated resource embedding on this branch.
Risks / notes:
- Existing callers of `yoi.profile.extend` now fail intentionally; this is the requested break. The retained stub is a diagnostic compatibility trap, not a merge API.
---