Source records
its origin and processing state; a Doc carries a searchable text projection;
immutable DocRevision records preserve the text that evidence cites.
DocNode records provide structure and retrieval units within a revision.
For a project note, those layers mean: its origin, its current rendered text,
the exact text an extraction saw, and the chunks a search can return.
Four records, four responsibilities
The document convenience APIs create a manual source for you. They enter the
same source-first pipeline. The optional source link in the record type also
supports older data; it does not define a second preferred ingest lifecycle.
Choose processing depth
A requested mode and a completed mode are different. Source triage, readiness,
and configured budgets can affect the accepted decision. Read
latest_ingest_decision, current_ingest_mode, and lifecycle_status rather
than inferring completion from the request you sent.
The lifecycle records discovered, triaged, metadata_ready,
retrieval_ready, and graph_ready, with skipped and rejected outcomes.
Embedding and downstream maintenance run asynchronously. A source reaching a
lifecycle milestone does not guarantee every derived view has already refreshed.
Rendering and revisions
Rendering normalizes the input into canonical text. A revision records the renderer name, version, and configuration hash together withtext_hash.
Re-rendering creates a new revision and can supersede the old one.
An assertion’s offsets belong to its cited revision, even after the document’s
current text changes. This is what allows old claims to retain verifiable
provenance. Use revision text for evidence and the document’s current text
for current search behavior.
Images and video
Media attachments remain attached to source/document lineage. The revision’s render manifest maps rendered text spans back to attachments and time ranges. The parent document’s attachment list is ingest inventory; the revision manifest is the authority for the provenance of a particular extraction.Doc.text is the canonical searchable projection for text and media-backed
documents. Caller-provided sidecar_text and attachment metadata supplement
that projection. Applications should not build a second competing search
index over an incidental attachment field.
Nodes and collections
Nodes can represent documents, sections, paragraphs, spans, chunks, summaries, lists, tables, and table cells. Theirspan.start and span.end are byte
offsets into revision text. A generated summary can have its own text field.
Chunk nodes are the usual embedding and retrieval unit. Their
embedding_model and collection fields record indexing context. Documents
can use metadata.collection for logical groupings such as project-notes
or research.
A collection helps select content within a space. It is not an authorization
boundary: security is evaluated separately.
Interpret ingestion results
A source or document ID acknowledges a stored intake record. Follow the work queue and document pipeline status to see what completed, failed, or remains queued.
Idempotency also operates at several levels. Sources use content and origin
information; documents have
rendition_key; extraction promotion uses
assertion keys. Reusing an ID or key does not mean that arbitrary changed
content will be interpreted as the same immutable evidence.
Next steps
- Ingesting data provides runnable workflows.
- Document API and source API define exact payloads.
- Assertions explains how claims cite revisions.
- Extraction covers skills and the artifact commit boundary.
