set_human_gate
Freeze a task for human input by recording the question, who must answer, and the default action if no one responds. Requires justification and refuses when no human is needed.
Instructions
Arm the human gate on a task: freeze it and record WHO is waiting, WHAT was asked, and WHAT you will do if nobody answers. Use INSTEAD of writing a '❓ Blocking @' comment by hand — the marker still works, but this path records the whole ask on the task, so nothing has to re-read the thread. recommended_default is REQUIRED: a gate with no stated default can only ever be resolved by finding a human. You must answer four questions (credential_exists / reversible / blocked_by_other_task / customer_visible_now), each with one line of justification. The server REFUSES the arm when your own answers say nobody needs to be asked: if you hold the credential, the action is reversible, and nothing a customer sees or pays changes right now, capture a rollback anchor and just do it. If the blocker is another card, the server tells you to use add_dependency instead.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| class | No | 'hard' (default, never auto-released) or 'soft' (released by timeout — the release does NOT answer the question). | |
| reason | Yes | The question itself, in your own words. | |
| task_id | Yes | Task ID to gate. | |
| deadline | No | RFC3339 timestamp when recommended_default applies. Omit for no deadline. | |
| copy_tier | No | Only when this ask is about VISIBLE PRODUCT COPY (a label, a page's prose, a message users read) — otherwise omit entirely. Answer three questions: (1) is this the company's voice going OUT, or a caption inside the interface? (2) would someone who never opened this screen notice the change? (3) does the text carry a promise — legal, price, product? Any "yes" → tier "A" (external/legal/marketing copy, a promise) and the workspace owner decides. All "no" → tier "B" (a field caption, menu item, system or validation message, section name, an existing dictionary string) and the product lead ships it without asking — the workspace owner sees it after the fact. The server refuses tier "B" outright: ship it yourself, tag the task `copy:b`, quote the exact string in your closing comment. Omitting copy_tier on an ask that reads as copy-approval is refused too, naming this field — state the tier and retry. | |
| reversible | Yes | Is there a rollback anchor — git revert, backup, snapshot, image tag? If you can MANUFACTURE one (take a backup first), the answer is true. | |
| blocked_reason | Yes | One line: which card, or why none. | |
| customer_reason | Yes | One line: what the customer would see, or why nothing changes for them now. | |
| credential_exists | Yes | Do you ALREADY hold the credential or access this needs? Check your team's credential store before answering false — a service account your team created for its agents is yours to use. | |
| credential_reason | Yes | One line: which credential, and where you checked. | |
| reversible_reason | Yes | One line: the exact rollback path, or why none exists. | |
| recommended_default | Yes | What you will do if nobody answers. Required — an ask with no default cannot time out. | |
| customer_visible_now | Yes | Does this change what a customer SEES or PAYS right now? A disabled gateway, an inactive flag or a reversible migration is NOT customer-visible; a rate that prints on invoices people already download is. | |
| blocked_by_other_task | Yes | Is the thing you are waiting on actually ANOTHER card? If yes, the answer is add_dependency, not a gate — a blocks edge freezes the feed without adding anything to a human's queue. |