10b7ab5cb6
Cross-surface coverage #23768 missed (per review feedback): - tools/clarify_gateway.py: _ClarifyEntry carries a multi_select flag (register() accepts it; signature() exposes it to adapters). _coerce_text_response now parses multi-select replies — comma- or space-separated numbers ('1,3' / '1 3'), exact labels, dedup — into a JSON array string that _parse_multi_select_response decodes into a list. Out-of-range/unknown tokens reject the reply (native button UI) or fall back to custom text (awaiting_text/'Other' mode). - gateway/run.py: _clarify_callback_sync accepts multi_select and registers it on the pending entry. - gateway/platforms/base.py: default numbered-list text fallback tells the user multiple selections are allowed and how to reply. - tui_gateway/server.py: clarify_callback passes multi_select through the clarify.request payload as a hint; renderers without checkbox support ignore the field and remain single-select-compatible. - tests: 13 new gateway tests (flag storage, comma/space/single-number parsing, label matching, out-of-range rejection, dedup, end-to-end resolve, single-select regressions).