yoi/.yoi/tickets/00001KVXK0WDH/thread.md

14 KiB

作成

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


Intake summary

Marked ready by yoi ticket state.


State changed

Marked ready by yoi ticket state.


State changed

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


Decision

Routing decision: implementation_ready

Reason:

  • Dashboard Queue により人間が Orchestrator routing を許可した queued Ticket として確認した。
  • この Ticket は legacy Plugin runtime redesign chain の 2 番目の concrete slice で、manifest validation / CLI diagnostics / docs cleanup に範囲が限定されている。
  • outgoing depends_on00001KVXK0WD3 だが、00001KVXK0WD3 は done / merged / reviewed / validated 済み。TicketShow derived blockers は空で、implementation acceptance blocker は残っていない。
  • incoming dependent 00001KVXK0WDQ はこの Ticket 完了後に進めるべき後続であり、この Ticket の acceptance blocker ではない。
  • TicketOrchestrationPlanQuery には以前の blocked_by 00001KVXK0WD3 があるが、prerequisite 完了により解消済みとして扱い、accepted plan orch-plan-20260624-205226-2 を記録した。
  • bounded context check で current orchestration branch の crates/manifest/src/plugin.rs, crates/yoi/src/plugin_cli.rs, docs/development/plugin-development.md, docs/design/plugin-component-model.md, docs/design/plugin-packages.md 周辺に raw wasm / yoi-plugin-wasm-1 / transitional wording が残っていることを確認した。Ticket の scope はこれらの outward schema/diagnostic/docs 整理として十分に具体的。

Evidence checked:

  • Ticket body / thread: item.md, thread.md。未解決 planning question は記録されていない。
  • Relations / orchestration plan: outgoing depends_on 00001KVXK0WD3 は done。incoming dependent 00001KVXK0WDQ は後続。
  • Related Ticket: 00001KVXK0WD3 は done。active legacy runtime fallback removal completed with corrected merge commit bedbb670
  • Code/docs context: crates/manifest/src/plugin.rs, crates/yoi/src/plugin_cli.rs, docs/development/plugin-development.md, docs/design/plugin-component-model.md, docs/design/plugin-packages.md
  • Workspace state: /home/hare/Projects/yoi/.worktree/orchestration は clean。inprogress Ticket は 0 件。

IntentPacket:

Intent:

  • Legacy raw wasm / yoi-plugin-wasm-1 Plugin runtime を external manifest/schema/CLI/docs surface でも rejected/retired として扱い、Component Model wasm-component を正の public/recommended runtime に一本化する。

Binding decisions / invariants:

  • 00001KVXK0WD3 の active runtime removal を前提にする。raw-WASM execution fallback を戻さない。
  • runtime.kind = "wasm-component" が positive accepted runtime kind。
  • legacy raw wasm / yoi-plugin-wasm-1 は new/current Plugin package として validation/inspection/check/list/show 上曖昧に active 表示しない。
  • Component Model package の check/list/show、package discovery、digest, grants, Tool schema diagnostics は regress させない。
  • Service / Ingress runtime、WebSocket driver、WIT/PDK/templates service event update は実装しない。

Requirements / acceptance criteria:

  • Legacy raw wasm runtime manifest が validation/check で明確に rejected/unsupported になる。
  • yoi plugin check は legacy package を invalid/unsupported として bounded diagnostic し、exit behavior が current check semantics と整合する。
  • yoi plugin list/show は legacy package を有効/active Plugin として曖昧に表示しない。
  • Component Model packages の check/list/show は通る。
  • docs/design / docs/development / templates/examples から raw core-Wasm compatibility bridge 前提を削除または撤回済み方針に更新する。
  • Manifest schema / static inspection / error message tests を更新する。

Implementation latitude:

  • PLUGIN_RUNTIME_WASM_KIND / PLUGIN_RUNTIME_WASM_ABI constants を削除するか、legacy rejection diagnostic 用に internal-only に残すかは code style と tests に合わせてよい。
  • Legacy fixture は削除または rejected fixture に変換してよい。
  • CLI human/json diagnostic wording は bounded and clear であれば具体文言は coder が選んでよい。

Escalate if:

  • Manifest parser cannot reject legacy runtime without breaking component packages。
  • Plugin list/show architecture cannot represent rejected package diagnostics without broader API redesign。
  • Implementing rejection requires Service/Ingress/WebSocket/WIT/PDK changes。
  • Existing closed Ticket constraints force raw core-Wasm compatibility to remain externally supported。

