Inverse lookup convenience: "what host am I currently in a slot of?" Returns the single host or null. Throws if the Slottable is in slots on multiple hosts simultaneously (which only matters for Wearable's multi-claim case — a gauntlet on each hand of the same wearer is one host; cross-host is the violation).
OptionalonOptional witness fired by Slotted.vacate(slot, candidate) and
Slotted.vacateSole(slot) immediately after the candidate is
removed from the host's occupant set. Synchronous, in the same
transaction as the vacate. v1's Mobile.onSlotReleased clears
engagedMode for passthrough modes (ride / drive) so a
dismounting rider's engagement clears automatically. Future
witnesses (polymorph revert, status-clear, etc.) compose on the
same shape.
Public shape provided by SlottableMixin.
fitsSlotis the candidate-side per-slot acceptance test consulted bySlotted.canOccupyafter the slot-side mixin check passes. Bare Slottables (avatars sitting in chairs, riders mounting horses) default to "always fits" —WearableMixinandWieldableMixinoverride it to consult their per-body-plan claim records.Hoisted here (rather than living on a separate
SlotFittableoptional shape) socanOccupyis a virtual call against a known method, not a runtime "does this Stuff happen to have a fitsSlot field" duck-type check.