4.1 KiB
Phase 13: Virtual-Local Cloud Operations - Discussion Log
Audit trail only. Do not use as input to planning, research, or execution agents. Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.
Date: 2026-06-22 Phase: 13-virtual-local-cloud-operations Areas discussed: Open/preview/upload flow, naming and conflicts, move/delete safeguards, connection recovery
Open, Preview, and Upload Flow
| Question | Options considered | Selected |
|---|---|---|
| Cloud interaction model | In-app preview, new tab, download, shared local experience | Shared local experience |
| Same-name upload | Conflict dialog, automatic keep-both, reject, provider-native | Conflict dialog |
| Multi-file processing | Parallel independent, sequential, all-or-nothing, current-local exact | Sequential with queue pause |
| Unsupported preview | Authorized download, provider website, unsupported dialog | Authorized download |
User's choice: Reuse the local storage experience and code wherever possible. Upload conflicts/errors pause the full sequential queue for explicit Keep both/Replace/Retry/Skip/Cancel-all decisions.
Notes: In-app preview must not download to the user's machine. Temporary cache lifecycle belongs to Phase 14.
Naming and Conflict Behavior
| Question | Options considered | Selected |
|---|---|---|
| Create/rename collision | Dialog, automatic rename, reject, provider-native | Automatic rename |
| Suffix convention | Counter, copy suffix, timestamp, provider-native | Human-readable counter |
| Concurrent name race | Next-suffix retry, stop, provider-native | Bounded next-suffix retry |
| Stale mutation | Stop/refresh, apply anyway, ask, provider-native | Stop, refresh, explain |
User's choice: Generate Name (1).ext automatically and retry boundedly on races; never mutate externally changed stale state.
Move and Delete Safeguards
| Question | Options considered | Selected |
|---|---|---|
| Destination interaction | Shared local drag/picker, picker only, drag only, clipboard | Shared local drag and picker |
| Confirmation strength | Context-sensitive, uniform, type name, folders only | Context-sensitive |
| Delete semantics | Prefer trash, permanent, ask each time, provider-native | Prefer provider trash |
| Invalid folder moves | Prevent early, error later, provider rejection, files only | Prevent in UI and backend |
User's choice: Match local move interactions, constrain moves to one connection, warn more strongly for folder deletion, and use recoverable provider deletion where possible.
Connection Recovery
| Question | Options considered | Selected |
|---|---|---|
| Health UI | Browser + Settings, Settings only, browser only, toasts | Browser + Settings |
| Test timing | Automatic + on demand, on demand, every operation, scheduled | Automatic + on demand |
| Reconnect metadata | Preserve/revalidate, clear, unchanged, full rebuild | Preserve then revalidate |
| Explicit disconnect | Remove DocuVault data, retain metadata, disable, delete provider files | Remove credentials/metadata |
User's choice: Temporary outages preserve everything and expose retry/reconnect. Explicit Settings disconnect removes DocuVault credentials/metadata after confirmation and never touches provider files.
Notes: The user requested future disconnect-time conversion of cached cloud files into hierarchy-preserving local documents. This is recorded under deferred IMPORT-01 because Phase 13 has no byte cache and permanent import is outside v0.3.
Codex's Discretion
- Exact accessible wording, controlled provider-error mapping, progress labels, suffix retry bound, and endpoint/service decomposition within existing architectural rules.
Deferred Ideas
- Phase 14 temporary preview-byte cache and eviction behavior.
IMPORT-01: preserve cached/downloaded files as quota-counted local documents on explicit disconnect, under a connection-named folder with the provider hierarchy retained.