From 0cb6e69c49c4a7e42c1557e8abe05525c2cf8d9b Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Fri, 11 Sep 2026 10:49:03 -0600 Subject: [PATCH] docs: Improved wording and grammar on some graph agent docs --- Graph-Agents.md | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/Graph-Agents.md b/Graph-Agents.md index e646313..6331ec1 100644 --- a/Graph-Agents.md +++ b/Graph-Agents.md @@ -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 '' 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 '' 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) — `.