A graph traversal: start, hop spec, optional node and edge filters, and what
to return. Reuses the query Filter predicate language, so there is one
filter grammar across query and graph.
A graph node’s identity. Content-addressed (the hash of the node’s label
and canonical value), so the same entity extracted from different messages
converges on one node. Minted SDK- or projector-side.
Where a graph element was last observed: the source record an extraction came
from, so a reader can navigate back to its origin. On an edge this is the
record that asserted the relationship (the meaningful provenance, kept
last-writer since the edge is rewritten on each observation to maintain its
validity window). On a node it is the first record the entity was seen in
(first-writer, so a re-observed node’s stored bytes stay stable). Excluded
from the content-addressed id, so it never affects identity or idempotent
upsert. The complete history is the source log, which the projector can
replay. Absent on the wire when unknown.
The canonical graph-name rule, shared by the SDK client edge and the
serving plane: non-empty, at most MAX_GRAPH_NAME_BYTES bytes, no ASCII
control characters.