/record start: a refusal can be public, and a refused start leaves the session live #843

Closed
opened 2026-09-26 14:49:05 +00:00 by claude-bot · 0 comments
Collaborator

Follow-ups from #839's fix.

  1. A refusal can be public. record_start defers the interaction publicly (interaction.response.defer()). The first followup after a public defer inherits that visibility, so ephemeral=True on the refusal is likely ignored. The existing refusals share this: SESSION_NOT_FOUND and the backend's 409.
    • The fix: an ephemeral defer, plus a normal channel.send for the public announcement.
  2. A refused start leaves the session live (D116). On the Discord path the bot calls POST /api/bot/sessions/{id}/recording-started (D10, D123 and D116 check and flip) before it connects. If the join or the announcement then fails, the session stays in_progress with no recording. The web path is fine, because D116 applies there only after the bot's 200.
    • The fix: split the check from the flip, additively. Use a check-only call first, and flip after the announcement succeeds; or undo the flip on a refusal.

The bot contract must stay additive.

Refs #839, #731, #736.

Follow-ups from #839's fix. 1. **A refusal can be public.** `record_start` defers the interaction publicly (`interaction.response.defer()`). The first followup after a public defer inherits that visibility, so `ephemeral=True` on the refusal is likely ignored. The existing refusals share this: `SESSION_NOT_FOUND` and the backend's 409. - **The fix:** an ephemeral defer, plus a normal `channel.send` for the public announcement. 2. **A refused start leaves the session live (D116).** On the Discord path the bot calls `POST /api/bot/sessions/{id}/recording-started` (D10, D123 and D116 check and flip) before it connects. If the join or the announcement then fails, the session stays `in_progress` with no recording. The web path is fine, because D116 applies there only after the bot's 200. - **The fix:** split the check from the flip, additively. Use a check-only call first, and flip after the announcement succeeds; or undo the flip on a refusal. The bot contract must stay additive. Refs #839, #731, #736.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
rbrooks/Quest-Board#843
No description provided.