Files
kite/.planning/phases/14.1-cloud-local-file-parity-hardening/14.1-DISCUSSION-LOG.md
T

7.0 KiB

Phase 14.1: cloud-local-file-parity-hardening - 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-26 Phase: 14.1-cloud-local-file-parity-hardening Areas discussed: Open/view/download parity, Analyzed metadata display, Retry/reanalyze states, Unsupported/provider-limited actions, Parity tests


Open/view/download parity

Question Options Considered User's Choice
How should cloud file open/view behave when a cloud file has been analyzed? Route to a document-like detail view; keep direct open/download; hybrid explicit View analysis; other Route to a document-like detail view backed by CloudItem, not a local Document import.
What should happen for a cloud file that has not been analyzed yet? Open/preview first with analyze prompt; always show detail view; split by file type; other Always show the detail view; if not analyzed, offer Analyze. After analysis, fill the view with extracted text/topics/status. Rename Re-classify to Re-analyze everywhere.
For preview and download from that cloud detail view, how should the controls behave? Mirror local detail controls; keep separate cloud labels; preview embedded/download secondary; other Mirror local detail controls and placement, using authorized cloud preview/download handlers.
How should the app distinguish cloud files from local files on the detail view? Subtle source metadata; strong cloud banner; breadcrumbs only; other Use subtle provider/location/status metadata.

Notes: User wants the cloud detail view to be the main file-open target even before analysis, not just a post-analysis route.


Analyzed metadata display

Question Options Considered User's Choice
What should the cloud detail view show once analysis has completed? Same sections as local documents; compact summary first; cloud-specific panel; other Same sections as local documents.
How should analyzed cloud files appear in StorageBrowser.vue rows/cards? Match local rows/cards where data exists; status badge only; separate cloud indicators; other Match local rows/cards where equivalent data exists.
How should stale cloud analysis be presented when provider version/etag changed? Show stale state with Re-analyze; hide stale analysis; treat stale as failed; other Keep prior extracted text/topics visible, mark stale, and offer Re-analyze.
If cloud analysis partially succeeds, what should the UI show? Show available data with targeted retry; failed state only; queue-only failure; other Show available partial data and mark failed classification/topics with targeted retry/Re-analyze.

Notes: Prior data should remain useful even when stale or partially failed.


Retry/reanalyze states

Question Options Considered User's Choice
Where should the Re-analyze action appear? Same places local re-analysis appears plus cloud detail; detail only; queue only; other Same local/cloud detail and row action locations when analysis exists or is stale/failed.
What should Re-analyze do for an already-current analyzed cloud file? Force fresh analysis after confirmation; keep idempotent skip; only reclassify existing text; other Force fresh extraction/classification after confirmation.
How should failed analysis retries behave from detail view or row/card? Retry as part of existing job model; always create new job; queue only; other Use existing job retry semantics where possible; create a single-item retry job when no active job exists.
How should local document wording change alongside cloud parity? Rename only action label; rename action and internal API/code; cloud only; other Rename visible Re-classify copy to Re-analyze everywhere while preserving existing behavior/API unless planning requires internal rename.

Notes: The label change applies globally to visible UI copy.


Unsupported/provider-limited actions

Question Options Considered User's Choice
How should unsupported cloud preview/download/analyze cases appear in shared UI? Shared disabled/typed state; hide unavailable actions; cloud warning panel; other Same shared action positions, disabled or typed with backend-provided reasons.
When cloud format cannot be previewed but can be downloaded, what should happen? Show preview unavailable and keep Download active; auto-download fallback; hide Preview; other Show preview unavailable and keep authorized Download active.
If a provider cannot supply reliable version/etag metadata, how should states behave? Use fallback fingerprint and label uncertainty subtly; always require manual Re-analyze; hide freshness; other Use fallback fingerprint; surface uncertainty only when it affects a user action.
If analysis is unsupported for a file type, where should that be shown? Everywhere Analyze would appear; detail only; queue/estimate only; other Everywhere the Analyze action would appear, disabled with the same reason text.

Notes: Unsupported preview must not trigger an automatic download from Preview.


Parity tests

Question Options Considered User's Choice
What should be the core frontend parity test shape? Paired local/cloud assertions; cloud-only regression tests; E2E browser flow only; other Paired local/cloud assertions in shared components and detail surfaces.
Which backend security/cache invariants must be explicit? All cache/auth boundaries; only new detail endpoints; reuse Phase 14 coverage; other Cover no provider URL/credentials/object_key leakage, owner/admin negatives, cache hydration, forced Re-analyze path, and no provider mutation.
Should tests require a new cloud-file detail route? Yes, route-level parity; component parity only; no route tests; other Yes, route-level parity from browser row to cloud detail route.
How broad should live/provider-style coverage be? Mocked provider contracts plus existing opt-in live pattern; live tests for every provider; frontend-only provider coverage; other Mocked providers for deterministic tests and preserve opt-in live tests only where existing patterns support them.

Notes: The test contract should force local/cloud parity rather than allowing a cloud-only UI fork.


Codex's Discretion

  • Choose exact route naming/path, shared detail component shape, source metadata presentation, and internal naming changes where necessary.
  • Keep local/cloud parity and provider ownership boundaries as the deciding constraints.

Deferred Ideas

  • Unified smart search remains Phase 15.
  • Provider change tracking and broader sync reliability remain Phase 16.
  • Permanent local import/pinning remains future IMPORT-01.
  • Live parity testing for every provider is out of scope.