rooster

Record Issue Intake Attempt Failed

tools/rooster_worker/worker.py calls this after a Goose turn on a bug-intake conversation produces no reply -- a timeout, a non-zero goose run exit, a missing goose binary, or a clean exit that left the conversation still on GET /issues/intake/pending. NEVER called on a successful turn.

The durable, cross-restart half of the harness fix for a live production incident: WorkerState, the worker's own in-memory tracking, dies every time the rooster service redeploys. See issues_intake.record_intake_attempt_failed (the write -- past MAX_INTAKE_ATTEMPTS it tells the reporter honestly over Slack and files or bumps a REAL, self-diagnosed bug through the same pipeline that already fixes a customer's report unaided, never removing the conversation from issues_intake.pending_for_rooster) for the full contract.

principal -- the calling agent's own authenticated identity ("Rooster Pipeline" for the real worker) -- is passed through as filer_principal_id: a self-filed defect is authored by the system that diagnosed it, never by the reporter whose bug report merely happened to trip it.

Gated on the SAME DIRECTION_WRITE grant as every other agent-facing intake route -- recording that a turn was attempted is part of the same capability as taking one.

post/api/rooster/issues/intake/{conversation_id}/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/issues/intake/{conversation_id}/attempt-failed
  • Auth: none declared

Path parameters

conversation_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.