ActionItem now carries optional targetPaths so plan.execute can use plan-carried targets instead of reconstructing execution intent from findings. This improves execution reliability and enables proper restore mappings for recovery items. - Add targetPaths field to ActionItem domain model - Update plan execution to prefer plan-carried targets with finding fallback - Expand safe cache path fragments for direct-trash execution - Add gate review documentation for ATL-211/212/215 - Bump protocol version to 0.3.0
2.0 KiB
2.0 KiB
Task State Machine
Task Types
scanexecute_cleanexecute_uninstallrestoreinspect_permissionshealth_snapshot
Main States
draftsubmittedvalidatingawaiting_permissionqueuedrunningcancellingcompletedpartial_failedfailedcancelledexpired
Terminal States
completedpartial_failedfailedcancelledexpired
Core Transition Rules
draft -> submittedsubmitted -> validatingvalidating -> awaiting_permission | queued | failedawaiting_permission -> queued | cancelled | failedqueued -> running | cancelledrunning -> cancelling | completed | partial_failed | failedcancelling -> cancelled
Action Item States
pendingrunningsucceededskippedfailedcancelled
Guarantees
- Terminal states are immutable.
- Progress must not move backwards.
- Destructive tasks must be audited.
- Recoverable tasks must leave structured recovery entries until restored or expired.
- Repeated write requests must honor idempotency rules when those flows become externally reentrant.
Current MVP Notes
scanemits monotonic progress and finishes with a preview-ready plan when the upstream scan adapter succeeds; otherwise the request should fail rather than silently fabricate findings.execute_cleanmust not report completion in release-facing flows unless real cleanup side effects have been applied. Fresh preview plans now carry structured execution targets, and unsupported or unstructured targets should fail closed.execute_uninstallremoves an app from the current workspace view and creates a recovery entry.restorecan physically restore items when structured recovery mappings are present, and can still rehydrate aFindingor anAppFootprintinto Atlas state from the recovery payload.- User-visible task summaries and settings-driven text should reflect the persisted app-language preference when generated.