# 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.
