name: get-playground-task
description: Gets detailed status and output of a specific examiner task on a playground. Use to debug why a task is failing.
argument-hint:
Get detailed information about examiner task $1 on playground $0.
Inspecting a task's status and last-run output (preferred: tunnel-free)
Use the API path — it needs no SSH tunnel, covers all machines at once
(including noSSH ones), and includes each task's status plus the stdout/stderr
(and hintcheck/failcheck output) of its last execution:
labctl playground tasks $0 -o yaml
Grep for $1 in that output to find the specific task. This reports the last run
only; it does not trigger a fresh run. Prefer this over labctl ssh $0 -- examinerctl task get $1 — the SSH form shows a single machine and burns a tunnel
slot, whereas the YAML API form gives the same per-task output for every machine
without SSH.
Waiting (blocking) until a task reaches a terminal state (needs SSH)
examinerctl task wait does not trigger, start, or re-run anything — there is no
task start/task run, and you cannot manually fire a task. The examiner evaluates
the task on its own; task wait just blocks until it reaches a terminal state
(pass/fail) or the timeout expires. This is the one task operation the API can't do:
labctl ssh $0 -- examinerctl task wait $1 --timeout 120s
Use it to block after setting up a task's preconditions — e.g. a .solution-NN.sh
ends with examinerctl task wait <verify-task> so applying the solution blocks until
that task has settled.
Notes
- Tasks are edge-activated, not level-triggered, and their status never regresses:
the examiner keeps evaluating a task until it first observes a success or failure
state, then the task settles into its terminal state (
completed40orfailed35) and never runs again, even if the world state later changes. The status only ever goes up — a passed task cannot later fail — so a singlecompletedobservation is authoritative. - Avoid SSH churn. Each
examinerctl ...call opens an SSH tunnel. Use the tunnel-freelabctl playground tasks $0 -o yamlfor inspection and polling, and never putlabctl ssh -- examinerctl task waitinside a backgrounded retry loop — orphaned ssh children exhaust the tunnel pool (see the SSH tunnel discipline notes inrun-playground-command).