diff --git a/.yoi/tickets/00001KX1JNJ2Y/item.md b/.yoi/tickets/00001KX1JNJ2Y/item.md index b2e7b20d..22bfa7b0 100644 --- a/.yoi/tickets/00001KX1JNJ2Y/item.md +++ b/.yoi/tickets/00001KX1JNJ2Y/item.md @@ -1,8 +1,8 @@ --- title: 'Add ProfileSourceTree virtual filesystem and Decodal profile editor' -state: 'inprogress' +state: 'closed' created_at: '2026-07-08T19:18:25Z' -updated_at: '2026-07-09T09:16:20Z' +updated_at: '2026-07-09T09:18:48Z' assignee: null queued_by: 'workspace-panel' queued_at: '2026-07-09T07:56:07Z' diff --git a/.yoi/tickets/00001KX1JNJ2Y/resolution.md b/.yoi/tickets/00001KX1JNJ2Y/resolution.md new file mode 100644 index 00000000..0cb250b3 --- /dev/null +++ b/.yoi/tickets/00001KX1JNJ2Y/resolution.md @@ -0,0 +1,39 @@ +完了。 + +実装内容: +- Backend-owned `ProfileSourceTree` virtual filesystem model を追加した。 +- virtual relative paths / safe source tree ids / file ids / revision / content digest / content type / typed provenance / diagnostics を扱う safe summaries を追加した。 +- Profile source tree list/read/write/create/delete/validate scoped APIs を追加した。 +- virtual import resolver を追加し、relative imports / scoped namespace imports を扱い、absolute path、URL/unsupported scheme、root escape、unsupported namespace、limit excess を fail closed するようにした。 +- `ProfileSourceArchive` construction を selected root/selector + source tree revision + import closure snapshot に変更し、unrelated sources を archive に含めないようにした。 +- Runtime `ArchiveSourceLoader` / archive verification を virtual path / import-map only に強化し、Workspace filesystem/backend fallback を導入しないまま維持した。 +- Settings UI に Profile source tree list と Decodal source editor route を追加した。 +- `decodal-codemirror@0.1.2` と CodeMirror 6 の `decodal()` extension を editor に接続した。 +- UI create/save/delete operations を Backend virtual-path APIs に接続した。 +- `.yoi/profiles` source root symlink と symlink/path escape を list/read/write/delete/archive construction paths で reject し、outside filesystem mutation 前に fail closed するようにした。 +- Focused backend/runtime/web tests を追加した。 + +主な commit / merge: +- implementation: `81abfa63 feat: add profile source tree editor` +- review fix: `941b9126 fix: complete profile source tree review fixes` +- symlink-root fix: `13c6548b fix: reject profile source root symlinks` +- merge into orchestration: `9a2e57fb merge: profile source tree editor` + +Review: +- 初回 external review は request_changes。 +- first follow-up review も request_changes(source-root symlink blocker)。 +- second follow-up review は approve。merge-blocking issue なし。 + +Final validation in Orchestrator worktree: +- `git diff --check`: pass +- `cargo test -p yoi-workspace-server`: pass(94 lib tests + 2 main tests) +- `cargo test -p worker-runtime --features ws-server,fs-store`: pass(47 lib tests + 5 main tests + doc tests) +- `cargo check -p yoi`: pass +- `cd web/workspace && deno task check`: pass(0 errors / 0 warnings) +- `cd web/workspace && deno task test`: pass(19 tests) +- `yoi ticket doctor`: ok +- `nix build .#yoi --no-link`: pass + +補足: +- implementation branch merge 時に Ticket record conflict が発生したため、Orchestrator 側の Ticket item/thread を保持して解決した。product/code changes は merge 済み。 +- Reviewer の non-blocking follow-up: `read_profile_tree_file` に対する root-symlink direct assertion を追加すると regression matrix がさらに明示的になるが、同じ guarded `checked_source_path` を通るため merge blocker ではない。 \ No newline at end of file diff --git a/.yoi/tickets/00001KX1JNJ2Y/thread.md b/.yoi/tickets/00001KX1JNJ2Y/thread.md index fbaaae88..dd818c67 100644 --- a/.yoi/tickets/00001KX1JNJ2Y/thread.md +++ b/.yoi/tickets/00001KX1JNJ2Y/thread.md @@ -346,3 +346,86 @@ Non-blocking follow-up: No merge-blocking issues found. --- + + + +## State changed + +Merge/validation acceptance: + +- Second follow-up external review approved the implementation after symlink-root blocker fix。 +- Implementation branch `work/00001KX1JNJ2Y-profile-source-tree` was merged into the orchestration branch with merge commit `9a2e57fb merge: profile source tree editor`。 +- Ticket-record conflicts during merge were resolved by preserving Orchestrator-side Ticket item/thread records; product/code changes were merged。 +- Final validation in Orchestrator worktree passed: + - `git diff --check`: pass + - `cargo test -p yoi-workspace-server`: pass(94 lib tests + 2 main tests) + - `cargo test -p worker-runtime --features ws-server,fs-store`: pass(47 lib tests + 5 main tests + doc tests) + - `cargo check -p yoi`: pass + - `cd web/workspace && deno task check`: pass(0 errors / 0 warnings) + - `cd web/workspace && deno task test`: pass(19 tests) + - `yoi ticket doctor`: ok + - `nix build .#yoi --no-link`: pass + +Implementation commits: +- `81abfa63 feat: add profile source tree editor` +- `941b9126 fix: complete profile source tree review fixes` +- `13c6548b fix: reject profile source root symlinks` + +No merge-blocking issues remain. + +--- + + + +## State changed + +Ticket を closed にしました。 + + +--- + + + +## 完了 + +完了。 + +実装内容: +- Backend-owned `ProfileSourceTree` virtual filesystem model を追加した。 +- virtual relative paths / safe source tree ids / file ids / revision / content digest / content type / typed provenance / diagnostics を扱う safe summaries を追加した。 +- Profile source tree list/read/write/create/delete/validate scoped APIs を追加した。 +- virtual import resolver を追加し、relative imports / scoped namespace imports を扱い、absolute path、URL/unsupported scheme、root escape、unsupported namespace、limit excess を fail closed するようにした。 +- `ProfileSourceArchive` construction を selected root/selector + source tree revision + import closure snapshot に変更し、unrelated sources を archive に含めないようにした。 +- Runtime `ArchiveSourceLoader` / archive verification を virtual path / import-map only に強化し、Workspace filesystem/backend fallback を導入しないまま維持した。 +- Settings UI に Profile source tree list と Decodal source editor route を追加した。 +- `decodal-codemirror@0.1.2` と CodeMirror 6 の `decodal()` extension を editor に接続した。 +- UI create/save/delete operations を Backend virtual-path APIs に接続した。 +- `.yoi/profiles` source root symlink と symlink/path escape を list/read/write/delete/archive construction paths で reject し、outside filesystem mutation 前に fail closed するようにした。 +- Focused backend/runtime/web tests を追加した。 + +主な commit / merge: +- implementation: `81abfa63 feat: add profile source tree editor` +- review fix: `941b9126 fix: complete profile source tree review fixes` +- symlink-root fix: `13c6548b fix: reject profile source root symlinks` +- merge into orchestration: `9a2e57fb merge: profile source tree editor` + +Review: +- 初回 external review は request_changes。 +- first follow-up review も request_changes(source-root symlink blocker)。 +- second follow-up review は approve。merge-blocking issue なし。 + +Final validation in Orchestrator worktree: +- `git diff --check`: pass +- `cargo test -p yoi-workspace-server`: pass(94 lib tests + 2 main tests) +- `cargo test -p worker-runtime --features ws-server,fs-store`: pass(47 lib tests + 5 main tests + doc tests) +- `cargo check -p yoi`: pass +- `cd web/workspace && deno task check`: pass(0 errors / 0 warnings) +- `cd web/workspace && deno task test`: pass(19 tests) +- `yoi ticket doctor`: ok +- `nix build .#yoi --no-link`: pass + +補足: +- implementation branch merge 時に Ticket record conflict が発生したため、Orchestrator 側の Ticket item/thread を保持して解決した。product/code changes は merge 済み。 +- Reviewer の non-blocking follow-up: `read_profile_tree_file` に対する root-symlink direct assertion を追加すると regression matrix がさらに明示的になるが、同じ guarded `checked_source_path` を通るため merge blocker ではない。 + +---