From d73f748ee8d2e25217cafe3754eb9fa8870ddbed Mon Sep 17 00:00:00 2001 From: Hare Date: Mon, 15 Jun 2026 00:49:44 +0900 Subject: [PATCH] ticket: accept plugin package implementation --- .../artifacts/orchestration-plan.jsonl | 1 + .yoi/tickets/00001KT0Z4BK8/item.md | 4 +- .yoi/tickets/00001KT0Z4BK8/thread.md | 78 +++++++++++++++++++ 3 files changed, 81 insertions(+), 2 deletions(-) diff --git a/.yoi/tickets/00001KT0Z4BK8/artifacts/orchestration-plan.jsonl b/.yoi/tickets/00001KT0Z4BK8/artifacts/orchestration-plan.jsonl index e4a0551a..be37a511 100644 --- a/.yoi/tickets/00001KT0Z4BK8/artifacts/orchestration-plan.jsonl +++ b/.yoi/tickets/00001KT0Z4BK8/artifacts/orchestration-plan.jsonl @@ -1 +1,2 @@ {"id":"orch-plan-20260614-154052-1","ticket_id":"00001KT0Z4BK8","kind":"waiting_capacity_note","note":"Ticket 自体は implementation_ready で blocking relation なし。現在 `00001KTFY8V80` と `00001KV09WYC6` の Coder Pod が running で、review/integration follow-up capacity も必要なため、追加 spawn は一時待機する。","author":"yoi-orchestrator","at":"2026-06-14T15:40:52Z"} +{"id":"orch-plan-20260614-154934-2","ticket_id":"00001KT0Z4BK8","kind":"accepted_plan","accepted_plan":{"summary":"Accept queued Plugin package/discovery design Ticket now that one active Coder has moved to review stage. Implement as design proposal and minimal safe references, preserving Plugin/MCP/feature authority boundaries.","branch":"impl/00001KT0Z4BK8-plugin-package-discovery","worktree":"/home/hare/Projects/yoi/.worktree/00001KT0Z4BK8-plugin-package-discovery","role_plan":"Orchestrator creates a dedicated implementation worktree and spawns a Coder with write scope limited to that worktree. Reviewer will run read-only after implementation report. This work is documentation/design-focused and source-disjoint from active Panel/TUI implementation."},"author":"yoi-orchestrator","at":"2026-06-14T15:49:34Z"} diff --git a/.yoi/tickets/00001KT0Z4BK8/item.md b/.yoi/tickets/00001KT0Z4BK8/item.md index 7b77de25..07f89afb 100644 --- a/.yoi/tickets/00001KT0Z4BK8/item.md +++ b/.yoi/tickets/00001KT0Z4BK8/item.md @@ -1,8 +1,8 @@ --- title: 'Plugin distribution package format and discovery' -state: 'queued' +state: 'inprogress' created_at: '2026-06-01T06:49:53Z' -updated_at: '2026-06-14T15:40:52Z' +updated_at: '2026-06-14T15:49:39Z' queued_by: 'workspace-panel' queued_at: '2026-06-14T15:40:15Z' --- diff --git a/.yoi/tickets/00001KT0Z4BK8/thread.md b/.yoi/tickets/00001KT0Z4BK8/thread.md index 860b509d..e961cd3c 100644 --- a/.yoi/tickets/00001KT0Z4BK8/thread.md +++ b/.yoi/tickets/00001KT0Z4BK8/thread.md @@ -161,3 +161,81 @@ Next action: - planning return ではなく queued のまま waiting とする。 --- + + + +## Decision + +Routing decision: implementation_ready + +Reason: +- 先行 Coder のうち `00001KV09WYC6` が implementation report を返し review stage に入ったため、Plugin work 用の Coder capacity を再評価した。 +- Ticket body / thread / relations / orchestration plan / Orchestrator workspace state を再確認した。blocking relation はなく、既存 waiting note は capacity 起因であり、現在は1件分の Coder capacity を空けられる。 +- 本 Ticket は Plugin package / discovery / enablement boundary の design/documentation work が主で、active Panel/TUI implementation と source surface が大きく重ならない。 +- Plugin/MCP/feature-layer authority boundary に関する prior decisions は Ticket thread に記録済みで、残る不確実性は proposal の構成・記述・必要最小限の config shape 調査に閉じている。 + +Evidence checked: +- Ticket body / thread: package format、store/source mapping、discovery vs enablement、manifest semantics、runtime-specific notes、cache/pinning、diagnostics、prior Plugin/MCP/feature-layer decisions を確認。 +- Ticket relations: blocker なし。 +- OrchestrationPlan: capacity waiting note 1件のみ。blocking/conflict record なし。 +- Orchestrator workspace: `/home/hare/Projects/yoi/.worktree/orchestration` は clean、`80a9e40d` 上。 +- Active Pods: `00001KTFY8V80` coder running、`00001KV09WYC6` reviewer running。 +- Bounded code/doc map: Plugin docs は未作成。関連 candidate は `docs/design/*`, `crates/manifest/src/{config,profile}.rs`, `crates/pod/src/feature.rs`, `crates/pod/src/hook.rs`。 + +IntentPacket: + +Intent: +- `.yoi-plugin` package distribution/discovery/enablement boundary の durable design proposal を repository に追加し、後続 implementation Ticket を独立して切れる状態にする。 + +Binding decisions / invariants: +- Package presence in user/workspace plugin stores is discovery only; registration, WASM init, Hooks/Tools contribution, process/server startup, and MCP server launch require explicit enablement and grants. +- Source-qualified identity is required: `user:`, `project:`, `builtin:` are distinct; ambiguous unqualified IDs fail closed. +- Plugin permission declarations are requests, not grants. Effective grants are Plugin-layer policy plus existing manifest/profile/scope/tool/web/secret/runtime allowlists. +- Do not model Plugin permissions with `pod::feature` HostAuthority/grant concepts. +- MCP remains a separate feature-backed integration and is out of initial Plugin packaging/runtime unless future Ticket explicitly approves a bridge. +- Archive handling must reject path traversal and unsafe layout, use bounded extraction, compute deterministic digest, and materialize into digest-keyed cache before runtime initialization. +- Restore should use resolved manifest/session metadata for enabled Plugin plan; fresh discovery must not silently upgrade a restored Pod. + +Requirements / acceptance criteria: +- Repository contains a documented Plugin distribution/package proposal covering `.yoi-plugin` archive structure, root `plugin.toml`, assets, user/workspace/builtin stores, source/trust mapping, identity collision rules, discovery vs enablement, manifest fields, archive safety, cache/digest/pinning, diagnostics, and runtime-specific notes for declarative hooks and WASM. +- Proposal explicitly states store placement is discovery only, not execution or registration. +- Proposal distinguishes Plugin permission request/grant model from `pod::feature` authority concepts. +- Proposal calls out MCP as separate and out of initial Plugin packaging. +- Follow-up implementation cuts are clear for manifest/profile enablement, package discovery, archive validation/cache, Plugin permission policy, WASM packaging, and any future MCP/plugin bridge. + +Implementation latitude: +- Primary deliverable may be a design doc plus minimal cross-references; code changes are optional and should stay within safe internal boundaries. +- Coder may choose exact doc path/name consistent with existing docs organization. +- If proposing config shape, prefer illustrative schemas over broad runtime implementation unless obviously small and safe. + +Escalate if: +- A real runtime implementation becomes necessary to satisfy the Ticket. +- Plugin package design would require changing Profile/manifest authority semantics, Pod restore semantics, secret handling, or MCP enablement model. +- The proposal would imply workspace package execution or silent restore upgrades. + +Validation: +- `cargo fmt --check` if code or Rust doc tests are touched. +- `git diff --check` always. +- If only Markdown docs are touched, focused validation may be `git diff --check` plus link/path sanity review. + +Current code/doc map: +- Likely doc destination: `docs/design/`. +- Related architecture candidates: `crates/manifest/src/config.rs`, `crates/manifest/src/profile.rs`, `crates/pod/src/feature.rs`, `crates/pod/src/hook.rs`. + +Critical risks / reviewer focus: +- Discovery vs enablement separation. +- Plugin permission requests vs grants. +- MCP separation. +- Source identity collision/fail-closed behavior. +- Archive safety and digest/cache semantics. +- Restore/fresh discovery no silent upgrade invariant。 + +--- + + + +## State changed + +Routing decision と accepted implementation plan を記録済み。blocking relation / orchestration-plan blocker はなく、capacity waiting reason は解消した。implementation side effects の前に `queued -> inprogress` acceptance を記録する。 + +---