ticket: request invalid ticket panel changes
This commit is contained in:
parent
092fcd806d
commit
d81fced051
|
|
@ -2,7 +2,7 @@
|
||||||
title: 'Panel: invalid Ticket があっても Ticket 機能全体を無効化しない'
|
title: 'Panel: invalid Ticket があっても Ticket 機能全体を無効化しない'
|
||||||
state: 'inprogress'
|
state: 'inprogress'
|
||||||
created_at: '2026-06-14T14:56:51Z'
|
created_at: '2026-06-14T14:56:51Z'
|
||||||
updated_at: '2026-06-14T16:21:50Z'
|
updated_at: '2026-06-14T16:27:19Z'
|
||||||
assignee: null
|
assignee: null
|
||||||
readiness: 'implementation_ready'
|
readiness: 'implementation_ready'
|
||||||
risk_flags: ['tui-panel', 'ticket-backend', 'partial-failure', 'diagnostics']
|
risk_flags: ['tui-panel', 'ticket-backend', 'partial-failure', 'diagnostics']
|
||||||
|
|
|
||||||
|
|
@ -157,3 +157,61 @@ Residual risks / blockers:
|
||||||
- Strict backend list/show behavior was preserved; new partial methods are opt-in for Panel tolerance.
|
- Strict backend list/show behavior was preserved; new partial methods are opt-in for Panel tolerance.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
<!-- event: review author: yoi-reviewer-00001KV3A5CNH at: 2026-06-14T16:27:19Z status: request_changes -->
|
||||||
|
|
||||||
|
## Review: request changes
|
||||||
|
|
||||||
|
Review result: request_changes
|
||||||
|
|
||||||
|
Blocker:
|
||||||
|
- A corrupt current-ticket relation artifact can still produce an actionable normal Ticket row.
|
||||||
|
|
||||||
|
Details:
|
||||||
|
- New tolerant relation loading records relation-artifact failures as `TicketInvalidRecord`, but still returns an `Ok(Ticket)` with lossy/omitted relations.
|
||||||
|
- `LocalTicketBackend::show_partial` returns `ticket_from_dir_tolerant(...)` as successful partial details.
|
||||||
|
- `relation_view_for_meta_tolerant` builds a relation view from remaining records after `all_ticket_relation_records_tolerant` records relation read errors.
|
||||||
|
- Panel unconditionally emits a normal actionable `ticket_row(...)` whenever `show_partial` returns `Ok`, and only extends `invalid_records` for diagnostics.
|
||||||
|
- A ready row can therefore still receive `NextUserAction::Queue`.
|
||||||
|
|
||||||
|
Consequence:
|
||||||
|
- If a ready Ticket's own `artifacts/relations.json` is corrupt/unreadable, Panel can show both:
|
||||||
|
1. a normal ready Ticket row with `Queue`, and
|
||||||
|
2. an invalid placeholder for the same Ticket id.
|
||||||
|
- This violates the invariant that invalid/corrupt Ticket records must not expose Queue/Close/planning-return/lifecycle mutation actions.
|
||||||
|
- It is also risky because malformed relations may hide dependency/blocker authority; Queue must not be exposed for that same corrupt Ticket record.
|
||||||
|
|
||||||
|
Required changes:
|
||||||
|
- If partial detail loading reports an invalid record for the same Ticket id being rendered, do not also render that Ticket as an actionable normal row.
|
||||||
|
- Replace it with a disabled invalid placeholder, or otherwise guarantee no lifecycle mutation action is available for that id.
|
||||||
|
- Add focused coverage for a valid `item.md` with corrupt/unreadable current Ticket detail/artifact, preferably malformed `artifacts/relations.json`, asserting:
|
||||||
|
- Ticket id is visible as invalid diagnostic/placeholder.
|
||||||
|
- no Queue/Close/lifecycle action is available for that Ticket id.
|
||||||
|
- other valid Ticket rows/actions remain available.
|
||||||
|
|
||||||
|
Evidence checked:
|
||||||
|
- Reviewed implementation diff `a1c8264b..b83b9e4e`.
|
||||||
|
- Inspected:
|
||||||
|
- `crates/ticket/src/lib.rs`
|
||||||
|
- `crates/tui/src/workspace_panel.rs`
|
||||||
|
- `crates/tui/src/multi_pod.rs`
|
||||||
|
- Ticket `00001KV3A5CNH` item.
|
||||||
|
|
||||||
|
Positive findings:
|
||||||
|
- Strict `TicketBackend::list/show` behavior remains unchanged; partial behavior is opt-in.
|
||||||
|
- Mixed valid/invalid item frontmatter is covered by focused tests.
|
||||||
|
- Panel creates disabled invalid placeholder rows with no `next_action`.
|
||||||
|
- Backend config unusable remains a whole-ticket degraded case in tests.
|
||||||
|
- Existing associated Intake row behavior is covered for a valid ready Ticket.
|
||||||
|
|
||||||
|
Validation performed by reviewer:
|
||||||
|
- Passed: `git diff --check a1c8264b..HEAD`
|
||||||
|
- Passed: `cargo fmt --check`
|
||||||
|
|
||||||
|
Validation not run:
|
||||||
|
- `cargo test` was not rerun because review scope was read-only and Cargo writes build artifacts.
|
||||||
|
|
||||||
|
Conclusion:
|
||||||
|
- Changes requested. Do not integrate until current-ticket detail/artifact corruption cannot expose lifecycle actions and focused coverage is added.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user