Validation:

  • cargo test -p manifest
  • cargo test -p yoi
  • cargo check -p yoi
  • git diff --check
  • nix build .#yoi --no-link
  • Add/run focused plugin CLI/check/list/show tests as appropriate。

Current code/docs map:

  • Primary: crates/manifest/src/plugin.rs, crates/yoi/src/plugin_cli.rs
  • Secondary: docs/development/plugin-development.md, docs/design/plugin-component-model.md, docs/design/plugin-packages.md, plugin templates/examples only as needed。
  • Avoid: crates/pod active runtime implementation unless minimal diagnostic alignment is needed; Service/Ingress/WebSocket/WIT/PDK event model。

Critical risks / reviewer focus:

  • legacy package still appears active/eligible in CLI inspection。
  • component package check/list/show regression。
  • raw-WASM execution fallback being reintroduced。
  • diagnostic wording that implies compatibility support remains。
  • scope creep into later service runtime Tickets。

Next action:

  • queued -> inprogress を記録してから worktree-workflow で /home/hare/Projects/yoi/.worktree/00001KVXK0WDH-plugin-manifest-reject-legacy を作成し、multi-agent-workflow で Coder/Reviewer sibling loop に進める。

State changed

Orchestrator acceptance: queued -> inprogress

  • 直前確認で TicketShow は state queued、derived blockers は空。
  • outgoing dependency 00001KVXK0WD3 は done / merged / reviewed / validated 済み。
  • accepted plan orch-plan-20260624-205226-2 を確認した。
  • routing decision と IntentPacket は Ticket thread に記録済み。
  • これ以降に worktree-workflow で /home/hare/Projects/yoi/.worktree/00001KVXK0WDH-plugin-manifest-reject-legacy を作成し、multi-agent-workflow に接続する。

Implementation report

Implementation orchestration update:

  • prerequisite 00001KVXK0WD3 が done になったため、00001KVXK0WDH を再 routing して受理した。
  • worktree-workflow に従い、implementation worktree /home/hare/Projects/yoi/.worktree/00001KVXK0WDH-plugin-manifest-reject-legacy と branch work/00001KVXK0WDH-plugin-manifest-reject-legacy を作成した。
  • child worktree では tracked .yoi project records を見える状態にし、.yoi/memory、local/runtime/log/lock/secret-like .yoi paths を sparse-checkout で除外する方針にした。
  • Coder Pod yoi-coder-00001KVXK0WDH-plugin-manifest-reject を sibling として起動した。write scope は child worktree に限定し、runtime workspace root /home/hare/Projects/yoi は startup 要件を満たすため non-recursive read のみにした。
  • Coder には root/original workspace と orchestration worktree で read/write/validation/git operation を行わないよう明示した。

Implementation report

Implementation report:

対象 Ticket:

  • 00001KVXK0WDH — Reject legacy Plugin runtime in manifest and CLI diagnostics

作業ブランチ / Worktree:

  • Worktree: /home/hare/Projects/yoi/.worktree/00001KVXK0WDH-plugin-manifest-reject-legacy
  • Branch: work/00001KVXK0WDH-plugin-manifest-reject-legacy

変更内容:

  • crates/manifest/src/plugin.rs
    • legacy raw wasm / yoi-plugin-wasm-1 runtime を manifest validation で reject。
    • wasm-component を現行 public runtime としてドキュメントコメントを更新。
    • raw-WASM runtime module 読み込み helper を削除。
    • legacy manifest rejection のテストを追加。
  • crates/yoi/src/plugin_cli.rs
    • CLI テスト fixture を wasm-component package へ移行。
    • yoi plugin check が legacy raw-WASM package を rejected として返すテストを追加。
    • list/show inspection 上で legacy package が active/eligible 表示されないことをテスト。
  • crates/pod/src/feature/plugin.rs
    • public manifest constant 依存を外し、legacy runtime 名は内部診断用 const に限定。
    • 既存の runtime fallback rejection 経路を維持。
  • docs/development/plugin-development.md
    • raw-WASM runtime を「互換/推奨」ではなく retired/rejected として記述更新。
    • wasm-component を supported/public runtime として明示。
  • docs/design/plugin-component-model.md
    • Component Model runtime を現行 supported runtime として更新。
    • raw-WASM は bounded diagnostic 用の rejected metadata として整理。
  • docs/design/plugin-packages.md
    • package runtime 記述を wasm-component 中心に更新。
    • legacy raw-WASM package は active/eligible ではなく rejected として表示されることを明記。

