From a3233f04b186cfb3a0ee7158a029de44a7aa442d Mon Sep 17 00:00:00 2001 From: Hare Date: Sat, 13 Jun 2026 12:32:03 +0900 Subject: [PATCH] ticket: accept event companion notify --- .../artifacts/orchestration-plan.jsonl | 1 + .yoi/tickets/00001KTTW04W2/item.md | 4 +- .yoi/tickets/00001KTTW04W2/thread.md | 71 +++++++++++++++++++ 3 files changed, 74 insertions(+), 2 deletions(-) diff --git a/.yoi/tickets/00001KTTW04W2/artifacts/orchestration-plan.jsonl b/.yoi/tickets/00001KTTW04W2/artifacts/orchestration-plan.jsonl index f37d9548..ce1f4a5b 100644 --- a/.yoi/tickets/00001KTTW04W2/artifacts/orchestration-plan.jsonl +++ b/.yoi/tickets/00001KTTW04W2/artifacts/orchestration-plan.jsonl @@ -1 +1,2 @@ {"id":"orch-plan-20260611-160703-1","ticket_id":"00001KTTW04W2","kind":"accepted_plan","note":"Role Pods は今回起動しない。","accepted_plan":{"summary":"Routing では implementation_ready と判断した。ただし今回の launch instruction は role Pod spawn を explicit follow-up まで待つ指定のため、現時点では queued のまま保持し、worktree 作成・Pod 起動・merge/close は行わない。実装開始時は side effect 前に改めて blocker/workspace state を確認し、queued -> inprogress を記録してから進める。実装対象は Method::Notify の auto_run 追加、idle auto-run 抑止、live Companion への bounded progress notify、Panel freshness 表示、targeted tests。","branch":"ticket/orchestrator-progress-companion-notify","worktree":"/home/hare/Projects/yoi/.worktree/orchestrator-progress-companion-notify","role_plan":"次の明示 follow-up 後に Orchestrator が worktree-workflow で実装 worktree を作り、coder はその worktree に narrow write scope、reviewer は read-only scopeで sibling として起動する。Companion/Orchestrator/Ticket 権限境界、history-backed context、weak/best-effort notification、bounded/sensitive-safe summary を reviewer focus とする。"},"author":"orchestrator","at":"2026-06-11T16:07:03Z"} +{"id":"orch-plan-20260613-032948-2","ticket_id":"00001KTTW04W2","kind":"accepted_plan","accepted_plan":{"summary":"再設計方針: Panel からは送らない。Orchestrator が Ticket tool で state/comment/review/close などの明示 Ticket event を記録した時だけ、live/reachable Companion へ bounded event notice を `Notify { auto_run:false }` で送る。長文 snapshot / periodic reload / polling / scheduler / auto-kick は作らない。既存 `Method::Notify { auto_run }` 互換部分は保持する。","branch":"ticket/orchestrator-ticket-event-companion-notify","worktree":"/home/hare/Projects/yoi/.worktree/orchestrator-ticket-event-companion-notify","role_plan":"Coder は child worktree に限定して、Panel reload ではなく Orchestrator/Pod 側の明示的な Ticket event に連動する Companion weak notification を実装する。Reviewer は read-only で、Panel 非依存、snapshot feed 不在、通知粒度、history-backed Notify、Companion authority 不変、`auto_run:false` semantics を確認する。"},"author":"orchestrator","at":"2026-06-13T03:29:48Z"} diff --git a/.yoi/tickets/00001KTTW04W2/item.md b/.yoi/tickets/00001KTTW04W2/item.md index e1c05d79..6636d8c3 100644 --- a/.yoi/tickets/00001KTTW04W2/item.md +++ b/.yoi/tickets/00001KTTW04W2/item.md @@ -1,8 +1,8 @@ --- title: 'Orchestrator進捗をAutoKickなしでCompanionへ通知する' -state: 'planning' +state: 'inprogress' created_at: '2026-06-11T08:15:24Z' -updated_at: '2026-06-13T02:37:58Z' +updated_at: '2026-06-13T03:32:03Z' assignee: null queued_by: 'workspace-panel' queued_at: '2026-06-11T10:31:56Z' diff --git a/.yoi/tickets/00001KTTW04W2/thread.md b/.yoi/tickets/00001KTTW04W2/thread.md index 62d7481d..376f979d 100644 --- a/.yoi/tickets/00001KTTW04W2/thread.md +++ b/.yoi/tickets/00001KTTW04W2/thread.md @@ -536,3 +536,74 @@ Next planning/fix question: - 送る場合の payload を snapshot ではなく bounded event notice に縮小するか。 Until this is resolved, current Companion progress notice implementation should be treated as defective and not closed. + +--- + + + +## Decision + +Routing decision: implementation_ready(再設計) + +User decision: +- Panel に依存しない形で進める。 +- Companion へ送るのは、Orchestrator の明示的な Ticket event 通知だけにする。 +- Panel periodic reload / snapshot feed / actionless mass notification は実装しない。 + +Reason: +- Reopen 後の不足点は、通知発生源と通知粒度だった。ユーザー判断により、発生源は Panel ではなく Orchestrator/Pod 側の Ticket event、粒度は snapshot ではなく event notice と確定した。 +- 既存 `Method::Notify { auto_run }` / idle no-run semantics は有効な基盤として残せる。 +- `auto_run:false` は Companion を起こさない weak notification として使うが、通知は history-backed context になるため、明示 Ticket event に限定する。 +- Relation blocker はなく、現在 visible child Pod はない。Orchestrator worktree は clean。 + +IntentPacket: + +Intent: +- Orchestrator が Ticket tool により明示的な Ticket event(state change / decision / plan / implementation_report / review / close など)を記録した時だけ、live/reachable Companion に bounded event notice を `Notify { auto_run:false }` で送る。 + +Binding decisions / invariants: +- Panel reload、Panel periodic refresh、Panel snapshot から Companion へ通知しない。 +- 長文 snapshot、Ticket list 全体、full thread、Pod output、diagnostics、provider error detail を送らない。 +- 通知は Orchestrator/Pod 側の明示 Ticket event に紐づく event notice に限定する。 +- `auto_run:false` を使い、idle Companion を起こさない。 +- missing/stopped/unreachable Companion を spawn/restore しない。 +- Companion authority を増やさない。 +- 通知は history-backed Notify として扱い、hidden context-only injection はしない。 +- LLM-facing framing が必要なら `resources/prompts` に置き、Rust は bounded runtime values の組み立てと rendering に留める。 + +Requirements / acceptance criteria: +- Ticket event 記録時に、live/reachable Companion が bounded event notice を weak Notify として受け取れる。 +- Panel を開いているだけでは Companion に通知が飛ばない。 +- 同一 event につき通知は高々一回で、periodic reload による再送がない。 +- 通知 payload は Ticket id/title/state、event kind、short summary、source path/ref 程度に限定される。 +- missing/stopped Companion で spawn/restore しない。 +- `auto_run:false` の idle no-run semantics は維持される。 +- focused tests で Panel 非依存、event-triggered delivery、no snapshot/feed、missing/stopped no-op、bounded/sensitive-safe content を確認する。 +- `nix build .#yoi` が通る。 + +Next action: +- branch `ticket/orchestrator-ticket-event-companion-notify` / worktree `/home/hare/Projects/yoi/.worktree/orchestrator-ticket-event-companion-notify` で sibling coder に実装を委譲する。 + +--- + + + +## State changed + +ユーザー判断により、通知発生源・粒度・非目標が確定したため implementation-ready とする。 + +--- + + + +## State changed + +ユーザーが実装続行を明示したため、Orchestrator routing 対象として queued にする。 + +--- + + + +## State changed + +Ticket body/thread、reopen decision、relation blockers、accepted plan、current Orchestrator workspace state、visible Pods を再確認した。未解決 blocker や missing planning decision は残っていないため、implementation side effect 前に `queued -> inprogress` acceptance を記録する。