Nested child details (optional)
OptionalhearingHearing-channel description text.
OptionalsmellSmell-channel description text.
OptionaltasteTaste-channel description text.
OptionaltouchTouch-channel description text.
OptionalvisionSighted-channel description text.
Detail entry with hierarchical structure.
Aliases (multiple IDs for the same description, e.g.
['handle', 'doorknob']) are represented by multiple keys in the containing Map pointing to the sameDetailobject. To enumerate aliases for a given Detail, walk the parent Map and filter by identity — there is no per-Detail alias list.Per-sense slot map: each sense channel is an optional string. At least one slot must be populated when the Detail is created (the invariant lives on
setDetail). The legacydescriptionfield has been retired; legacy authoring ({ description: "X" }) still round-trips by populating thevisionslot at applier time.