From 9077564f25045f670d2f0902e563a607007b3612 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 30 Jul 2026 10:33:45 +0000 Subject: [PATCH] docs: add until convergence loop to Claude dynamic-workflow conversion table The primitive mapping table in claude-workflow-conversion.md was missing the until() convergence primitive, which is the idiomatic rig replacement for open-ended while loops in Claude dynamic workflows. Without this entry, developers porting a workflow that uses a bounded retry/convergence pattern would not discover until() and might write an unbounded loop instead. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- skills/rig/references/claude-workflow-conversion.md | 1 + 1 file changed, 1 insertion(+) diff --git a/skills/rig/references/claude-workflow-conversion.md b/skills/rig/references/claude-workflow-conversion.md index 7b0619e..f3d19bb 100644 --- a/skills/rig/references/claude-workflow-conversion.md +++ b/skills/rig/references/claude-workflow-conversion.md @@ -31,6 +31,7 @@ primitives from its context instead of from globals. | `log(message)` | `log(message)` | Same | | `budget.total / spent() / remaining()` | `budget.total / spent() / remaining()` | rig meters **agent calls** (`limits.maxAgents`), not tokens | | `workflow(ref, args)` | `call.workflow(child, args, options?)` | Shares the limiter, budget, phase, and event stream | +| open-ended `while` convergence loop | `until({ max, noProgressRounds }, step)` | Bounded; stops on `done`, after `max` rounds, or after `noProgressRounds` equal progress keys — prefer over unbounded loops | | top-level `return value` | `return value` from `body` | Same | | `Workflow({ scriptPath, args })` from a session | `cat args.json \| node skills/rig/rig.ts program.ts` | See [runtime](runtime.md) |