diff --git a/.yoi/tickets/open/20260607-001651-companion-status-context-tool-policy/artifacts/.gitkeep b/.yoi/tickets/open/20260607-001651-companion-status-context-tool-policy/artifacts/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/.yoi/tickets/open/20260607-001651-companion-status-context-tool-policy/item.md b/.yoi/tickets/open/20260607-001651-companion-status-context-tool-policy/item.md new file mode 100644 index 00000000..d389d313 --- /dev/null +++ b/.yoi/tickets/open/20260607-001651-companion-status-context-tool-policy/item.md @@ -0,0 +1,57 @@ +--- +id: 20260607-001651-companion-status-context-tool-policy +slug: companion-status-context-tool-policy +title: Companion status context and tool policy +status: open +kind: task +priority: P1 +labels: [companion, profile, prompt, tools, panel] +workflow_state: intake +created_at: 2026-06-07T00:16:51Z +updated_at: 2026-06-07T00:16:51Z +assignee: null +legacy_ticket: null +--- + +## Background + +The workspace Companion should help the human understand and steer the workspace, not act as a direct implementation worker. It should know what is complete, what remains, what is queued/in progress, which Pods exist, and where attention may be useful. It should not directly edit files, mutate Tickets, spawn implementation Pods, or perform destructive actions. + +This requires a distinct prompt/profile/tool policy from ordinary coder/reviewer/orchestrator Pods. + +## Goal + +Define and implement the Companion's prompt/profile/tool policy so it can provide real-time situational assistance while being prevented from direct write/mutation authority. + +## Requirements + +- Add or define a Companion role/profile/prompt for workspace panel usage. +- System prompt should instruct the Companion to: + - summarize current workspace status; + - explain completed/remaining work; + - help the human understand Ticket/Pod/Orchestrator state; + - suggest next safe high-level actions; + - avoid directly implementing, editing, or mutating project state. +- Tool policy should prohibit direct file writes and direct Ticket mutation by default. +- Tool policy should prohibit spawning implementation/review Pods directly unless a later explicit design grants that authority. +- Companion may have read/status capabilities needed for situational awareness, such as bounded Ticket list/show, Pod list/state, and possibly read-only docs/context access. +- If read-only status is provided through a specialized summary/context mechanism rather than raw tools, keep it auditable and derived from authoritative Ticket/Pod state. +- Companion should not receive hidden, non-history context that affects behavior without being committed to an appropriate history/event path. +- Keep secrets/private input out of diagnostics, status summaries, and prompts. +- Preserve Orchestrator as the actor responsible for scheduling/routing work; Companion is human-facing support, not scheduler authority. + +## Non-goals + +- Giving Companion write access. +- Replacing Orchestrator. +- Replacing Ticket tools/workflows. +- Building a full scheduler. +- Final UI layout tuning. + +## Acceptance criteria + +- A Companion prompt/profile/tool policy exists and is used by `yoi panel` Companion lifecycle. +- Companion can answer status questions from read-only/derived authoritative sources. +- Companion cannot directly mutate repository files or Ticket records under default policy. +- Companion cannot directly launch implementation/review Pods under default policy. +- Prompt/tool docs clearly distinguish Companion from Orchestrator, Intake, coder, and reviewer roles. diff --git a/.yoi/tickets/open/20260607-001651-companion-status-context-tool-policy/thread.md b/.yoi/tickets/open/20260607-001651-companion-status-context-tool-policy/thread.md new file mode 100644 index 00000000..2ee6aad9 --- /dev/null +++ b/.yoi/tickets/open/20260607-001651-companion-status-context-tool-policy/thread.md @@ -0,0 +1,7 @@ + + +## Created + +Created by LocalTicketBackend create. + +--- diff --git a/.yoi/tickets/open/20260607-001651-workspace-panel-companion-interface/artifacts/.gitkeep b/.yoi/tickets/open/20260607-001651-workspace-panel-companion-interface/artifacts/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/.yoi/tickets/open/20260607-001651-workspace-panel-companion-interface/item.md b/.yoi/tickets/open/20260607-001651-workspace-panel-companion-interface/item.md new file mode 100644 index 00000000..3034e9e9 --- /dev/null +++ b/.yoi/tickets/open/20260607-001651-workspace-panel-companion-interface/item.md @@ -0,0 +1,63 @@ +--- +id: 20260607-001651-workspace-panel-companion-interface +slug: workspace-panel-companion-interface +title: Workspace panel Companion interface +status: open +kind: task +priority: P1 +labels: [tui, panel, companion, orchestration] +workflow_state: intake +created_at: 2026-06-07T00:16:51Z +updated_at: 2026-06-07T00:18:58Z +assignee: null +legacy_ticket: null +--- + +## Background + +The current `yoi panel` `Companion` composer target is a misleading name: it is effectively the selected-Pod direct-send path. The desired UX is different. + +The workspace panel should have a real Companion: a workspace-scoped Pod used for the foreground management conversation. It should help the human understand what is done, what remains, what is blocked/queued/in progress, and where intervention is useful. It should not be a direct write-capable worker. + +Direct message sending from the panel to arbitrary selected Pods should be removed. The panel composer should talk to the Companion by default, with Ticket Intake as the other explicit creation path in Ticket-enabled workspaces. + +## Goal + +Redesign the workspace panel composer around a real workspace Companion Pod and remove the selected-Pod direct-send UX. + +## Target model + +- `yoi panel` restores/spawns a workspace Companion Pod. +- The Companion Pod name is based on the workspace name, matching the default workspace Pod naming direction where practical. +- The panel composer default target is the Companion conversation. +- Ticket Intake remains a separate target for creating/materializing new Ticket requests. +- Selected Pod direct send is removed from the panel. +- Opening/attaching to a Pod remains available for inspecting details. +- The Companion is status-aware but not write-capable. + +## Child tickets + +1. `workspace-panel-remove-direct-pod-send` + - Remove selected-Pod direct send from `yoi panel`; keep attach/open and Ticket Intake. + +2. `workspace-panel-companion-pod-lifecycle` + - Restore/spawn the workspace-named Companion Pod and route Companion composer input to it. + +3. `companion-status-context-tool-policy` + - Define Companion prompt/profile/tool policy: status-awareness and human assistance, no direct repository writes or Ticket mutations. + +## Non-goals + +- Removing Pod attach/open. +- Removing Ticket Intake target. +- Removing Orchestrator lifecycle. +- Giving Companion direct write access or implementation authority. +- Reintroducing `--multi` or `:ticket`. + +## Acceptance criteria + +- The workspace panel no longer treats `Companion` as selected-Pod direct send. +- The panel has a real workspace Companion Pod/session as the foreground management chat. +- Direct selected-Pod send is removed or disabled with clear UI behavior. +- Companion tool policy prevents direct file/Ticket mutation while still allowing status awareness. +- No-Ticket workspaces still get a useful Companion/Pod-inspection panel. diff --git a/.yoi/tickets/open/20260607-001651-workspace-panel-companion-interface/thread.md b/.yoi/tickets/open/20260607-001651-workspace-panel-companion-interface/thread.md new file mode 100644 index 00000000..7d16217a --- /dev/null +++ b/.yoi/tickets/open/20260607-001651-workspace-panel-companion-interface/thread.md @@ -0,0 +1,29 @@ + + +## Created + +Created by LocalTicketBackend create. + +--- + + + +## Decision + +Decision from user discussion: + +The panel should not provide direct messaging to arbitrary selected Pods. The existing `Companion` composer target is currently a misleading label for selected-Pod direct send and should be replaced by a real workspace Companion Pod. + +Target model: +- default panel composer talks to a workspace-named Companion Pod; +- Companion is a foreground management chat for the human; +- Ticket Intake remains a separate target for new requests; +- selected Pod direct send is removed; +- Pod attach/open remains available for inspection; +- Companion should be status-aware but not directly write/mutate project state; +- Companion prompt/tool policy should focus on situational awareness and human support, with direct writes/Ticket mutations/implementation spawning prohibited by default. + +Split child tickets were created for direct-send removal, Companion lifecycle, and Companion prompt/tool policy. + + +--- diff --git a/.yoi/tickets/open/20260607-001651-workspace-panel-companion-pod-lifecycle/artifacts/.gitkeep b/.yoi/tickets/open/20260607-001651-workspace-panel-companion-pod-lifecycle/artifacts/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/.yoi/tickets/open/20260607-001651-workspace-panel-companion-pod-lifecycle/item.md b/.yoi/tickets/open/20260607-001651-workspace-panel-companion-pod-lifecycle/item.md new file mode 100644 index 00000000..a95dbbc3 --- /dev/null +++ b/.yoi/tickets/open/20260607-001651-workspace-panel-companion-pod-lifecycle/item.md @@ -0,0 +1,58 @@ +--- +id: 20260607-001651-workspace-panel-companion-pod-lifecycle +slug: workspace-panel-companion-pod-lifecycle +title: Workspace panel Companion Pod lifecycle +status: open +kind: task +priority: P1 +labels: [tui, panel, companion, pod] +workflow_state: intake +created_at: 2026-06-07T00:16:51Z +updated_at: 2026-06-07T00:16:51Z +assignee: null +legacy_ticket: null +--- + +## Background + +The panel needs a real Companion Pod rather than treating `Companion` as selected-Pod direct send. The Companion is the foreground workspace management chat: the place where the human asks what is happening, what is done, what remains, and where attention is useful. + +The desired identity is a workspace-named Pod, similar to the default Pod created from a workspace name when starting normally. This should make `yoi panel` feel like opening the workspace's management conversation rather than a raw Pod dashboard. + +## Goal + +Restore or spawn a workspace-named Companion Pod when `yoi panel` opens, and route the panel Companion composer target to that Pod. + +## Requirements + +- Define the Companion Pod naming rule. + - It should be based on the workspace name/path, consistent with existing default Pod naming where practical. + - Avoid colliding with the workspace Orchestrator name. +- On `yoi panel` open: + - if Companion is live, use it; + - if restorable, restore it; + - if missing, spawn it with the Companion profile/prompt/policy from the companion tool-policy ticket; + - surface bounded diagnostics if unavailable. +- Panel close must not stop the Companion. +- The panel composer `Companion` target sends user text to the Companion Pod history, not to arbitrary selected Pods. +- The Companion target is available in both Ticket-enabled and no-Ticket workspaces. +- Ticket Intake remains a separate target in Ticket-enabled workspaces and must not append Intake text to Companion history. +- Preserve Pod attach/open for inspection. +- Avoid blocking panel redraw longer than necessary; coordinate with `workspace-panel-nonblocking-transitions` if needed. +- Do not give the Companion broad write scope by default. + +## Non-goals + +- Direct selected-Pod send. +- Orchestrator scheduling semantics. +- Ticket Intake handoff changes beyond preserving separation. +- Tool/prompt policy details beyond consuming the agreed Companion profile/policy. +- Reintroducing `--multi` or `:ticket`. + +## Acceptance criteria + +- `yoi panel` has a real Companion Pod identity and lifecycle. +- Companion composer messages are committed to the Companion Pod's history. +- No-Ticket workspaces still have a Companion management chat plus Pod attach/open. +- Ticket Intake messages do not enter Companion history. +- Companion remains running after panel exits. diff --git a/.yoi/tickets/open/20260607-001651-workspace-panel-companion-pod-lifecycle/thread.md b/.yoi/tickets/open/20260607-001651-workspace-panel-companion-pod-lifecycle/thread.md new file mode 100644 index 00000000..2ee6aad9 --- /dev/null +++ b/.yoi/tickets/open/20260607-001651-workspace-panel-companion-pod-lifecycle/thread.md @@ -0,0 +1,7 @@ + + +## Created + +Created by LocalTicketBackend create. + +--- diff --git a/.yoi/tickets/open/20260607-001651-workspace-panel-remove-direct-pod-send/artifacts/.gitkeep b/.yoi/tickets/open/20260607-001651-workspace-panel-remove-direct-pod-send/artifacts/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/.yoi/tickets/open/20260607-001651-workspace-panel-remove-direct-pod-send/item.md b/.yoi/tickets/open/20260607-001651-workspace-panel-remove-direct-pod-send/item.md new file mode 100644 index 00000000..5715c4ea --- /dev/null +++ b/.yoi/tickets/open/20260607-001651-workspace-panel-remove-direct-pod-send/item.md @@ -0,0 +1,50 @@ +--- +id: 20260607-001651-workspace-panel-remove-direct-pod-send +slug: workspace-panel-remove-direct-pod-send +title: Remove workspace panel direct Pod send +status: open +kind: task +priority: P1 +labels: [tui, panel, companion, cleanup] +workflow_state: intake +created_at: 2026-06-07T00:16:51Z +updated_at: 2026-06-07T00:16:51Z +assignee: null +legacy_ticket: null +--- + +## Background + +The panel currently uses `Companion` as the default composer target, but implementation-wise this is selected-Pod direct send. That is no longer desired. + +The panel should not provide an arbitrary direct-message path to selected Pods. Users can attach/open Pods to inspect details, and Ticket Intake remains the path for new work requests. A real workspace Companion Pod will become the foreground management chat in a follow-up ticket. + +## Goal + +Remove selected-Pod direct send from `yoi panel` and stop presenting it as Companion behavior. + +## Requirements + +- Remove or disable the panel code path that sends composer text directly to the selected Pod via `Method::Run`. +- Remove UI labels/key hints that imply selected-Pod direct send is supported. +- Preserve Pod attach/open behavior for inspection. +- Preserve Ticket Intake composer target and launch behavior. +- Preserve Orchestrator lifecycle and Ticket action dispatch. +- No-Ticket workspaces should remain useful for Pod discovery/attach/open even without direct send. +- If composer input cannot yet be routed to a real Companion in this ticket, show a clear bounded diagnostic instead of falling back to selected-Pod direct send. +- Do not reintroduce `--multi` or `:ticket`. + +## Non-goals + +- Implementing real Companion Pod lifecycle; `workspace-panel-companion-pod-lifecycle` owns that. +- Companion prompt/profile/tool policy; `companion-status-context-tool-policy` owns that. +- Removing attach/open. +- Removing Ticket Intake. + +## Acceptance criteria + +- Panel composer text is no longer sent directly to arbitrary selected Pods. +- Existing tests that assumed selected-Pod direct send are updated or removed. +- Pod attach/open still works. +- Ticket Intake still works. +- UI/key hints do not advertise direct Pod send. diff --git a/.yoi/tickets/open/20260607-001651-workspace-panel-remove-direct-pod-send/thread.md b/.yoi/tickets/open/20260607-001651-workspace-panel-remove-direct-pod-send/thread.md new file mode 100644 index 00000000..2ee6aad9 --- /dev/null +++ b/.yoi/tickets/open/20260607-001651-workspace-panel-remove-direct-pod-send/thread.md @@ -0,0 +1,7 @@ + + +## Created + +Created by LocalTicketBackend create. + +---