Review and approve a run
A run waits when the pipeline reaches a [gate](../glossary.md#gate). The run status is `waiting_for_human`. Approve continues the run; reject sends your note back as [feedback](../glossary.md#feedback). Delivery, when it happens, is a local commit. Kusaw never merges or pushes.
A run waits when the pipeline reaches a gate. The run status is waiting_for_human. Approve continues the run; reject sends your note back as feedback. Delivery, when it happens, is a local commit. Kusaw never merges or pushes.
Default pipelines have no gate. You only wait when kusaw.yaml includes one, for example a human-check gate before deliver.
| Step | CLI | Dashboard |
|---|---|---|
| Find the waiting run | kusaw status | Runs tab Blocked, or the line Waiting for you |
| Open the run | kusaw status <run> | The run page |
| Approve (note optional) | kusaw approve <run> or kusaw approve <run> --note "..." | Approve |
| Reject (note required) | kusaw reject <run> --note "..." | Reject — add a note first |
kusaw serve has to be running to pick up approve and reject.
Where the run waits
The run is waiting_for_human. On the Dashboard that maps to Blocked. The run page heading is Waiting for you plus the gate name and its prompt. Waiting time does not count toward the run's time limit.
If the run is not waiting, approve and reject are refused: Run "<run>" is not waiting for a human.
What to look at, in order
On the run page, or in kusaw status <run>:
- SUMMARY — the delivery note once deliver has run; empty before that.
- Diff — the repo tabs: branch, worktree, and the commit that was delivered. Open the worktree if you want the full diff.
- Verification output — the commands under
## Verificationand whether they passed, on the repo tab. - Findings — review findings from the last try.
- Evidence — when the run has delivered, SUMMARY includes the verification evidence from that deliver. There is nothing extra to look at before then.
Approve or reject
Approve does not need a note. Reject does (reject needs a note.). Keep a note under 4000 characters.
Approve. The run goes to the front of the queue and continues at the step after the gate. When that path includes deliver, each passed repo gets one squashed commit on the shared branch factory/<task>-<seq>. That commit stays local. Kusaw never merges and never pushes.
Reject. Your note is feedback.
- If the gate is inside a loop that still has tries left, the run goes to the front of the queue and the next try sees the note.
- If the gate is at the top level, or the loop is on its last try, the run ends
needs_attention(reasongate_rejected). The note is prefilled for Requeue. See Rerun, requeue, resume or steer.
Dashboard copy next to the buttons:
- If you reject, this note is sent to the next try as feedback. (gate in a loop)
- If you reject, this note is kept for Requeue. (gate at the top level)
If it goes wrong
Run "<run>" is not waiting for a human— the run is not at a gate. Checkkusaw status <run>or the Runs tabs.reject needs a note./ Add a note to reject. Approve doesn't need one. — reject with--note, or type the note on the run page before Reject.- Approve or reject stays pending —
kusaw serveis not running. The request waits until serve is back. - You meant to stop, not reject — stop or dismiss instead of reject.
Write a good task
A [task](../glossary.md#task) is one Markdown file — the [spec](../glossary.md#spec) `kusaw add` checks and queues as a run. Write one change per task, with commands under `## Verification` that prove it worked.
Read the Dashboard
`kusaw ui` serves the Dashboard on `127.0.0.1`. Each area below matches a CLI command.