docs(13): add phase 13 planning artifacts — virtual local cloud operations
Plans 01–11, CONTEXT, PATTERNS, RESEARCH, REVIEW-FIX, and updated SUMMARY and CONTEXT for the virtual-local-cloud-operations phase. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
73328eee0b
commit
b67e77dd69
@@ -0,0 +1,174 @@
|
||||
---
|
||||
phase: "13"
|
||||
plan: "10"
|
||||
type: execute
|
||||
wave: 7
|
||||
depends_on:
|
||||
- "13-02"
|
||||
- "13-04"
|
||||
- "13-07"
|
||||
- "13-09"
|
||||
files_modified:
|
||||
- frontend/src/stores/cloudConnections.js
|
||||
- frontend/src/views/CloudFolderView.vue
|
||||
- frontend/src/components/storage/StorageBrowser.vue
|
||||
- frontend/src/components/settings/SettingsCloudTab.vue
|
||||
- frontend/src/components/cloud/CloudCredentialModal.vue
|
||||
- frontend/src/components/settings/__tests__/SettingsCloudTab.health.test.js
|
||||
- frontend/src/views/__tests__/CloudFolderRenderedFlow.test.js
|
||||
- frontend/src/stores/__tests__/cloudConnections.test.js
|
||||
- frontend/src/views/__tests__/CloudFolderView.test.js
|
||||
autonomous: true
|
||||
requirements:
|
||||
- CONN-01
|
||||
- CONN-02
|
||||
- CONN-03
|
||||
- CLOUD-04
|
||||
- CLOUD-05
|
||||
- CLOUD-06
|
||||
- CLOUD-07
|
||||
- CLOUD-09
|
||||
must_haves:
|
||||
truths:
|
||||
- "Connection health is visible near the browser and in Settings from one shared store mapping."
|
||||
- "Post-connect, post-reconnect, and credential-failure flows re-evaluate health automatically, while ordinary navigation never probes health."
|
||||
- "The shared browser surfaces cloud create, rename, move, and delete results without introducing a second browser or folder picker."
|
||||
artifacts:
|
||||
- path: "frontend/src/stores/cloudConnections.js"
|
||||
provides: "Server health mapping, reconnect refresh coordination, and no-probe-on-navigation behavior."
|
||||
- path: "frontend/src/components/settings/SettingsCloudTab.vue"
|
||||
provides: "Test/Reconnect/Disconnect controls and broader Google Drive consent copy."
|
||||
key_links:
|
||||
- from: "reconnect and credential-failure responses"
|
||||
to: "browser-adjacent and Settings health state"
|
||||
via: "cloudConnections store"
|
||||
pattern: "health"
|
||||
---
|
||||
|
||||
<objective>
|
||||
Finish the frontend side of Phase 13 by wiring shared-browser folder mutations, actionable health UX, broader Drive consent copy, automatic post-failure health rechecks, and the explicit no-probe-on-navigation rule.
|
||||
|
||||
Purpose: Close the loop between the completed backend contracts and the two frontend surfaces users rely on.
|
||||
Output: Passing health, rendered-flow, store, and mutation UX suites.
|
||||
</objective>
|
||||
|
||||
<execution_context>
|
||||
@$HOME/.codex/gsd-core/workflows/execute-plan.md
|
||||
@$HOME/.codex/gsd-core/templates/summary.md
|
||||
</execution_context>
|
||||
|
||||
<context>
|
||||
@AGENTS.md
|
||||
@.planning/phases/13-virtual-local-cloud-operations/13-CONTEXT.md
|
||||
@.planning/phases/13-virtual-local-cloud-operations/13-PATTERNS.md
|
||||
@frontend/src/stores/cloudConnections.js
|
||||
@frontend/src/views/CloudFolderView.vue
|
||||
@frontend/src/components/storage/StorageBrowser.vue
|
||||
@frontend/src/components/settings/SettingsCloudTab.vue
|
||||
@frontend/src/components/cloud/CloudCredentialModal.vue
|
||||
</context>
|
||||
|
||||
## Artifacts this phase produces
|
||||
|
||||
- Shared browser support for cloud create, rename, move, and delete UX.
|
||||
- Store-backed browser and Settings health presentation with auto-test and no-probe behavior.
|
||||
- Explicit broader Google Drive consent or reconnect copy in the cloud credential and settings surfaces.
|
||||
|
||||
## Pattern analogs
|
||||
|
||||
- `frontend/src/stores/__tests__/cloudConnections.test.js` — centralized state mapping pattern.
|
||||
- `frontend/src/views/__tests__/CloudFolderRenderedFlow.test.js` — rendered browser-health flow pattern.
|
||||
- `frontend/src/components/settings/__tests__/SettingsCloudTab.health.test.js` — Settings control and copy assertions.
|
||||
|
||||
<tasks>
|
||||
|
||||
<task type="auto" tdd="true">
|
||||
<name>Task 1: Implement store-backed health and reconnect UX with explicit no-probe-on-navigation behavior</name>
|
||||
<files>frontend/src/stores/cloudConnections.js, frontend/src/views/CloudFolderView.vue, frontend/src/components/settings/SettingsCloudTab.vue, frontend/src/components/cloud/CloudCredentialModal.vue, frontend/src/components/settings/__tests__/SettingsCloudTab.health.test.js, frontend/src/stores/__tests__/cloudConnections.test.js, frontend/src/views/__tests__/CloudFolderView.test.js</files>
|
||||
<read_first>
|
||||
- frontend/src/stores/cloudConnections.js
|
||||
- frontend/src/components/settings/SettingsCloudTab.vue
|
||||
- frontend/src/components/cloud/CloudCredentialModal.vue
|
||||
- frontend/src/stores/__tests__/cloudConnections.test.js
|
||||
- .planning/phases/13-virtual-local-cloud-operations/13-CONTEXT.md
|
||||
</read_first>
|
||||
<behavior>
|
||||
- Test 1: browser-adjacent and Settings health views derive from one store mapping
|
||||
- Test 2: connect, reconnect, and credential-failure flows auto-test health, but ordinary folder navigation never triggers a probe
|
||||
- Test 3: broader Google Drive access is explicit in consent or reconnect copy
|
||||
</behavior>
|
||||
<action>
|
||||
Extend the cloud connection store and thin view handlers so server health states are mapped once and rendered in both the cloud browser context and Settings. Trigger automatic health re-evaluation after connect, reconnect, and credential-related failures, keep cached metadata visible while warning or reauth states are shown, and explicitly prevent ordinary folder navigation from performing a provider health probe. Update the credential and Settings surfaces so Google Drive’s broader Phase 13 access request is visible in user-facing copy rather than hidden in backend-only behavior.
|
||||
</action>
|
||||
<acceptance_criteria>
|
||||
- health and store suites pass with explicit no-probe-on-navigation coverage
|
||||
- browser and Settings show actionable, consistent health state from the same store mapping
|
||||
- broader Drive access copy is visible wherever users connect or reconnect that provider
|
||||
</acceptance_criteria>
|
||||
<verify>
|
||||
<automated>cd frontend && npm run test -- --run src/components/settings/__tests__/SettingsCloudTab.health.test.js src/stores/__tests__/cloudConnections.test.js src/views/__tests__/CloudFolderView.test.js</automated>
|
||||
</verify>
|
||||
<done>Connection health, reconnect, and consent UX now follow one store-backed truth without background probe drift.</done>
|
||||
</task>
|
||||
|
||||
<task type="auto" tdd="true">
|
||||
<name>Task 2: Surface folder mutation results through the shared browser without forking layout</name>
|
||||
<files>frontend/src/views/CloudFolderView.vue, frontend/src/components/storage/StorageBrowser.vue, frontend/src/views/__tests__/CloudFolderRenderedFlow.test.js</files>
|
||||
<read_first>
|
||||
- frontend/src/components/storage/StorageBrowser.vue
|
||||
- frontend/src/views/CloudFolderRenderedFlow.test.js
|
||||
- .planning/phases/13-virtual-local-cloud-operations/13-CONTEXT.md
|
||||
</read_first>
|
||||
<behavior>
|
||||
- Test 1: cloud create, rename, move, and delete reuse the shared browser surface and picker behavior
|
||||
- Test 2: invalid destinations are disabled before submission and backend rejections are rendered clearly
|
||||
- Test 3: trash-versus-permanent delete messaging and stale-refresh retry guidance are shown without duplicating layout
|
||||
</behavior>
|
||||
<action>
|
||||
Wire the shared browser to consume the folder-mutation contract from the backend. Reuse the existing create, rename, drag-move, picker-move, and delete surfaces, but feed them cloud-specific capability, invalid-destination, stale-refresh, and trash-versus-permanent delete messages through props and emitted events only. Keep `CloudFolderView.vue` thin and avoid introducing a second folder picker, second drag state, or parallel mutation layout.
|
||||
</action>
|
||||
<acceptance_criteria>
|
||||
- rendered-flow suite passes with the real shared browser
|
||||
- invalid destinations are prevented in the UI before submission and still handled cleanly after backend rejection
|
||||
- cloud create/rename/move/delete behavior stays on the shared browser surface
|
||||
</acceptance_criteria>
|
||||
<verify>
|
||||
<automated>cd frontend && npm run test -- --run src/views/__tests__/CloudFolderRenderedFlow.test.js</automated>
|
||||
</verify>
|
||||
<done>The frontend now presents full cloud mutation and health behavior through the shared browser and Settings surfaces only.</done>
|
||||
</task>
|
||||
|
||||
</tasks>
|
||||
|
||||
<threat_model>
|
||||
## Trust Boundaries
|
||||
|
||||
| Boundary | Description |
|
||||
|----------|-------------|
|
||||
| server health/mutation results → store/UI | The UI must present backend truth without inventing probe or mutation semantics. |
|
||||
| shared browser interactions → destructive actions | Delete and move UX must stay explicit and capability-aware. |
|
||||
|
||||
## STRIDE Threat Register
|
||||
|
||||
| Threat ID | Category | Component | Disposition | Mitigation Plan |
|
||||
|-----------|----------|-----------|-------------|-----------------|
|
||||
| T-13-30 | T | health UX | mitigate | Store and Settings tests require auto-test on connect/reconnect/failure and forbid navigation-triggered probes. |
|
||||
| T-13-31 | R | destructive cloud actions | mitigate | Rendered-flow tests require explicit delete disclosure, stale-retry messaging, and invalid-destination prevention. |
|
||||
| T-13-32 | I | broader-scope consent | mitigate | Settings and credential-modal tests require explicit broader Google Drive access copy. |
|
||||
</threat_model>
|
||||
|
||||
<verification>
|
||||
- Pass the health, store, view, and rendered-flow frontend suites.
|
||||
- Confirm the shared browser remains the only browser surface.
|
||||
- Confirm no-probe-on-navigation is explicitly asserted and implemented.
|
||||
</verification>
|
||||
|
||||
<success_criteria>
|
||||
- Users can see, test, reconnect, and recover cloud connections through one consistent frontend state model.
|
||||
- Shared-browser folder mutations now satisfy the backend contracts for `CLOUD-04` through `CLOUD-07`.
|
||||
- Phase 13 now concretely encodes broader Drive access and the D-13 health-testing invariant on the frontend.
|
||||
</success_criteria>
|
||||
|
||||
<output>
|
||||
Create `.planning/phases/13-virtual-local-cloud-operations/13-10-SUMMARY.md` when done
|
||||
</output>
|
||||
Reference in New Issue
Block a user