docs: Improved wording and grammar on some graph agent docs

Dark-Alex-17 committed 2026-09-11 10:49:03 -06:00
1 parent 8788cbaa97
commit 0cb6e69c49
1 file changed
+20 -20
+20 -20
@@ -159,7 +159,7 @@ nodes:
`0` when the list is discovered mid-run or the loop needs `approval`/`input`
gates (disallowed inside branches). With the cap off, a non-converging loop
is stopped only by `settings.timeout`, an enclosing agent node's `timeout`,
or Ctrl-C (which aborts the run promptly from anywhere, see
or Ctrl-C (which aborts the run from anywhere, see
[Abort and cancellation](#abort-and-cancellation)); if you also set
`timeout: 0`, nothing but Ctrl-C bounds the run before completion. The
validator warns on the explicit `0`. The `0 = no bound`
@@ -180,15 +180,15 @@ nodes:
pair it with a sane `max_loop_iterations`. **Bounds compose outward-in:**
if this graph is run by another graph's `agent` node, that node's
`timeout` (default 300) still applies and will drop this graph regardless
of its own settings; set `timeout: 0` there too. Conversely a parent's
of its own settings; set `timeout: 0` there too. Conversely, a parent's
`timeout: 0` does not lift a child's non-zero `settings.timeout`; the
child's own executor enforces it. A root graph run directly is bounded
only by its own `settings.timeout`. An unbounded run ends only on
completion, error, an enclosing bound, or Ctrl-C. Ctrl-C aborts the run
promptly: the graph flags abort, an in-flight model call is interrupted, a
completion, error, an enclosing bound, or Ctrl-C. Ctrl-C aborts the run:
the graph flags abort, an in-flight model call is interrupted, a
running tool is killed within ~100 ms, in-flight branches and map items are
cancelled, and the run fails with `Graph … aborted before super-step` or
`Graph … aborted during super-step` (either means "aborted"; see
cancelled, and the run fails with `Graph ... aborted before super-step` or
`Graph ... aborted during super-step` (either means "aborted"; see
[Abort and cancellation](#abort-and-cancellation)).
The 300s agent default was a de-facto safety net for a wedged
child; `timeout: 0` is the explicit opt-out of that net.
@@ -220,7 +220,7 @@ super-steps. Ctrl-C (or the enclosing turn being aborted) sets the run's
abort flag; the frontier join reacts to it exactly like a graph timeout:
every in-flight branch task is cancelled, and the run fails with
`Graph '<name>' aborted during super-step with frontier [...]` (or, if the
abort and the join land in the same tick, `… aborted before super-step …`
abort and the join land in the same tick, `... aborted before super-step ...`
one iteration later; either means "aborted"). What "cancelled" means per
node type:
@@ -241,7 +241,7 @@ node type:
- **Teammates:** a cancelled branch or item still retires its identity, so
peers see it as finished.
Headless runs (`coyote --agent … "prompt"`) end with the `Graph … aborted`
Headless runs (`coyote --agent ... "prompt"`) end with the `Graph ... aborted`
error (exit status 1) instead of dying on the signal (130). `approval` and
`input` prompts run in raw mode: a Ctrl-C there is a key event that fails
the node, not a SIGINT.
@@ -753,7 +753,7 @@ converges on an external signal, not on a turn count. Rules:
interrupted), during a tool (the tool is killed within ~100 ms and reports
`Tool call '<name>' aborted`), or between turns (the turn-top check fires
before the next call). The node fails with `llm node aborted` and the run
ends with `Graph … aborted` before any `fallback:` route gets to run. See
ends with `Graph ... aborted` before any `fallback:` route gets to run. See
[Abort and cancellation](#abort-and-cancellation).
**For long-lived watchers, prefer a graph-level self-loop:** an `llm` check
@@ -1536,16 +1536,16 @@ reducers:
### Built-in reducers
| Reducer | Semantics | Required types |
|-------------|---------------------------------------------------------------------------|-----------------------------------------|
| `append` | Push each branch's value onto an array (creates `[v1]` from nothing, then appends `v2`, `v3`, …) | Any value type |
| `extend` | Concatenate arrays (`[a, b] + [c, d] = [a, b, c, d]`) | Both sides must be Array |
| `concat` | Join strings with `\n` separator | Both sides must be String |
| `sum` | Numeric addition | Both sides must be Number |
| `max` | Numeric max | Both sides must be Number |
| `min` | Numeric min | Both sides must be Number |
| `merge` | Object union (incoming wins on key collision) | Both sides must be Object |
| `overwrite` | Last write wins (explicit opt-in to non-deterministic behavior) | Any value type |
| Reducer | Semantics | Required types |
|-------------|----------------------------------------------------------------------------------------------------|-----------------------------------------|
| `append` | Push each branch's value onto an array (creates `[v1]` from nothing, then appends `v2`, `v3`, ...) | Any value type |
| `extend` | Concatenate arrays (`[a, b] + [c, d] = [a, b, c, d]`) | Both sides must be Array |
| `concat` | Join strings with `\n` separator | Both sides must be String |
| `sum` | Numeric addition | Both sides must be Number |
| `max` | Numeric max | Both sides must be Number |
| `min` | Numeric min | Both sides must be Number |
| `merge` | Object union (incoming wins on key collision) | Both sides must be Object |
| `overwrite` | Last write wins (explicit opt-in to non-deterministic behavior) | Any value type |
Integer typing is preserved through numeric reducers when possible;
e.g. `sum` of `5` and `7` stays `Number::i64(12)`, not `Number::f64(12.0)`.
@@ -1699,7 +1699,7 @@ branches need to be designed so they don't depend on sibling writes.
In a TTY:
- Each parallel branch gets its own labeled spinner (e.g. `[fetch_web]
running… 2.3s`), drawn side-by-side via
running... 2.3s`), drawn side-by-side via
[indicatif](https://docs.rs/indicatif/).
- When a branch completes successfully, its spinner finalizes to
`✓ done (2.3s)`. On failure: `✗ failed (2.3s) — <error excerpt>`.