# Public API
Reexports `kcode_k1_kmap_format::{Node, NodeId}` and defines `PREVIEW_COST` (0.3), `NARRATIVE_COST` (1.0), `OpenMode::{Full, NavigationOnly}`, `LoadedNode`, and `OpenResult`.
`open_node(node_id, budget, temperature, mode, load_node, candidate_filter)` is synchronous.
The filter receives source-ordered batches of unresolved target IDs and returns `Result<Vec<NodeId>, String>` containing the allowed subset.
Returned IDs must be unique and requested; omissions deny, empty batches are skipped, decisions are cached, and errors retain the callback's complete message.
The root is caller-authorized. Denied targets are removed before reads, costs, scoring, and RNG.
Visible duplicate paths remain separate weighted tickets carrying cumulative path strength.
The root inherits 1.0, and each child occurrence's strength is its edge weight times its parent's inherited strength; only finite-positive tickets are eligible.
`Full` returns the root narrative and uses free root Navigation previews plus two-hit preview/narrative loading, propagating the selected ticket's strength when a preview is opened.
`NavigationOnly` returns no narratives and atomically loads selected nodes with visible unseen Navigation children, which inherit their incoming-edge strengths; its first unaffordable bundle stops without resampling.
Budget and temperature must be finite and nonnegative.
Missing visible nodes, callback/entropy failures, malformed filter results, and arithmetic overflow return errors.
Caller-owned reads, filtering, and entropy mean there is no finite wall-clock bound.