fix: suppress Telegram fallback for message-tool-only skips#90095
fix: suppress Telegram fallback for message-tool-only skips#90095pfrederiksen wants to merge 2 commits into
Conversation
|
Codex review: needs maintainer review before merge. Reviewed June 30, 2026, 9:40 AM ET / 13:40 UTC. Summary PR surface: Source +1, Tests +38. Total +39 across 2 files. Reproducibility: yes. at source level: current main still computes the skipped/failed fallback without the message-tool-only guard. The linked issue also includes live Telegram evidence and a later user confirmation of the same hotfix shape. Review metrics: 2 noteworthy metrics.
Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Mantis proof suggestion Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Land this PR as the canonical guard if maintainers accept the message-tool-only invariant, then close the overlapping PR and the linked issue after the fix reaches main. Do we have a high-confidence way to reproduce the issue? Yes, at source level: current main still computes the skipped/failed fallback without the message-tool-only guard. The linked issue also includes live Telegram evidence and a later user confirmation of the same hotfix shape. Is this the best way to solve the issue? Yes. This is the best of the two open shapes because it applies the existing message-tool-only suppression invariant only to the non-error skipped/failed branch while preserving true dispatch-error fallback behavior. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 6cb82eaab865. Label changesLabel justifications:
Evidence reviewedPR surface: Source +1, Tests +38. Total +39 across 2 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
Review history (1 earlier review cycle)
|
79db8c1 to
f60d79b
Compare
f60d79b to
8e25915
Compare
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
8e25915 to
834c447
Compare
|
@clawsweeper re-review |
|
@openclaw-mantis telegram desktop proof: verify a Telegram group message-tool-only reply followed by NO_REPLY does not send "No response generated. Please try again." |
|
@clawsweeper re-review |
|
🦞👀 Command router queued. I will update this comment with the next step. Re-review progress:
|
|
This pull request has been automatically marked as stale due to inactivity. |
Summary
message_tool_only.Fixes #90091.
Before/After Proof
Before:
extensions/telegram/src/bot-message-dispatch.tssuppressed the silent fallback branch formessage_tool_only, but the separate failure/empty-response branch still treated non-silent skipped/failed Telegram delivery-lane payloads as eligible forNo response generated. Please try again..After: the empty-response fallback path also respects the existing
suppressSilentReplyFallbackguard, so a message-tool-only turn that intentionally skips automatic final text does not create a second fallback reply.Post-fix proof status: production Clankerops Telegram proof was captured from a real group setup; branch-backed terminal evidence ties PR head
834c4473989cto the guarded production Telegram fallback predicate; focused source validation exercises the exact skipped-non-silent branch this PR changes. A full rebuilt package install was attempted but blocked by atsdown-buildstall, so Mantis proof has also been requested.Real Behavior Proof
agent:main:telegram:group:-1003710118964in Clankerops, using the live Telegram message tool path and real Telegram message IDs.messagetool for visible Telegram output, then end each turn with assistant finalNO_REPLY; inspect the production session log and next inbound chat context for any generic fallback message./root/.openclaw/agents/main/sessions/b639b5ba-fcc7-4180-bbb0-786e8aab9be8.jsonl:Branch-backed terminal evidence captured on the production host after checking out exact PR head
834c4473989c24871d2bc3ce5c99284cf20ad7ba:22231and22233; the assistant final remained private/control-plane asNO_REPLY; no user-visibleNo response generated. Please try again.fallback appeared between those replies and the next inbound group message. The focused regression also drivessourceReplyDeliveryMode: "message_tool_only", records skipped final text including the non-silentemptyskip, and verifiesdeliverReplies,editMessageTelegram, andsendMessageTelegramremain uncalled for the empty-response fallback path.pnpm build:dockerrepeatedly stalled intsdown-buildbefore producing a packable artifact. Instead, the proof below ties the exact PR head source to the live production Telegram bundle and real production Telegram message-tool turns; Mantis Telegram Desktop proof has also been requested in a PR comment.Verification
node scripts/run-vitest.mjs extensions/telegram/src/bot-message-dispatch.test.tspnpm check:test-typesgit diff --check22231and22233