v1.8.5
·
44 commits
to master
since this release
Immutable
release. Only release title and notes can be modified.
v1.8.5 — Orchestration cancel-scope crash + Docker release repair
🐛 Fixes
RuntimeError: Attempted to exit cancel scope in a different taskwhen 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 ananyiocancel scope acrossyields (the per-step timeout in_execute_loop), andanyiobinds 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 newcore/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/chatand/api/v1/chat/streamnow recognize theorchestration_errorevent type that an orchestrator agent fails with, instead of onlyerror. - 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), andcache-fromis 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 fromdeb.nodesource.comfell through to Debian'snodejspackage, which provides only/usr/bin/node. That is exactly how v1.8.4 shipped. The base images are now Debian 13 trixie, whosenodejsis 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-dockeris 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 watchedmainwhile the release line ismaster, so it never fired there. Its layer caches were only ever written bypull_requestruns, 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.py—iter_with_heartbeatpump 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, thensynapse start. - terminal:
synapse upgrade, thensynapse start. - Docker:
docker compose pull && docker compose up -d. If you pin tags, move them off1.8.4. - From source:
git pull, thensynapse stop && synapse start.
Full Changelog: v1.8.4...v1.8.5