Seed the recovery cache
- 1Open a Project while the Project API is available.
- 2Confirm the Studio save indicator reports REMOTE.
- 3Make one Proposal-safe change and wait for the remote save.
- 4The browser now holds a recovery copy under the Project-scoped storage key.
Continue during an API outage
- 1Block requests matching /api/projects while keeping the application assets available.
- 2Create or adjust a Proposal Change.
- 3Confirm the save indicator reports LOCAL.
- 4Navigate to /projects and confirm the cached Project remains discoverable with its complete snapshot.
Recover deliberately
- 1Restore the Project endpoint before accepting further shared changes.
- 2Open the locally recovered Project and export VM JSON as a safety copy.
- 3Compare its updated time, Plan Version, Proposal, and latest receipt with the remote record.
- 4Preserve divergent work as a Proposal Branch; do not silently replace accepted remote truth.
Completion criteria
- The local record retains schema version 10 and the exact Project snapshot.
- Remote failure is explicit through the LOCAL status.
- Recovery never changes accepted Plan truth without the ordinary Proposal, Validation, and human Approval path.
Verify the workflow
Run the executable fixture from the repository root. Completion requires a zero exit code.
bash
node --test tests/project-store.test.mjs