feat: unify interactive operation coordination
This commit is contained in:
@@ -4,18 +4,18 @@
|
||||
|
||||
**Blocked by:** 03 — Stream progressive startup and refresh.
|
||||
|
||||
**Status:** ready-for-agent
|
||||
**Status:** done
|
||||
|
||||
- [ ] Detection, Target mutation, and Active Profile transition use one presentation-independent progressive operation contract where their semantics overlap.
|
||||
- [ ] System mutations remain serialized and a conflicting action exposes an actionable disabled reason instead of silently ignoring input.
|
||||
- [ ] During a mutation, users can still select Targets, scroll details, and open existing read-only Help.
|
||||
- [ ] The affected Target row displays progress while the status area describes the current step.
|
||||
- [ ] Successful status is replaceable by later activity.
|
||||
- [ ] Current errors remain visible until acknowledged, superseded by explicit resolution, or replaced by a directly related result.
|
||||
- [ ] Current error details can be expanded without introducing an activity-history page.
|
||||
- [ ] Partial Active Profile transitions retain successful Target updates, preserve the no-cross-Target-rollback rule, and focus the first failed Target.
|
||||
- [ ] Confirmation state, progress, and final result are structured; the TUI does not parse user-facing strings to infer operation state.
|
||||
- [ ] `q` on the dashboard and Ctrl+C on any page request exit; during a mutation the UI visibly reports deferred exit and exits only after safe completion.
|
||||
- [ ] No new work can begin after deferred exit is requested.
|
||||
- [ ] The concrete Application remains usable by existing synchronous callers while obsolete interactive fallback paths are removed after migration.
|
||||
- [ ] Application and complete-Model tests cover browsing while busy, blocked mutations, persistent errors, partial failure, confirmation, and deferred exit.
|
||||
- [x] Detection, Target mutation, and Active Profile transition use one presentation-independent progressive operation contract where their semantics overlap.
|
||||
- [x] System mutations remain serialized and a conflicting action exposes an actionable disabled reason instead of silently ignoring input.
|
||||
- [x] During a mutation, users can still select Targets, scroll details, and open existing read-only Help.
|
||||
- [x] The affected Target row displays progress while the status area describes the current step.
|
||||
- [x] Successful status is replaceable by later activity.
|
||||
- [x] Current errors remain visible until acknowledged, superseded by explicit resolution, or replaced by a directly related result.
|
||||
- [x] Current error details can be expanded without introducing an activity-history page.
|
||||
- [x] Partial Active Profile transitions retain successful Target updates, preserve the no-cross-Target-rollback rule, and focus the first failed Target.
|
||||
- [x] Confirmation state, progress, and final result are structured; the TUI does not parse user-facing strings to infer operation state.
|
||||
- [x] `q` on the dashboard and Ctrl+C on any page request exit; during a mutation the UI visibly reports deferred exit and exits only after safe completion.
|
||||
- [x] No new work can begin after deferred exit is requested.
|
||||
- [x] The concrete Application remains usable by existing synchronous callers while obsolete interactive fallback paths are removed after migration.
|
||||
- [x] Application and complete-Model tests cover browsing while busy, blocked mutations, persistent errors, partial failure, confirmation, and deferred exit.
|
||||
|
||||
Reference in New Issue
Block a user