Skip to content

Commit 9294e49

Browse files
release: v1.126.1 + docs daily update 2026-08-03 (#1075)
Co-authored-by: 2pac <tarasyaremabcn@gmail.com>
1 parent 271b735 commit 9294e49

14 files changed

Lines changed: 40 additions & 27 deletions

File tree

CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
66

77
## [Unreleased]
88

9+
## [1.126.1] - 2026-08-03
10+
11+
### Changed
12+
- **Bundled KV guidance now documents concurrency-safe state layouts** (#1068) — `kv_set` is an unconditional overwrite without compare-and-swap, so the guide recommends per-writer keys, assemble-on-read fan-in, and concurrent testing.
13+
- **Worker harness pins now track Pi 0.83.0 and OpenCode 1.18.11** (#1071) — the worker image and runtime dependencies move to the latest compatible weekly releases.
14+
15+
### Fixed
16+
- **Durable script-workflow agent steps cannot resolve an unrelated same-context task** (#1072) — replay lookup only accepts `script-run-step` tasks and polling stays pinned to the selected task ID.
17+
- **Slack v2 task trees and outcome cards no longer create permalink unfurls** (#1070) — cross-message links were removed while task links and compact agent/task provenance remain available.
18+
- **Script-workflow label linting follows TypeScript syntax scope** (#1073) — repeated literal labels are rejected inside real loops and iteration callbacks without false positives from nearby or text-like loop syntax.
19+
920
## [1.126.0] - 2026-08-02
1021

1122
### Added

DEPLOYMENT.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -196,10 +196,10 @@ docker build -f Dockerfile.worker --build-arg CLAUDE_CODE_VERSION=2.2.0 -t agent
196196
Current worker-image defaults in `Dockerfile.worker`:
197197

198198
- `CLAUDE_CODE_VERSION=2.1.220`
199-
- `PI_CODING_AGENT_VERSION=0.82.1`
200-
- `CODEX_VERSION=0.145.0`
201-
- `OPENCODE_VERSION=1.18.5`
202-
- `OPENCODE_SDK_VERSION=1.18.5`
199+
- `PI_CODING_AGENT_VERSION=0.83.0`
200+
- `CODEX_VERSION=0.146.0`
201+
- `OPENCODE_VERSION=1.18.11`
202+
- `OPENCODE_SDK_VERSION=1.18.11`
203203

204204
The image also sets `DISABLE_AUTOUPDATER=1` so Claude Code stays on the pinned version instead of self-updating at runtime.
205205

MCP.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1515,7 +1515,7 @@ Read a key from the swarm KV store. Returns the entry or null if missing/expired
15151515

15161516
**KV Set**
15171517

1518-
Write a key in the swarm KV store. Upserts atomically. Namespace defaults to your current context. Use `expiresInSec` for opt-in TTL (default: never expires). 2 MiB body cap.
1518+
Write a key in the swarm KV store. Each replacement is atomic but unconditional: there is no compare-and-swap, so concurrent read-modify-write callers can lose updates. Namespace defaults to your current context. Use `expiresInSec` for opt-in TTL (default: never expires). 2 MiB body cap.
15191519

15201520
| Parameter | Type | Required | Default | Description |
15211521
|-----------|------|----------|---------|-------------|

charts/agent-swarm/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ type: application
66
# StatefulSet semantics assume 1.25+.
77
kubeVersion: ">=1.25.0-0"
88
# Chart version — kept in sync with package.json by `bun run sync-chart-version`.
9-
version: 1.126.0
9+
version: 1.126.1
1010
# Application version — default image tag the chart deploys. Kept in sync with
1111
# package.json by `bun run sync-chart-version` so release tags and default image
1212
# tags stay aligned. Users can still override at install time with
1313
# --set image.tag=... / --set workerImage.tag=...
14-
appVersion: "1.126.0"
14+
appVersion: "1.126.1"
1515
home: https://github.com/desplega-ai/agent-swarm
1616
sources:
1717
- https://github.com/desplega-ai/agent-swarm

docs-site/content/docs/(documentation)/guides/deployment.mdx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -427,10 +427,10 @@ docker build -f Dockerfile.worker --build-arg CLAUDE_CODE_VERSION=2.2.0 -t agent
427427
Current worker-image defaults in `Dockerfile.worker`:
428428

429429
- `CLAUDE_CODE_VERSION=2.1.220`
430-
- `PI_CODING_AGENT_VERSION=0.82.1`
431-
- `CODEX_VERSION=0.145.0`
432-
- `OPENCODE_VERSION=1.18.5`
433-
- `OPENCODE_SDK_VERSION=1.18.5`
430+
- `PI_CODING_AGENT_VERSION=0.83.0`
431+
- `CODEX_VERSION=0.146.0`
432+
- `OPENCODE_VERSION=1.18.11`
433+
- `OPENCODE_SDK_VERSION=1.18.11`
434434

435435
The image also sets `DISABLE_AUTOUPDATER=1` so Claude Code stays on the pinned version instead of self-updating at runtime.
436436

docs-site/content/docs/(documentation)/guides/script-workflow-runs.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ await ctx.step.swarmScript("normalize-records", {
354354

355355
`ctx.step.agentTask(label, config)` dispatches a swarm task and **blocks until it reaches a terminal status**, journaling its real output as the step result. This is the natural semantic for a durable step — a sequential `plan → review → implement` chain will not fan out or pass a placeholder downstream.
356356

357-
Dispatch and wait are journal-separable: the server looks up an existing task by a `(runId, label)` context key before creating one, so if the harness process restarts mid-wait (crash, supervisor reconciliation, `SCRIPT_RUN_MAX_WALL_MS` eviction), replay resumes polling the same task instead of dispatching a duplicate. The step is only journaled once the task reaches a terminal status.
357+
Dispatch and wait are journal-separable: the server looks up an existing `script-run-step` task by a `(runId, label)` context key before creating one. Once selected, the wait stays pinned to that task ID, so an unrelated task that later reuses the same context key cannot hijack the result. If the harness process restarts mid-wait (crash, supervisor reconciliation, `SCRIPT_RUN_MAX_WALL_MS` eviction), replay resumes polling the same task instead of dispatching a duplicate. The step is only journaled once the task reaches a terminal status.
358358

359359
Config options beyond the task-dispatch fields (`template`/`task`/`agentId`/`tags`/…):
360360

@@ -436,7 +436,7 @@ Persisted statuses:
436436

437437
Terminal statuses are `completed`, `failed`, `cancelled`, and `aborted_limit`.
438438

439-
`label_lint_violation` is not a persisted run status. It is a launch-time rejection from `POST /api/script-runs` when the source contains an obvious repeated literal step label inside a loop.
439+
`label_lint_violation` is not a persisted run status. It is a launch-time rejection from `POST /api/script-runs` when the TypeScript syntax tree places a repeated literal step label inside a loop or an iteration callback such as `map`, `forEach`, or `reduce`. Similar-looking text in comments, strings, or unrelated code does not trigger the lint.
440440

441441
## Durability and replay
442442

docs-site/content/docs/(documentation)/guides/slack-integration.mdx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -106,21 +106,21 @@ The legacy per-task renderer remains the default. Set `SLACK_RENDER_V2=true` to
106106

107107
```
108108
🧵 worked for 44m
109-
 ├─ ✅ First ask · 7m51s · task-id
110-
 ├─ ⏳ Current ask · 8m05s · task-id · latest progress
109+
 ├─ ✅ First ask · 7m51s · task-id
110+
 ├─ ⏳ Current ask · 8m05s · task-id · latest progress
111111
 │ └─ ✅ Researcher · 8m24s · task-id
112-
 └─ ✅ Completed ask · 12m · task-id ↵ → result
112+
 └─ ✅ Completed ask · 12m · task-id
113113
```
114114

115-
The tree is rendered as footer-weight context blocks and contains status, elapsed time, hierarchy, task links, the latest bounded progress for active tasks, links to completed results, and `` permalinks for messages that directly triggered a task. It does not repeat worker output. Updates are debounced, link/media unfurls are disabled, and rate-limit retries honor Slack backoff.
115+
The tree is rendered as footer-weight context blocks and contains status, elapsed time, hierarchy, task links, and the latest bounded progress for active tasks. It does not repeat worker output or cross-link Slack messages: keeping message permalinks out of the tree prevents Slack from producing noisy link previews. Updates are debounced, link/media unfurls are disabled, and rate-limit retries honor Slack backoff.
116116

117117
### Outcome Cards and Message Provenance
118118

119-
Each completed Slack ask gets one outcome card containing the full multi-paragraph Markdown result, bounded only by Slack's presentation limit with a link to the full task when truncation is required. The renderer writes it once with `chat.startStream`, about three `chat.appendStream` calls, and `chat.stopStream`; it is never passed to `chat.update`, so Slack does not stamp it as edited. The card links back to the tree, and the tree links to the card.
119+
Each completed Slack ask gets one outcome card containing the full multi-paragraph Markdown result, bounded only by Slack's presentation limit with a link to the full task when truncation is required. The renderer writes it once with `chat.startStream`, about three `chat.appendStream` calls, and `chat.stopStream`; it is never passed to `chat.update`, so Slack does not stamp it as edited. Outcome cards do not link back to the tree, which avoids an otherwise redundant Slack permalink unfurl.
120120

121-
Raw worker output is not automatically relayed into Slack. Additional messages only appear when an agent explicitly calls `slack-reply`, `slack-post`, or `slack-start-thread`. Those tools accept optional Block Kit `blocks`; when omitted they generate a mrkdwn section. Their compact context footer contains only useful provenance: agent, task, and a link back to the tree when available.
121+
Raw worker output is not automatically relayed into Slack. Additional messages only appear when an agent explicitly calls `slack-reply`, `slack-post`, or `slack-start-thread`. Those tools accept optional Block Kit `blocks`; when omitted they generate a mrkdwn section. Their compact context footer contains the originating agent and task without a Slack-message permalink.
122122

123-
Tree, outcome, and explicit agent message timestamps are persisted in `slack_messages`, so the renderer can reuse and cross-link messages after a restart.
123+
Tree, outcome, and explicit agent message timestamps are persisted in `slack_messages`, so the renderer can reuse messages after a restart.
124124

125125
### Opt In to the Renderer
126126

docs-site/content/docs/(documentation)/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,4 @@ See the [Harness Configuration](/docs/guides/harness-configuration) guide for se
8484

8585
---
8686

87-
_Last updated: August 2, 2026 — v1.126.0_
87+
_Last updated: August 3, 2026 — v1.126.1_

docs-site/content/docs/(documentation)/reference/mcp-tools.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,8 @@ Manage the prompt-template registry (system-prompt and task-prompt sections) at
247247

248248
## Slack Tools
249249

250+
When the v2 Slack renderer adds provenance to explicit `slack-reply`, `slack-post`, or `slack-start-thread` messages, it keeps the footer to agent and task identity. It deliberately omits links between Slack messages so provenance does not create link-preview unfurls.
251+
250252
### slack-reply
251253

252254
Reply to a Slack thread associated with a task.
@@ -707,7 +709,7 @@ Read a key. Returns the entry or `null` if missing/expired. Namespace defaults t
707709

708710
### kv-set
709711

710-
Write a key. Upserts atomically. 2 MiB body cap.
712+
Write a key. Each replacement is atomic but unconditional: there is no compare-and-swap, so concurrent read-modify-write callers can lose updates. Use per-writer keys and assemble on read for fan-in workloads. 2 MiB body cap.
711713

712714
| Parameter | Type | Required | Description |
713715
|-----------|------|----------|-------------|

docs-site/content/docs/api-reference/index.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: Complete REST API reference for Agent Swarm — 171 endpoints acros
55

66
{/* This file was generated by scripts/generate-docs.ts. Do not edit manually. */}
77

8-
## Agent Swarm API v1.126.0
8+
## Agent Swarm API v1.126.1
99

1010
Base URL: `http://localhost:3013`
1111

0 commit comments

Comments
 (0)