kcode-kweb-context 0.1.0

Typed Kweb node context and Chatend box projection policy
Documentation
# 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.