Skip to content

fix: silence heartbeat notify=false fallback replies#100735

Merged
vincentkoc merged 2 commits into
openclaw:mainfrom
Hackerismydream:codex/fix-heartbeat-notify-false-marker
Jul 6, 2026
Merged

fix: silence heartbeat notify=false fallback replies#100735
vincentkoc merged 2 commits into
openclaw:mainfrom
Hackerismydream:codex/fix-heartbeat-notify-false-marker

Conversation

@Hackerismydream

@Hackerismydream Hackerismydream commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Closes #80569

What Problem This Solves

Fixes an issue where Telegram heartbeat fallback replies could expose a trailing standalone notify=false control marker as user-visible message text and still deliver the message as a normal notification.

Why This Change Was Made

This keeps the fix at the heartbeat fallback boundary instead of parsing Telegram transport text. Plain fallback replies now consume only a final standalone notify=false line, forward the existing durable-send silent metadata, suppress marker-only replies, and preserve inline notify=false text.

User Impact

Users no longer see notify=false appended to Telegram heartbeat fallback replies. When a fallback reply includes that final control marker, OpenClaw sends the remaining message silently through the existing Telegram disable_notification path.

Evidence

Earlier remote/Testbox local-launch gap is now covered by the Mantis native Telegram Desktop proof above. The local Crabbox wrapper in this checkout still fails basic version/help sanity checks before project code, but the required Telegram-visible behavior proof exists in the hosted Mantis run.

@Hackerismydream

Copy link
Copy Markdown
Contributor Author

Verification update for head 496436a93b18cfa540e38adbcb53e1445306dc4e:

  • GitHub PR checks completed with no failing checks reported by gh pr checks 100735: 66 success, 35 skipped, 1 neutral.
  • Local fallback validation passed because the configured Crabbox/Testbox binary failed its own --version/--help sanity check before project code ran:
    • node scripts/run-vitest.mjs src/infra/heartbeat-runner.tool-response.test.ts src/infra/heartbeat-runner.ghost-reminder.test.ts src/infra/heartbeat-events-filter.test.ts extensions/telegram/src/outbound-adapter.test.ts src/channels/message/send.test.ts
    • node scripts/run-vitest.mjs src/infra/outbound/payloads.test.ts extensions/telegram/src/bot/delivery.test.ts
    • node scripts/run-vitest.mjs src/infra/heartbeat-runner.tool-response.test.ts
    • node_modules/.bin/oxfmt --check --threads=1 src/infra/heartbeat-runner.ts src/infra/heartbeat-runner.tool-response.test.ts test/helpers/infra/heartbeat-runner-channel-plugins.ts
    • git diff --check
    • .agents/skills/autoreview/scripts/autoreview --mode local

Known proof gap remains only the live Crabbox/native Telegram scenario, blocked by the local Crabbox binary sanity failure before it could launch a remote run.

@clawsweeper

clawsweeper Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Codex review: stale review; fresh review needed.

Summary
The latest durable ClawSweeper review was for head bbfd1c75ba7be592eb47ffc94052403c543de428, but the PR head is now f9da0508b94800dc018b08df0027d11b2a84aa5a. Its old verdict and PR readiness labels are no longer current.

Next step
Run or wait for a fresh ClawSweeper review on the current PR head.

Review history (1 earlier review cycle)
  • reviewed 2026-07-06T08:46:40.769Z sha 496436a :: needs real behavior proof before merge. :: none

@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. mantis: telegram-visible-proof Mantis should capture Telegram visible proof. P2 Normal backlog priority with limited blast radius. labels Jul 6, 2026
@clawsweeper
clawsweeper Bot temporarily deployed to qa-live-shared July 6, 2026 09:01 Inactive
@vincentkoc vincentkoc self-assigned this Jul 6, 2026
@Hackerismydream

Copy link
Copy Markdown
Contributor Author

Thanks, the remaining blocker is understood: this needs real Telegram-visible proof rather than more unit coverage.

I don’t have access to the Mantis/native Telegram proof environment from this contributor branch. Could a maintainer please run:

@openclaw-mantis telegram desktop proof: verify that a heartbeat fallback ending in notify=false sends no visible marker and capture evidence of the silent delivery path.

The PR head is 496436a. Existing CI and focused tests are green; the missing proof is specifically the Telegram-visible marker/silent-delivery path.

@openclaw-mantis

Copy link
Copy Markdown
Contributor

Mantis Telegram Desktop Proof

Summary: Mantis captured native Telegram Desktop before/after GIF evidence for heartbeat fallback replies.

Main screenshot This PR screenshot
Baseline native Telegram Desktop screenshot Candidate native Telegram Desktop screenshot
Main This PR
Baseline native Telegram Desktop proof GIF Candidate native Telegram Desktop proof GIF

Motion-trimmed clips:

Raw QA files: https://artifacts.openclaw.ai/mantis/telegram-desktop/pr-100735/run-28779391086-1/index.json

@Hackerismydream

Copy link
Copy Markdown
Contributor Author

Mantis native Telegram Desktop proof is now included in the PR body.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@vincentkoc
vincentkoc force-pushed the codex/fix-heartbeat-notify-false-marker branch 2 times, most recently from 78a37a5 to ba16b82 Compare July 6, 2026 09:53
@Hackerismydream

Copy link
Copy Markdown
Contributor Author

Head moved to ba16b82 with Vincent's follow-up commit, and the new head checks are green. Mantis proof remains linked in the PR body for the previous candidate; please re-review the current head and call out if fresh Mantis proof is required for the follow-up change.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@vincentkoc
vincentkoc force-pushed the codex/fix-heartbeat-notify-false-marker branch from ba16b82 to bbfd1c7 Compare July 6, 2026 10:23
@vincentkoc
vincentkoc force-pushed the codex/fix-heartbeat-notify-false-marker branch from bbfd1c7 to f9da050 Compare July 6, 2026 10:37
@clawsweeper clawsweeper Bot removed mantis: telegram-visible-proof Mantis should capture Telegram visible proof. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jul 6, 2026
@vincentkoc

Copy link
Copy Markdown
Member

Maintainer validation is complete for head f9da0508b94800dc018b08df0027d11b2a84aa5a.

The maintainer fix also covers the marker-only showOk=true edge case, so notify=false cannot turn into a visible HEARTBEAT_OK reply.

github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jul 7, 2026
* fix(heartbeat): consume trailing notify=false fallback marker

* fix(heartbeat): keep notify=false marker fully silent

---------

Co-authored-by: martin <[email protected]>
Co-authored-by: Vincent Koc <[email protected]>
giodl73-repo pushed a commit to giodl73-repo/openclaw that referenced this pull request Jul 8, 2026
* fix(heartbeat): consume trailing notify=false fallback marker

* fix(heartbeat): keep notify=false marker fully silent

---------

Co-authored-by: martin <[email protected]>
Co-authored-by: Vincent Koc <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P2 Normal backlog priority with limited blast radius. size: S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Telegram replies ignore silent notification intent and leak notify=false into message body

2 participants