mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-14 14:16:03 +00:00
* fix(infra): guard channel ingress queue parseJson against corrupted JSON * fix(infra): fix type assertion in ingress queue test * fix(infra): use tagged parse result and validate payload before claiming * fix(infra): remove unnecessary non-null assertion in ingress queue test * fix(infra): scan corrupt ingress rows in claimNext * test(gateway): avoid typed empty mock call tuple access * fix(infra): tombstone corrupt ingress rows on duplicate enqueue and stale recovery Two P1 gaps: enqueue() threw on duplicate when the existing row had corrupt payload_json, and recoverStaleClaims() silently skipped corrupt claimed rows, leaving them invisible to recovery. Both paths now tombstone the unrecoverable row as failed with reason "corrupt_payload" and return a proper result. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(infra): resolve lint shadow and await-thenable in recoverStaleClaims Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(channels): tombstone corrupt ingress rows * test(channels): use explicit placeholder claim tokens * refactor(channels): name claim token values * refactor(channels): keep claim projection direct * fix(channels): preserve active ingress claims * fix(channels): make corrupt recovery policy-aware * refactor(channels): name corrupt claim token * fix(channels): bound corrupt ingress reconciliation * fix(channels): paginate pending ingress by key * refactor(telegram): return live owner check directly * build(plugin-sdk): refresh public export budget --------- Co-authored-by: Pick-cat <huang.ting3@xydigit.com> Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>