Stage a document and sync it
The repository shell above does not write documents/ or blobs/. They are the two root-level document folders in
every Project repository, alongside templates/. blobs/ holds one committed YAML pointer per document, and
documents/ holds the bytes, staged for upload or pulled down for reading; the root .gitignore keeps the whole of
documents/ out of Git. Neither is a second document store. Git keeps the pointer; Navigator keeps the bytes. Drop a
local file below documents/, list what a sync would do, then run it:
navigator project sync --dry-run
navigator project sync
navigator project gate
Against a staged documents/exhibits/exhibit-a.png, the dry run prints one line per staged file and a count, and
changes nothing:
would upload documents/exhibits/exhibit-a.png
1 upload planned
The real run derives the document slug from its path below documents/, uploads the bytes through Navigator's
authenticated API, and writes blobs/exhibits/exhibit-a.png.yaml only after the upload succeeds. The pointer records
kind, desired visibility, current revision metadata, and the previous asset id when the chain has one. It never
contains an object-storage coordinate or legal-document bytes; object storage and the assets revision chain remain
authoritative. Folder conventions infer filing for pleadings/, exhibit for exhibits/, and agreement for
agreements/; other paths use unclassified. Visibility defaults to internal.
The real run needs a stored login — navigator site login --host <host-or-url> — and a matter with that code visible to
the account. --dry-run needs neither. The root .gitignore ignores /documents/, but an ignore rule only keeps
untracked files out of a plain git add; the gate is the control. navigator project gate rejects every tracked file
below documents/, and every file below blobs/ that is not a *.yaml pointer:
./documents/exhibits/exhibit-a.png: error: `documents/` is Git-ignored: legal documents and raw document bytes must not be committed, and each document's `*.yaml` pointer belongs under `blobs/`