View
Abstract base for the canonical "shape over a class" primitive of the protocol. A View binds to a context class and declares an ordered output over the bound instance — a list of `projections` (named value cells) for a data View, or an ordered band surface for a visual subclass — plus optional boolean `where` filters. Not directly instantiable: authors instantiate a concrete subclass. Two families share this base: a DATA View (e.g. a query View materialized into an EphemeralPackage) projects values through `projections`; a VISUAL View (`look.View` and its ResourceView / PackageView / PublisherView / SemanticSvg subclasses) renders ordered `look.bands` instead — bands are the visual analog of projections. Both bind to a context class the same way (explicit `bind`, or supplied by a `derivation.look` attachment), share the same object-model path validation, and compute through the kanonak.org/transformations Expression vocabulary rather than a parallel one — a View is a use of `tx.Expression`, not a new function language.