pub struct Node {
pub id: String,
pub kind: Kind,
pub partition: Option<String>,
pub subkind: Option<String>,
pub title: String,
pub summary: String,
pub aliases: Vec<String>,
pub tags: Vec<String>,
pub query_examples: Vec<String>,
pub source_files: Vec<String>,
pub span: Option<Span>,
}Expand description
A graph node. Optional fields default so partial/external JSON never panics.
Fields§
§id: String§kind: Kind§partition: Option<String>Generated provenance: the EKF partition that produced this node. Authored files do not set this; the source registry stamps it from the package manifest.
subkind: Option<String>Open domain refinement of kind — the frontmatter type/kind string (lowercased), e.g.
“skill”, “agent”, “mcp”, or a user’s own (“forecast”). None for a plain doc / code symbol.
Drives domain filtering (subkind scope) + display; never structural. See the type-system spec.
title: String§summary: String§aliases: Vec<String>NAMES — strong BM25F identity boost. These are alternative identifiers (synonyms,
acronyms, common misspellings). They feed exact/partial alias matching (+70/+25) and
the identity anchor (confidence-carrying). Do NOT put categories here — use tags.
CATEGORIES — weak boost. These are topical tags (e.g. “baking”, “rust”, “devops”). They contribute to the haystack (term coverage for matching) but NOT to identity anchor or alias exact/partial matching. A tag match is [weak], not [strong].
query_examples: Vec<String>Query-side phrases that should route here: author-declared examples plus generated Aun body/heading search surfaces. Their vocabulary enriches retrieval matching (the deterministic synonym/intent bridge) but they are NOT identifiers — they never feed alias exact/partial matching or the mentions index.
source_files: Vec<String>§span: Option<Span>Glyph only: the source span this node occupies. None for doc nodes (whole-file units).