12 KiB
DocuVault Roadmap: v0.3 Reimagining Cloud Storage integration
Status: Proposed Phases: 12-16 Requirements: 36 Defined: 2026-06-17
Milestone Goal
Make connected cloud storage behave like first-class DocuVault storage: users can navigate and manage provider-owned files as if they were local, selectively analyze them, and find them through unified keyword and semantic search while DocuVault minimizes locally cached file bytes.
Mandatory Cross-Cutting Gates
Before any phase is marked complete:
- Backend and frontend test suites pass with zero failures; every new function, endpoint, store, and component has focused coverage.
- Security gate verifies user/connection/item ownership, credential secrecy, SSRF defenses, metadata-only audit logs, cache isolation, and no admin document-content access.
- Dependency audits report no high/critical vulnerabilities.
- Provider integration tests cover supported capabilities and explicit unsupported behavior.
- User-facing changes update
AGENTS.md, relevant README sections, and application patch/minor versions according to project protocol.
Phase Summary
| Phase | Name | Goal | Requirements |
|---|---|---|---|
| 12 | 6/6 | Complete | 2026-06-21 |
| 13 | 8/11 | In Progress | |
| 14 | Selective Analysis and Byte Cache | Analyze selected cloud scopes through cancellable jobs backed by bounded, private, on-demand byte caching | ANALYZE-01..07, CACHE-03..05 |
| 15 | Unified Smart Search | Search local and analyzed cloud documents by exact text or semantic ideas without downloading files during queries | SEARCH-01..07 |
| 16 | Change Tracking and Reliability | Detect external provider changes, mark stale indexes, remove deleted items, and harden refresh behavior | SYNC-02..04 |
Phase Details
Phase 12: Cloud Resource Foundation
Goal: DocuVault has a provider-neutral cloud file capability contract and durable per-user cloud item index, and the shared browser can render cloud resources and supported actions without copying full provider files into local storage.
Depends on: Phase 11 Requirements: CONN-04, CLOUD-01, CLOUD-08, CACHE-01, CACHE-02, SYNC-01
Success Criteria:
- Every supported provider reports normalized capabilities for browse, open, preview, upload, folder creation, rename, move, delete, and change tracking.
- Browsing any connected provider persists normalized, owner-scoped cloud item metadata including provider ID/path, parent, type, size, modification time, and version/etag.
StorageBrowser.vueremains the single file browser and renders cloud actions from capabilities, including disabled actions with provider-specific explanations.- Provider-owned bytes remain outside DocuVault while metadata, extracted text placeholders, topic links, and semantic-index state can be persisted independently.
- Ownership and admin-negative tests prove cloud connection and cloud item metadata cannot cross user boundaries.
Phase 12.1: Fix Nextcloud root listing and sync visibility (INSERTED)
Goal: Restore visible, truthful, metadata-only cloud browsing by repairing Nextcloud's adapter contract, applying one completeness/freshness contract across all providers, and aligning the shared frontend browser with normalized provider identities. Requirements: CONN-04, CLOUD-01, CACHE-01, SYNC-01 Depends on: Phase 12 Plans: 4/4 plans complete Execution waves: Wave 1: 12.1-01; Wave 2: 12.1-02 after 01; Wave 3: 12.1-03 after 02; Wave 4: 12.1-04 after 01-03.
Plans:
- 12.1-01-PLAN.md
- 12.1-02-PLAN.md
- 12.1-03-PLAN.md
- 12.1-04-PLAN.md
- 12.1-01 (Wave 1) — Restore the shared four-provider adapter contract, secure Nextcloud URL/redirect handling, and metadata-only listing behavior.
- 12.1-02 (Wave 2; after 12.1-01) — Centralize complete/incomplete reconciliation so incomplete provider results cannot become fresh or delete cached metadata.
- 12.1-03 (Wave 3; after 12.1-02) — Align the shared browser and trees with
kind, opaqueprovider_item_idrouting, lineage-based breadcrumbs, and server freshness. - 12.1-04 (Wave 4; after 12.1-01 through 12.1-03) — Run sanitized two-mode live Nextcloud acceptance, rendered/security/secret gates, and phase closeout.
Success Criteria:
- Nextcloud and generic WebDAV expose one canonical
CloudResourceAdapter.list_folderimplementation, and all four providers pass the same runtime identity/completeness/no-byte/no-mutation contract with provider-specific pagination fixtures. - Every outbound Nextcloud/WebDAV target, including redirects, is rejected unless each hop is HTTPS, same-origin, and passes URL plus resolved-address SSRF validation; automatic redirects are disabled.
complete=Falsenever marks a folder fresh, advanceslast_refreshed_at, or authorizes unseen-item deletion in synchronous or worker paths; cached rows remain usable with a controlled warning.- The frontend classifies by
kind, navigates through named routes/query serialization with opaqueprovider_item_idvalues, builds breadcrumbs from explicit navigation lineage rather than splitting provider IDs, and renders backend freshness verbatim. - Live Nextcloud validation first runs a nonblocking sanitized diagnostic; exact names/kinds become a blocking gate only after the owner-confirmed manifest is stored in a tracked, non-secret fixture. Unexpected live names are never printed or persisted.
- Automated backend/frontend/rendered-flow tests, dedicated per-plan security reviews, dependency audits, an executable secret scan, documentation/version updates, and one atomic commit/push per plan pass without exposing credentials or provider bytes.
Phase 13: Virtual-Local Cloud Operations
Goal: Users can maintain healthy cloud connections and perform the main file-management workflows in connected storage with the same shared browser interactions used for local files.
Depends on: Phase 12 Requirements: CONN-01, CONN-02, CONN-03, CLOUD-02, CLOUD-03, CLOUD-04, CLOUD-05, CLOUD-06, CLOUD-07, CLOUD-09 Plans: 8/11 plans executed Execution waves: Wave 0: 13-01 and 13-02 in parallel; Wave 1: 13-03 after 13-01; Wave 2: 13-04 after 13-01 and 13-03; Wave 3: 13-05 after 13-01, 13-03, and 13-04; Wave 4: 13-06 after 13-05; Wave 5: 13-07 and 13-08 in parallel (13-07 after 13-02, 13-04, and 13-06; 13-08 after 13-03, 13-04, and 13-06); Wave 6: 13-09 after 13-08; Wave 7: 13-10 after 13-02, 13-04, 13-07, and 13-09; Wave 8: 13-11 after 13-03 through 13-10.
Plans:
- 13-01-PLAN.md — Create red backend and provider-contract suites for reconnect, content, mutations, and audit secrecy.
- 13-02-PLAN.md — Create red frontend/store suites for queue, preview, health UX, broader Drive consent, and no-probe-on-navigation.
- 13-03-PLAN.md — Build the mutable cloud contract and orchestration seam without breaking centralized reconciliation.
- 13-04-PLAN.md — Implement connection-ID reconnect, explicit health test, broader Drive scope handling, and authorized content routes.
- 13-05-PLAN.md — Implement backend upload provider mechanics, typed route results, and refreshed-credential handoff.
- 13-06-PLAN.md — Complete upload reconcile, freshness, and metadata-only audit follow-through before frontend queue wiring.
- 13-07-PLAN.md — Wire the shared browser queue and binary-only preview or download fallback through thin cloud view handlers.
- 13-08-PLAN.md — Implement backend create-folder and rename semantics with collision, stale, and stable-identity safeguards.
- 13-09-PLAN.md — Implement backend move and delete semantics with same-connection, disclosure, security, and audit safeguards.
- 13-10-PLAN.md — Finish shared-browser mutation UX, store-backed health behavior, reconnect copy, and the no-probe invariant.
- 13-11-PLAN.md — Run closeout-only docs, versions, full gates, explicit secret scan, and ship-readiness checks.
Success Criteria:
- Users can connect, test, reconnect, and disconnect providers while seeing current health and actionable reauthentication/error states.
- Users can open or preview supported cloud documents and upload files into the current cloud folder through authorized DocuVault endpoints.
- Users can create folders, rename items, move items within one connection, and delete items after confirmation wherever the provider supports each action.
- Successful mutations immediately invalidate affected listings/index entries, refresh the shared browser, and write metadata-only audit events.
- Provider-specific tests verify operation semantics, conflict/error responses, token refresh persistence, SSRF protection, and explicit unsupported capabilities.
Phase 14: Selective Analysis and Byte Cache
Goal: Users can analyze individual files, selected scopes, or whole connections through observable and controllable background jobs, while file bytes are hydrated only on demand and evicted safely.
Depends on: Phase 13 Requirements: ANALYZE-01, ANALYZE-02, ANALYZE-03, ANALYZE-04, ANALYZE-05, ANALYZE-06, ANALYZE-07, CACHE-03, CACHE-04, CACHE-05
Success Criteria:
- Users can analyze one file, a multi-selection, a folder tree, or a whole connection after reviewing recursive file-count and byte-size estimates.
- The UI exposes aggregate and per-item queued, downloading, extracting, classifying, indexed, cancelled, and failed states with retry and queued-work cancellation.
- Analysis jobs are idempotent by cloud item and provider version/etag, and they never mutate the provider-owned file.
- Cloud bytes are cached only for active opening, preview, or analysis work and are evicted by configurable limits without interrupting pinned active jobs.
- Cache ownership, cache-key versioning, cancellation, duplicate-job, failure-retry, and eviction behavior have dedicated tests.
Phase 15: Unified Smart Search
Goal: One search experience finds local and analyzed cloud documents by keywords, sentences, or semantic ideas and opens cloud results through on-demand hydration.
Depends on: Phase 14 Requirements: SEARCH-01, SEARCH-02, SEARCH-03, SEARCH-04, SEARCH-05, SEARCH-06, SEARCH-07
Success Criteria:
- A single query returns authorized local and analyzed cloud results ranked through full-text and semantic relevance.
- Keyword and sentence searches match persisted extracted text, while idea searches use persisted embeddings or equivalent semantic indexes.
- Results clearly show source, provider, cloud location, topics, and current analysis/stale status and can be filtered by those fields.
- Search execution performs no provider file download; only opening or previewing a result may hydrate bytes.
- Search isolation, ranking, filtering, stale-result handling, and no-download-on-query invariants have automated coverage.
Phase 16: Change Tracking and Reliability
Goal: DocuVault remains accurate when users or other applications modify connected cloud storage outside DocuVault.
Depends on: Phase 15 Requirements: SYNC-02, SYNC-03, SYNC-04
Success Criteria:
- Provider delta feeds or bounded metadata refreshes detect changed versions and mark previously analyzed items stale until reanalysis.
- Items deleted outside DocuVault disappear from navigation and are excluded from search without deleting unrelated user data.
- Refresh jobs are idempotent, cursor-aware where supported, rate-limited, and retry transient failures with bounded exponential backoff.
- Users can see refresh/stale/error state and deliberately reanalyze changed items.
- End-to-end UAT verifies cloud-as-local operations, selective analysis, cache offload, unified smart search, and external-change recovery across supported provider classes.
Coverage
- v0.3 requirements: 36
- Mapped to phases: 36
- Unmapped: 0
- Duplicate mappings: 0
Roadmap proposed: 2026-06-17