rooster

Record Cs Draft Attempt Failed

tools/rooster_worker/worker.py calls this after a Goose turn on a CS-draft ticket produces no draft -- a timeout, a non-zero goose run exit, or a clean exit that left the ticket still on GET /cs/tickets/pending (he read it and correctly wrote nothing). NEVER called on a successful turn.

This is the durable, cross-restart half of the fix for a live production bug: the worker's own in-memory poison tracking (WorkerState) dies every time the rooster Railway service redeploys, so a ticket he cannot answer (e.g. marketing mail with no repliable text) sat permanently at the front of the oldest-first queue and re-cost three Goose runs on every restart before any real customer was reached. See agent_draft.record_draft_attempt_failed (the write) and agent_draft.tickets_awaiting_draft (the read this changes) for the full contract, in particular why no separate "un-decline" endpoint exists: a new inbound customer message re-arms the ticket on its own.

Gated on the SAME rooster:cs:draft grant as every other CS-drafting route -- recording that a turn was attempted is part of the same drafting capability, not a new one. This route can only ever suppress re-offering a ticket to Rooster; it has no power to mark a ticket spam or closed, which stays a human (Frederick) decision made elsewhere.

post/api/rooster/cs/tickets/{ticket_id}/draft-attempt-failed

Request

  • Base URL: https://api.pigeonly.com (the document declares no server; this is the origin it was published from)
  • URL: https://api.pigeonly.com/api/rooster/cs/tickets/{ticket_id}/draft-attempt-failed
  • Auth: none declared

Path parameters

ticket_idstring uuid required

Request body

reasonstring nullable
detailstring nullable

Response

Successful Response

object required

Changes

No recorded changes to this operation across all 1 revision of this API.