[Fix] Next Slack question disappears when prompt delivery fails - #2447
[Fix] Next Slack question disappears when prompt delivery fails#2447roomote-roomote[bot] wants to merge 6 commits into
Conversation
|
No new code issues found. See task
Reviewed 3126f88 |
|
Updated in |
|
Fixed in |
What changed
Slack multi-question prompts now recover automatically when the first attempt to post the next question fails after answer state has advanced. Button selections and typed replies share the same delivery lifecycle, which makes two bounded attempts with the same stable message identity and preserves idempotency when Slack accepted an ambiguous first request.
The answered prompt is retired only after a next-prompt post returns a timestamp. If both automatic attempts fail, the saved answer and old controls remain intact, and Slack shows a concise delivery failure without asking the user to repeat the answer.
Why this change was made
The Redis transition completes before Slack delivery. Previously, typed replies independently retired the old prompt before making one unchecked post. A transient or ambiguous failure in either input path should not hide the current prompt, turn internal ordering into a manual retry workflow, or advance the question twice.
The recovery path deliberately preserves the advanced state rather than rolling it back, because a transport failure can occur after Slack accepted the post.
Impact
Users normally proceed to the next question without intervention after a transient delivery failure, whether they click an option or type a reply. Exhausted delivery remains safe and visible: state advances exactly once, old controls stay available as a fallback, and stale or different answers cannot mutate hidden state.
The branch now includes current
developand passes the root Type Check that previously failed because automation search omitted the required scheduling timezone. The same correction also lets the web production build complete, covering the failing stage inside the app Docker build. The Slack package suite, repository lint, knip, and pre-push checks pass; no database schema or external protocol changed.