Validation:

  • cargo fmt --check: success
  • cargo test -p manifest: success
  • cargo test -p yoi: success
  • cargo check -p yoi: success
  • cargo test -p pod legacy_raw_wasm_runtime_is_rejected_without_fallback_execution: success
  • git diff --check: success
  • nix build .#yoi --no-link: success
    • dirty tree warning は未コミット検証時点の通常 warning。ビルド自体は成功。

Commit:

  • 6086099fe4807b5b12c8d13333f5544a4174e3d9 feat: reject legacy plugin runtime manifests

Residual risks / notes:

  • 既知の残リスクなし。
  • raw-WASM execution fallback は再導入していない。
  • legacy runtime 名は manifest/pod 内部の rejected diagnostic fixture/判定用としてのみ残している。
  • Service/Ingress runtime、WebSocket driver、WIT/PDK/templates の service event 更新、broader runtime redesign は実施していない。

Review: approve

Review result: approve

確認範囲:

  • child worktree /home/hare/Projects/yoi/.worktree/00001KVXK0WDH-plugin-manifest-reject-legacy
  • branch work/00001KVXK0WDH-plugin-manifest-reject-legacy
  • HEAD 6086099fe4807b5b12c8d13333f5544a4174e3d9
  • 実履歴上の親 ef1d8d9a → HEAD の差分をレビューした。指定 base 187e6426 はこの worktree では object missing だったが、HEAD の直前 commit は ticket: accept plugin manifest rejection task で、レビュー対象差分として妥当と判断した。

承認根拠:

  • Ticket / IntentPacket の要件と照合済み。
  • crates/manifest/src/plugin.rs:
    • legacy wasm / yoi-plugin-wasm-1 は public const ではなく internal rejection 用 const になっている。
    • validate_manifestkind = "wasm"legacy raw wasm ... retired; use wasm-component として Api/Manifest diagnostic 付きで拒否している。
    • wasm-component は正の runtime kind として component / world validation を維持している。
    • legacy rejection test が追加され、discovery package には入らず diagnostic になることを確認している。
  • crates/yoi/src/plugin_cli.rs:
    • plugin check は manifest/discovery rejection を status: "rejected" として bounded diagnostic に載せ、既存 check semantics 通り rejected で Err を返す。
    • list/show snapshot は discovery/resolution diagnostics から rejected item を構成し、legacy package を active/eligible として扱わない。
    • component fixture は wasm-component / plugin.component.wasm に更新され、legacy fixture は rejected fixture に変換されている。
  • crates/pod/src/feature/plugin.rs:
    • manifest crate の legacy runtime public const 依存は削除済み。
    • legacy name は internal diagnostic/rejection matching のみ。
    • PluginInstanceRuntime::new は legacy wasm を即エラーにし、raw-WASM fallback 実行は戻っていない。
  • docs:
    • docs/development/plugin-development.md
    • docs/design/plugin-component-model.md
    • docs/design/plugin-packages.md で raw core-Wasm compatibility 前提は撤回され、wasm-component が supported/public runtime と明記されている。
  • rg 'plugin\.wasm|kind = "wasm"|abi = "yoi-plugin-wasm-1"' で残存箇所を確認。残りは rejection docs/tests/diagnostics と component build artifact 名の文脈のみで、active public compatibility 表現は見当たらない。
  • 差分対象は manifest / CLI / pod diagnostic alignment / docs の 6 files に限定され、Service/Ingress/WebSocket/WIT/PDK runtime redesign への scope creep は確認していない。

Validation:

  • reviewer は read-only 制約のため cargo test / cargo check / nix build は再実行していない。
  • reviewer 側で git diff --check HEAD^..HEAD: success。
  • Coder reported validation (cargo fmt --check, cargo test -p manifest, cargo test -p yoi, cargo check -p yoi, focused pod test, nix build .#yoi --no-link) は実装内容と整合しており、追加で疑う材料はない。

Non-blocking note:

  • 親から指定された review base hash 187e6426 は誤記/存在しない hash だった。実レビューは child branch の実 parent ef1d8d9a を base として行われた。