Enhancements ➕➕
- Replace correlated
EXISTSwithJOINfast-path incount_flow_runsby @VittoriaLanzo in #21707 - Sort
TaskRunRecorderbulk upsert batches bytask_run.idto prevent deadlocks by @chuqCTC in #21717
Bug Fixes 🐞
- Clear
BlockStorageAdapterdestination before each pull by @devin-ai-integration[bot] in #21721 - Fix task run recorder conflict handling by @johangithub in #21726
- Always enforce basepath containment in
LocalFileSystemby @devin-ai-integration[bot] in #21643
Development & Tidiness 🧹
- Explicitly use
--ref mainwhen dispatching cluster-deployment workflow by @devin-ai-integration[bot] in #21705 - Remove pip dependabot updates targeting 2.x branch by @devin-ai-integration[bot] in #21751
- Prevent
pytest-timeoutSIGALRM from interfering with flow timeout test by @devin-ai-integration[bot] in #21757 - Raise quality bar for automated AGENTS.md update workflow by @devin-ai-integration[bot] in #21761
Documentation 📓
- Document
UnknownSerializergraceful degradation for cross-environment result inspection by @github-actions[bot] in #21650 - Fix wildcard in zombie flow detection docs for custom state names by @devin-ai-integration[bot] in #21736
- Fix GitLab token scopes for stored flow code by @harsh21234i in #21748
Full Changelog: 3.6.28...3.6.29