Skip to content

v1.8.5

Choose a tag to compare

@naveenraj-17 naveenraj-17 released this 30 Jul 20:50
· 44 commits to master since this release
Immutable release. Only release title and notes can be modified.
ae324c1

v1.8.5 — Orchestration cancel-scope crash + Docker release repair

🐛 Fixes

  • RuntimeError: Attempted to exit cancel scope in a different task when launching an orchestration from the home command bar (#356). The same orchestration launched from the editor worked, which made this look content-dependent; it wasn't. The engine holds an anyio cancel scope across yields (the per-step timeout in _execute_loop), and anyio binds a cancel scope to the task that entered it. The SSE consumer was pulling each event in a fresh task, so the scope was exited from a different task than entered it, and the run crashed after the agent step had already produced its complete output. All orchestration entry points now advance the engine generator from one dedicated task via the new core/orchestration/runner.py, so the launch path can no longer change how the engine is driven.
  • A client disconnect no longer kills a running orchestration. Engine runs are now detached: abandoning the event stream (browser tab closed, network drop, GC finalization) leaves the run going, so it still checkpoints and stays cancellable and resumable. Only the cancel endpoint stops a run.
  • Orchestrator-agent failures are no longer reported as "Unknown error" on the v1 API. /api/v1/chat and /api/v1/chat/stream now recognize the orchestration_error event type that an orchestrator agent fails with, instead of only error.
  • Docker release pipeline failed to publish the API-server image. All three image builds shared one GitHub Actions cache scope, so each cache export rewrote an index the other two referenced. With the repo cache against its 10 GB cap, the third export raced eviction and failed with failed to solve: not_found — cancelling a push whose image had already been built. The config had survived 20 releases on a shrinking margin. Publish no longer writes build cache at all (across the whole failing job it bought 2 cache hits), and cache-from is now scoped per image.
  • Docker images could silently ship without npm/npx. curl -fsSL …nodesource… | bash - discards curl's exit code, and the NodeSource script exits 0 after failing — so an intermittent 403 from deb.nodesource.com fell through to Debian's nodejs package, which provides only /usr/bin/node. That is exactly how v1.8.4 shipped. The base images are now Debian 13 trixie, whose nodejs is already v20, so NodeSource's original rationale no longer applies: Node and npm now come from Debian, and the build asserts both binaries and fails loudly if either is missing.

🔧 Release pipeline

  • publish-docker is now one job per image instead of three sequential steps — roughly 70 minutes down to 25, and a single failing image no longer forces a rebuild of all three. Images are still multi-arch (linux/amd64,linux/arm64) in a single manifest list; the split is by image, not by platform.
  • Added a manual workflow_dispatch (version/ref/images) so a half-failed release can be republished without a version bump. Re-running a failed release run cannot fix this class of failure, because it replays the workflow file from the tagged commit.
  • docker-build.yml's push trigger watched main while the release line is master, so it never fired there. Its layer caches were only ever written by pull_request runs, which are ref-scoped and unreadable from a release build.

✅ Tests

  • backend/tests/unit/test_orchestration_runner.py — single-task pump, sentinel handling, detached-run semantics, and cancellation.
  • backend/tests/api_app/test_orchestration_realrun.py — real orchestration run through the streaming path, covering the #356 regression.
  • backend/tests/unit/test_react_engine_parsing.pyiter_with_heartbeat pump and stream-end propagation.

⬆️ Upgrading

No frontend changes in this release, so no rebuild or re-bundle is needed. No settings or data migration required.

  • pip: pip install --upgrade synapse-orch-ai, then synapse start.
  • terminal: synapse upgrade, then synapse start.
  • Docker: docker compose pull && docker compose up -d. If you pin tags, move them off 1.8.4.
  • From source: git pull, then synapse stop && synapse start.

Full Changelog: v1.8.4...v1.8.5