ticket: add panel role session registry task

This commit is contained in:
Keisuke Hirata 2026-06-07 10:22:18 +09:00
parent 7f386f749e
commit 1b7de88a59
No known key found for this signature in database
9 changed files with 130 additions and 3 deletions

View File

@ -8,7 +8,7 @@ priority: P1
labels: [companion, profile, prompt, tools, panel] labels: [companion, profile, prompt, tools, panel]
workflow_state: intake workflow_state: intake
created_at: 2026-06-07T00:16:51Z created_at: 2026-06-07T00:16:51Z
updated_at: 2026-06-07T00:16:51Z updated_at: 2026-06-07T01:21:43Z
assignee: null assignee: null
legacy_ticket: null legacy_ticket: null
--- ---

View File

@ -5,3 +5,15 @@
Created by LocalTicketBackend create. Created by LocalTicketBackend create.
--- ---
<!-- event: comment author: hare at: 2026-06-07T01:21:43Z -->
## Comment
## Status context boundary
When local role session / Ticket claim overlay support is added, it can become one source of read-only Companion status context. The Companion should treat it as local runtime status, distinct from authoritative git-tracked Ticket project records.
Default Companion policy should still prohibit direct mutation of Ticket records and direct role Pod spawning/claiming unless a later explicit design grants that authority.
---

View File

@ -8,7 +8,7 @@ priority: P1
labels: [tui, panel, companion, orchestration] labels: [tui, panel, companion, orchestration]
workflow_state: intake workflow_state: intake
created_at: 2026-06-07T00:16:51Z created_at: 2026-06-07T00:16:51Z
updated_at: 2026-06-07T00:18:58Z updated_at: 2026-06-07T01:21:43Z
assignee: null assignee: null
legacy_ticket: null legacy_ticket: null
--- ---
@ -46,6 +46,9 @@ Redesign the workspace panel composer around a real workspace Companion Pod and
3. `companion-status-context-tool-policy` 3. `companion-status-context-tool-policy`
- Define Companion prompt/profile/tool policy: status-awareness and human assistance, no direct repository writes or Ticket mutations. - Define Companion prompt/profile/tool policy: status-awareness and human assistance, no direct repository writes or Ticket mutations.
4. `workspace-panel-local-role-session-registry`
- Define the local user-data overlay for role sessions and Ticket claims; keep local Pod assignment out of git-tracked Ticket metadata.
## Non-goals ## Non-goals
- Removing Pod attach/open. - Removing Pod attach/open.

View File

@ -26,4 +26,23 @@ Target model:
Split child tickets were created for direct-send removal, Companion lifecycle, and Companion prompt/tool policy. Split child tickets were created for direct-send removal, Companion lifecycle, and Companion prompt/tool policy.
---
<!-- event: decision author: hare at: 2026-06-07T01:21:43Z -->
## Decision
## Local role/session overlay split
The Companion/panel redesign should not store Ticket↔local Pod assignment in git-tracked Ticket metadata. Local Pod names, runtime/session identity, socket/restorable state, and current claims are per-machine runtime concerns.
A new child ticket `workspace-panel-local-role-session-registry` covers the local overlay model:
- Ticket project records keep workflow state and auditable summaries only.
- A Ticket may have at most one active local Pod claim at a time.
- A Pod/session may relate to zero or more Tickets.
- Intake is not 1:1 with Ticket: pre-Ticket Intake may have no Ticket yet, and one Intake session may materialize/split into multiple Tickets.
- Existing `ticket-*` Pod visibility in the panel is acceptable as an interim access path until the registry UI/model exists.
- The panel should not poll and automatically start Intake for newly-created `workflow_state = intake` Tickets; starting/claiming remains an explicit action.
--- ---

View File

@ -8,7 +8,7 @@ priority: P1
labels: [tui, panel, companion, pod] labels: [tui, panel, companion, pod]
workflow_state: intake workflow_state: intake
created_at: 2026-06-07T00:16:51Z created_at: 2026-06-07T00:16:51Z
updated_at: 2026-06-07T00:16:51Z updated_at: 2026-06-07T01:21:43Z
assignee: null assignee: null
legacy_ticket: null legacy_ticket: null
--- ---

View File

