# Scenario B: bot message after handoff clears waiting_since → auto-resolution without a human reply Observed live on 2026-10-24 (UTC) on Chatwoot 4.19.0. Settings during the window: account auto-resolve 10 minutes, ignore-waiting = true, auto-resolve message blank, inbox CSAT off. Original settings (all null, CSAT off) were restored afterwards and verified by GET (`99-settings-restored.json`, `matches_original: true`). Scheduler: `trigger_conversations_resolution_job`, cron `*/5 * * * *` (defaults; AUTO_RESOLVE_CRON unset on the host), per v4.19.0 `config/schedule.yml`. | Run | Conv | What happened | Result at collect (~20 min after last activity) | |---|---|---|---| | broken (`late_bot_message` fault run) | 15 | correct handoff (waiting_since set), then one deliberate public bot message → waiting_since null; no human reply (`first_reply_created_at` null) | **resolved** at 13:00:18 UTC, activity message "marked resolved by system due to 10 minutes of inactivity" | | fixed (default correct handoff, no late message) | 16 | waiting_since stays set (1792846222), no human reply | **still open**, waiting_since set, 20.7 min after last activity | | positive control | 17 | correct handoff, then a *scripted agent-user reply* (posted with the agent user's API token, not a human) → waiting_since cleared, first reply recorded | resolved at 13:05:39 UTC (inactivity rule applies once a reply exists) | Notes - The three conversations were created within ~2 minutes of each other (last activity 12:49:50 / 12:50:23 / 12:50:46), so they shared the same window and the same settings. Collection ran at 13:11 UTC, 20 minutes after the last activity, so `collected_before_window_end` is false. - Conversation 15 resolved at the 13:00 scheduler tick (about 10 min after its activity); 17 resolved at the 13:05 tick. This is consistent with the 5-minute cron plus the 10-minute threshold; single run each, not a timing benchmark. - The "human" replies in this lab are scripted agent-user API posts; no human responded. - Enabling auto-resolve is account-wide. Leftover conversations from earlier runs were left untouched; see `leftover-open-before-B.json` and `timeline.json` for which were open before the window. - Files: per-run `T0-*` (right after handoff), `T1-*` (collect), `01-state-trace.json`, operator-page rows, dashboard screenshots `T1-dashboard-team-scheduling-{open,resolved}.png`. - Not tested: repeats/variance, other resolve thresholds, interaction with business hours, human (non-scripted) replies.