chore: update orchestration and plugin tickets

This commit is contained in:
2026-06-14 23:49:45 +09:00
parent adebedc021
commit d66dfbbbc2
35 changed files with 410 additions and 70 deletions
+9 -8
View File
@@ -2,7 +2,7 @@
title: 'Plugin distribution package format and discovery'
state: 'planning'
created_at: '2026-06-01T06:49:53Z'
updated_at: '2026-06-13T15:29:21Z'
updated_at: '2026-06-14T14:34:33Z'
---
## Background
@@ -13,8 +13,8 @@ MCP is intentionally not modeled as a Plugin package/runtime in this Ticket. MCP
The desired initial direction is a single-file plugin package that can be placed in user or workspace plugin stores, for example:
- `~/.config/yoi/plugins/<id>.yoi-plugin`
- `./.yoi/plugins/<id>.yoi-plugin`
- `${XDG_DATA_HOME:-~/.local/share}/yoi/plugins/<id>.yoi-plugin`
- `<workspace>/.yoi/plugins/<id>.yoi-plugin`
The package should be easy to copy, inspect, cache, and pin while preserving Yoi's scope, permission, history, prompt-context, and trust invariants. Workspace plugins may come from a repository checkout and must not execute merely because an archive exists under `./.yoi/plugins`.
@@ -26,10 +26,11 @@ The package should be easy to copy, inspect, cache, and pin while preserving Yoi
- Support packaged assets such as `module.wasm`, JSON schemas, README, and license files.
- Specify archive safety rules, including path traversal rejection, bounded extraction, and deterministic digest calculation.
- Define plugin stores and source/trust mapping.
- User plugin store: `~/.config/yoi/plugins/`.
- Workspace/project plugin store: `./.yoi/plugins/`.
- Map stores to the existing source vocabulary (`User`, `Project`/workspace, and future `Builtin`).
- Treat `user:<id>` and `project:<id>` as distinct plugin references; ambiguous unqualified IDs should fail closed.
- User plugin store: `${XDG_DATA_HOME:-~/.local/share}/yoi/plugins/`.
- Workspace/project plugin store: `<workspace>/.yoi/plugins/`.
- Builtin plugin source: Yoi-distributed `builtin:` registry.
- Map stores to the source vocabulary (`user`, `project`, `builtin`).
- Treat `user:<id>` and `project:<id>` as distinct plugin references; ambiguous unqualified IDs fail closed.
- Separate discovery from enablement.
- Yoi may discover plugin packages in configured stores.
- Discovered packages must not register Tools/Hooks, initialize WASM, start services, or start MCP servers until explicitly enabled by manifest/profile configuration.
@@ -80,7 +81,7 @@ The package should be easy to copy, inspect, cache, and pin while preserving Yoi
## Acceptance criteria
- The repository has a documented plugin distribution/package proposal covering user and workspace plugin stores, single-file archive format, manifest fields, archive safety, cache/digest behavior, and discovery vs enablement.
- The proposal explicitly states that placing a package in `~/.config/yoi/plugins/` or `./.yoi/plugins/` is discovery only, not execution or registration.
- The proposal explicitly states that placing a package in `${XDG_DATA_HOME:-~/.local/share}/yoi/plugins/` or `<workspace>/.yoi/plugins/` is discovery only, not execution or registration.
- The design maps package sources to user/project/builtin trust categories and defines how ID collisions and ambiguous selectors are handled.
- The design explains Plugin permission requests/grants as Plugin-layer policy, distinct from `pod::feature` authority/grant concepts.
- Runtime-specific notes cover declarative hooks and WASM packages; MCP is called out as a separate feature-backed integration, not part of initial Plugin packaging.
+13
View File
@@ -37,4 +37,17 @@ Distribution direction from user discussion:
- `00001KSXRQ4G8``00001KT0Z4BK8` は Plugin permission を Plugin layer として扱い、MCP を初期 Plugin packaging/runtime から分離する。
---
<!-- event: decision author: hare at: 2026-06-14T14:34:33Z -->
## Decision
決定:
- Plugin discovery stores, source-qualified identity, discovery/enablement separation, Pod-startup initialization timing, restore behavior, and MCP boundaryをこの `00001KT0Z4BK8` の安定 contract として統合した。
- User Plugin package store は `${XDG_DATA_HOME:-~/.local/share}/yoi/plugins/` とし、`~/.config/yoi/plugins/` は使わない。
- Package presence は discovery only であり、実行・登録・runtime initialization は explicit enablement 後の Pod startup に限定する。
- Restore は metadata snapshot の enabled Plugin plan を正本とし、fresh discovery で silent upgrade しない。
---
+2 -2
View File
@@ -1,8 +1,8 @@
---
title: "Preserve active workflows across compaction"
state: "planning"
state: 'ready'
created_at: "2026-06-07T02:23:28Z"
updated_at: "2026-06-07T02:23:28Z"
updated_at: '2026-06-14T14:13:43Z'
---
## Background
+58
View File
@@ -5,3 +5,61 @@
Created by LocalTicketBackend create.
---
<!-- event: comment author: ticket-intake at: 2026-06-14T14:13:35Z -->
## Comment
## Intake refinement
既存 Ticket `00001KTFY8V80` を確認した。新規 duplicate Ticket は作成しない。
### Readiness
- readiness: implementation_ready
- risk_flags: [prompt-context, persistence, workflow-state, compaction]
この Ticket は、active workflow を compaction / rehydration 後も継続可能にする concrete work item として十分に bounded されている。実装戦術の調査余地は残るが、Orchestrator が implementation routing できる要件・受け入れ条件・検証観点は揃っている。
### Binding decisions / invariants
- active workflow の進行中状態を、history に残らない transient context 注入だけで復元してはならない。
- compaction / restore 後に「どの workflow が継続中か」「どの手順段階・義務が残っているか」をモデルが説明可能でなければならない。
- workflow state の復元は、prompt context 加工原則に反しない形で durable source から再構成する。
- missing / corrupt / obsolete workflow state は fail-closed または bounded diagnostic として扱い、silently stale instructions を実行しない。
- Ticket / Pod history / workflow record / compaction output の authority boundary を混同しない。
### Implementation latitude
- workflow state の永続化先・schema・snapshot 粒度は、既存 Pod/session/compaction architecture に合わせて選んでよい。
- active workflow body を invocation-time snapshot として保持するか、rehydration 時に最新 resource を参照するかは、実装時に明示的に決定し、互換性・安全性の理由をコードまたは docs / Ticket 報告に残す。
- UI/diagnostic 表示の具体的な文言や internal field 名は、既存設計に沿って調整してよい。
### Escalation conditions
- workflow snapshot vs latest body の選択が authority boundary または backward compatibility を大きく変える場合。
- compaction が workflow obligations を再現するために hidden context injection を必要としそうな場合。
- persisted workflow state の migration / compatibility 方針が既存 records を破壊する場合。
- implementation が Ticket lifecycle / Orchestrator queue semantics / workflow invocation semantics を広げる必要を見つけた場合。
### Related context checked
- closed `00001KTG3AZQ8` / `00001KTG3BX0R` は Orchestrator routing / merge completion の完了済み関連文脈であり、本 Ticket の duplicate ではない。
---
<!-- event: intake_summary author: ticket-intake at: 2026-06-14T14:13:43Z -->
## Intake summary
既存 Ticket `00001KTFY8V80` を精査し、duplicate は作成しない方針で refinement を記録した。対象は active Workflow invocation/state/obligations を durable state/history と compaction/rehydration 経路に載せ、compaction 後も `/multi-agent-workflow` / `/worktree-workflow` などの active obligations を traceable に継続できるようにする実装 work item。readiness は implementation_ready。risk flags は prompt-context / persistence / workflow-state / compaction。Orchestrator は implementation routing 可能だが、snapshot vs latest workflow body の選択、hidden context injection 回避、missing/corrupt persisted state の fail-closed diagnostic、Ticket/Pod/history/workflow authority boundary を reviewer focus に含める。
---
<!-- event: state_changed author: ticket-intake at: 2026-06-14T14:13:43Z from: planning to: ready reason: intake_ready field: state -->
## State changed
Intake refinement が完了し、要件・受け入れ条件・binding invariants・escalation conditions が Ticket thread に記録されたため `planning -> ready` にします。実装 side effects は Orchestrator routing 後に行います。
---
+2 -2
View File
@@ -1,8 +1,8 @@
---
title: 'Extend pod::feature API for external protocol-backed capability providers'
state: 'done'
state: 'closed'
created_at: '2026-06-10T07:48:14Z'
updated_at: '2026-06-14T06:39:48Z'
updated_at: '2026-06-14T14:00:13Z'
assignee: null
readiness: 'implementation_ready'
risk_flags: ['feature-api', 'tool-registry', 'permission-scope', 'prompt-context', 'dynamic-registry', 'service-lifecycle']
+1
View File
@@ -0,0 +1 @@
Closed after prior done-state completion.
+18
View File
@@ -178,4 +178,22 @@ Next:
Implementation branch was reviewed, approved, merged into the Orchestrator branch as `3d140dbb`, and validated in the Orchestrator worktree. Feature-provider focused tests, formatting, diff check, and workspace check passed. Ticket implementation work is done; closure remains separate.
---
<!-- event: state_changed author: hare at: 2026-06-14T14:00:13Z from: done to: closed reason: closed field: state -->
## State changed
Ticket を closed にしました。
---
<!-- event: close author: hare at: 2026-06-14T14:00:13Z status: closed -->
## 完了
Closed after prior done-state completion.
---
+2 -2
View File
@@ -1,8 +1,8 @@
---
title: 'Profile extend API を廃止して import + Lua 代入に寄せる'
state: 'done'
state: 'closed'
created_at: '2026-06-13T07:31:09Z'
updated_at: '2026-06-14T06:34:34Z'
updated_at: '2026-06-14T14:00:13Z'
assignee: null
readiness: 'implementation_ready'
risk_flags: ['profiles', 'lua-api', 'builtin-resources', 'migration']
+1
View File
@@ -0,0 +1 @@
Closed after prior done-state completion.
+18
View File
@@ -179,4 +179,22 @@ Next:
Implementation branch was reviewed, approved, merged into the Orchestrator branch as `58b15ee6`, and validated in the Orchestrator worktree. Focused manifest profile tests, formatting, diff check, `cargo build -p yoi`, and `nix build .#yoi` passed after cleanup freed disk space. Ticket implementation work is done; closure remains separate.
---
<!-- event: state_changed author: hare at: 2026-06-14T14:00:13Z from: done to: closed reason: closed field: state -->
## State changed
Ticket を closed にしました。
---
<!-- event: close author: hare at: 2026-06-14T14:00:13Z status: closed -->
## 完了
Closed after prior done-state completion.
---
+2 -2
View File
@@ -1,8 +1,8 @@
---
title: 'Workspace panel: show Ticket-associated Intake Pods adjacent to Ticket rows'
state: 'planning'
state: 'ready'
created_at: '2026-06-13T10:54:31Z'
updated_at: '2026-06-13T10:54:31Z'
updated_at: '2026-06-14T14:12:11Z'
assignee: null
readiness: 'implementation_ready'
risk_flags: ['panel-ux', 'local-role-session-registry', 'pod-session-state']
+16
View File
@@ -5,3 +5,19 @@
LocalTicketBackend によって作成されました。
---
<!-- event: intake_summary author: ticket-intake at: 2026-06-14T14:12:11Z -->
## Intake summary
既存 Ticket 00001KV09WYC6 の body/thread/artifacts を確認した。要件、受け入れ条件、binding decisions / invariants、implementation latitude、escalation conditions、validation が揃っており、readiness は `implementation_ready` と判断できる。未解決の blocking open question はない。risk_flags は `panel-ux`, `local-role-session-registry`, `pod-session-state`。次は Orchestrator が routing し、実装時は Panel の selection/keyboard semantics、one-active-claim-per-Ticket invariant、pre-Ticket Intake の誤関連付け回避、registry schema migration 不要の維持を重点確認する。
---
<!-- event: state_changed author: ticket-intake at: 2026-06-14T14:12:11Z from: planning to: ready reason: planning_ready field: state -->
## State changed
Intake 確認により、既存 Ticket の要件は実装 routing 可能な状態と判断した。実装 side effect は Orchestrator の queue/routing flow に委ねる。
---
+2 -2
View File
@@ -1,8 +1,8 @@
---
title: 'Panel から ready Ticket を指示付きで planning に戻して Intake を再開できるようにする'
state: 'done'
state: 'closed'
created_at: '2026-06-13T10:54:34Z'
updated_at: '2026-06-14T05:09:07Z'
updated_at: '2026-06-14T14:00:13Z'
assignee: null
readiness: 'implementation_ready'
risk_flags: ['panel-action', 'ticket-lifecycle', 'role-session', 'authority-boundary']
+1
View File
@@ -0,0 +1 @@
Closed after prior done-state completion.
+18
View File
@@ -182,4 +182,22 @@ Next:
Implementation branch was reviewed, approved, merged into the Orchestrator branch as `7a6321d9`, and validated in the Orchestrator worktree. Focused TUI planning-return/intake/workspace-panel tests, Ticket tests, formatting, and diff check passed. Ticket implementation work is done; closure remains separate.
---
<!-- event: state_changed author: hare at: 2026-06-14T14:00:13Z from: done to: closed reason: closed field: state -->
## State changed
Ticket を closed にしました。
---
<!-- event: close author: hare at: 2026-06-14T14:00:13Z status: closed -->
## 完了
Closed after prior done-state completion.
---
+2 -2
View File
@@ -1,8 +1,8 @@
---
title: 'Remove feature-layer HostAuthority model'
state: 'done'
state: 'closed'
created_at: '2026-06-13T15:30:22Z'
updated_at: '2026-06-13T19:02:01Z'
updated_at: '2026-06-14T14:00:13Z'
assignee: null
readiness: 'implementation_ready'
risk_flags: ['feature-api', 'tool-registry', 'ticket-tools']
+1
View File
@@ -0,0 +1 @@
Closed after prior done-state completion.
+18
View File
@@ -205,4 +205,22 @@ Next:
Implementation branch was reviewed, approved, merged into the Orchestrator branch as `297e95ef`, and validated in the Orchestrator worktree. Focused pod/ticket tests, formatting, diff check, and `cargo check --workspace --all-targets` passed after cleanup freed disk space. Ticket implementation work is done; closure remains separate.
---
<!-- event: state_changed author: hare at: 2026-06-14T14:00:13Z from: done to: closed reason: closed field: state -->
## State changed
Ticket を closed にしました。
---
<!-- event: close author: hare at: 2026-06-14T14:00:13Z status: closed -->
## 完了
Closed after prior done-state completion.
---
+2 -2
View File
@@ -1,8 +1,8 @@
---
title: 'Panel Orchestrator の orchestration branch 名を ticket.config.toml で設定可能にする'
state: 'done'
state: 'closed'
created_at: '2026-06-13T16:29:25Z'
updated_at: '2026-06-14T05:05:57Z'
updated_at: '2026-06-14T14:00:13Z'
assignee: null
readiness: 'implementation_ready'
risk_flags: ['config-schema', 'git-worktree', 'panel-orchestration']
+1
View File
@@ -0,0 +1 @@
Closed after prior done-state completion.
+18
View File
@@ -189,4 +189,22 @@ Next:
Implementation branch was reviewed, approved, merged into the Orchestrator branch as `290c4230`, and validated in the Orchestrator worktree. Focused ticket config / TUI orchestration worktree / configured branch / queue action tests, formatting, diff check, `cargo build -p yoi`, and `yoi ticket doctor` passed. Ticket implementation work is done; closure remains separate.
---
<!-- event: state_changed author: hare at: 2026-06-14T14:00:13Z from: done to: closed reason: closed field: state -->
## State changed
Ticket を closed にしました。
---
<!-- event: close author: hare at: 2026-06-14T14:00:13Z status: closed -->
## 完了
Closed after prior done-state completion.
---
+2 -2
View File
@@ -1,8 +1,8 @@
---
title: 'E2E harness を完全な tmp runtime/data/workspace 隔離と cleanup に対応させる'
state: 'done'
state: 'closed'
created_at: '2026-06-13T16:56:11Z'
updated_at: '2026-06-13T17:33:53Z'
updated_at: '2026-06-14T14:00:13Z'
assignee: null
readiness: 'ready'
queued_by: 'yoi ticket'
+1
View File
@@ -0,0 +1 @@
Closed after prior done-state completion.
+18
View File
@@ -192,4 +192,22 @@ Next:
E2E tmp/runtime isolation follow-up was reviewed, merged into the Orchestrator branch as `20184eeb`, and validated in the Orchestrator worktree. Panel E2E now uses clean per-scenario tmp workspace/data/runtime fixtures, preserves artifacts under `target/e2e-artifacts`, removes fixture temp roots after runs, and does not inherit host runtime/credential environment. Ticket implementation work is done; closure remains separate.
---
<!-- event: state_changed author: hare at: 2026-06-14T14:00:13Z from: done to: closed reason: closed field: state -->
## State changed
Ticket を closed にしました。
---
<!-- event: close author: hare at: 2026-06-14T14:00:13Z status: closed -->
## 完了
Closed after prior done-state completion.
---
+2 -2
View File
@@ -1,8 +1,8 @@
---
title: 'E2E: close remaining critical-path gaps after panel harness'
state: 'done'
state: 'closed'
created_at: '2026-06-13T17:34:41Z'
updated_at: '2026-06-14T05:39:03Z'
updated_at: '2026-06-14T14:00:13Z'
assignee: null
readiness: 'implementation_ready'
risk_flags: ['e2e', 'tui', 'pty', 'quit-latency', 'mouse-input', 'rewind']
+1
View File
@@ -0,0 +1 @@
Closed after prior done-state completion.
+18
View File
@@ -298,4 +298,22 @@ Next:
Implementation branch was reviewed, approved, merged into the Orchestrator branch as `059b1fd4`, and validated in the Orchestrator worktree. Focused E2E, TUI rewind/mouse tests, formatting, diff check, `cargo build -p yoi`, and `nix build .#yoi` passed. Ticket implementation work is done; closure remains separate.
---
<!-- event: state_changed author: hare at: 2026-06-14T14:00:13Z from: done to: closed reason: closed field: state -->
## State changed
Ticket を closed にしました。
---
<!-- event: close author: hare at: 2026-06-14T14:00:13Z status: closed -->
## 完了
Closed after prior done-state completion.
---
+2 -2
View File
@@ -1,8 +1,8 @@
---
title: 'Profile から concrete scope を外して launch policy で付与する'
state: 'done'
state: 'closed'
created_at: '2026-06-13T17:45:32Z'
updated_at: '2026-06-14T07:04:22Z'
updated_at: '2026-06-14T14:00:13Z'
assignee: null
readiness: 'implementation_ready'
risk_flags: ['scope', 'delegation-scope', 'profiles', 'launch-policy', 'orchestrator', 'spawnpod', 'restore']
+1
View File
@@ -0,0 +1 @@
Closed after prior done-state completion.
+18
View File
@@ -210,4 +210,22 @@ Next:
Implementation branch was reviewed, approved, merged into the Orchestrator branch as `3a67b95b`, and validated in the Orchestrator worktree. Focused manifest/client/pod launch-policy/scope/restore tests, build, formatting, diff check, and `nix build .#yoi` passed. Ticket implementation work is done; closure remains separate.
---
<!-- event: state_changed author: hare at: 2026-06-14T14:00:13Z from: done to: closed reason: closed field: state -->
## State changed
Ticket を closed にしました。
---
<!-- event: close author: hare at: 2026-06-14T14:00:13Z status: closed -->
## 完了
Closed after prior done-state completion.
---
+2 -2
View File
@@ -1,8 +1,8 @@
---
title: 'Panel Ticket rows を2行表示にして gate 情報を分離する'
state: 'done'
state: 'closed'
created_at: '2026-06-13T18:10:57Z'
updated_at: '2026-06-14T06:42:04Z'
updated_at: '2026-06-14T14:00:13Z'
assignee: null
readiness: 'implementation_ready'
risk_flags: ['tui', 'workspace-panel', 'ticket-relations', 'mouse-input', 'layout']
+1
View File
@@ -0,0 +1 @@
Closed after prior done-state completion.
+18
View File
@@ -147,4 +147,22 @@ Next:
Implementation branch was reviewed, approved, merged into the Orchestrator branch as `a9ece1dc`, and validated in the Orchestrator worktree. Focused TUI row/mouse/gate tests, Panel E2E tests, build, formatting, and diff check passed. Ticket implementation work is done; closure remains separate.
---
<!-- event: state_changed author: hare at: 2026-06-14T14:00:13Z from: done to: closed reason: closed field: state -->
## State changed
Ticket を closed にしました。
---
<!-- event: close author: hare at: 2026-06-14T14:00:13Z status: closed -->
## 完了
Closed after prior done-state completion.
---