diff --git a/.yoi/tickets/00001KV3A5CNH/artifacts/orchestration-plan.jsonl b/.yoi/tickets/00001KV3A5CNH/artifacts/orchestration-plan.jsonl index d8597276..df983f10 100644 --- a/.yoi/tickets/00001KV3A5CNH/artifacts/orchestration-plan.jsonl +++ b/.yoi/tickets/00001KV3A5CNH/artifacts/orchestration-plan.jsonl @@ -1,2 +1,3 @@ {"id":"orch-plan-20260614-153704-1","ticket_id":"00001KV3A5CNH","kind":"conflicts_with","related_ticket":"00001KV09WYC6","note":"同じ Workspace Panel Ticket row/model/action/diagnostic surface を変更する可能性が高いため、`00001KV09WYC6` の実装・review・integration 後に再 routing する。","author":"yoi-orchestrator","at":"2026-06-14T15:37:04Z"} {"id":"orch-plan-20260614-153704-2","ticket_id":"00001KV3A5CNH","kind":"waiting_capacity_note","note":"現在 `00001KTFY8V80` と `00001KV09WYC6` の2件が inprogress で Coder Pod running。`00001KV09WYC6` と source surface が重なるため、追加 spawn せず queued のまま待機。","author":"yoi-orchestrator","at":"2026-06-14T15:37:04Z"} +{"id":"orch-plan-20260614-155739-3","ticket_id":"00001KV3A5CNH","kind":"accepted_plan","accepted_plan":{"summary":"Accept invalid-Ticket partial failure Panel bugfix now that prior Panel Intake row work is integrated. Implement partial failure handling and focused tests without changing Ticket lifecycle authority.","branch":"impl/00001KV3A5CNH-panel-invalid-ticket-tolerance","worktree":"/home/hare/Projects/yoi/.worktree/00001KV3A5CNH-panel-invalid-ticket-tolerance","role_plan":"Orchestrator creates a dedicated implementation worktree and spawns a Coder with write scope limited to that worktree. Reviewer will run read-only after implementation report. Prior conflict with `00001KV09WYC6` is resolved because that Ticket is merged/validated/done in orchestration branch."},"author":"yoi-orchestrator","at":"2026-06-14T15:57:39Z"} diff --git a/.yoi/tickets/00001KV3A5CNH/item.md b/.yoi/tickets/00001KV3A5CNH/item.md index 5ec48c07..36a16d17 100644 --- a/.yoi/tickets/00001KV3A5CNH/item.md +++ b/.yoi/tickets/00001KV3A5CNH/item.md @@ -1,8 +1,8 @@ --- title: 'Panel: invalid Ticket があっても Ticket 機能全体を無効化しない' -state: 'queued' +state: 'inprogress' created_at: '2026-06-14T14:56:51Z' -updated_at: '2026-06-14T15:37:04Z' +updated_at: '2026-06-14T15:57:47Z' assignee: null readiness: 'implementation_ready' risk_flags: ['tui-panel', 'ticket-backend', 'partial-failure', 'diagnostics'] diff --git a/.yoi/tickets/00001KV3A5CNH/thread.md b/.yoi/tickets/00001KV3A5CNH/thread.md index c4a0b02b..45ad4ec1 100644 --- a/.yoi/tickets/00001KV3A5CNH/thread.md +++ b/.yoi/tickets/00001KV3A5CNH/thread.md @@ -39,3 +39,80 @@ Next action: - planning return ではなく queued のまま waiting とする。 --- + + + +## Decision + +Routing decision: implementation_ready + +Reason: +- 以前の waiting reason は `00001KV09WYC6` と同じ Panel row/action surface の conflict risk だったが、`00001KV09WYC6` は reviewer approve、orchestration branch への merge、focused validation、Ticket `done` まで完了した。 +- Ticket body / thread / relations / orchestration plan / current Orchestrator workspace を再確認した。blocking relation はなく、planning に戻す concrete missing information はない。 +- 本 Ticket は invalid/corrupt/unreadable individual Ticket record に対する Panel partial failure handling として concrete であり、残る不確実性は backend/list/show error handling と Panel row/diagnostic 表現の実装戦術に閉じている。 + +Evidence checked: +- Ticket body/thread: Background, requirements, acceptance criteria, invariants, implementation latitude, escalation conditions, validation を確認。 +- Ticket relations: blocker なし。 +- OrchestrationPlan: `00001KV09WYC6` との prior conflict/waiting note を確認。先行 Ticket 完了により blocker は解消。 +- Orchestrator workspace: `/home/hare/Projects/yoi/.worktree/orchestration` は clean、`81667a9a` 上。 +- Active Pods: `00001KTFY8V80` reviewer running、coder idle。Panel implementation worker/reviewer for `00001KV09WYC6` は停止済み。 +- Current code map after prior Panel merge: `crates/tui/src/workspace_panel.rs`, `crates/tui/src/multi_pod.rs`, `crates/ticket/src/lib.rs`。 + +IntentPacket: + +Intent: +- Workspace Panel で個別 invalid/corrupt/unreadable Ticket record があっても、正常な Ticket rows と actions を表示・維持し、invalid record は bounded diagnostic/placeholder として見せる。 + +Binding decisions / invariants: +- invalid Ticket を理由に正常 Ticket の Panel 操作を巻き添えで止めない。 +- invalid Ticket record を Panel が自動修復・自動削除しない。 +- invalid Ticket には Queue / Close / planning return など lifecycle mutation action を出さない。 +- Ticket lifecycle authority / state schema は変更しない。 +- Ticket backend config 全体が unusable な場合と、個別 record の partial failure を区別する。 +- 正常 Ticket の lifecycle mutation は既存 typed Ticket backend / Panel action path を通す。 +- invalid record の content や secret-like content を UI/diagnostic に漏らさない。 + +Requirements / acceptance criteria: +- valid + invalid Ticket が混在しても valid rows は残る。 +- 正常 ready Ticket の Queue action、正常 planning Ticket の clarification/Intake 導線を維持する。 +- invalid Ticket は bounded diagnostic または disabled placeholder row として見える。 +- invalid Ticket に lifecycle mutation action を提示しない。 +- Panel header/diagnostics は全体 unavailable ではなく一部読み込み失敗を表す。 +- backend root/config unusable の既存 degraded behavior は壊さない。 +- Focused tests で partial failure、bounded invalid indication、valid action preservation、config unusable case を確認する。 + +Implementation latitude: +- 表示形式は header diagnostic / placeholder row / detail route のどれでもよい。 +- backend `list` を lossy にするか、Panel 側 per-Ticket load recovery にするかは実装判断。ただし typed boundary を保ち、Panel 専用 ad hoc parsing で schema authority を迂回しない。 +- `TicketDoctor` logic を再利用してよいが、Panel 起動ごとに重い full doctor を必須にしない。 + +Escalate if: +- `TicketBackend::list` public semantics の大幅変更が必要。 +- invalid path/id を安全に特定できない。 +- Panel action dispatch が valid Ticket と invalid placeholder を安全に分けられない。 +- TicketDoctor と Panel diagnostics の severity/wording が矛盾する。 +- invalid content を読まないと UI 表示できない設計になる。 + +Validation: +- `cargo test -p tui workspace_panel --lib` +- 必要に応じて `cargo test -p ticket` +- `cargo fmt --check` +- `git diff --check` + +Critical risks / reviewer focus: +- partial failure が全体 Ticket UI unavailable に戻らないこと。 +- invalid placeholder/action key が lifecycle mutation path に入らないこと。 +- Ticket backend config failure との区別。 +- diagnostics の boundedness と secret-like content 非露出。 +- prior `00001KV09WYC6` の Ticket-associated Intake row behavior との整合。 + +--- + + + +## State changed + +Routing decision と accepted implementation plan を記録済み。先行 `00001KV09WYC6` は merge/validation/done 済みで、prior conflict/waiting reason は解消。blocking relation / unresolved orchestration-plan blocker はないため、implementation side effects の前に `queued -> inprogress` acceptance を記録する。 + +---