From ee6fbea1776ac4d1091fd571b69180ea1ac54f5b Mon Sep 17 00:00:00 2001 From: Hare Date: Sat, 6 Jun 2026 14:29:48 +0900 Subject: [PATCH] ticket: add workspace panel action dispatch --- .../artifacts/.gitkeep | 0 .../item.md | 55 +++++++++++++++++++ .../thread.md | 18 ++++++ 3 files changed, 73 insertions(+) create mode 100644 .yoi/tickets/open/20260606-052903-workspace-panel-ticket-action-dispatch/artifacts/.gitkeep create mode 100644 .yoi/tickets/open/20260606-052903-workspace-panel-ticket-action-dispatch/item.md create mode 100644 .yoi/tickets/open/20260606-052903-workspace-panel-ticket-action-dispatch/thread.md diff --git a/.yoi/tickets/open/20260606-052903-workspace-panel-ticket-action-dispatch/artifacts/.gitkeep b/.yoi/tickets/open/20260606-052903-workspace-panel-ticket-action-dispatch/artifacts/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/.yoi/tickets/open/20260606-052903-workspace-panel-ticket-action-dispatch/item.md b/.yoi/tickets/open/20260606-052903-workspace-panel-ticket-action-dispatch/item.md new file mode 100644 index 00000000..ab4b3150 --- /dev/null +++ b/.yoi/tickets/open/20260606-052903-workspace-panel-ticket-action-dispatch/item.md @@ -0,0 +1,55 @@ +--- +id: 20260606-052903-workspace-panel-ticket-action-dispatch +slug: workspace-panel-ticket-action-dispatch +title: Workspace panel Ticket action dispatch +status: open +kind: task +priority: P1 +labels: [tui, ticket, orchestration, panel] +created_at: 2026-06-06T05:29:03Z +updated_at: 2026-06-06T05:29:48Z +assignee: null +legacy_ticket: null +--- + +## Background + +The first workspace panel implementation now has `yoi panel`, Ticket/action rows, Ticket-gated Orchestrator lifecycle, composer targets, and Intake -> Orchestrator handoff. + +Ticket rows currently expose Go/Review/Close/Defer-style actions as display affordances only. To complete the first end-to-end panel before layout/display tuning, the panel needs minimal action dispatch for the user decision points it already displays. + +## Goal + +Implement simple workspace panel Ticket action dispatch so selected Ticket/action rows can record the intended human decision through the Ticket backend and, where appropriate, notify the workspace Orchestrator. + +## Requirements + +- Keep the UI/action model thin; do not build a scheduler/queue or a second Ticket state machine. +- Implement minimal dispatch for visible Ticket actions where safe: + - `Go` / approve Intake-ready Ticket for Orchestrator routing/preflight; + - `Defer` / move or mark pending where existing Ticket backend semantics support it; + - `Review` / open or guide to existing review flow if full inline review is not safe in this first slice; + - `Close` / do not close without a resolution; show a bounded diagnostic or require explicit resolution path. +- Re-check Ticket authority immediately before mutation; do not mutate based only on stale `WorkspacePanelViewModel` data. +- Record actions in `.yoi/tickets` through Rust Ticket APIs / Ticket tools; do not shell out. +- If an Orchestrator is live/reachable and the action is a routing/Go signal, notify it through existing Pod/peer/client mechanisms where feasible. +- No-Ticket workspaces must remain Pod-centric and expose no Ticket actions. +- Preserve existing selected-Pod send/open behavior. +- Keep layout changes minimal; final visual tuning is a later pass. + +## Non-goals + +- Automatic implementation scheduling. +- Automatic coder/reviewer spawning. +- Full inline review editor. +- Final layout/display tuning. +- Reintroducing `--multi`. + +## Acceptance criteria + +- Ticket/action rows no longer merely say display-only for every action; at least Go/Defer are actionable or explicitly disabled with a clear reason. +- Action dispatch re-checks current Ticket state before writing. +- Ticket mutations use Rust backend APIs and are visible in `.yoi/tickets` thread/status state. +- Orchestrator notification is attempted for Go/routing actions when feasible and reported as success/warning. +- No-Ticket panel remains functionally equivalent to Pod-centric dashboard. +- Tests cover action dispatch success, stale/invalid action rejection, no-Ticket behavior, and Pod actions remaining intact. diff --git a/.yoi/tickets/open/20260606-052903-workspace-panel-ticket-action-dispatch/thread.md b/.yoi/tickets/open/20260606-052903-workspace-panel-ticket-action-dispatch/thread.md new file mode 100644 index 00000000..325ac1cc --- /dev/null +++ b/.yoi/tickets/open/20260606-052903-workspace-panel-ticket-action-dispatch/thread.md @@ -0,0 +1,18 @@ + + +## Created + +Created by LocalTicketBackend create. + +--- + + + +## Plan + +Created this follow-up because the first panel slices now provide Ticket/action rows, Orchestrator lifecycle, Intake launch, and Intake handoff, but Ticket row actions are still mostly display affordances. + +Before layout/display tuning, the panel should support a minimal safe action dispatch path for the human decision points it already displays, especially Go/Defer. The implementation should re-check Ticket authority before mutation, use Rust Ticket APIs, and notify Orchestrator for Go/routing actions when feasible. + + +---