mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-05 16:41:51 +00:00
* fix(telegram): coalesce durable album ingress Split durable claim lifetime from lane occupancy so Telegram can admit later album members while every deferred claim remains heartbeated, recoverable, and independently settled. With deferredLaneOccupancy=release, an unrelated later same-lane Telegram message can reach reply admission before an album that is still inside its 500 ms flush window. That restores the pre-f7786a16 contract, not a new defect; grammY sequentialize still preserves handler-entry order and the reply lane serializes once a turn is admitted. * fix(telegram): preserve deferred abort semantics Release deferred claims when their owner aborts before settlement, while preserving adoption when settlement won the race. Supersede every accepted pre-adoption state on released lanes without admitting past a surviving lane owner. * fix(telegram): separate participant rejection from settlement failure The detached deferred continuation chained its rejection handler with .catch after .then, so it observed not only a participant.task rejection but also any error thrown by onFailed()/onAdopted() and re-drove that infrastructure error through onFailed(). That applied the wrong disposition when the claim was still pre-adoption, and silently discarded the error once it was not: onAdopted() sets phase to adopted before its tombstone write, so a wedged write reached a re-entrant onFailed() that returned early on the phase guard and never reached the logging handler. Use the two-argument then form so task rejection and lifecycle settlement failure stay on separate paths. * fix(channels): satisfy ingress CI guards