yoi/.yoi/tickets/00001KVHKWNQA/thread.md

7.0 KiB

作成

LocalTicketBackend によって作成されました。


State changed

Ticket を workspace-panel が queued にしました。


Decision

Routing decision: implementation_ready

Reason:

  • Panel Queue により、この Ticket は Orchestrator routing 対象として明示許可された。
  • Ticket body は Rust PDK crate、guest-side only boundary、ergonomic Tool helpers、Component Model binding glue、embedded rust-component-tool template、docs/tests/validation/non-goals を実装可能な粒度で定義している。
  • Blocking dependency 00001KVG0HR96 Component Model runtime は closed。Component runtime は explicit wasm-component metadata、ToolRegistry path、grant enforcement、no ambient WASI、resource limits、WIT files を含めて完了済み。
  • Incoming dependency from 00001KVHKWNQS は、この Ticket が将来の authoring CLI Ticket を unblock する関係であり、本 Ticket の blocker ではない。
  • Related Plugin CLI / HTTPS / FS Tickets は closed または non-blocking context。
  • 現在 queued はこの Ticket のみ、inprogress は 0 件、child implementation Pods はなし、matching branch/worktree はなし、Orchestrator worktree は clean。
  • Risk domain は plugin / pdk / component-model / authoring / templates / sdk / no-crates-io だが、Ticket は no crates.io publication、no remote template fetch、guest-side only、no ambient authority、host-side grants remain authority などの invariants を明示している。bounded context check 後も implementation 前に必要な追加 human decision は見つからなかった。

Evidence checked:

  • Ticket 00001KVHKWNQA body / thread / relations / artifacts。
  • TicketRelationQuery(00001KVHKWNQA): outgoing depends_on target 00001KVG0HR96 is closed。incoming 00001KVHKWNQS depends_on this is not a blocker。
  • TicketOrchestrationPlanQuery(00001KVHKWNQA): no previous plan records; accepted plan was recorded now。
  • Workspace state:
    • Orchestrator worktree clean at 9ca2f85b
    • queued: this Ticket only。
    • inprogress: 0。
    • visible Pods: self + peers only; spawned children 0。
    • no matching implementation branch/worktree。
  • Code/resource context:
    • resources/plugin/wit/yoi-plugin-tool-v1.wit and resources/plugin/wit/yoi-host-v1.wit exist from the Component runtime work。
    • docs/development/plugin-development.md is the current Plugin development guide target。
    • Cargo workspace has no existing crates/plugin-pdk crate。

IntentPacket:

Intent:

  • Add a first-party Rust PDK for Component Model Tool Plugins and an embedded starter template so authors can implement Yoi Plugin Tools without raw pointer/length ABI plumbing or remote template fetches。
  • Position Component Model + PDK as preferred authoring path while keeping raw core-Wasm ABI as compatibility/transitional runtime support。

Binding decisions / invariants:

  • PDK is guest-side only。It must not depend on host runtime crates such as pod, llm-worker, tui, or client
  • PDK must not grant or imply authority。Host-side Plugin manifest grants remain the authority boundary for Tool execution / HTTPS / FS host APIs。
  • No ambient fs/network/env authority is introduced。
  • Do not publish to crates.io and do not implement remote template fetch。
  • Do not implement yoi plugin new/check/pack in this Ticket; embedded resources should be suitable for that future Ticket。
  • Template dependency policy must support checkout/dev local path dependency and document a future out-of-tree git rev pattern。
  • PDK should target the current Component Model Tool world (yoi:plugin/tool@1.0.0) and runtime ToolOutput JSON bridge。
  • Prefer minimal, testable helper APIs over broad macro magic。

Requirements / acceptance criteria:

  • Add workspace crate yoi-plugin-pdk under crates/plugin-pdk or a justified equivalent。
  • Provide typed JSON input parsing, output serialization, structured/bounded ToolError, ToolContext with at least tool name, and helper equivalent to run_json_tool producing ToolOutput JSON accepted by the current runtime。
  • Provide WIT binding glue/re-export/wrapper enough that authors do not hand-write raw pointer/length ABI code。
  • Add embedded template under resources/plugin/templates/rust-component-tool/ with Cargo.toml, src/lib.rs, plugin.toml, and README/next steps。
  • Include example or fixture Plugin using the PDK。
  • Update Plugin development docs and explain publication/template-fetch deferrals。
  • Tests cover PDK happy/error paths, template/sample fixture validation, runtime acceptance if feasible, and no host-runtime crate dependency。
  • Validation includes focused PDK/plugin tests, cargo fmt --check, relevant cargo check/cargo test, git diff --check, and nix build .#yoi because workspace/package/resources may change。

Escalate if:

  • Current WIT/runtime shape cannot support a guest-side helper without changing the Component runtime contract。
  • A full sample component build requires external tooling that cannot be kept deterministic in this repo。
  • Keeping the PDK guest-only would require undesirable dependencies on host crates。
  • Template/resource packaging needs a broader CLI/resource architecture decision。

Next action:

  • Record queued -> inprogress and commit Ticket records before creating the implementation worktree and spawning Coder。

State changed

Ticket body/thread, relation metadata, Component Model runtime dependency state, related completed Tickets, Orchestrator worktree state, visible Pods, existing branch/worktree, and bounded resource/code context were checked. Dependency 00001KVG0HR96 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.


Implementation report

Implementation orchestration start:

  • Acceptance records were committed on Orchestrator branch: 5f7f81bd ticket: accept plugin rust pdk templates.
  • Created implementation worktree /home/hare/Projects/yoi/.worktree/00001KVHKWNQA-plugin-rust-pdk-templates on branch impl/00001KVHKWNQA-plugin-rust-pdk-templates at 5f7f81bd.
  • Spawned Coder Pod yoi-coder-00001KVHKWNQA 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, merge, Ticket close, and cleanup.

Next action:

  • Wait for Coder implementation report, then inspect branch diff/validation evidence and route to Reviewer.