diff --git a/.yoi/tickets/open/20260605-210704-workspace-panel-orchestrator-lifecycle/artifacts/.gitkeep b/.yoi/tickets/closed/20260605-210704-workspace-panel-orchestrator-lifecycle/artifacts/.gitkeep similarity index 100% rename from .yoi/tickets/open/20260605-210704-workspace-panel-orchestrator-lifecycle/artifacts/.gitkeep rename to .yoi/tickets/closed/20260605-210704-workspace-panel-orchestrator-lifecycle/artifacts/.gitkeep diff --git a/.yoi/tickets/open/20260605-210704-workspace-panel-orchestrator-lifecycle/artifacts/delegation-intent.md b/.yoi/tickets/closed/20260605-210704-workspace-panel-orchestrator-lifecycle/artifacts/delegation-intent.md similarity index 100% rename from .yoi/tickets/open/20260605-210704-workspace-panel-orchestrator-lifecycle/artifacts/delegation-intent.md rename to .yoi/tickets/closed/20260605-210704-workspace-panel-orchestrator-lifecycle/artifacts/delegation-intent.md diff --git a/.yoi/tickets/open/20260605-210704-workspace-panel-orchestrator-lifecycle/item.md b/.yoi/tickets/closed/20260605-210704-workspace-panel-orchestrator-lifecycle/item.md similarity index 96% rename from .yoi/tickets/open/20260605-210704-workspace-panel-orchestrator-lifecycle/item.md rename to .yoi/tickets/closed/20260605-210704-workspace-panel-orchestrator-lifecycle/item.md index 0f45cb4a..5253b6d2 100644 --- a/.yoi/tickets/open/20260605-210704-workspace-panel-orchestrator-lifecycle/item.md +++ b/.yoi/tickets/closed/20260605-210704-workspace-panel-orchestrator-lifecycle/item.md @@ -2,12 +2,12 @@ id: 20260605-210704-workspace-panel-orchestrator-lifecycle slug: workspace-panel-orchestrator-lifecycle title: Workspace panel orchestrator lifecycle -status: open +status: closed kind: task priority: P1 labels: [tui, pod, orchestrator, panel] created_at: 2026-06-05T21:07:04Z -updated_at: 2026-06-05T23:32:34Z +updated_at: 2026-06-06T04:23:48Z assignee: null legacy_ticket: null --- diff --git a/.yoi/tickets/closed/20260605-210704-workspace-panel-orchestrator-lifecycle/resolution.md b/.yoi/tickets/closed/20260605-210704-workspace-panel-orchestrator-lifecycle/resolution.md new file mode 100644 index 00000000..88f6a0d0 --- /dev/null +++ b/.yoi/tickets/closed/20260605-210704-workspace-panel-orchestrator-lifecycle/resolution.md @@ -0,0 +1,32 @@ +Implemented workspace panel Orchestrator lifecycle. + +Changes: +- `yoi panel` now ensures a workspace Orchestrator only in Ticket-enabled workspaces. +- If `.yoi/ticket.config.toml` is absent, the panel skips Orchestrator lifecycle and remains Pod-centric. +- Existing malformed/unusable Ticket config paths surface diagnostics instead of silently falling back to no-Ticket mode. +- Orchestrator Pod name is derived from the workspace directory using ASCII-safe normalization and the `-orchestrator` suffix, capped at 80 chars. +- Already-live Orchestrator is reported as live. +- Restorable Orchestrator is restored through existing Pod restore semantics. +- Missing Orchestrator is spawned through the existing Ticket role launcher as `TicketRole::Orchestrator`. +- Lifecycle decisions use an exact-name authority path and do not depend on the capped UI `PodList` rows. +- Panel close does not stop the Orchestrator. +- Orchestrator is not selected as the default foreground target when it is the only row or when another Pod can be selected. +- Bounded lifecycle/config diagnostics are displayed in the panel. + +Validation after merge: +- `cargo test -p tui workspace_panel` +- `cargo test -p tui multi` +- `cargo test -p client ticket_role` +- `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: +- Layout/display tuning remains intentionally deferred until the first end-to-end panel flow exists. +- Composer target switching and Intake handoff are covered by follow-up child tickets. diff --git a/.yoi/tickets/closed/20260605-210704-workspace-panel-orchestrator-lifecycle/thread.md b/.yoi/tickets/closed/20260605-210704-workspace-panel-orchestrator-lifecycle/thread.md new file mode 100644 index 00000000..0f756b8c --- /dev/null +++ b/.yoi/tickets/closed/20260605-210704-workspace-panel-orchestrator-lifecycle/thread.md @@ -0,0 +1,80 @@ + + +## Created + +Created by LocalTicketBackend create. + +--- + + + +## Plan + +Preflight result: `implementation-ready` after the first action-model slice. + +This ticket should add the workspace Orchestrator lifecycle to `yoi panel` only for Ticket-enabled workspaces. If `.yoi/ticket.config.toml` is absent, the panel should skip Orchestrator lifecycle and remain Pod-centric, matching the old `--multi` behavior. + +Implementation should use existing Pod restore/spawn semantics and the Ticket role launcher/profile configuration where practical, surface bounded diagnostics, and leave final layout tuning for later. + +Detailed delegation intent is recorded in `artifacts/delegation-intent.md`. + + +--- + + + +## Review: approve + +External reviewer approved current HEAD after requested changes were addressed. + +Review summary: +- Orchestrator lifecycle no longer depends on capped UI rows; exact Orchestrator pod presence is checked through an unbounded authority path before lifecycle decisions. +- Existing non-file `.yoi/ticket.config.toml` paths are surfaced as unusable, not absent. +- Tests cover both targeted regressions. +- No `--multi` reintroduction. +- Panel close does not stop the Orchestrator. +- Spawning uses the Ticket role launcher/profile path. +- Default selection avoids making the Orchestrator the foreground target in covered cases. + + +--- + + + +## Closed + +Implemented workspace panel Orchestrator lifecycle. + +Changes: +- `yoi panel` now ensures a workspace Orchestrator only in Ticket-enabled workspaces. +- If `.yoi/ticket.config.toml` is absent, the panel skips Orchestrator lifecycle and remains Pod-centric. +- Existing malformed/unusable Ticket config paths surface diagnostics instead of silently falling back to no-Ticket mode. +- Orchestrator Pod name is derived from the workspace directory using ASCII-safe normalization and the `-orchestrator` suffix, capped at 80 chars. +- Already-live Orchestrator is reported as live. +- Restorable Orchestrator is restored through existing Pod restore semantics. +- Missing Orchestrator is spawned through the existing Ticket role launcher as `TicketRole::Orchestrator`. +- Lifecycle decisions use an exact-name authority path and do not depend on the capped UI `PodList` rows. +- Panel close does not stop the Orchestrator. +- Orchestrator is not selected as the default foreground target when it is the only row or when another Pod can be selected. +- Bounded lifecycle/config diagnostics are displayed in the panel. + +Validation after merge: +- `cargo test -p tui workspace_panel` +- `cargo test -p tui multi` +- `cargo test -p client ticket_role` +- `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: +- Layout/display tuning remains intentionally deferred until the first end-to-end panel flow exists. +- Composer target switching and Intake handoff are covered by follow-up child tickets. + + +--- diff --git a/.yoi/tickets/open/20260605-210704-workspace-panel-orchestrator-lifecycle/thread.md b/.yoi/tickets/open/20260605-210704-workspace-panel-orchestrator-lifecycle/thread.md deleted file mode 100644 index 86a1465b..00000000 --- a/.yoi/tickets/open/20260605-210704-workspace-panel-orchestrator-lifecycle/thread.md +++ /dev/null @@ -1,22 +0,0 @@ - - -## Created - -Created by LocalTicketBackend create. - ---- - - - -## Plan - -Preflight result: `implementation-ready` after the first action-model slice. - -This ticket should add the workspace Orchestrator lifecycle to `yoi panel` only for Ticket-enabled workspaces. If `.yoi/ticket.config.toml` is absent, the panel should skip Orchestrator lifecycle and remain Pod-centric, matching the old `--multi` behavior. - -Implementation should use existing Pod restore/spawn semantics and the Ticket role launcher/profile configuration where practical, surface bounded diagnostics, and leave final layout tuning for later. - -Detailed delegation intent is recorded in `artifacts/delegation-intent.md`. - - ----