6a22abe5ba
`_clarify_callback_sync` decided "no answer arrived" by testing whether the response text starts with '[' (the shape of the timeout / undeliverable sentinels). A real answer can start with '[' too — a "[A] staging" choice label picked by number, or "[urgent] ..." free text after Other — so the clarify resolved and the agent got the answer, yet the Slack card was rewritten to "This prompt expired" and typing was never re-armed. `_clarify_send_then_wait` now returns `(response, answered)` and the runner branches on that flag only. The Slack click handler popped the retire entry as soon as Other was clicked, but Other is not terminal: the clarify stays pending for typed text, so a later timeout or /new reset found nothing to retire and the card stayed stuck on "Awaiting typed answer". The entry is now popped only on a terminal outcome (a choice click, or Other on an already-dead entry). A typed answer to a native card (numeric pick, or text after Other) never reaches the click handler, so the card kept its buttons forever; the TEXT_RESOLVED intercept now retires it with the answer. Review finding: '[' prefix mistaken for the timeout sentinel; Other click dropped the retire entry; typed answers never rewrote the card.