merge: integrate orchestration branch
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
---
|
||||
title: 'Plugin: add authoring CLI new/check/pack'
|
||||
state: 'inprogress'
|
||||
state: 'closed'
|
||||
created_at: '2026-06-20T04:16:14Z'
|
||||
updated_at: '2026-06-20T05:55:31Z'
|
||||
updated_at: '2026-06-20T06:55:06Z'
|
||||
assignee: null
|
||||
readiness: 'implementation_ready'
|
||||
risk_flags: ['plugin', 'cli', 'authoring', 'templates', 'package-validation', 'packaging', 'read-only-check']
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
## Resolution
|
||||
|
||||
`00001KVHKWNQS` を完了しました。
|
||||
|
||||
実装内容:
|
||||
- `yoi plugin new rust-component-tool <path-or-name>` を追加しました。
|
||||
- `yoi plugin check <path-or-package> [--json]` を追加しました。
|
||||
- `yoi plugin pack <path> [--output <file>] [--json]` を追加しました。
|
||||
- Safe directory/package reading、deterministic digesting、deterministic `.yoi-plugin` writing、symlink/root-escape rejection を含む materialized package helpers を追加しました。
|
||||
- `check` / `pack` は Plugin code を実行せず、既存 static Plugin inspection を再利用して manifest/runtime/schema/permission/host API declarations を検査します。
|
||||
- Embedded Rust Component Tool template を `new` で利用し、generated template を check/pack できるよう placeholder `plugin.component.wasm` を追加しました。
|
||||
- Placeholder artifact は `check` で検出され、generated template / packed archive は `partial` と bounded diagnostic を返します。placeholder が残る間は enablement-ready guidance を出しません。
|
||||
- `plugin new` は existing destination symlink を拒否し、write-through を防ぎます。
|
||||
- JSON report shape、human output、CLI help/docs を更新しました。
|
||||
- Focused tests と CLI smoke coverage を追加しました。
|
||||
|
||||
主な commit:
|
||||
- `945ecdf6 plugin: add authoring cli`
|
||||
- `699db538 plugin: harden authoring checks`
|
||||
- `87704ad4 merge: plugin authoring cli`
|
||||
|
||||
Review:
|
||||
- r1 は destination symlink write-through と placeholder artifact の enablement-ready 表示で `request_changes`。
|
||||
- Coder が symlink refusal、placeholder detection、`partial` status/diagnostics、tests/docs を追加。
|
||||
- r2 は `approve`。
|
||||
|
||||
最終 validation:
|
||||
- `cargo fmt --check`
|
||||
- `git diff --check HEAD^1..HEAD`
|
||||
- `cargo check -p yoi`
|
||||
- `cargo test -p yoi plugin_cli`
|
||||
- `cargo test -p yoi-plugin-pdk template`
|
||||
- `nix build .#yoi --no-link`
|
||||
|
||||
補足:
|
||||
- 初回 `nix build .#yoi --no-link` は `aws-lc-sys` build 中に `No space left on device` で environment failure。
|
||||
- Orchestrator worktree の Cargo build artifacts を `cargo clean` で削除してから再実行し、Nix build は成功しました。
|
||||
- `nix path-info -S .#yoi`: `112260512`
|
||||
|
||||
Validation log:
|
||||
- `/run/user/1000/yoi/yoi-orchestrator/bash-output/bash-Q0KE3A.log`
|
||||
@@ -124,3 +124,304 @@ Next action:
|
||||
- Wait for Coder implementation report, then inspect branch diff/validation evidence and route to Reviewer。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-20T06:25:39Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Coder implementation report received from `yoi-coder-00001KVHKWNQS`.
|
||||
|
||||
Implementation commit:
|
||||
- `945ecdf6 plugin: add authoring cli`
|
||||
|
||||
Changed areas reported:
|
||||
- Added `yoi plugin new rust-component-tool <path-or-name>`。
|
||||
- Added `yoi plugin check <path-or-package> [--json]`。
|
||||
- Added `yoi plugin pack <path> [--output <file>] [--json]`。
|
||||
- Added manifest-level materialized package helpers for safe directory/package reading, deterministic digesting, deterministic stored `.yoi-plugin` writing, and symlink/root-escape rejection。
|
||||
- Reused existing static Plugin inspection for Tool schema / permission / host API declaration checks without Plugin execution。
|
||||
- Added embedded `plugin.component.wasm` placeholder to Rust component Tool template so generated templates can be checked/packed immediately; docs instruct replacing it before enabling/execution。
|
||||
- Updated CLI parsing/help and Plugin development docs。
|
||||
- Added focused tests for generated file set, overwrite refusal, valid directory check, invalid manifest, missing runtime artifact, unsafe package archive, deterministic pack digest, package discoverability, and JSON report shape。
|
||||
|
||||
Coder validation reported:
|
||||
- `cargo fmt`
|
||||
- `cargo fmt --check`
|
||||
- `cargo check -p yoi`
|
||||
- `cargo test -p yoi plugin_cli`
|
||||
- `cargo test -p yoi-plugin-pdk template`
|
||||
- `git diff --check`
|
||||
- CLI smoke:
|
||||
- `cargo run -q -p yoi -- plugin new rust-component-tool ... --json`
|
||||
- `cargo run -q -p yoi -- plugin check ... --json`
|
||||
- `cargo run -q -p yoi -- plugin pack ... --output ... --json`
|
||||
- invalid check reports `"status": "rejected"` and exits non-zero。
|
||||
- `nix build .#yoi --no-link` was attempted but failed due environment/storage: `No space left on device`。
|
||||
- No Cargo dependency or `Cargo.lock` changes were introduced。
|
||||
|
||||
Known risks / deferrals reported:
|
||||
- Component validation remains metadata/static only; no component instantiation/execution is performed by design。
|
||||
- Template includes a placeholder artifact solely for deterministic authoring check/pack; docs instruct replacing it before enabling/execution。
|
||||
|
||||
Orchestrator evidence checked before review dispatch:
|
||||
- Implementation worktree is clean on `impl/00001KVHKWNQS-plugin-authoring-cli`。
|
||||
- HEAD is `945ecdf6`。
|
||||
- Diff from acceptance `d1095f85..HEAD` is one implementation commit touching 6 files, about 1274 insertions / 24 deletions。
|
||||
- `git diff --check d1095f85..HEAD` produced no diagnostics。
|
||||
|
||||
Next action:
|
||||
- Dispatch Reviewer for r1 review against Ticket requirements, with focus on non-execution safety, archive/path traversal safety, deterministic pack/digest behavior, placeholder artifact policy, JSON report stability, discoverability, workspace/config non-mutation, CLI UX, tests, and Nix/package validation feasibility。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: plan author: yoi-orchestrator at: 2026-06-20T06:26:24Z -->
|
||||
|
||||
## Plan
|
||||
|
||||
Review dispatch:
|
||||
- Spawned Reviewer Pod `yoi-reviewer-00001KVHKWNQS-r1` against implementation branch `impl/00001KVHKWNQS-plugin-authoring-cli`。
|
||||
- Review target commit: `945ecdf6 plugin: add authoring cli`。
|
||||
- Review baseline: `d1095f85`。
|
||||
- Reviewer task focuses on non-execution safety, archive/path traversal safety, deterministic pack/digest behavior, placeholder artifact policy, JSON report stability, discoverability, workspace/config non-mutation, CLI UX, tests, and Nix/package validation feasibility。
|
||||
- Reviewer is instructed not to edit source, commit, merge, close the Ticket, or use TicketReview directly; it will report verdict/evidence back to Orchestrator。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: review author: yoi-reviewer-00001KVHKWNQS-r1 at: 2026-06-20T06:36:52Z status: request_changes -->
|
||||
|
||||
## Review: request changes
|
||||
|
||||
Verdict: `request_changes`
|
||||
|
||||
確認範囲:
|
||||
- Ticket body/thread / Orchestrator IntentPacket
|
||||
- Implementation diff: `d1095f85..945ecdf6`
|
||||
- 主な対象: `crates/yoi/src/plugin_cli.rs`, `crates/yoi/src/main.rs`, `crates/manifest/src/plugin.rs`, `resources/plugin/templates/rust-component-tool/*`, `docs/development/plugin-development.md`, `package.nix`。
|
||||
|
||||
Blocking issues:
|
||||
1. `yoi plugin new` が symlink destination を辿り、物理的な requested destination 外へ書き込める。
|
||||
- `materialize_template` は `fs::metadata(destination)` / `fs::read_dir(destination)` を使い、destination symlink を拒否せず `destination.join(relative)` に書く。
|
||||
- Reviewer smoke: `linkdest -> target` に対して `plugin new rust-component-tool "$tmp/linkdest"` を実行すると、`target/plugin.toml` が作られた。
|
||||
- Ticket invariant: `new` は requested destination にだけ書き、non-empty destination を拒否する。symlink destination はこの境界を破る。
|
||||
|
||||
2. Generated placeholder component が `check` で enablement-ready に見える。
|
||||
- Template は text placeholder `resources/plugin/templates/rust-component-tool/plugin.component.wasm` を含む。
|
||||
- `new` output は next steps で一度 warning するが、fresh generated template に対する `check --json` は `status=active diagnostics=0` になり、generic enablement guidance を出す。
|
||||
- Reviewer smoke: generated template check output に placeholder/non-executable warning がなく、`To enable after review...` guidance が出る。
|
||||
- Ticket/reviewer contract: check/pack may pass, but output must not imply executable component is ready for enablement if placeholder is not executable。
|
||||
|
||||
Required fixes:
|
||||
- `plugin new` destination symlink を `symlink_metadata` 等で拒否し、symlink write-through を防ぐ。関連する overwrite/destination tests を追加する。
|
||||
- Generated placeholder artifact を `check` が検出し、bounded diagnostic / next step を出す。Status は `partial` など enablement-ready でない表現にすることを優先する。少なくとも `active diagnostics=0` と enablement guidance の組み合わせは避ける。
|
||||
- `check --json` and human output tests should cover generated template placeholder warning/status。
|
||||
|
||||
Non-blocking concerns:
|
||||
- `nix build .#yoi --no-link` は environment storage (`No space left on device`) で失敗。source-filter/resource-packaging issue は見えていないが、最終 Orchestrator validation で再試行する。
|
||||
- `pack --json` digest is nested under `package.digest`, not top-level. Acceptable if documented/stable, but consider documenting shape。
|
||||
|
||||
Reviewer validation:
|
||||
- `cargo fmt --check`: passed
|
||||
- `git diff --check d1095f85..HEAD`: passed
|
||||
- `cargo check -p yoi`: passed
|
||||
- `cargo test -p yoi plugin_cli`: passed (`15 tests`)
|
||||
- `cargo test -p yoi-plugin-pdk template`: passed
|
||||
- CLI smoke for `new`, `check --json`, `pack --json`, packed package check/list discovery, invalid check rejected: passed except blocker findings above。
|
||||
- `nix build .#yoi --no-link`: failed due `No space left on device`。
|
||||
|
||||
Worktree status at review end: clean。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-20T06:46:09Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Coder r1-fix report received from `yoi-coder-00001KVHKWNQS`.
|
||||
|
||||
New fix commit:
|
||||
- `699db538 plugin: harden authoring checks`
|
||||
|
||||
Branch commits now:
|
||||
- `699db538 plugin: harden authoring checks`
|
||||
- `945ecdf6 plugin: add authoring cli`
|
||||
|
||||
Fix summary:
|
||||
- `plugin new` rejects an existing destination symlink via `symlink_metadata` before writes。
|
||||
- Added regression test ensuring symlink destination is refused and target is not written。
|
||||
- `plugin check` detects embedded generated placeholder `plugin.component.wasm`。
|
||||
- Fresh generated templates report `status: "partial"` instead of `active`。
|
||||
- JSON/human diagnostics include bounded placeholder warning。
|
||||
- Enablement guidance no longer says a package is ready to enable while placeholder artifact remains。
|
||||
- `partial` checks exit successfully; `rejected` checks remain non-zero。
|
||||
- Docs updated for symlink refusal and placeholder/partial behavior。
|
||||
|
||||
Coder validation reported as passing:
|
||||
- `cargo fmt --check`
|
||||
- `git diff --check d1095f85..HEAD`
|
||||
- `cargo check -p yoi`
|
||||
- `cargo test -p yoi plugin_cli`
|
||||
- `cargo test -p yoi-plugin-pdk template`
|
||||
- CLI smoke:
|
||||
- `plugin new ... --json`
|
||||
- `plugin check <generated> --json` => `partial` with placeholder diagnostic。
|
||||
- `plugin pack ... --json` => `packed`。
|
||||
- `plugin check <packed .yoi-plugin> --json` => `partial`。
|
||||
- copied packed archive into `.yoi/plugins` and confirmed `plugin list --workspace ... --json` discovers it。
|
||||
- invalid check after removing runtime artifact => `rejected` and non-zero。
|
||||
- Freed only child-worktree Cargo build artifacts with `cargo clean` and reran `nix build .#yoi --no-link`; it completed successfully。
|
||||
|
||||
Orchestrator evidence checked before r2 review:
|
||||
- Implementation worktree is clean。
|
||||
- HEAD is `699db538`。
|
||||
- Fix diff from `945ecdf6..HEAD` touches `crates/yoi/src/plugin_cli.rs` and `docs/development/plugin-development.md`, about 124 insertions / 34 deletions。
|
||||
- Overall `git diff --check d1095f85..HEAD` produced no diagnostics。
|
||||
|
||||
Next action:
|
||||
- Route back to Reviewer for r2 verification of symlink destination refusal, placeholder partial/check behavior, and final acceptance criteria。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: review author: yoi-reviewer-00001KVHKWNQS-r1 at: 2026-06-20T06:50:40Z status: approve -->
|
||||
|
||||
## Review: approve
|
||||
|
||||
Verdict: `approve`
|
||||
|
||||
確認範囲:
|
||||
- Ticket body/thread / Orchestrator IntentPacket
|
||||
- r2 fix diff: `945ecdf6..699db538`
|
||||
- 全体実装 diff: `d1095f85..699db538`
|
||||
- 主な対象: `crates/yoi/src/plugin_cli.rs`, `docs/development/plugin-development.md`, and prior `new` / `check` / `pack` implementation surface。
|
||||
|
||||
Previous blocker verification:
|
||||
1. `plugin new` symlink destination write-through
|
||||
- `materialize_template` now uses `fs::symlink_metadata` and rejects destination symlink before writing。
|
||||
- Regression test `plugin_new_refuses_symlink_destination_without_following_it` verifies refusal and no write-through。
|
||||
- CLI smoke confirmed symlink destination is rejected and target directory does not receive `plugin.toml`。
|
||||
|
||||
2. Placeholder component reported as enablement-ready
|
||||
- `check` now compares runtime component bytes against embedded template placeholder and adds bounded `placeholder` diagnostic。
|
||||
- Generated template now reports `status=partial` when static validation is otherwise clean but placeholder remains。
|
||||
- Enablement guidance is suppressed for `partial` and says the package is not ready to enable。
|
||||
- CLI smoke confirmed generated directory and packed `.yoi-plugin` both report `partial` with placeholder diagnostic; `partial` exits successfully, while invalid/missing paths remain non-zero rejected。
|
||||
|
||||
Blocking issues: none。
|
||||
|
||||
Non-blocking concerns / follow-ups:
|
||||
- None required for this Ticket. The hardening keeps status vocabulary aligned with existing Plugin inspection (`active` / `partial` / `rejected`)。
|
||||
|
||||
Reviewer validation:
|
||||
- `cargo fmt --check`: passed
|
||||
- `git diff --check d1095f85..HEAD`: passed
|
||||
- `cargo check -p yoi`: passed
|
||||
- `cargo test -p yoi plugin_cli`: passed (`16 tests`)
|
||||
- `cargo test -p yoi-plugin-pdk template`: passed (`2 template tests`)
|
||||
- CLI smoke after `cargo build -p yoi`: passed for `new`, generated `check --json partial`, human `[partial]`, `pack --json`, packed package `check --json partial`, invalid check rejected/non-zero, symlink destination refusal, and `plugin list --workspace ... --json` discoverability as `disabled`。
|
||||
- `nix build .#yoi --no-link`: passed
|
||||
|
||||
Worktree status at review end: source tree clean。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-20T06:54:35Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Merge and final validation report:
|
||||
|
||||
Merged implementation branch into Orchestrator branch:
|
||||
- Merge commit: `87704ad4 merge: plugin authoring cli`
|
||||
- Implementation commits included:
|
||||
- `945ecdf6 plugin: add authoring cli`
|
||||
- `699db538 plugin: harden authoring checks`
|
||||
|
||||
Reviewer outcome:
|
||||
- r1 requested changes for symlink destination write-through and placeholder component being reported as enablement-ready。
|
||||
- Coder added symlink destination refusal, placeholder detection, `partial` status / diagnostics, and tests。
|
||||
- r2 approved with no blocking issues。
|
||||
|
||||
Orchestrator validation after merge:
|
||||
- Passed before Nix:
|
||||
- `cargo fmt --check`
|
||||
- `git diff --check HEAD^1..HEAD`
|
||||
- `cargo check -p yoi`
|
||||
- `cargo test -p yoi plugin_cli`
|
||||
- `cargo test -p yoi-plugin-pdk template`
|
||||
- Initial `nix build .#yoi --no-link` failed with environment storage exhaustion while building `aws-lc-sys` (`No space left on device`), not a source/package diagnostic。
|
||||
- Orchestrator freed only Orchestrator-worktree Cargo build artifacts with `cargo clean` (`43.3GiB`) and reran:
|
||||
- `nix build .#yoi --no-link`: passed。
|
||||
- `nix path-info -S .#yoi`: `112260512`。
|
||||
|
||||
Validation log for first grouped run:
|
||||
- `/run/user/1000/yoi/yoi-orchestrator/bash-output/bash-Q0KE3A.log`
|
||||
|
||||
Final state:
|
||||
- Orchestrator worktree clean at `87704ad4` after successful Nix validation。
|
||||
- Implementation worktree remains available for cleanup after Ticket completion records are committed。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: yoi-orchestrator at: 2026-06-20T06:54:45Z from: inprogress to: done reason: merged_reviewed_validated field: state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Implementation was merged into Orchestrator branch at `87704ad4`, r2 review approved, and final Orchestrator validation passed: `cargo fmt --check`, `git diff --check HEAD^1..HEAD`, `cargo check -p yoi`, focused `yoi plugin_cli` / `yoi-plugin-pdk template` tests, and `nix build .#yoi --no-link` after freeing Orchestrator worktree build artifacts.
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: hare at: 2026-06-20T06:55:06Z from: done to: closed reason: closed field: state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Ticket を closed にしました。
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: close author: hare at: 2026-06-20T06:55:06Z status: closed -->
|
||||
|
||||
## 完了
|
||||
|
||||
## Resolution
|
||||
|
||||
`00001KVHKWNQS` を完了しました。
|
||||
|
||||
実装内容:
|
||||
- `yoi plugin new rust-component-tool <path-or-name>` を追加しました。
|
||||
- `yoi plugin check <path-or-package> [--json]` を追加しました。
|
||||
- `yoi plugin pack <path> [--output <file>] [--json]` を追加しました。
|
||||
- Safe directory/package reading、deterministic digesting、deterministic `.yoi-plugin` writing、symlink/root-escape rejection を含む materialized package helpers を追加しました。
|
||||
- `check` / `pack` は Plugin code を実行せず、既存 static Plugin inspection を再利用して manifest/runtime/schema/permission/host API declarations を検査します。
|
||||
- Embedded Rust Component Tool template を `new` で利用し、generated template を check/pack できるよう placeholder `plugin.component.wasm` を追加しました。
|
||||
- Placeholder artifact は `check` で検出され、generated template / packed archive は `partial` と bounded diagnostic を返します。placeholder が残る間は enablement-ready guidance を出しません。
|
||||
- `plugin new` は existing destination symlink を拒否し、write-through を防ぎます。
|
||||
- JSON report shape、human output、CLI help/docs を更新しました。
|
||||
- Focused tests と CLI smoke coverage を追加しました。
|
||||
|
||||
主な commit:
|
||||
- `945ecdf6 plugin: add authoring cli`
|
||||
- `699db538 plugin: harden authoring checks`
|
||||
- `87704ad4 merge: plugin authoring cli`
|
||||
|
||||
Review:
|
||||
- r1 は destination symlink write-through と placeholder artifact の enablement-ready 表示で `request_changes`。
|
||||
- Coder が symlink refusal、placeholder detection、`partial` status/diagnostics、tests/docs を追加。
|
||||
- r2 は `approve`。
|
||||
|
||||
最終 validation:
|
||||
- `cargo fmt --check`
|
||||
- `git diff --check HEAD^1..HEAD`
|
||||
- `cargo check -p yoi`
|
||||
- `cargo test -p yoi plugin_cli`
|
||||
- `cargo test -p yoi-plugin-pdk template`
|
||||
- `nix build .#yoi --no-link`
|
||||
|
||||
補足:
|
||||
- 初回 `nix build .#yoi --no-link` は `aws-lc-sys` build 中に `No space left on device` で environment failure。
|
||||
- Orchestrator worktree の Cargo build artifacts を `cargo clean` で削除してから再実行し、Nix build は成功しました。
|
||||
- `nix path-info -S .#yoi`: `112260512`
|
||||
|
||||
Validation log:
|
||||
- `/run/user/1000/yoi/yoi-orchestrator/bash-output/bash-Q0KE3A.log`
|
||||
|
||||
---
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
{"id":"orch-plan-20260620-060022-1","ticket_id":"00001KVHR3WRF","kind":"waiting_capacity_note","note":"Panel Queue was accepted for routing review, but implementation is held because `00001KVHKWNQS` is currently inprogress with active Coder work. Leave this MCP foundation Ticket queued; reroute when current implementation capacity is free.","author":"yoi-orchestrator","at":"2026-06-20T06:00:22Z"}
|
||||
{"id":"orch-plan-20260620-065554-2","ticket_id":"00001KVHR3WRF","kind":"accepted_plan","accepted_plan":{"summary":"Named local stdio MCP server configuration and trust policy metadataを追加する。This Ticket only parses/validates config and diagnostics; it must not spawn subprocesses or implement JSON-RPC lifecycle. Command/env/secret fields must fail closed, redact sensitive values, and document that local MCP executables run with user OS permissions outside Yoi feature sandbox authority.","branch":"impl/00001KVHR3WRF-mcp-stdio-config-trust","worktree":"/home/hare/Projects/yoi/.worktree/00001KVHR3WRF-mcp-stdio-config-trust","role_plan":"Orchestrator は acceptance records を commit 後、専用 implementation worktree `.worktree/00001KVHR3WRF-mcp-stdio-config-trust` を作成し、Coder をその child worktree への narrow write scope で起動する。Coder 実装後、Reviewer が config schema、trust boundary docs、secret redaction、fail-closed validation、no auto-start/no process execution、Profile/config layering separation を確認する。"},"author":"yoi-orchestrator","at":"2026-06-20T06:55:54Z"}
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
title: 'MCP: add local stdio server config and trust policy'
|
||||
state: 'queued'
|
||||
state: 'closed'
|
||||
created_at: '2026-06-20T05:30:04Z'
|
||||
updated_at: '2026-06-20T05:58:46Z'
|
||||
updated_at: '2026-06-20T07:28:55Z'
|
||||
assignee: null
|
||||
readiness: 'implementation_ready'
|
||||
risk_flags: ['mcp', 'config', 'trust-boundary', 'secrets', 'process-exec']
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
## Resolution
|
||||
|
||||
`00001KVHR3WRF` を完了しました。
|
||||
|
||||
実装内容:
|
||||
- Typed MCP config schema を `crates/manifest` に追加しました。
|
||||
- Profile/config で named local stdio MCP server を宣言できるようにしました。
|
||||
- Config fields は `name`, `command`, `args`, `cwd`, `env.inherit`, `env.set` を含みます。
|
||||
- Env value は `literal`, `secret_ref`, `env_ref` をサポートします。
|
||||
- Validation は duplicate names、empty/NUL command/args、cwd policy/path、env var name、secret ref、NUL literal env values などを fail-closed で検査します。
|
||||
- Diagnostics / `Debug` は secret/env/literal values を plaintext で出さないよう redaction します。
|
||||
- Profile resolution / child manifest inheritance に MCP config を通しましたが、subprocess spawning / initialize / JSON-RPC lifecycle / tool/resource/prompt registration は実装していません。
|
||||
- Docs に local stdio MCP server の trust boundary を記録しました。Configured stdio server は user OS permissions で動く local executable であり、Yoi feature authority / Plugin permissions / MCP config validation は OS sandbox ではありません。
|
||||
|
||||
主な commit:
|
||||
- `e0680cce mcp: add stdio server config`
|
||||
- `9b7c4e27 merge: mcp stdio config trust`
|
||||
|
||||
Review:
|
||||
- r1 は `approve`。
|
||||
- Reviewer は config-only boundary、no process spawning/no auto-start、secret redaction、Profile/config integration、docs trust boundary を確認しました。
|
||||
|
||||
最終 validation:
|
||||
- `cargo fmt --all --check`
|
||||
- `git diff --check HEAD^1..HEAD`
|
||||
- `cargo test -p manifest mcp --lib`
|
||||
- `cargo check`
|
||||
- `nix build .#yoi --no-link`
|
||||
|
||||
Package impact:
|
||||
- `nix path-info -S .#yoi`: `112615056`
|
||||
|
||||
Known unrelated note:
|
||||
- Full `cargo test -p manifest --lib` は、branch 外の既存 Plugin template-shape mismatch で失敗するため最終 gate にしませんでした。Reviewer はこの failure が `b0225e48..HEAD` の diff に起因しないことを確認済みです。
|
||||
|
||||
Validation log:
|
||||
- `/run/user/1000/yoi/yoi-orchestrator/bash-output/bash-uxMpR3.log`
|
||||
@@ -13,4 +13,295 @@ LocalTicketBackend によって作成されました。
|
||||
Ticket を `workspace-panel` が queued にしました。
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: decision author: yoi-orchestrator at: 2026-06-20T06:00:44Z -->
|
||||
|
||||
## Decision
|
||||
|
||||
Routing decision: waiting_capacity
|
||||
|
||||
Panel Queue により routing 対象として確認したが、現在 `00001KVHKWNQS` が `inprogress` で Coder 作業中のため、この MCP foundation Ticket は実装開始せず queued のまま保持する。
|
||||
|
||||
Evidence:
|
||||
- Ticket body / relations を確認。
|
||||
- Orchestrator worktree は clean。
|
||||
- queued は MCP chain とこの Ticket 群、inprogress は `00001KVHKWNQS` のみ。
|
||||
- matching branch/worktree は存在しない。
|
||||
|
||||
Next:
|
||||
- `00001KVHKWNQS` が完了して実装 capacity が空いた後、改めて reroute する。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: decision author: yoi-orchestrator at: 2026-06-20T06:56:16Z -->
|
||||
|
||||
## Decision
|
||||
|
||||
Routing decision: implementation_ready
|
||||
|
||||
Reason:
|
||||
- Panel Queue により、この Ticket は Orchestrator routing 対象として明示許可された。
|
||||
- Ticket body は local stdio MCP server configuration / trust policy の範囲を、spawning/lifecycle を含まない config parse/validation/diagnostics Ticket として明確に定義している。
|
||||
- 前回の waiting_capacity note は `00001KVHKWNQS` が inprogress だったためだが、現在 `00001KVHKWNQS` は closed で capacity blocker は解消済み。
|
||||
- `00001KVHR3WRF` 自身には未解決 blocking relation はない。Incoming `00001KVHR3WRY depends_on this` は後続 Ticket であり blocker ではない。
|
||||
- 現在 inprogress は 0 件、child implementation Pods はなし、matching branch/worktree はなし、Orchestrator worktree は clean。
|
||||
- Risk domain は mcp / config / trust-boundary / secrets / process-exec だが、Ticket は no process spawning、no auto-start、secret redaction、local executable trust boundary、Plugin permissions / `pod::feature` authority separation などの invariants を明示している。bounded context check 後も implementation 前に必要な追加 human decision は見つからなかった。
|
||||
|
||||
Evidence checked:
|
||||
- Ticket `00001KVHR3WRF` body / thread / relations / artifacts。
|
||||
- `TicketRelationQuery(00001KVHR3WRF)`: no outgoing blocking dependency; incoming lifecycle Ticket depends on this。
|
||||
- `TicketOrchestrationPlanQuery(00001KVHR3WRF)`: previous waiting capacity note resolved by `00001KVHKWNQS` closure; accepted plan recorded now。
|
||||
- Workspace state:
|
||||
- Orchestrator worktree clean at `a5df9e37`。
|
||||
- queued: MCP chain remains queued。
|
||||
- inprogress: 0。
|
||||
- visible Pods: self + peers only; spawned children 0。
|
||||
- no matching MCP implementation branch/worktree。
|
||||
|
||||
IntentPacket:
|
||||
|
||||
Intent:
|
||||
- Add typed Profile/config support for named local stdio MCP servers and the trust-policy diagnostics around that config。
|
||||
- This Ticket is intentionally config-only: parse, validate, redact, and document; do not spawn processes or implement JSON-RPC lifecycle。
|
||||
|
||||
Binding decisions / invariants:
|
||||
- No package/workspace presence auto-start。Config alone must not spawn an MCP process。
|
||||
- Local stdio MCP servers are local executables running with user OS permissions; Yoi feature authority does not sandbox OS-level side effects。
|
||||
- Keep MCP config/trust policy separate from Plugin permissions and `pod::feature` authority。
|
||||
- Config must be explicit and named; no implicit discovery or auto-enablement。
|
||||
- Command/args/cwd/env/secret-related configuration must validate fail-closed with bounded diagnostics。
|
||||
- Secret/env values must be redacted in diagnostics/log/model-facing surfaces; do not persist plaintext secrets through errors/debug output。
|
||||
- This Ticket must not implement initialize/capability negotiation, tool/resource/prompt registration, streamable HTTP/OAuth/remote MCP, or subprocess spawning。
|
||||
|
||||
Requirements / acceptance criteria:
|
||||
- A Profile/config can declare a named local stdio MCP server。
|
||||
- Invalid command/env/secret config is rejected with bounded diagnostic。
|
||||
- Secrets are not emitted in plaintext diagnostics/log/model context。
|
||||
- Config alone does not spawn a process。
|
||||
- Docs explain that configured local MCP servers are not OS-sandboxed by Yoi feature authority。
|
||||
- Tests cover valid config, invalid config, secret redaction, and no auto-start。
|
||||
|
||||
Escalate if:
|
||||
- Existing Profile/config model cannot represent MCP server declarations without a broader config/profile schema decision。
|
||||
- Secret reference representation would require changing the local secret-store policy rather than referencing existing secret/env abstractions。
|
||||
- Tests require actual process spawning; that belongs to a later Ticket, not this one。
|
||||
|
||||
Next action:
|
||||
- Record `queued -> inprogress` and commit Ticket records before creating the implementation worktree and spawning Coder。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: yoi-orchestrator at: 2026-06-20T06:56:23Z from: queued to: inprogress reason: orchestrator_acceptance_mcp_stdio_config_trust field: state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Ticket body/thread, relation metadata, resolved capacity blocker, Orchestrator worktree state, visible Pods, existing branch/worktree, and bounded MCP config/trust context were checked. There is no unresolved blocking dependency, no inprogress/capacity blocker, and no missing planning decision. Accepting this queued Ticket for implementation before worktree/Pod side effects.
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-20T06:57:08Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Implementation orchestration start:
|
||||
- Acceptance records were committed on Orchestrator branch: `b0225e48 ticket: accept mcp stdio config trust`。
|
||||
- Created implementation worktree `/home/hare/Projects/yoi/.worktree/00001KVHR3WRF-mcp-stdio-config-trust` on branch `impl/00001KVHR3WRF-mcp-stdio-config-trust` at `b0225e48`。
|
||||
- Spawned Coder Pod `yoi-coder-00001KVHR3WRF` with write scope limited to the implementation worktree and read-only root scope only for runtime workspace identity。
|
||||
- Coder task explicitly forbids root/original workspace implementation, process spawning for this Ticket, merge, Ticket close, and cleanup。
|
||||
|
||||
Next action:
|
||||
- Wait for Coder implementation report, then inspect branch diff/validation evidence and route to Reviewer。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-20T07:18:35Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Coder implementation report received from `yoi-coder-00001KVHR3WRF`.
|
||||
|
||||
Implementation commit:
|
||||
- `e0680cce mcp: add stdio server config`
|
||||
|
||||
Changed areas reported:
|
||||
- Added typed MCP config schema in `crates/manifest`:
|
||||
- `mcp.stdio_server` list with explicit `name`, `command`, `args`, `cwd`, and `env`。
|
||||
- explicit env policy with `inherit` and `set`。
|
||||
- env values support `literal`, `secret_ref`, and `env_ref`。
|
||||
- literal env values are redacted in `Debug`。
|
||||
- Added validation for duplicate names, empty/NUL command and args, cwd policy/path, env variable names, secret refs, and bounded diagnostics without secret/env value leakage。
|
||||
- Integrated MCP config through Profile resolution and child manifest inheritance without adding process spawning。
|
||||
- Added focused tests for valid config, invalid command/duplicate names, invalid secret refs/redaction, nonexistent command accepted as no auto-start proof, and Lua Profile MCP config resolution。
|
||||
- Updated docs in `docs/design/profiles-manifests-prompts.md` with local stdio MCP config and trust boundary。
|
||||
- Updated Nix cargo hash due manifest dependency graph change。
|
||||
|
||||
Coder validation reported:
|
||||
- `cargo test -p manifest mcp --lib`: passed。
|
||||
- `cargo check`: passed。
|
||||
- `cargo fmt --all --check`: passed。
|
||||
- `git diff --check`: passed。
|
||||
- `nix build .#yoi --no-link`: passed。
|
||||
- `cargo test -p manifest --lib`: failed on pre-existing/unrelated `plugin::tests::template_includes_current_pdk_version`, reportedly due `resources/plugin-templates/rust/Cargo.toml` PDK version `0.2.0` vs `CARGO_PKG_VERSION` `0.1.0`。
|
||||
|
||||
Known deferrals:
|
||||
- No MCP subprocess spawning, initialize/capability negotiation, tool/resource/prompt registration, HTTP/OAuth, or JSON-RPC lifecycle added。
|
||||
- Command executability intentionally not checked at config-parse time; only structural validation is performed。
|
||||
|
||||
Orchestrator evidence checked before review dispatch:
|
||||
- Implementation worktree is clean。
|
||||
- HEAD is `e0680cce`。
|
||||
- Diff from acceptance `b0225e48..HEAD` is one implementation commit touching 8 files, about 515 insertions / 10 deletions。
|
||||
- `git diff --check b0225e48..HEAD` produced no diagnostics。
|
||||
|
||||
Next action:
|
||||
- Dispatch Reviewer for r1 review against Ticket requirements, with focus on config schema fit, validation/redaction boundaries, no process spawning/no auto-start, Profile/config layering, docs trust boundary, and whether the reported `manifest --lib` failure is unrelated or must be fixed。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: plan author: yoi-orchestrator at: 2026-06-20T07:19:20Z -->
|
||||
|
||||
## Plan
|
||||
|
||||
Review dispatch:
|
||||
- Spawned Reviewer Pod `yoi-reviewer-00001KVHR3WRF-r1` against implementation branch `impl/00001KVHR3WRF-mcp-stdio-config-trust`。
|
||||
- Review target commit: `e0680cce mcp: add stdio server config`。
|
||||
- Review baseline: `b0225e48`。
|
||||
- Reviewer task focuses on config-only boundary, no process spawning/no auto-start, secret/env redaction, fail-closed validation, Profile/config layering, trust-boundary docs, MCP vs Plugin/feature authority separation, and the reported `cargo test -p manifest --lib` failure。
|
||||
- Reviewer is instructed not to edit source, commit, merge, close the Ticket, or use TicketReview directly; it will report verdict/evidence back to Orchestrator。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: review author: yoi-reviewer-00001KVHR3WRF-r1 at: 2026-06-20T07:27:01Z status: approve -->
|
||||
|
||||
## Review: approve
|
||||
|
||||
Verdict: `approve`
|
||||
|
||||
確認範囲:
|
||||
- Ticket contract / Orchestrator IntentPacket。
|
||||
- Diff: `b0225e48..e0680cce`。
|
||||
- 主な対象: `crates/manifest/src/lib.rs`, `crates/manifest/src/config.rs`, `crates/manifest/src/profile.rs`, `crates/manifest/Cargo.toml`, `crates/pod/src/spawn/tool.rs`, `docs/design/profiles-manifests-prompts.md`, `Cargo.lock`, `package.nix`。
|
||||
- Diff 内で `Command::new`, `tokio::process`, `std::process`, spawn, initialize/capability negotiation, JSON-RPC/tool registration などの process/lifecycle implementation 追加を確認。
|
||||
|
||||
Blocking issues: none。
|
||||
|
||||
Critical risk checks:
|
||||
- Config-only boundary は維持されている。MCP subprocess spawning、MCP initialize/capability negotiation、JSON-RPC lifecycle、tool/resource/prompt registration は追加されていない。
|
||||
- `crates/manifest/src/lib.rs` は typed `McpConfig`、named `stdio_server` entries、`command` / `args` / `cwd` / explicit `env.inherit` / `env.set`、`literal` / `secret_ref` / `env_ref` を追加している。
|
||||
- `McpEnvValue::Debug` は literal env values を redact する。validation errors は literal/env/secret values を echo しない。
|
||||
- `crates/manifest/src/config.rs` は duplicate server names、empty/NUL names/commands/args、cwd absolute-after-resolution policy、env var names、secret ref IDs、NUL literal env values を bounded diagnostics で検証している。
|
||||
- Profile integration は通常の Profile resolution / path-resolution flow 経由。Reusable Profiles は absolute MCP cwd paths を拒否する。
|
||||
- `crates/pod/src/spawn/tool.rs` は `manifest.mcp.clone()` を inherited child manifest config に載せるだけで、child/grandchild MCP execution は追加しない。
|
||||
- Docs は stdio config 宣言だけでは subprocess / tool/resource/prompt registration が起きないこと、local stdio MCP server は user OS permissions の通常 executable として動くこと、Yoi feature flags / Plugin permissions / MCP config validation は OS sandbox ではないことを明記している。
|
||||
|
||||
Non-blocking concerns / follow-ups:
|
||||
- `cargo test -p manifest --lib` は `plugin::tests::embedded_rust_component_tool_template_is_valid_package_shape` で失敗するが、この branch の diff は `crates/manifest/src/plugin.rs` や template files を変更していない。Reviewer は `b0225e48` 時点で既に同じ template resource/test mismatch があるため unrelated/pre-existing と判断した。
|
||||
|
||||
Reviewer validation:
|
||||
- `cargo fmt --all --check`: passed。
|
||||
- `git diff --check b0225e48..HEAD`: passed。
|
||||
- `cargo test -p manifest mcp --lib`: 5 MCP-focused tests passed。
|
||||
- `cargo check`: passed。
|
||||
- `nix build .#yoi --no-link`: passed。
|
||||
- `cargo test -p manifest --lib`: unrelated pre-existing plugin template-shape failure only。
|
||||
|
||||
Worktree status at review end: clean。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-20T07:28:20Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Merge and final validation report:
|
||||
|
||||
Merged implementation branch into Orchestrator branch:
|
||||
- Merge commit: `9b7c4e27 merge: mcp stdio config trust`
|
||||
- Implementation commit included:
|
||||
- `e0680cce mcp: add stdio server config`
|
||||
|
||||
Reviewer outcome:
|
||||
- r1 approved with no blocking issues。
|
||||
- Reviewer confirmed config-only boundary, no subprocess/MCP lifecycle implementation, redaction behavior, Profile/config integration, docs trust boundary, and that `cargo test -p manifest --lib` failure is unrelated/pre-existing plugin template test mismatch。
|
||||
|
||||
Orchestrator validation after merge passed:
|
||||
- `cargo fmt --all --check`
|
||||
- `git diff --check HEAD^1..HEAD`
|
||||
- `cargo test -p manifest mcp --lib`
|
||||
- `cargo check`
|
||||
- `nix build .#yoi --no-link`
|
||||
- `nix path-info -S .#yoi`: `112615056`
|
||||
|
||||
Validation log:
|
||||
- `/run/user/1000/yoi/yoi-orchestrator/bash-output/bash-uxMpR3.log`
|
||||
|
||||
Known unrelated validation note:
|
||||
- Full `cargo test -p manifest --lib` was not used as a final gate because Reviewer confirmed an unrelated/pre-existing plugin template-shape failure outside this branch's diff。
|
||||
|
||||
Final state:
|
||||
- Orchestrator worktree clean at `9b7c4e27` after validation。
|
||||
- Implementation worktree remains available for cleanup after Ticket completion records are committed。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: yoi-orchestrator at: 2026-06-20T07:28:26Z from: inprogress to: done reason: merged_reviewed_validated field: state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Implementation was merged into Orchestrator branch at `9b7c4e27`, review approved, and final Orchestrator validation passed: `cargo fmt --all --check`, `git diff --check HEAD^1..HEAD`, `cargo test -p manifest mcp --lib`, `cargo check`, and `nix build .#yoi --no-link`.
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: hare at: 2026-06-20T07:28:55Z from: done to: closed reason: closed field: state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Ticket を closed にしました。
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: close author: hare at: 2026-06-20T07:28:55Z status: closed -->
|
||||
|
||||
## 完了
|
||||
|
||||
## Resolution
|
||||
|
||||
`00001KVHR3WRF` を完了しました。
|
||||
|
||||
実装内容:
|
||||
- Typed MCP config schema を `crates/manifest` に追加しました。
|
||||
- Profile/config で named local stdio MCP server を宣言できるようにしました。
|
||||
- Config fields は `name`, `command`, `args`, `cwd`, `env.inherit`, `env.set` を含みます。
|
||||
- Env value は `literal`, `secret_ref`, `env_ref` をサポートします。
|
||||
- Validation は duplicate names、empty/NUL command/args、cwd policy/path、env var name、secret ref、NUL literal env values などを fail-closed で検査します。
|
||||
- Diagnostics / `Debug` は secret/env/literal values を plaintext で出さないよう redaction します。
|
||||
- Profile resolution / child manifest inheritance に MCP config を通しましたが、subprocess spawning / initialize / JSON-RPC lifecycle / tool/resource/prompt registration は実装していません。
|
||||
- Docs に local stdio MCP server の trust boundary を記録しました。Configured stdio server は user OS permissions で動く local executable であり、Yoi feature authority / Plugin permissions / MCP config validation は OS sandbox ではありません。
|
||||
|
||||
主な commit:
|
||||
- `e0680cce mcp: add stdio server config`
|
||||
- `9b7c4e27 merge: mcp stdio config trust`
|
||||
|
||||
Review:
|
||||
- r1 は `approve`。
|
||||
- Reviewer は config-only boundary、no process spawning/no auto-start、secret redaction、Profile/config integration、docs trust boundary を確認しました。
|
||||
|
||||
最終 validation:
|
||||
- `cargo fmt --all --check`
|
||||
- `git diff --check HEAD^1..HEAD`
|
||||
- `cargo test -p manifest mcp --lib`
|
||||
- `cargo check`
|
||||
- `nix build .#yoi --no-link`
|
||||
|
||||
Package impact:
|
||||
- `nix path-info -S .#yoi`: `112615056`
|
||||
|
||||
Known unrelated note:
|
||||
- Full `cargo test -p manifest --lib` は、branch 外の既存 Plugin template-shape mismatch で失敗するため最終 gate にしませんでした。Reviewer はこの failure が `b0225e48..HEAD` の diff に起因しないことを確認済みです。
|
||||
|
||||
Validation log:
|
||||
- `/run/user/1000/yoi/yoi-orchestrator/bash-output/bash-uxMpR3.log`
|
||||
|
||||
---
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
{"id":"orch-plan-20260620-060022-1","ticket_id":"00001KVHR3WRY","kind":"blocked_by","related_ticket":"00001KVHR3WRF","note":"Lifecycle client requires explicit local stdio MCP config/trust policy. `00001KVHR3WRF` is queued and not yet implemented; leave this Ticket queued until that dependency is closed.","author":"yoi-orchestrator","at":"2026-06-20T06:00:22Z"}
|
||||
{"id":"orch-plan-20260620-072936-2","ticket_id":"00001KVHR3WRY","kind":"accepted_plan","accepted_plan":{"summary":"Configured local stdio MCP serverを明示 config から起動し、newline-delimited JSON-RPC over stdioで initialize/capability negotiation/initialized notification/shutdownを行う lifecycle client foundation を実装する。Tools/resources/prompts registration/executionは後続 Ticket のため含めない。","branch":"impl/00001KVHR3WRY-mcp-stdio-lifecycle-client","worktree":"/home/hare/Projects/yoi/.worktree/00001KVHR3WRY-mcp-stdio-lifecycle-client","role_plan":"Orchestrator は acceptance records を commit 後、専用 implementation worktree `.worktree/00001KVHR3WRY-mcp-stdio-lifecycle-client` を作成し、Coder をその child worktree への narrow write scope で起動する。Coder 実装後、Reviewer が process lifecycle safety、JSON-RPC framing、initialize/capability negotiation、stderr bounds/redaction、shutdown/kill fallback、no ToolRegistry/resources/prompts exposure を確認する。"},"author":"yoi-orchestrator","at":"2026-06-20T07:29:36Z"}
|
||||
@@ -1,8 +1,8 @@
|
||||
---
|
||||
title: 'MCP: implement stdio JSON-RPC lifecycle client'
|
||||
state: 'queued'
|
||||
state: 'closed'
|
||||
created_at: '2026-06-20T05:30:04Z'
|
||||
updated_at: '2026-06-20T05:58:54Z'
|
||||
updated_at: '2026-06-20T07:59:30Z'
|
||||
assignee: null
|
||||
readiness: 'implementation_ready'
|
||||
risk_flags: ['mcp', 'stdio', 'json-rpc', 'process-lifecycle', 'diagnostics']
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
## Resolution
|
||||
|
||||
`00001KVHR3WRY` を完了しました。
|
||||
|
||||
実装内容:
|
||||
- New internal crate `mcp` を追加しました。
|
||||
- Explicit MCP stdio server config から resolved stdio server spec を作成する bridge を追加しました。
|
||||
- Tokio child process による local stdio MCP server lifecycle foundation を実装しました。
|
||||
- stdin/stdout/stderr handling、newline-delimited JSON-RPC request/response handling、initialize/capability negotiation、`notifications/initialized` を実装しました。
|
||||
- stdout/stderr/protocol payloads は bounded に扱います。
|
||||
- stderr は bounded diagnostics/logging として扱い、protocol failure とは別扱いです。
|
||||
- server name / phase-aware errors を追加しました。
|
||||
- shutdown は stdin close / wait / terminate / kill fallback で deterministic に行います。
|
||||
- Server-to-client requests は fail-closed し、sampling/elicitation は advertise せず、unknown request は JSON-RPC error で返します。
|
||||
- `McpStdioServerSpec` の `Debug` は custom redacted 実装にし、resolved env/secret-derived values を出さない regression test を追加しました。
|
||||
- ToolRegistry / tools/resources/prompts registration、remote MCP / Streamable HTTP / OAuth は実装していません。
|
||||
|
||||
主な commit:
|
||||
- `a114fa9d mcp: implement stdio lifecycle client`
|
||||
- `f396e1a2 mcp: redact stdio server spec debug`
|
||||
- `9cf5344f merge: mcp stdio lifecycle client`
|
||||
|
||||
Review:
|
||||
- r1 は resolved spec `Debug` による env/secret leak で `request_changes`。
|
||||
- Coder が custom redacted `Debug` と regression test を追加。
|
||||
- r2 は `approve`。
|
||||
|
||||
最終 validation:
|
||||
- `cargo fmt --check`
|
||||
- `git diff --check HEAD^1..HEAD`
|
||||
- `cargo test -p mcp`
|
||||
- `cargo check`
|
||||
- `cargo tree -p mcp --depth 1`
|
||||
- `nix build .#yoi --no-link`
|
||||
|
||||
Package impact:
|
||||
- `nix path-info -S .#yoi`: `112615056`
|
||||
@@ -13,4 +13,388 @@ LocalTicketBackend によって作成されました。
|
||||
Ticket を `workspace-panel` が queued にしました。
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: decision author: yoi-orchestrator at: 2026-06-20T06:00:44Z -->
|
||||
|
||||
## Decision
|
||||
|
||||
Routing decision: blocked_pending_dependency
|
||||
|
||||
Panel Queue により routing 対象として確認したが、`00001KVHR3WRY` は `00001KVHR3WRF` に `depends_on` している。`00001KVHR3WRF` はまだ queued で未実装のため、この Ticket は実装開始せず queued のまま保持する。
|
||||
|
||||
Next:
|
||||
- `00001KVHR3WRF` が closed になった後、改めて reroute する。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: decision author: yoi-orchestrator at: 2026-06-20T07:29:56Z -->
|
||||
|
||||
## Decision
|
||||
|
||||
Routing decision: implementation_ready
|
||||
|
||||
Reason:
|
||||
- Panel Queue により、この Ticket は Orchestrator routing 対象として明示許可された。
|
||||
- 前回は `00001KVHR3WRF` local stdio config/trust policy が未完了だったため blocked/queued hold としたが、現在 `00001KVHR3WRF` は closed。
|
||||
- Ticket body は stdio JSON-RPC lifecycle client の scope を initialize/capability negotiation/shutdown/process diagnostics foundation として明確に定義し、ToolRegistry/tools/resources/prompts exposure は non-goal として分離している。
|
||||
- 現在 inprogress は 0 件、child implementation Pods はなし、matching branch/worktree はなし、Orchestrator worktree は clean。
|
||||
- Risk domain は mcp / stdio / json-rpc / process-lifecycle / diagnostics だが、Ticket は explicit config only、bounded stderr diagnostics、safe shutdown/kill fallback、sampling/elicitation not advertised、no tools/resources/prompts registration などの invariants を明示している。bounded context check 後も implementation 前に必要な追加 human decision は見つからなかった。
|
||||
|
||||
Evidence checked:
|
||||
- Ticket `00001KVHR3WRY` body / thread / relations / artifacts。
|
||||
- `TicketRelationQuery(00001KVHR3WRY)`: outgoing `depends_on 00001KVHR3WRF` is now closed。Incoming `00001KVHR3WS6` / `00001KVHR3WSN` are downstream and not blockers。
|
||||
- `TicketOrchestrationPlanQuery(00001KVHR3WRY)`: previous `blocked_by 00001KVHR3WRF` is resolved; accepted plan recorded now。
|
||||
- Workspace state:
|
||||
- Orchestrator worktree clean at `8f5eef94`。
|
||||
- queued: remaining MCP chain Tickets。
|
||||
- inprogress: 0。
|
||||
- visible Pods: self + peers only; spawned children 0。
|
||||
- no matching MCP lifecycle branch/worktree。
|
||||
|
||||
IntentPacket:
|
||||
|
||||
Intent:
|
||||
- Implement a local stdio MCP lifecycle client foundation that can spawn an explicitly configured local server, exchange newline-delimited JSON-RPC on stdin/stdout, run initialize/capability negotiation, send `notifications/initialized`, and shut down safely。
|
||||
- This Ticket must not expose MCP tools/resources/prompts to the model-visible ToolRegistry; it only provides the lifecycle/protocol substrate for later Tickets。
|
||||
|
||||
Binding decisions / invariants:
|
||||
- Only explicit named config from `00001KVHR3WRF` can be used; no implicit discovery or auto-start from workspace/package presence。
|
||||
- Treat stdout as protocol messages and stderr as bounded diagnostics/logging, not automatic protocol failure。
|
||||
- Bound stdout/stderr lines, diagnostics, protocol payloads, startup timeout, request timeout, shutdown timeout, and kill fallback。
|
||||
- Include server name and startup phase in errors/diagnostics。
|
||||
- Do not advertise sampling or elicitation client capabilities; if server requests them, fail closed / return an error as appropriate。
|
||||
- Do not register tools/resources/prompts or expose any ToolRegistry surface in this Ticket。
|
||||
- No remote MCP / Streamable HTTP / OAuth。
|
||||
- Preserve trust boundary: local stdio server process runs as user OS executable; config validation is not sandbox authority。
|
||||
- Secret/env values from config must remain redacted in diagnostics/logs/errors。
|
||||
|
||||
Requirements / acceptance criteria:
|
||||
- Mock local stdio MCP server initializes successfully。
|
||||
- Initialize failure reports server name and phase。
|
||||
- Stderr is bounded and redacted where needed。
|
||||
- Shutdown is safe and deterministic, with terminate/kill fallback。
|
||||
- Sampling/elicitation are not advertised and fail closed if requested。
|
||||
- No tools/resources/prompts are registered by this Ticket。
|
||||
- Tests use local mock MCP server processes and cover success/failure/shutdown/diagnostic paths。
|
||||
|
||||
Escalate if:
|
||||
- Existing runtime boundaries make it unclear where lifecycle client should live without dragging ToolRegistry or Plugin feature authority into the config layer。
|
||||
- Protocol message typing requires a broad MCP provider substrate redesign。
|
||||
- Deterministic process tests are infeasible without an explicit test harness decision。
|
||||
|
||||
Next action:
|
||||
- Record `queued -> inprogress` and commit Ticket records before creating the implementation worktree and spawning Coder。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: yoi-orchestrator at: 2026-06-20T07:30:03Z from: queued to: inprogress reason: orchestrator_acceptance_mcp_stdio_lifecycle_client field: state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Ticket body/thread, relation metadata, closed MCP config dependency, Orchestrator worktree state, visible Pods, existing branch/worktree, and bounded MCP lifecycle context were checked. Dependency `00001KVHR3WRF` is closed, no inprogress/capacity blocker exists, and no missing planning decision was found. Accepting this queued Ticket for implementation before worktree/Pod side effects.
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-20T07:30:59Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Implementation orchestration start:
|
||||
- Acceptance records were committed on Orchestrator branch: `c0e760d7 ticket: accept mcp stdio lifecycle client`。
|
||||
- Created implementation worktree `/home/hare/Projects/yoi/.worktree/00001KVHR3WRY-mcp-stdio-lifecycle-client` on branch `impl/00001KVHR3WRY-mcp-stdio-lifecycle-client` at `c0e760d7`。
|
||||
- Spawned Coder Pod `yoi-coder-00001KVHR3WRY` with write scope limited to the implementation worktree and read-only root scope only for runtime workspace identity。
|
||||
- Coder task explicitly forbids root/original workspace implementation, ToolRegistry/tools/resources/prompts exposure for this Ticket, merge, Ticket close, and cleanup。
|
||||
|
||||
Next action:
|
||||
- Wait for Coder implementation report, then inspect branch diff/validation evidence and route to Reviewer。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-20T07:45:58Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Coder implementation report received from `yoi-coder-00001KVHR3WRY`.
|
||||
|
||||
Implementation commit:
|
||||
- `a114fa9d mcp: implement stdio lifecycle client`
|
||||
|
||||
Changed areas reported:
|
||||
- Added new internal reusable crate `crates/mcp`。
|
||||
- Implemented stdio MCP lifecycle foundation:
|
||||
- explicit resolved stdio server spec/config bridge from typed manifest MCP config。
|
||||
- Tokio child process spawn with `stdin` / `stdout` / `stderr`。
|
||||
- newline-delimited JSON-RPC request/response handling。
|
||||
- `initialize` capability negotiation。
|
||||
- `notifications/initialized`。
|
||||
- bounded stdout/stderr/protocol payload handling。
|
||||
- bounded/redacted stderr diagnostics。
|
||||
- server-name + phase-aware errors。
|
||||
- safe shutdown via stdin close, wait, terminate, and kill fallback。
|
||||
- fail-closed server-to-client request handling including sampling/elicitation。
|
||||
- Added mock local stdio MCP server test binary scoped to `crates/mcp` tests。
|
||||
- Updated workspace membership and `package.nix` cargo hash。
|
||||
|
||||
Coder validation reported:
|
||||
- `cargo test -p mcp`: passed。
|
||||
- `cargo check`: passed。
|
||||
- `cargo fmt --check`: passed。
|
||||
- `git diff --check`: passed。
|
||||
- `nix build .#yoi --no-link`: passed。
|
||||
|
||||
Acceptance notes reported:
|
||||
- Mock stdio MCP server initializes successfully。
|
||||
- Initialize failure includes server name and `initialize` phase。
|
||||
- stderr diagnostics are bounded and secret/env values are redacted。
|
||||
- Shutdown is deterministic with terminate/kill fallback for uncooperative server。
|
||||
- Client capabilities do not advertise sampling or elicitation。
|
||||
- Server sampling requests receive JSON-RPC `-32601` fail-closed response。
|
||||
- No ToolRegistry/tool/resource/prompt registration was added。
|
||||
|
||||
Known deferrals:
|
||||
- No MCP tools/resources/prompts exposure。
|
||||
- No remote MCP / Streamable HTTP / OAuth。
|
||||
- Downstream list/call/resource/prompt support remains for later Tickets。
|
||||
|
||||
Orchestrator evidence checked before review dispatch:
|
||||
- Implementation worktree is clean。
|
||||
- HEAD is `a114fa9d`。
|
||||
- Diff from acceptance `c0e760d7..HEAD` is one implementation commit touching 8 files, about 1369 insertions / 1 deletion。
|
||||
- `git diff --check c0e760d7..HEAD` produced no diagnostics。
|
||||
|
||||
Next action:
|
||||
- Dispatch Reviewer for r1 review against Ticket requirements, with focus on process lifecycle cleanup, JSON-RPC framing/bounds, stdout/stderr handling, secret redaction, sampling/elicitation fail-closed, no ToolRegistry/resources/prompts exposure, test determinism, and package/Nix impact。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: plan author: yoi-orchestrator at: 2026-06-20T07:46:38Z -->
|
||||
|
||||
## Plan
|
||||
|
||||
Review dispatch:
|
||||
- Spawned Reviewer Pod `yoi-reviewer-00001KVHR3WRY-r1` against implementation branch `impl/00001KVHR3WRY-mcp-stdio-lifecycle-client`。
|
||||
- Review target commit: `a114fa9d mcp: implement stdio lifecycle client`。
|
||||
- Review baseline: `c0e760d7`。
|
||||
- Reviewer task focuses on process lifecycle cleanup, JSON-RPC framing/bounds, initialize negotiation, stderr diagnostics/redaction, sampling/elicitation fail-closed behavior, no ToolRegistry/resources/prompts exposure, crate layering, deterministic tests, and Nix/package impact。
|
||||
- Reviewer is instructed not to edit source, commit, merge, close the Ticket, or use TicketReview directly; it will report verdict/evidence back to Orchestrator。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: review author: yoi-reviewer-00001KVHR3WRY-r1 at: 2026-06-20T07:51:30Z status: request_changes -->
|
||||
|
||||
## Review: request changes
|
||||
|
||||
Verdict: `request_changes`
|
||||
|
||||
確認範囲:
|
||||
- Ticket contract。
|
||||
- Diff: `c0e760d7..a114fa9d`。
|
||||
- 主な対象: `crates/mcp/src/stdio.rs`, `crates/mcp/src/lib.rs`, `crates/mcp/tests/stdio_lifecycle.rs`, `crates/mcp/tests/fixtures/mock_server.rs`, `crates/mcp/Cargo.toml`, root `Cargo.toml`, `Cargo.lock`, `package.nix`。
|
||||
- ToolRegistry/resource/prompt registration leakage と remote MCP/OAuth/HTTP scope creep を確認。
|
||||
|
||||
良い点:
|
||||
- stdio child spawn、newline JSON-RPC framing、initialize + initialized notification、bounded stdout/stderr handling、stderr-as-diagnostics、fail-closed server-to-client requests、shutdown/terminate/kill fallback、no model-visible registration surface は Ticket intent に概ね沿っている。
|
||||
|
||||
Blocking issue:
|
||||
1. Resolved stdio server spec の derived `Debug` が secret/env values を leak できる。
|
||||
- `crates/mcp/src/stdio.rs`
|
||||
- `McpStdioServerSpec` derives `Debug`。
|
||||
- `env: BTreeMap<String, String>` に inherited/env/literal/secret-derived values が入る。
|
||||
- `Redactions` は stderr/protocol diagnostics には使われているが、resolved spec 自体を `{:?}` で format/log すると env values が plaintext で出る。
|
||||
- これは Ticket の secret/env redaction 要件に反する。
|
||||
|
||||
Required fix:
|
||||
- `McpStdioServerSpec` から `Debug` を外す、または env values を出さない custom redacted `Debug` を実装する。
|
||||
- custom `Debug` を残す場合は regression test を追加する。
|
||||
|
||||
Non-blocking concerns:
|
||||
- Initialize response の `protocolVersion` compatibility enforcement は今後 tools/resources/prompts registration 前に判断が必要。Lifecycle slice としては follow-up で可。
|
||||
- `Drop` cleanup は best-effort `start_kill` / `kill_on_drop`。Downstream code should prefer explicit `shutdown()`。
|
||||
|
||||
Reviewer validation:
|
||||
- `git diff --check c0e760d7..HEAD`: passed。
|
||||
- `cargo fmt --check`: passed。
|
||||
- `cargo test -p mcp`: passed。
|
||||
- `cargo check`: passed。
|
||||
- `nix build .#yoi --no-link`: passed。
|
||||
- `cargo tree -p mcp --depth 1`: inspected; no product façade dependency found。
|
||||
|
||||
Worktree status at review end: clean。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-20T07:55:55Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Coder r1-fix report received from `yoi-coder-00001KVHR3WRY`.
|
||||
|
||||
New fix commit:
|
||||
- `f396e1a2 mcp: redact stdio server spec debug`
|
||||
|
||||
Branch commits now:
|
||||
- `f396e1a2 mcp: redact stdio server spec debug`
|
||||
- `a114fa9d mcp: implement stdio lifecycle client`
|
||||
|
||||
Fix summary:
|
||||
- Removed derived `Debug` from `McpStdioServerSpec`。
|
||||
- Added custom redacted `Debug` implementation。
|
||||
- Debug output preserves useful non-sensitive fields: `name`, `command`, `args`, `cwd`, env keys, and redaction count。
|
||||
- Debug output never prints resolved env values or redaction values。
|
||||
- Added regression test verifying `format!("{:?}", spec)` does not contain literal/inherited/env-ref/secret-ref plaintext values while still showing non-sensitive metadata。
|
||||
|
||||
Coder validation reported as passing:
|
||||
- `cargo fmt --check`
|
||||
- `cargo test -p mcp`
|
||||
- `cargo check`
|
||||
- `git diff --check c0e760d7..HEAD`
|
||||
- `cargo tree -p mcp --depth 1`
|
||||
- `nix build .#yoi --no-link`
|
||||
|
||||
Remaining deferrals:
|
||||
- Protocol-version compatibility enforcement before downstream tools/resources/prompts registration。
|
||||
- Downstream callers should prefer explicit `shutdown()` over best-effort `Drop` cleanup。
|
||||
|
||||
Orchestrator evidence checked before r2 review:
|
||||
- Implementation worktree is clean。
|
||||
- HEAD is `f396e1a2`。
|
||||
- Fix diff from `a114fa9d..HEAD` touches `crates/mcp/src/stdio.rs` and `crates/mcp/tests/stdio_lifecycle.rs`, about 47 insertions / 1 deletion。
|
||||
- Overall `git diff --check c0e760d7..HEAD` produced no diagnostics。
|
||||
|
||||
Next action:
|
||||
- Route back to Reviewer for r2 verification of the redacted `Debug` blocker and final acceptance criteria。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: review author: yoi-reviewer-00001KVHR3WRY-r1 at: 2026-06-20T07:58:02Z status: approve -->
|
||||
|
||||
## Review: approve
|
||||
|
||||
Verdict: `approve`
|
||||
|
||||
確認範囲:
|
||||
- Ticket authority / Orchestrator IntentPacket。
|
||||
- r2 fix diff: `a114fa9d..f396e1a2`。
|
||||
- 全体実装 diff: `c0e760d7..f396e1a2`。
|
||||
- 主な対象: `crates/mcp/src/stdio.rs`, `crates/mcp/tests/stdio_lifecycle.rs`, new crate/workspace/package changes, ToolRegistry/resource/prompt registration leakage の有無。
|
||||
|
||||
Previous blocker verification:
|
||||
- `McpStdioServerSpec` no longer derives `Debug`; it is `Clone` only。
|
||||
- Custom `fmt::Debug` now redacts env values and prints only non-sensitive metadata / env keys / `redaction_count`。
|
||||
- `redactions` contents are not printed。
|
||||
- Regression test confirms `format!("{spec:?}")` includes useful non-sensitive metadata and excludes plaintext env-like values。
|
||||
|
||||
Blocking issues: none。
|
||||
|
||||
Non-blocking concerns / follow-ups:
|
||||
- None blocking for this Ticket。Implementation remains scoped to stdio lifecycle/protocol foundations and does not add ToolRegistry/resource/prompt registration or remote/OAuth surfaces。
|
||||
|
||||
Reviewer validation:
|
||||
- `git diff --check c0e760d7..HEAD`: passed。
|
||||
- `cargo fmt --check`: passed。
|
||||
- `cargo test -p mcp`: passed; 5 tests passed including redacted Debug regression。
|
||||
- `cargo check`: passed。
|
||||
- `cargo tree -p mcp --depth 1`: inspected; dependencies limited to `libc`, `manifest`, `secrets`, `serde`, `serde_json`, `thiserror`, `tokio`; no product façade dependency。
|
||||
- `nix build .#yoi --no-link`: passed。
|
||||
- Additional grep found no added ToolRegistry/resource/prompt registration or remote/OAuth/HTTP scope creep。
|
||||
|
||||
Worktree status at review end: clean。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: implementation_report author: yoi-orchestrator at: 2026-06-20T07:59:04Z -->
|
||||
|
||||
## Implementation report
|
||||
|
||||
Merge and final validation report:
|
||||
|
||||
Merged implementation branch into Orchestrator branch:
|
||||
- Merge commit: `9cf5344f merge: mcp stdio lifecycle client`
|
||||
- Implementation commits included:
|
||||
- `a114fa9d mcp: implement stdio lifecycle client`
|
||||
- `f396e1a2 mcp: redact stdio server spec debug`
|
||||
|
||||
Reviewer outcome:
|
||||
- r1 requested changes for `McpStdioServerSpec` derived `Debug` leaking resolved env/secret-derived values。
|
||||
- Coder added custom redacted `Debug` and regression test。
|
||||
- r2 approved with no blocking issues。
|
||||
|
||||
Orchestrator validation after merge passed:
|
||||
- `cargo fmt --check`
|
||||
- `git diff --check HEAD^1..HEAD`
|
||||
- `cargo test -p mcp`
|
||||
- `cargo check`
|
||||
- `cargo tree -p mcp --depth 1`
|
||||
- `nix build .#yoi --no-link`
|
||||
- `nix path-info -S .#yoi`: `112615056`
|
||||
|
||||
Validation log:
|
||||
- inline Bash output for final validation command。
|
||||
|
||||
Final state:
|
||||
- Orchestrator worktree clean at `9cf5344f` after validation。
|
||||
- Implementation worktree remains available for cleanup after Ticket completion records are committed。
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: yoi-orchestrator at: 2026-06-20T07:59:10Z from: inprogress to: done reason: merged_reviewed_validated field: state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Implementation was merged into Orchestrator branch at `9cf5344f`, r2 review approved, and final Orchestrator validation passed: `cargo fmt --check`, `git diff --check HEAD^1..HEAD`, `cargo test -p mcp`, `cargo check`, `cargo tree -p mcp --depth 1`, and `nix build .#yoi --no-link`.
|
||||
|
||||
---
|
||||
|
||||
<!-- event: state_changed author: hare at: 2026-06-20T07:59:30Z from: done to: closed reason: closed field: state -->
|
||||
|
||||
## State changed
|
||||
|
||||
Ticket を closed にしました。
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: close author: hare at: 2026-06-20T07:59:30Z status: closed -->
|
||||
|
||||
## 完了
|
||||
|
||||
## Resolution
|
||||
|
||||
`00001KVHR3WRY` を完了しました。
|
||||
|
||||
実装内容:
|
||||
- New internal crate `mcp` を追加しました。
|
||||
- Explicit MCP stdio server config から resolved stdio server spec を作成する bridge を追加しました。
|
||||
- Tokio child process による local stdio MCP server lifecycle foundation を実装しました。
|
||||
- stdin/stdout/stderr handling、newline-delimited JSON-RPC request/response handling、initialize/capability negotiation、`notifications/initialized` を実装しました。
|
||||
- stdout/stderr/protocol payloads は bounded に扱います。
|
||||
- stderr は bounded diagnostics/logging として扱い、protocol failure とは別扱いです。
|
||||
- server name / phase-aware errors を追加しました。
|
||||
- shutdown は stdin close / wait / terminate / kill fallback で deterministic に行います。
|
||||
- Server-to-client requests は fail-closed し、sampling/elicitation は advertise せず、unknown request は JSON-RPC error で返します。
|
||||
- `McpStdioServerSpec` の `Debug` は custom redacted 実装にし、resolved env/secret-derived values を出さない regression test を追加しました。
|
||||
- ToolRegistry / tools/resources/prompts registration、remote MCP / Streamable HTTP / OAuth は実装していません。
|
||||
|
||||
主な commit:
|
||||
- `a114fa9d mcp: implement stdio lifecycle client`
|
||||
- `f396e1a2 mcp: redact stdio server spec debug`
|
||||
- `9cf5344f merge: mcp stdio lifecycle client`
|
||||
|
||||
Review:
|
||||
- r1 は resolved spec `Debug` による env/secret leak で `request_changes`。
|
||||
- Coder が custom redacted `Debug` と regression test を追加。
|
||||
- r2 は `approve`。
|
||||
|
||||
最終 validation:
|
||||
- `cargo fmt --check`
|
||||
- `git diff --check HEAD^1..HEAD`
|
||||
- `cargo test -p mcp`
|
||||
- `cargo check`
|
||||
- `cargo tree -p mcp --depth 1`
|
||||
- `nix build .#yoi --no-link`
|
||||
|
||||
Package impact:
|
||||
- `nix path-info -S .#yoi`: `112615056`
|
||||
|
||||
---
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"id":"orch-plan-20260620-060022-1","ticket_id":"00001KVHR3WS6","kind":"blocked_by","related_ticket":"00001KVHR3WRY","note":"Tool registration requires initialized MCP stdio lifecycle. `00001KVHR3WRY` is queued and depends on `00001KVHR3WRF`; leave this Ticket queued until lifecycle is closed.","author":"yoi-orchestrator","at":"2026-06-20T06:00:22Z"}
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'MCP: register server tools into ToolRegistry'
|
||||
state: 'queued'
|
||||
created_at: '2026-06-20T05:30:04Z'
|
||||
updated_at: '2026-06-20T05:58:58Z'
|
||||
updated_at: '2026-06-20T06:00:44Z'
|
||||
assignee: null
|
||||
readiness: 'implementation_ready'
|
||||
risk_flags: ['mcp', 'tools-list', 'tool-registry', 'schema', 'untrusted-metadata']
|
||||
|
||||
@@ -13,4 +13,17 @@ LocalTicketBackend によって作成されました。
|
||||
Ticket を `workspace-panel` が queued にしました。
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: decision author: yoi-orchestrator at: 2026-06-20T06:00:44Z -->
|
||||
|
||||
## Decision
|
||||
|
||||
Routing decision: blocked_pending_dependency
|
||||
|
||||
Panel Queue により routing 対象として確認したが、`00001KVHR3WS6` は `00001KVHR3WRY` に `depends_on` している。MCP tools/list registration は initialized stdio lifecycle を前提にするため、`00001KVHR3WRY` が closed になるまで実装開始せず queued のまま保持する。
|
||||
|
||||
Next:
|
||||
- `00001KVHR3WRY` が closed になった後、改めて reroute する。
|
||||
|
||||
---
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"id":"orch-plan-20260620-060022-1","ticket_id":"00001KVHR3WSD","kind":"blocked_by","related_ticket":"00001KVHR3WS6","note":"tools/call execution requires registered MCP tools. `00001KVHR3WS6` is queued and depends on lifecycle; leave this Ticket queued until tool registration is closed.","author":"yoi-orchestrator","at":"2026-06-20T06:00:22Z"}
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'MCP: execute tools/call through ordinary Tool path'
|
||||
state: 'queued'
|
||||
created_at: '2026-06-20T05:30:04Z'
|
||||
updated_at: '2026-06-20T05:59:04Z'
|
||||
updated_at: '2026-06-20T06:00:44Z'
|
||||
assignee: null
|
||||
readiness: 'implementation_ready'
|
||||
risk_flags: ['mcp', 'tools-call', 'permission', 'history', 'bounded-output']
|
||||
|
||||
@@ -13,4 +13,17 @@ LocalTicketBackend によって作成されました。
|
||||
Ticket を `workspace-panel` が queued にしました。
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: decision author: yoi-orchestrator at: 2026-06-20T06:00:44Z -->
|
||||
|
||||
## Decision
|
||||
|
||||
Routing decision: blocked_pending_dependency
|
||||
|
||||
Panel Queue により routing 対象として確認したが、`00001KVHR3WSD` は `00001KVHR3WS6` に `depends_on` している。MCP `tools/call` execution は registered MCP tools を前提にするため、`00001KVHR3WS6` が closed になるまで実装開始せず queued のまま保持する。
|
||||
|
||||
Next:
|
||||
- `00001KVHR3WS6` が closed になった後、改めて reroute する。
|
||||
|
||||
---
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"id":"orch-plan-20260620-060022-1","ticket_id":"00001KVHR3WSN","kind":"blocked_by","related_ticket":"00001KVHR3WRY","note":"Resources/prompts operations require initialized MCP stdio lifecycle. `00001KVHR3WRY` is queued and depends on `00001KVHR3WRF`; leave this Ticket queued until lifecycle is closed.","author":"yoi-orchestrator","at":"2026-06-20T06:00:22Z"}
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'MCP: expose resources and prompts as explicit tool operations'
|
||||
state: 'queued'
|
||||
created_at: '2026-06-20T05:30:04Z'
|
||||
updated_at: '2026-06-20T05:58:57Z'
|
||||
updated_at: '2026-06-20T06:00:44Z'
|
||||
assignee: null
|
||||
readiness: 'implementation_ready'
|
||||
risk_flags: ['mcp', 'resources', 'prompts', 'prompt-context', 'history', 'untrusted-content']
|
||||
|
||||
@@ -13,4 +13,17 @@ LocalTicketBackend によって作成されました。
|
||||
Ticket を `workspace-panel` が queued にしました。
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: decision author: yoi-orchestrator at: 2026-06-20T06:00:44Z -->
|
||||
|
||||
## Decision
|
||||
|
||||
Routing decision: blocked_pending_dependency
|
||||
|
||||
Panel Queue により routing 対象として確認したが、`00001KVHR3WSN` は `00001KVHR3WRY` に `depends_on` している。MCP resources/prompts operations は initialized stdio lifecycle を前提にするため、`00001KVHR3WRY` が closed になるまで実装開始せず queued のまま保持する。
|
||||
|
||||
Next:
|
||||
- `00001KVHR3WRY` が closed になった後、改めて reroute する。
|
||||
|
||||
---
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"id":"orch-plan-20260620-060022-1","ticket_id":"00001KVHR3WSW","kind":"blocked_by","related_ticket":"00001KVHR3WS6","note":"list_changed handling requires initial tools/list registration. `00001KVHR3WS6` is queued and depends on lifecycle; leave this Ticket queued until tool registration is closed.","author":"yoi-orchestrator","at":"2026-06-20T06:00:22Z"}
|
||||
@@ -2,7 +2,7 @@
|
||||
title: 'MCP: handle list_changed notifications safely'
|
||||
state: 'queued'
|
||||
created_at: '2026-06-20T05:30:04Z'
|
||||
updated_at: '2026-06-20T05:59:05Z'
|
||||
updated_at: '2026-06-20T06:00:44Z'
|
||||
assignee: null
|
||||
readiness: 'implementation_ready'
|
||||
risk_flags: ['mcp', 'notifications', 'tool-schema', 'prompt-cache', 'refresh']
|
||||
|
||||
@@ -13,4 +13,17 @@ LocalTicketBackend によって作成されました。
|
||||
Ticket を `workspace-panel` が queued にしました。
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: decision author: yoi-orchestrator at: 2026-06-20T06:00:44Z -->
|
||||
|
||||
## Decision
|
||||
|
||||
Routing decision: blocked_pending_dependency
|
||||
|
||||
Panel Queue により routing 対象として確認したが、`00001KVHR3WSW` は `00001KVHR3WS6` に `depends_on` している。list_changed handling は initial tools/list registration を前提にするため、`00001KVHR3WS6` が closed になるまで実装開始せず queued のまま保持する。
|
||||
|
||||
Next:
|
||||
- `00001KVHR3WS6` が closed になった後、改めて reroute する。
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user