diff --git a/.yoi/tickets/00001KVJHYP4Q/artifacts/orchestration-plan.jsonl b/.yoi/tickets/00001KVJHYP4Q/artifacts/orchestration-plan.jsonl new file mode 100644 index 00000000..816435fa --- /dev/null +++ b/.yoi/tickets/00001KVJHYP4Q/artifacts/orchestration-plan.jsonl @@ -0,0 +1 @@ +{"id":"orch-plan-20260620-132846-1","ticket_id":"00001KVJHYP4Q","kind":"accepted_plan","accepted_plan":{"summary":"Plugin runtime を host-managed PluginInstanceRegistry 中心に再構成し、Tool/Service/Ingress を同一 Plugin instance の surface として扱う。既存 Tool-only component/raw wasm は compatibility adapter で維持し、新 instance component world / PDK / manifest/static inspection / plugin check-list-show reporting / lifecycle status / ingress test path / per-surface grants を実装する。","branch":"impl/00001KVJHYP4Q-plugin-instance-lifecycle","worktree":"/home/hare/Projects/yoi/.worktree/00001KVJHYP4Q-plugin-instance-lifecycle","role_plan":"Orchestrator は acceptance records を commit 後、専用 implementation worktree `.worktree/00001KVJHYP4Q-plugin-instance-lifecycle` を作成し、Coder をその child worktree への narrow write scope で起動する。Coder 実装後、Reviewer が instance registry boundary、legacy Tool compatibility、Service/Ingress grant validation、WIT/PDK/template/docs、ToolRegistry run-stability、no hidden context injection、diagnostics/bounds、Nix/package impact を重点確認する。"},"author":"yoi-orchestrator","at":"2026-06-20T13:28:46Z"} diff --git a/.yoi/tickets/00001KVJHYP4Q/item.md b/.yoi/tickets/00001KVJHYP4Q/item.md index 2c99fc9f..efec0a86 100644 --- a/.yoi/tickets/00001KVJHYP4Q/item.md +++ b/.yoi/tickets/00001KVJHYP4Q/item.md @@ -1,8 +1,8 @@ --- title: 'Plugin Service/Ingress component lifecycle surface' -state: 'queued' +state: 'inprogress' created_at: '2026-06-20T13:01:37Z' -updated_at: '2026-06-20T13:28:19Z' +updated_at: '2026-06-20T13:29:23Z' assignee: null queued_by: 'workspace-panel' queued_at: '2026-06-20T13:28:19Z' diff --git a/.yoi/tickets/00001KVJHYP4Q/thread.md b/.yoi/tickets/00001KVJHYP4Q/thread.md index 280ce52e..ffe386a9 100644 --- a/.yoi/tickets/00001KVJHYP4Q/thread.md +++ b/.yoi/tickets/00001KVJHYP4Q/thread.md @@ -30,4 +30,80 @@ Marked ready by `yoi ticket state`. Ticket を `workspace-panel` が queued にしました。 +--- + + + +## Decision + +Routing decision: implementation_ready + +Reason: +- Workspace Dashboard Queue により、この Ticket は Orchestrator routing 対象として明示許可された。 +- Ticket body は Plugin instance model / registry、new Component instance world、legacy Tool adapters、manifest/static validation、plugin check/list/show reporting、Service/Ingress lifecycle/status、Ingress test path、per-surface grants、docs/templates/PDK updates、validation を詳細に定義している。 +- 未解決 relation blocker はない。 +- 現在 queued はこの Ticket のみ、inprogress は 0 件、spawned child implementation Pods はなし、matching branch/worktree はなし、Orchestrator worktree は clean。 +- Risk domain は plugin / wasm-component / service / ingress / lifecycle / grants / runtime architecture だが、Ticket は no hidden context injection、ToolRegistry run-stability、legacy Tool compatibility、no ambient WASI network/socket、per-surface grants、host-mediated outputs を明示している。bounded context check 後も implementation 前に必要な追加 human decision は見つからなかった。 + +Evidence checked: +- Ticket `00001KVJHYP4Q` body / thread / relations / artifacts。 +- `TicketRelationQuery(00001KVJHYP4Q)`: no blockers。 +- `TicketOrchestrationPlanQuery(00001KVJHYP4Q)`: no previous plan records; accepted plan recorded now。 +- Workspace state: + - Orchestrator worktree clean at `7f06e656`。 + - queued: this Ticket only。 + - inprogress: 0。 + - visible Pods are self/peers only; spawned children 0。 + - no matching implementation branch/worktree。 + +IntentPacket: + +Intent: +- Move Plugin runtime semantics from per-Tool artifact execution to host-managed `PluginInstance` / `PluginInstanceRegistry`。 +- Treat Tool / Service / Ingress as surfaces of the same Plugin instance, sharing instance state/config/diagnostics while preserving explicit authorization and ordinary visible output paths。 +- Preserve existing Tool-only component/raw wasm Plugin packages through compatibility adapters。 + +Binding decisions / invariants: +- Existing Tool Plugin packages must continue to work through instance registry compatibility path。 +- Tool execution remains model/user initiated and returns through ordinary Tool result/history path。 +- Service/Ingress must not secretly call model Tools or mutate context/history directly。 +- Plugin outputs/events must use Tool results or explicit durable/visible host-mediated paths; no hidden context injection。 +- Tool schemas remain run-stable and model-visible only through normal ToolRegistry construction。 +- Per-surface grants are independent: Tool, Service, Ingress grants must be validated separately; sharing an instance must not bypass authorization。 +- Host APIs remain separately grant-gated。 +- No raw ambient WASI network/socket authority。 +- Ingress events are bounded typed untrusted inputs。 +- If a safe host action path does not exist, expose diagnostics/status rather than inventing unsafe paths。 + +Requirements / acceptance criteria: +- Add `PluginInstanceRegistry` or equivalent host-managed instance boundary。 +- ToolRegistry dispatch goes through Plugin instance handles。 +- Add new Component instance world/resource files and Rust PDK support。 +- Add legacy Tool component/raw wasm adapters behind the instance registry。 +- Extend manifest/static validation for Service/Ingress declarations and runtime compatibility。 +- Update `yoi plugin check/list/show` reporting for legacy Tool-only vs instance-capable packages and rejected surfaces。 +- Add host-managed start/status/stop lifecycle and bounded diagnostics。 +- Add Ingress dispatch API and at least one bounded in-process ingress delivery test path。 +- Validate Tool/Service/Ingress grants independently。 +- Update docs/templates for instance-oriented authoring。 +- Focused tests cover manifest validation, legacy compatibility, instance state persistence across Tool calls, Tool/Ingress shared instance dispatch, grant denial, timeout/trap/failure diagnostics。 +- Validation includes `cargo fmt --check`, relevant tests/checks, `git diff --check`, `yoi ticket doctor`, and `nix build .#yoi --no-link`。 + +Escalate if: +- The instance boundary cannot be implemented without broad Worker/ToolRegistry redesign beyond Ticket scope。 +- Preserving legacy Tool runtime while adding instance runtime would substantially distort architecture。 +- Safe Service/Ingress host action semantics require a product decision not already specified。 +- WIT/PDK interface shape requires a compatibility-breaking public API decision beyond this Ticket。 + +Next action: +- Record `queued -> inprogress` and commit Ticket records before creating implementation worktree and spawning Coder。 + +--- + + + +## State changed + +Ticket body/thread, relation metadata, Orchestrator worktree state, visible Pods, existing branch/worktree, and bounded Plugin instance lifecycle 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. + ---