bluecollar

Actions

The four ways a model can end a step.

actioneffect
continuecall one tool with its input
replyspeak; final makes it the last word, expectsAnswer pauses on a question, choices offers buttons, attachments delivers files
failreport a blocker; message is the reply the requester reads
delegatehand a self-contained piece to a child turn, only when TurnOptions.DelegationLimit is set

Actions are native tool calls, one function per action, with parallel calls enabled and tool_choice left unset on the first sample of each step. Assistant text that ends with finish_reason: stop is a proposed final reply and goes through the same gate. A malformed action comes back as a typed validation issue naming the field, and the step is asked again, at most twice. finish, ask_input, file_deliver, request_tools and plan_update are retired from the model's vocabulary, and loop/model_facing_vocabulary_test.go fails if any of them reaches a prompt.

A reply with attachments invokes file_deliver and a reply with expectsAnswer invokes ask_input, so both leave a tool observation the completion gate can read. A question pauses the task in waiting_user_input through the host's ask_input, and the answer rebuilds the turn from the ledger and its checkpoint, so a restart in between loses no work.

A delegated child runs with the same identity and tool set, its own outcome contract and completion gate, and no delegation of its own. The host still executes every call, so a child reaches nothing its parent could not.