- prune expired recovery items on load/save and reject expired restores at worker boundary - add restoreExpired and restoreConflict protocol/application error mapping - disable expired restore actions in History and reload persisted state after restore failures - add recovery expiry/conflict coverage plus sync protocol, architecture, state-machine, and recovery contract docs - wire AtlasAppTests into the shared Xcode scheme and add app-layer regression coverage for expired restore reload behavior Refs: ATL-221 ATL-222 ATL-223 ATL-224 ATL-225, vibe-kanban SID-9
4.2 KiB
4.2 KiB
Recovery Credibility Gate Review
Gate
Recovery Credibility
Review Date
2026-03-13
Scope Reviewed
ATL-221implement physical restore for file-backed recoverable actions where safeATL-222validate shipped restore behavior on real file-backed test casesATL-223narrow README, in-app, and release-note recovery claims if neededATL-224freeze recovery contract and acceptance evidenceATL-225recovery credibility gate review
Readiness Checklist
- Required P0 tasks complete
- Docs updated
- Risks reviewed
- Open questions below threshold
- Next-stage inputs available
Evidence Reviewed
Docs/Protocol.mdDocs/Execution/Smart-Clean-Execution-Coverage-2026-03-09.mdDocs/Execution/Smart-Clean-QA-Checklist-2026-03-09.mdDocs/Execution/Smart-Clean-Manual-Verification-2026-03-09.mdDocs/Execution/Recovery-Contract-2026-03-13.mdREADME.mdREADME.zh-CN.mdPackages/AtlasInfrastructure/Tests/AtlasInfrastructureTests/AtlasInfrastructureTests.swiftPackages/AtlasDomain/Sources/AtlasDomain/Resources/en.lproj/Localizable.stringsPackages/AtlasDomain/Sources/AtlasDomain/Resources/zh-Hans.lproj/Localizable.strings
Automated Validation Summary
swift test --package-path Packages --filter AtlasInfrastructureTests— passswift test --package-path Packages --filter AtlasApplicationTests— passswift test --package-path Packages— pass
Gate Assessment
ATL-221 Physical Restore Surface
- File-backed recovery items now restore physically when Atlas recorded
restoreMappingsfrom a real Trash move. - Supported direct-trash targets restore back to their original on-disk path.
- Protected app-bundle targets restore through the helper-backed path instead of claiming an unproven direct move.
- Restore remains fail-closed when the source, destination, or capability contract is not satisfied.
ATL-222 Shipped Restore Evidence
- Automated tests now cover both proven physical restore classes:
- direct-trash file-backed Smart Clean targets
- helper-backed app uninstall targets
- State-only recovery remains explicitly covered so Atlas does not regress into overclaiming physical restore.
- Mixed restore summaries are covered so a batch containing both kinds of items stays truthful.
- Expired recovery items are now covered as a fail-closed path and are pruned from active recovery state.
- Restore destination conflicts now return a stable restore-specific rejection instead of being reported as generic success.
ATL-223 Claim Audit
- README and localized in-app strings already reflect the narrowed recovery promise.
- No new copy narrowing was required in this slice.
- This gate freezes a release-note-safe wording set in
Docs/Execution/Recovery-Contract-2026-03-13.mdso future release notes cannot overstate restore behavior.
ATL-224 Contract Freeze
- The recovery contract is now explicit, evidence-backed, and tied to shipped protocol fields and worker behavior.
- The contract distinguishes physical restore from Atlas-only state rehydration and documents the exact failure conditions, including expiry and destination conflicts.
Remaining Limits
- Physical restore is still partial and depends on supported
restoreMappings. - Older or unstructured recovery items still restore Atlas state only.
- Broader restore coverage, including additional protected or system-managed targets, must not be described as shipped until new allowlist and QA evidence exist.
Decision
Pass with Conditions
Conditions
- Release-facing copy must continue to use the frozen wording in
Docs/Execution/Recovery-Contract-2026-03-13.md. - Any future restore-surface expansion must add automated proof for the new target class before copy is widened.
- Candidate-build QA should still rerun the manual restore checklist on packaged artifacts before external distribution.
Follow-up Actions
- Reuse the frozen recovery contract in future release notes and internal beta notices.
- Add new restore targets only after allowlist review, helper-path review, and contract tests land together.
- Re-run packaged-app manual restore verification when signed distribution work resumes.