diff --git a/.yoi/tickets/open/20260608-032200-panel-close-done-tickets/item.md b/.yoi/tickets/open/20260608-032200-panel-close-done-tickets/item.md index 63589ba1..22682b9f 100644 --- a/.yoi/tickets/open/20260608-032200-panel-close-done-tickets/item.md +++ b/.yoi/tickets/open/20260608-032200-panel-close-done-tickets/item.md @@ -8,7 +8,7 @@ priority: 'P2' labels: ['tui', 'panel', 'ticket', 'close', 'workflow-state'] workflow_state: 'inprogress' created_at: '2026-06-08T03:22:00Z' -updated_at: '2026-06-08T05:50:36Z' +updated_at: '2026-06-08T06:03:26Z' assignee: null legacy_ticket: null queued_by: 'workspace-panel' diff --git a/.yoi/tickets/open/20260608-032200-panel-close-done-tickets/thread.md b/.yoi/tickets/open/20260608-032200-panel-close-done-tickets/thread.md index 0f36b150..922e09db 100644 --- a/.yoi/tickets/open/20260608-032200-panel-close-done-tickets/thread.md +++ b/.yoi/tickets/open/20260608-032200-panel-close-done-tickets/thread.md @@ -137,3 +137,44 @@ Stop/completion policy: - Because the human authorized cleanup after completion, this Orchestrator will proceed through reviewer approval, merge-completion validation, Ticket close, Pod stop, worktree removal, and branch deletion if the branch is approved and merge authority remains clear. --- + + + +## Implementation report + +Coder completed and reviewer delegated. + +Coder result: +- Pod: `coder-panel-close-done` +- Commit: `6d41ed3 tui: close done tickets from panel` +- Worktree status: clean after commit. +- Diff against `develop`: 1 file changed, 207 insertions, 77 deletions. + +Files touched by coder: +- `crates/tui/src/multi_pod.rs` + +Coder reported implementation: +- Added Panel Close dispatch using `LocalTicketBackend::close` for safe open/done Tickets only. +- Safe conditions checked: open status, `workflow_state == done`, empty/unset `attention_required`, empty/unset `action_required`, and no existing `resolution.md`. +- Generated deterministic resolution text noting that the Ticket had already reached `workflow_state: done`, and that the close action did not start implementation/workflow-state changes or launch Orchestrator/Companion/workers. +- Unsafe close attempts do not mutate and return bounded diagnostics. +- Added focused tests for success, generated resolution content, non-done blocking, `action_required` blocking, `attention_required` blocking, and existing resolution blocking. + +Coder reported validation: +- `cargo test -p tui multi_pod --lib` +- `cargo test -p tui workspace_panel --lib` +- `cargo fmt --check` +- `git diff --check` +- `cargo run -q -p yoi -- ticket doctor` +- `nix build .#yoi` + +Reviewer delegation: +- Spawned sibling reviewer Pod: `reviewer-panel-close-done`. +- Reviewer scope: read-only child worktree plus non-recursive parent-root read required by launch cwd validation. +- Reviewer was instructed to judge against the recorded Ticket requirements and binding decisions. + +Pending: +- Await reviewer verdict before merge-ready dossier / merge-completion. +- No merge, close, final approval, or cleanup has occurred for this Ticket. + +--- diff --git a/.yoi/tickets/open/20260608-032911-separate-ticket-record-language-from-worker-language/item.md b/.yoi/tickets/open/20260608-032911-separate-ticket-record-language-from-worker-language/item.md index 469a0275..19414be3 100644 --- a/.yoi/tickets/open/20260608-032911-separate-ticket-record-language-from-worker-language/item.md +++ b/.yoi/tickets/open/20260608-032911-separate-ticket-record-language-from-worker-language/item.md @@ -6,11 +6,13 @@ status: 'open' kind: 'task' priority: 'P2' labels: ['ticket', 'language', 'config', 'profile', 'workflow'] -workflow_state: 'intake' +workflow_state: 'queued' created_at: '2026-06-08T03:29:11Z' -updated_at: '2026-06-08T03:29:11Z' +updated_at: '2026-06-08T06:03:40Z' assignee: null legacy_ticket: null +queued_by: 'workspace-panel' +queued_at: '2026-06-08T05:51:29Z' --- ## Background diff --git a/.yoi/tickets/open/20260608-032911-separate-ticket-record-language-from-worker-language/thread.md b/.yoi/tickets/open/20260608-032911-separate-ticket-record-language-from-worker-language/thread.md index cba72eb4..2a405266 100644 --- a/.yoi/tickets/open/20260608-032911-separate-ticket-record-language-from-worker-language/thread.md +++ b/.yoi/tickets/open/20260608-032911-separate-ticket-record-language-from-worker-language/thread.md @@ -5,3 +5,72 @@ Created by LocalTicketBackend create. --- + + + +## Decision + +Intake readiness classification: `implementation_ready` for routing, with `needs_preflight: true`. + +Rationale: the Ticket already defines the product boundary between `worker.language` and durable Ticket record language, names the expected config shape (`[ticket].language` preferred), preserves absent-config behavior, and lists observable acceptance criteria. Preflight is still required before implementation because the work touches Ticket config, role launch prompts, typed tool/backend generated text, profile/worker language boundaries, and generated durable records. + +Risk flags: `config`, `profile-boundary`, `workflow-prompts`, `tool-generated-records`, `backward-compatibility`, `localization-policy`. + +Implementation latitude: implementers may choose the minimal practical set of generation paths for the first change as long as they document the policy, preserve existing behavior when `ticket.language` is absent, avoid rewriting existing Tickets, and escalate before changing public/authority semantics beyond Ticket record language selection. + +--- + + + +## Intake summary + +Existing Ticket refined and marked ready for Orchestrator routing. Scope: add explicit Ticket record language configuration separate from Pod/worker response language; expose it to role launch prompts and typed Ticket-generated record paths where practical; preserve absent-config behavior and avoid translating existing records or protocol literals. Readiness: implementation_ready for routing, with preflight recommended/required because the work touches config, profile/worker language boundaries, workflow prompts, and generated durable Ticket records. Risk flags: config, profile-boundary, workflow-prompts, tool-generated-records, backward-compatibility, localization-policy. + +--- + + + +## State changed + +Intake completed; Ticket has enough requirements, acceptance criteria, invariants, validation expectations, and escalation conditions for Orchestrator routing. Do not start implementation automatically; the next human/panel action is ready -> queued. + +--- + + + +## State changed + +Ticket queued for Orchestrator routing. + + +--- + + + +## Decision + +Routing decision: preflight_needed + +Reason: +- This Ticket touches the boundary between worker response language, durable Ticket record language, role launch prompts, Ticket tools/workflows, memory policy, and public/operator-facing project records. +- The desired behavior is clear at a high level, but the exact source of truth for Ticket record language and how it is propagated into role launch/tool/workflow contexts needs a binding design note before coder delegation. +- Without preflight, implementation could accidentally conflate user-facing conversation language with durable Ticket record language, or create hidden context-only language instructions that conflict with history/prompt-cache policy. + +Evidence checked: +- Ticket body and thread, including latest `ready -> queued` event. +- Workspace state: no matching branch/worktree exists; active worktrees for direct/delegation authority and panel close are separate. +- Code/prompt context: this crosses Ticket backend/tool wording, role launch prompt generation, workflow templates, profile/worker language handling, and memory language policy. +- Ticket doctor: 0 errors; existing warnings are unrelated legacy closed-Ticket diagnostics. + +Next action: +- Run `ticket-preflight-workflow` before implementation delegation. +- Preflight should record: canonical config key/source for Ticket record language, fallback/default behavior, relationship to `[worker].language` and `[memory].language`, which Ticket tools/workflows/role launch prompts must use record language, whether existing Tickets are left as-is, how mixed-language user input is handled, tests/fixtures, and explicit non-use of hidden context-only language injection. +- Leave this Ticket queued for now; do not transition `queued -> inprogress`, create `.worktree/separate-ticket-record-language-from-worker-language`, or spawn coder/reviewer Pods until preflight records implementation readiness. + +Escalate if: +- Ticket record language requires a migration of existing Ticket content. +- The design would make worker response language override durable Ticket record language. +- Language guidance would need to be injected into LLM context without being represented in committed history/tool/workflow prompts. +- The implementation would blur Ticket record authority with memory-language generation rules. + +---