@ -5,3 +5,15 @@
Created by LocalTicketBackend create. Created by LocalTicketBackend create.
--- ---
<!-- event: comment author: hare at: 2026-06-07T01:21:43Z -->
## Comment
## Dependency note: local role/session registry
Companion lifecycle should remain separate from Ticket/role Pod claim authority. Local role session and Ticket claim data belongs in the user-data workspace overlay planned by `workspace-panel-local-role-session-registry`, not in git-tracked Ticket metadata.
The Companion may eventually read/display this derived status, but it should not own the registry or gain mutation authority by default.
---

View File

@ -0,0 +1,74 @@
---
id: 20260607-012131-workspace-panel-local-role-session-registry
slug: workspace-panel-local-role-session-registry
title: Workspace panel local role session registry
status: open
kind: task
priority: P1
labels: [tui, panel, ticket, pod, orchestration]
workflow_state: intake
created_at: 2026-06-07T01:21:31Z
updated_at: 2026-06-07T01:21:31Z
assignee: null
legacy_ticket: null
---
## Background
The panel now has two Ticket/Intake entry paths:
- A user instruction can start a pre-Ticket Intake session from the panel composer.
- An already-existing Ticket in `workflow_state = intake` can later need an Intake session.
For now, `ticket-*` Pods being visible in the panel is an acceptable interim access path. Longer term, the panel needs an explicit local model for role sessions and Ticket claims.
Ticket metadata and thread files are git-managed project records. Local Pod names, session/socket/runtime state, and per-machine assignment state must not be written into Ticket frontmatter or other git-tracked Ticket records.
Intake sessions are not necessarily 1:1 with Tickets. A pre-Ticket Intake session may have no Ticket yet, may materialize one Ticket, or may split the request into multiple Tickets. Conversely, an existing Ticket may be clarified by a later Intake session.
## Goal
Introduce a local, workspace-scoped role session registry and Ticket claim index for panel orchestration state, without storing local Pod assignment details in git-tracked Ticket metadata.
## Target model
- Ticket project records keep durable workflow state such as `workflow_state`, `attention_required`, and review/summary events.
- Local Pod/session assignment lives in a user-data workspace overlay, not under git-tracked `.yoi/tickets` files.
- A Ticket may have at most one active local Pod claim at a time.
- A Pod/session may relate to zero or more Tickets.
- Pre-Ticket Intake sessions are represented as local role sessions even before any Ticket exists.
- Existing-Ticket Intake uses the Ticket claim index to prevent a second Pod from attaching to an already-claimed Ticket.
## Requirements
- Define a workspace-scoped local storage location for panel role/session overlay data under the user data directory.
- Model local role sessions keyed by Pod/session identity, including at least role, pod name, origin, created/updated timestamps, and related Ticket refs.
- Model Ticket claims keyed by stable Ticket id, with at most one active local Pod claim per Ticket.
- Do not write local Pod names, socket paths, runtime status, or local claim state into git-tracked Ticket frontmatter/thread files.
- Allow one Intake Pod/session to relate to multiple Tickets.
- Allow a pre-Ticket Intake session to exist with no related Ticket.
- When starting Intake for an existing Ticket, claim before spawning/restoring so double-spawn races are avoided.
- If a Ticket already has a local claim, do not start a second Pod automatically.
- If the claimed Pod is live, offer/open/attach that Pod.
- If the claimed Pod is restorable, offer restore/open.
- If the claim is stale, show an explicit reclaim action/diagnostic rather than silently starting a second Pod.
- Panel should join Ticket state, local overlay, and Pod metadata for display/actions.
- Do not introduce polling that automatically starts Intake for newly-created `workflow_state = intake` Tickets.
- Keep the current `ticket-*` Pod visibility as an acceptable interim access path until the registry UI is implemented.
## Non-goals
- Storing local Pod assignment in Ticket metadata.
- Assuming Intake Pod and Ticket are 1:1.
- Automatically starting Intake by polling Ticket files.
- Replacing the Orchestrator scheduling model.
- Full cross-machine coordination; this is a local runtime overlay.
## Acceptance criteria
- Local role session / Ticket claim data is stored outside git-tracked Ticket records.
- A Ticket cannot be claimed by two active local Pods through panel actions.
- A single Intake Pod can be associated with multiple Tickets in the local model.
- A pre-Ticket Intake session can be represented before any Ticket exists.
- Panel can distinguish at least: no claim, live/restorable claimed Pod, and stale claim.
- Existing tests or new tests cover the non-1:1 Intake/Ticket relation and one-active-claim-per-Ticket invariant.

View File

@ -0,0 +1,7 @@
<!-- event: create author: LocalTicketBackend at: 2026-06-07T01:21:31Z -->
## Created
Created by LocalTicketBackend create.
---