Skip to content

Auto-update leaves stale chunk reference: conversation-runtime imports missing inbound.runtime-*.js → Telegram inbound dead until restart #75206

Description

@xonaman

Symptom

After auto-update from v2026.4.24 → v2026.4.27, Telegram bot threw ERR_MODULE_NOT_FOUND on every inbound update for ~5 hours. No messages were delivered to the agent until a manual gateway restart pulled fresh dist files.

Logs

Apr 30 12:15:51 [telegram] bot error: Error [ERR_MODULE_NOT_FOUND]: Cannot find module
'/home/openclaw/.npm-global/lib/node_modules/openclaw/dist/inbound.runtime-DEk_2xSV.js'
imported from '/home/openclaw/.npm-global/lib/node_modules/openclaw/dist/conversation-runtime-DZww4kYq.js'
    at finalizeResolution (node:internal/modules/esm/resolve:275:11)

Recurred at 14:54:25, 14:54:42, 14:55:06 UTC. Each timestamp = an inbound user message that was silently dropped.

Root cause (suspected)

conversation-runtime-DZww4kYq.js was emitted with a hard-coded import to chunk inbound.runtime-DEk_2xSV.js, but the v2026.4.27 build only contains:

  • inbound.runtime-B7N1Yxh6.js
  • inbound.runtime-LSHe2Sau.js

Chunk-hash mismatch — either the bundler emitted stale references, or auto-update did not atomically replace all chunks.

Resolution observed

Manual gateway restart reloaded fresh dist files. Telegram inbound recovered immediately.

Environment

  • Host: Ubuntu, Node 22.22.1
  • OpenClaw: v2026.4.27 (auto-updated from 2026.4.24 same day)
  • Channel: telegram
  • Install: npm global

Impact

High. Auto-update is supposed to be safe; this leaves the agent silently unable to receive any Telegram messages until something else triggers a restart. No alert path catches it unless something is specifically watching for bot error in the journal.

Suggested fixes

  1. After auto-update, validate all dist chunk imports resolve before swapping the symlink / version.
  2. On Telegram ERR_MODULE_NOT_FOUND from a runtime chunk, force a gateway restart automatically.
  3. Treat any inbound-channel runtime error as a P0 alert (out-of-band, not just a journal line).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions