OptionalbulkSet when a match arrived through a holder's bulk slot (the
:b transform or material-keyword resolution). The matched
Stuff is the holder; affordance tells the controller which
slot (interior vessel vs surface puddle).
OptionaldetailDetail name path for matches that arrived through a host's
Detailed-mixin descriptors. Single-element for top-level
details, longer for nested navigation (here:bookcase:book
lands detailPath: ['bookcase', 'book'] on the room match).
OptionalexitExit reference for matches that arrived through a Location's exits (direction or alias). The matched Stuff is the location; the exit gives access to direction, destination, door, etc.
Sub-feature attribution. Tells callers which path produced the match, so a controller (e.g., GoController) can act on the discovery (traverse the Exit, drill into the Detail) without re-discovering it.
The base shape is intentionally empty; subsystems augment via
declare module '../api/mql/types' { interface MqlMatchVia { … } }:lib/description/Detailed.tsaddsdetailPath?: string[].lib/spatial/Exit.tsaddsexit?: Exit.When matches arrive via mixed paths (e.g., one detail, one exit), the resolver returns
via: undefinedper the consistency rule.