ticket: use base32 project record ids
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
# Delegation intent: workspace panel Ticket action dispatch
|
||||
|
||||
## Classification
|
||||
|
||||
`implementation-ready` as the final first-pass panel slice before layout/display tuning.
|
||||
|
||||
The panel now supports `yoi panel`, Ticket/action display, Ticket-gated Orchestrator lifecycle, composer targets, and Intake -> Orchestrator handoff. Ticket action rows are still mostly display-only. This ticket should make the core human decision affordances actionable without creating a scheduler.
|
||||
|
||||
## Intent
|
||||
|
||||
Implement minimal safe Ticket action dispatch from selected workspace panel Ticket rows. The first pass should prioritize `Go` / Intake-approved routing and `Defer`; other displayed actions may be actionable if safe or remain explicitly disabled with a clear bounded diagnostic.
|
||||
|
||||
## Worktree / branch
|
||||
|
||||
- worktree: `/home/hare/Projects/yoi/.worktree/workspace-panel-ticket-action-dispatch`
|
||||
- branch: `work/workspace-panel-ticket-action-dispatch`
|
||||
|
||||
This ticket may read tracked `.yoi/tickets` records/design artifacts. Do not read or edit `.yoi/memory/`.
|
||||
|
||||
## Requirements
|
||||
|
||||
- Replace blanket display-only Ticket action behavior with an action dispatcher for selected Ticket rows.
|
||||
- Re-check current Ticket authority before mutation; do not mutate based only on stale `WorkspacePanelViewModel` data.
|
||||
- Use Rust Ticket backend APIs / existing Ticket tool logic; do not shell out.
|
||||
- Implement `Go` at minimum:
|
||||
- record a Ticket decision/comment indicating human Go for Orchestrator routing/preflight;
|
||||
- notify the workspace Orchestrator when live/reachable, if an existing peer/client path is available;
|
||||
- report notification failure as bounded warning, not lost Ticket decision.
|
||||
- Implement `Defer` where existing Ticket backend semantics make it safe, likely by moving/open->pending or recording a pending/defer decision.
|
||||
- `Close` must not close without a resolution; either provide a safe explicit resolution path or show a clear diagnostic that close requires a resolution.
|
||||
- `Review` should not silently approve; either route to existing review command/role flow or show a clear diagnostic guiding the user to inspect evidence/use review path.
|
||||
- No-Ticket workspaces must expose no Ticket actions and preserve Pod-centric behavior.
|
||||
- Preserve existing selected-Pod open/direct-send and composer target behavior.
|
||||
- Keep UI layout changes minimal; final visual tuning comes later.
|
||||
- Do not reintroduce `--multi`.
|
||||
- Do not add scheduler/queue/automatic coder/reviewer spawning.
|
||||
|
||||
## Suggested action semantics
|
||||
|
||||
- `Go`: append a `decision` or equivalent Ticket thread entry such as `Panel Go: user authorized Orchestrator routing/preflight`, then attempt to notify Orchestrator with a concise message naming the Ticket id/slug and action. Do not start implementation directly.
|
||||
- `Defer`: if backend status `pending` is the established defer state, move Ticket to pending and append a decision/comment explaining panel defer; otherwise append a decision only and leave status unchanged with a diagnostic.
|
||||
- `Close`: require explicit resolution text; for this first slice, a disabled diagnostic is acceptable.
|
||||
- `Review`: disabled/guided diagnostic is acceptable unless there is already a safe review UI path.
|
||||
|
||||
## Current code map
|
||||
|
||||
- `crates/tui/src/multi_pod.rs`
|
||||
- Current row selection, Enter/send/open behavior, composer targets, actionbar notices.
|
||||
- `crates/tui/src/workspace_panel.rs`
|
||||
- `PanelRow`, `PanelRowKey`, `TicketPanelEntry`, `NextUserAction`, row derivation. Add stable action keys/data if needed.
|
||||
- `crates/ticket/src/lib.rs`
|
||||
- Ticket backend status/comment/review/close APIs.
|
||||
- `crates/ticket/src/tool.rs`
|
||||
- Existing tool behavior for Ticket mutations may be reusable/referenceable.
|
||||
- `crates/client/src/ticket_role.rs`
|
||||
- Existing Orchestrator/Intake launch context and role naming.
|
||||
- Pod peer/client send helpers used by handoff/composer implementation.
|
||||
|
||||
## Validation
|
||||
|
||||
Run at least:
|
||||
|
||||
- targeted TUI tests for `Go` action success;
|
||||
- targeted TUI tests for stale/invalid Ticket action rejection;
|
||||
- targeted TUI tests for `Defer` behavior or explicit disabled reason;
|
||||
- targeted tests that `Close` requires resolution / does not close silently;
|
||||
- tests that no-Ticket workspace has no Ticket action dispatch;
|
||||
- tests that Pod open/direct-send and composer Intake paths still work;
|
||||
- `cargo test -p tui workspace_panel`;
|
||||
- `cargo test -p tui multi_pod`;
|
||||
- `cargo test -p ticket` if backend APIs change;
|
||||
- `cargo test -p yoi panel`;
|
||||
- `cargo check --workspace --all-targets`;
|
||||
- `cargo fmt --check`;
|
||||
- `git diff --check`;
|
||||
- `cargo build -p yoi`;
|
||||
- `target/debug/yoi ticket doctor`.
|
||||
|
||||
Run `nix build .#yoi --no-link` if feasible.
|
||||
|
||||
## Completion report
|
||||
|
||||
Report:
|
||||
|
||||
- worktree path / branch;
|
||||
- commit hash;
|
||||
- exact action semantics implemented for Go/Defer/Review/Close;
|
||||
- how Ticket authority is re-checked;
|
||||
- how Orchestrator notification is attempted/reported;
|
||||
- proof no automatic implementation scheduling is introduced;
|
||||
- tests updated/added;
|
||||
- validation results;
|
||||
- remaining layout/display tuning items.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: "Workspace panel Ticket action dispatch"
|
||||
state: "closed"
|
||||
created_at: "2026-06-06T05:29:03Z"
|
||||
updated_at: "2026-06-06T06:04:40Z"
|
||||
---
|
||||
|
||||
## 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.
|
||||
@@ -0,0 +1,31 @@
|
||||
Implemented workspace panel Ticket action dispatch.
|
||||
|
||||
Changes:
|
||||
- Added dispatch for selected Ticket action rows with current authority re-checks.
|
||||
- Mutation is gated by the same Ticket config availability logic used by panel display; absent/unusable config rejects before backend load/mutation.
|
||||
- `Go` records a `decision` event authorizing Orchestrator routing/preflight, explicitly without starting implementation, and attempts to notify the workspace Orchestrator when reachable.
|
||||
- `Defer` records a `decision` event and moves open Tickets to pending where applicable.
|
||||
- `Review` does not silently approve/request changes; it emits a diagnostic requiring the explicit review flow.
|
||||
- `Close` does not close without a resolution; it emits a diagnostic requiring an explicit resolution path.
|
||||
- No-Ticket workspaces expose no Ticket action dispatch and stay Pod-centric.
|
||||
- Existing selected-Pod open/direct-send and composer Intake paths are preserved.
|
||||
- No scheduler/queue/automatic coder/reviewer spawning was introduced.
|
||||
- `--multi` was not reintroduced.
|
||||
|
||||
Validation after merge:
|
||||
- `cargo test -p tui workspace_panel`
|
||||
- `cargo test -p tui multi_pod`
|
||||
- `cargo test -p ticket`
|
||||
- `cargo test -p yoi panel`
|
||||
- `cargo check --workspace --all-targets`
|
||||
- `cargo fmt --check`
|
||||
- `git diff --check HEAD~1..HEAD`
|
||||
- `cargo build -p yoi`
|
||||
- `target/debug/yoi ticket doctor`
|
||||
- `nix build .#yoi --no-link --print-out-paths`
|
||||
|
||||
External review approved after one requested-changes cycle.
|
||||
|
||||
Known follow-up:
|
||||
- Final layout/display tuning remains the next pass.
|
||||
- Close/review could later gain richer inline workflows, but the first pass is intentionally safe and non-destructive.
|
||||
@@ -0,0 +1,88 @@
|
||||
<!-- event: create author: yoi ticket at: 2026-06-06T05:29:03Z -->
|
||||
|
||||
## Created
|
||||
|
||||
Created by LocalTicketBackend create.
|
||||
|
||||
---
|
||||
|
||||
<!-- event: plan author: hare at: 2026-06-06T05:29:48Z -->
|
||||
|
||||
## 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.
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: plan author: hare at: 2026-06-06T05:30:26Z -->
|
||||
|
||||
## Plan
|
||||
|
||||
Preflight result: `implementation-ready` as the final first-pass panel slice before layout/display tuning.
|
||||
|
||||
The first panel slices now provide display, Orchestrator lifecycle, Intake launch, and handoff. This ticket should replace blanket display-only Ticket actions with minimal safe dispatch, especially Go and Defer, while keeping Review/Close safe if a full inline flow is not yet available.
|
||||
|
||||
Detailed delegation intent is recorded in `artifacts/delegation-intent.md`.
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: review author: hare at: 2026-06-06T06:04:40Z status: approve -->
|
||||
|
||||
## Review: approve
|
||||
|
||||
External reviewer approved current HEAD after requested changes were addressed.
|
||||
|
||||
Review summary:
|
||||
- Ticket action dispatch now re-checks Ticket config availability before backend mutation, matching panel display gating.
|
||||
- Stale/no-config action dispatch is rejected before mutation and covered by tests.
|
||||
- Go records a decision and attempts Orchestrator notification without starting implementation.
|
||||
- Defer safely records a decision and moves open Tickets to pending.
|
||||
- Review and Close remain safe diagnostics rather than silent approval/closure.
|
||||
- No-Ticket workspaces remain Pod-centric.
|
||||
- Existing Pod open/direct-send and composer Intake behavior remain covered.
|
||||
|
||||
|
||||
---
|
||||
|
||||
<!-- event: close author: hare at: 2026-06-06T06:04:40Z status: closed -->
|
||||
|
||||
## Closed
|
||||
|
||||
Implemented workspace panel Ticket action dispatch.
|
||||
|
||||
Changes:
|
||||
- Added dispatch for selected Ticket action rows with current authority re-checks.
|
||||
- Mutation is gated by the same Ticket config availability logic used by panel display; absent/unusable config rejects before backend load/mutation.
|
||||
- `Go` records a `decision` event authorizing Orchestrator routing/preflight, explicitly without starting implementation, and attempts to notify the workspace Orchestrator when reachable.
|
||||
- `Defer` records a `decision` event and moves open Tickets to pending where applicable.
|
||||
- `Review` does not silently approve/request changes; it emits a diagnostic requiring the explicit review flow.
|
||||
- `Close` does not close without a resolution; it emits a diagnostic requiring an explicit resolution path.
|
||||
- No-Ticket workspaces expose no Ticket action dispatch and stay Pod-centric.
|
||||
- Existing selected-Pod open/direct-send and composer Intake paths are preserved.
|
||||
- No scheduler/queue/automatic coder/reviewer spawning was introduced.
|
||||
- `--multi` was not reintroduced.
|
||||
|
||||
Validation after merge:
|
||||
- `cargo test -p tui workspace_panel`
|
||||
- `cargo test -p tui multi_pod`
|
||||
- `cargo test -p ticket`
|
||||
- `cargo test -p yoi panel`
|
||||
- `cargo check --workspace --all-targets`
|
||||
- `cargo fmt --check`
|
||||
- `git diff --check HEAD~1..HEAD`
|
||||
- `cargo build -p yoi`
|
||||
- `target/debug/yoi ticket doctor`
|
||||
- `nix build .#yoi --no-link --print-out-paths`
|
||||
|
||||
External review approved after one requested-changes cycle.
|
||||
|
||||
Known follow-up:
|
||||
- Final layout/display tuning remains the next pass.
|
||||
- Close/review could later gain richer inline workflows, but the first pass is intentionally safe and non-destructive.
|
||||
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user