job_enqueue
Enqueue a validated job into the queue; intake reports every missing required field in one error, and host_choice='ask' leaves it unassigned.
Instructions
Enqueue a job (validated intake -> queued). The intake is the gate: every missing required field
comes back in one error with a field list. Set host_choice='ask' to queue unassigned.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | test | demo | final | |
| title | Yes | Human name (the HUD strip / banner label) | |
| branch | No | Branch under test | |
| commit | No | Commit sha under test | |
| origin | No | Who asked for this run: human | agent | driver | eval | probe | warmup (default agent). The learning loop reads the ledger by origin, so tag synthetic runs (driver/eval/probe/warmup) — an untagged repeat inflates a training artifact. | |
| reason | No | Why the run may exceed the 5-minute default | |
| target | Yes | What is under test: feature/test name + branch@sha | |
| cleanup | No | Things that must be gone at the end | |
| host_id | No | Host to queue on, or set host_choice='ask' | |
| purpose | Yes | One sentence: why this run exists | |
| expected | Yes | Pass criterion (an observable outcome) | |
| watching | No | The user is watching this run live | |
| project_id | No | Project this job belongs to | |
| host_choice | No | 'ask' = stays queued + unassigned until assigned | |
| max_minutes | No | Cap; test/demo default 5, larger needs `reason` | |
| screenshots | No | each_step (default) | on_request | none | each_step |
| requested_by | No | Coordinator session id | |
| needs_confirm | No | True = the human iso_confirm gate decides pass/fail |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| kind | Yes | ||
| links | No | ||
| phase | No | ||
| title | Yes | ||
| events | No | ||
| origin | No | Who asked for this run (human | agent | driver | eval | probe | warmup) — scopes the learning loop | agent |
| params | No | Intake: purpose, expected, caps, flags, pending_shot, ... | |
| status | Yes | ||
| target | Yes | ||
| worker | No | ||
| host_id | No | NULL = not yet assigned (host_choice='ask') | |
| summary | No | Present once the job is closed out | |
| web_url | No | Absolute URL of this job's page in the web UI | |
| position | No | ||
| artifacts | No | ||
| created_at | Yes | ||
| project_id | No | ||
| started_at | No | ||
| updated_at | Yes | ||
| crash_count | No | crash-level events (the queue board flags these) | |
| error_count | No | error-level events (the queue board flags these) | |
| finished_at | No | ||
| current_step | No | The step awaiting a verdict (newest prompt event + whether it is answered) | |
| requested_by | No |