Surface / Surface and Bundle

Who owns what

SurfaceBundle (placed)
StateOwned elsewhere; the Surface reads itOwned by the parent Model at the Link's path
TransitionsNone. A Surface has no update, no private Model, no Message wrappingThe child's update, compiled to Foldkit's own child fold
MessagesAn allowlist of constructible union variantsWrapped variants of the parent union, routed to the slice by wrapper
Runtime behaviorNone — pure contractNone added — compiles to existing lifts, no store/reducer/runtime of its own
May read across SubmodelsYes; that is the pointNo; a placement renders and folds its own slice

The shorthand from the Surface README still holds:

Optic       = structural focus
Surface     = observation + capability contract
Submodel    = state-machine ownership boundary

A Bundle is the packaging of the third line: a Submodel written once and placed through a Link.