loc,json,skill: hoist Context out of Error, make Path.step extensible
Loc.Error.Context moves to top-level Loc.Context: the noun that cursors,
stream callbacks, and errors all speak is position-in-document, not
error-specific. Errors are one consumer of Context, alongside Cursor
and Stream.
Path.index becomes an extensible Path.step (Mem of string node | Nth of
int node baseline); formats add native addressing (Attribute,
Namespaced, Cbor_key, Field_number) via extension + register_step_printer.
Path.rev_indices -> Path.rev_steps; add Path.last, Path.to_list.
Error.t exposed as a record {ctx; meta; kind} so pattern matches
remain clean. Error.v/msg/raise take ~ctx ~meta labelled args.
JSON consumer: Json.Error.Context dropped; Json.Context aliases
Loc.Context. Query step fallback projects unknown steps to Mem via
Path.pp_step so foreign paths degrade to no-op queries instead of
failing.
Skill: Foo.Stream.fold/iter take (Loc.Context.t -> ...) callback
(one primitive, no _mem/_nth variants); transform takes f:(Context.t
-> [Copy|Edit|Drop]). Layer 3 documents extensible Path.step with
per-format native step examples.