Files: Timeline and Folders
Files at/uploads keeps one server-owned identity for each upload and presents it in two ways.
- Timeline is newest-first storage history across uploads.
- Folders shows server-owned folder placement and keeps truly unfiled uploads visible at the root.

The credential-free demo omits the Timeline response. The current UI names that failure and refuses to call the inventory empty.
What this surface refuses
Files does not call an upload classified before the classifier answered, hide unfiled uploads from the Folders root, equate storage with ingestion, or accept Drive state as authoritative over the GreatBook upload record. The Drive publisher refuses unsafe role layouts, unexpected parents, hash disagreement, and ambiguous or missing mirror identity rather than overwriting around them.When the answer is unknown
Missing classification is shown as not classified. Missing placement is shown as unfiled. Mirror reconciliation reports one ofmatched, local_only, remote_only, content_mismatch, moved, ambiguous, or unreadable; an unscanned mirror remains not_scanned.
If either view cannot be read, the page shows an unavailable state instead of an empty inventory.
Both views use server-derived totals, deterministic ordering, has_more, and next_offset; the browser does not synthesize a continuation from the number of rows it received.
Verified at source
langgraph_chat/devcenter/uploads_api.pydefines Timeline, Folders, root placement, pagination, and server-derived upload identity.langgraph_chat/uploads/drive_mirror.py,gdrive_client.py, anddrive_types.pydefine the governed Drive publish/reconcile boundary shipped in backend PR #96.- The GreatBook web repository’s
src/lib/uploads.tsandsrc/app/uploads/page.tsxpreserve unreadable and unreported fields instead of coercing them to empty values. src/lib/multimodal-utils.tsis the current browser attachment boundary; it preserves the Files id and storage path but not the backend’s upload-authority token.