Sense-strip augmenter — drops <sense channel="X">…</sense>
regions and <detail sense="X"> wrappings whose channel isn't in
filter ∩ sensorium. See Mml.stripBySense for the exact strip
rules per tag.
filter comes from the per-call AugmentOpts (the four
single-sense verbs pass [channel]; look passes
['vision']; sense passes the viewer's full sensorium).
Default-absent → fall back to the viewer's full sensorium.
sensorium comes from PerceptionApi.sensorium(viewer)
mapped down to its SenseChannel-typed organ-key subset
— viewer → Organism → Species → BodyPlan → getModalities()
PLUS contributions from active-mixin _grantsModalities
(Phase 6). A viewer without that chain has [] as their
sensorium, so every <sense> region strips and only
untagged prose survives (the right behavior for test
fixtures and the dark-room AC).
Untagged prose is always preserved (the rule lives in
Mml.stripBySense — text nodes outside <sense>/<detail> are
never touched). Exported separately from the mixin class so the
function is easy to identify by name in stack traces, mirroring
the wrapDetailKeysAugmenter pattern in Detailed.ts.
Sense-strip augmenter — drops
<sense channel="X">…</sense>regions and<detail sense="X">wrappings whose channel isn't infilter ∩ sensorium. SeeMml.stripBySensefor the exact strip rules per tag.filtercomes from the per-callAugmentOpts(the four single-sense verbs pass[channel];lookpasses['vision'];sensepasses the viewer's full sensorium). Default-absent → fall back to the viewer's full sensorium.sensoriumcomes fromPerceptionApi.sensorium(viewer)mapped down to itsSenseChannel-typed organ-key subset — viewer → Organism → Species → BodyPlan →getModalities()PLUS contributions from active-mixin_grantsModalities(Phase 6). A viewer without that chain has[]as their sensorium, so every<sense>region strips and only untagged prose survives (the right behavior for test fixtures and the dark-room AC).Untagged prose is always preserved (the rule lives in
Mml.stripBySense— text nodes outside<sense>/<detail>are never touched). Exported separately from the mixin class so the function is easy to identify by name in stack traces, mirroring thewrapDetailKeysAugmenterpattern inDetailed.ts.