Handles
A noggin handle is the object every consumer holds and drives. Two interfaces make it up:
Noggin— the primary surface. Accessors (items,active,roots,findByKey,pathOf,resolvePath,tryResolvePath,childrenOf), bound verb methods (push,add,move, ...), lifecycle (dispose), events (onDidChange,onDidError), pluslocation,readOnly, anddescribe(). This is what UI code, tests, and RPC-remoted callers work with.
NogginStore— extendsNogginwith the atomicapply(ops)primitive. Every in-process provider satisfies this;RemoteNoggin(from@noggin/rpc) does not, becauseapplyrequires locally-constructed ops against current state which the wire protocol doesn't model. Theverbs.*(noggin, opts)free functions consumeNogginStore; UI code and RPC-consuming gestures take the widerNoggin.
Both are ES-module interfaces — no runtime shape. Providers implement them, bindNogginVerbs attaches the method set, and the handle is what openNoggin returns.