# Public API
Reexports `kcode_k1_kmap_format::{Node, NodeId}` and defines `PREVIEW_COST` (0.3),
`NARRATIVE_COST` (1.0), `DEPTH_DECAY` (0.7), `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, and decisions are cached. 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 weighted tickets scored as `weight.value * 0.7^depth`. `Full` returns
the root narrative and uses free root Navigation previews plus two-hit preview/narrative loading.
`NavigationOnly` returns no narratives and atomically loads selected nodes with visible unseen
Navigation children; 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/depth overflow return errors. Caller-owned reads, filtering, and entropy mean
there is no finite wall-clock bound.