mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-05 21:52:56 +00:00
* fix(tasks): reclaim ACP zombie runs blocking gateway restart (#88205) hasBackingSession treated an ACP task as backed whenever its persisted session-store entry existed, so a crashed mid-turn ACP run left a status=running record that survived the crash and wedged gateway restart/update forever. Gate ACP backing on in-process live-turn liveness instead of entry existence, behind the existing authoritative-process flag (generalized from cron-only) so a standalone maintenance CLI with an empty live-turn map stays conservative and never reclaims. The liveness signal lives in a core-internal active-turns registry (mirroring cron active-jobs) so it stays off the SDK-exported AcpSessionManager surface. It is marked once before the backend loop and cleared when the task is marked terminal, so a slow init or backend failover cleanup cannot let the sweep reclaim a still-live turn. * fix(tasks): preserve cron operator JSON diagnostic reason Split the merged runtime_not_authoritative reason back into the existing cron_runtime_not_authoritative (shipped, consumed by openclaw tasks maintenance --json operator scripts) and a new acp_runtime_not_authoritative for the ACP branch. Strengthen the cron non-authoritative test to lock the reason string contract. * fix(tasks): clear ACP turn liveness on retry failures --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>