# API and behavior
`Node::from_kweb_value` converts a Kweb node response into a typed, validated
node. `Context` retains explicitly loaded nodes and their fixed connections.
Explicitly loaded nodes take precedence over the fixed role.
`Context::apply_load` accepts one fetched node plus the full nodes fetched for
its fixed connections. `Context::restore` reconstructs the same state from
stored nodes and the ordered IDs established by prior `LoadNode` invocations.
`Context::box_specs` accepts staged updates and creates and returns:
1. one `Loaded` full-node box per explicitly loaded node;
2. one `Fixed` full-node box per distinct fixed connection not already loaded;
3. one `Staged` full-node box per staged create; and
4. exactly one `Recent` box containing every recent connection from those
projected nodes, deduplicated by canonical or pending ID.
Loaded, fixed, and staged boxes share the same body formatter. They differ only
in `BoxKind` and therefore in their declared box name. There is no active-node
role or active-connection field.
The crate does not allocate Chatend box IDs, persist box revisions, fetch Kweb
data, or interpret tool history. Those remain caller responsibilities.