Skip to content

Fix Discord progress final and status command output#85465

Closed
Yehonal wants to merge 1 commit into
openclaw:mainfrom
Yehonal:fix-progress-status-command-output-title
Closed

Fix Discord progress final and status command output#85465
Yehonal wants to merge 1 commit into
openclaw:mainfrom
Yehonal:fix-progress-status-command-output-title

Conversation

@Yehonal

@Yehonal Yehonal commented May 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • omit command-output titles when channel progress is configured with commandText: "status"
  • route Discord onCommandOutput progress through the same config-aware formatter as tool/item progress
  • keep raw/default behavior unchanged so command-output titles still render outside status mode
  • keep Discord progress previews temporary by clearing the live progress draft before sending the final reply normally
  • clear/cancel pending and in-flight progress drafts even before Discord has assigned a draft message id
  • suppress late Discord error finals after a visible final reply has already been queued/delivered, so a trailing tool warning cannot replace or follow the real answer
  • add regression assertions for the shared formatter and Discord progress/final delivery behavior

Why

commandText: "status" already suppresses command text for command/tool progress, but command-output lines still appended input.title. That can expose internal command titles in channel progress even when the channel is configured for status-only command display.

The shared formatter handled this correctly, but Discord's onCommandOutput callback was still calling the raw formatter directly. This branch now passes Discord command-output events through the config-aware formatter, matching the existing onToolStart and onItemEvent behavior.

A second Discord-specific failure remained after that formatter fix: in progress streaming mode the live tool-progress draft could be treated as the final reply container. If the turn hit failed tools, compaction, or fresh-thread pressure, Discord could leave the progress bubble visible as the last apparent assistant message instead of showing the final assistant reply. Progress previews should stay temporary; final replies should go through the normal message path.

There is also a pending-draft race: a final reply can arrive while the progress draft send is still pending or in flight and no Discord message id exists yet. Final cleanup must call the draft cleanup path anyway, because that is what cancels pending work and waits for in-flight sends before the normal final reply is delivered.

Finally, after the assistant has already queued/delivered a visible final reply, a subsequent tool-error final can still be queued as a second final. In Discord this can make the final visible event look like the tool failure instead of the answer. Once a non-error final reply is accepted, later error finals are suppressed; error finals still deliver when they are the only final outcome.

Real behavior proof

Behavior or issue addressed: A command-output progress event with commandText: "status" should render the status/exit code without appending the command-output title. Discord progress drafts should be cleared before the final reply is delivered normally, including the case where no draft message id exists yet, and late tool-error finals should not appear after a visible final reply.

Real environment tested: Local OpenClaw checkout on this PR branch, plus redacted live Discord gateway smoke runs using the built Discord extension from this branch. The final smoke used an isolated Discord gateway configured with streaming.mode: "progress", progress.toolProgress: true, and progress.commandText: "status".

Exact steps or command run after this patch:

  1. Render a failed command-output event with default options and with { commandText: "status" }.
  2. Run the Discord message-handler regression suite covering config-aware command-output progress, progress draft final delivery, pending/no-id progress draft cleanup, and late error-final suppression.
  3. Build/load the Discord extension from this PR into an isolated Discord gateway.
  4. Configure the isolated gateway with progress.commandText: "status" and restart only that isolated gateway.
  5. Send a live Discord prompt that forces one tool command equivalent to printf '<redacted_marker>\n'; exit 42, then returns a normal final assistant message.

Evidence after fix:

$ node --import tsx - <<'JS'
import { formatChannelProgressDraftLine } from './src/plugin-sdk/channel-streaming.ts';
const input = {
  event: 'command-output',
  name: 'exec',
  exitCode: 1,
  title: 'run internal config check failed',
};
console.log('default:', formatChannelProgressDraftLine(input));
console.log('status:', formatChannelProgressDraftLine(input, { commandText: 'status' }));
JS
default: 🛠️ exit 1; run internal config check failed
status: 🛠️ exit 1
$ pnpm exec vitest run --config test/vitest/vitest.extension-discord.config.ts extensions/discord/src/monitor/message-handler.process.test.ts
Test Files  1 passed (1)
Tests  77 passed (77)
$ pnpm exec vitest run --config test/vitest/vitest.plugin-sdk.config.ts src/plugin-sdk/channel-streaming.test.ts
Test Files  1 passed (1)
Tests  22 passed (22)
Live Discord smoke, isolated gateway with commandText=status:
- the PR-built Discord extension was selected by explicit plugin config
- progress mode was active with tool progress enabled and command text set to status
- the assistant executed the requested tool command and the runtime recorded exitCode=42 with the redacted stdout marker
- Discord message history after the turn contained the normal final assistant reply marker as the latest assistant message
- no `exit 42` tool-error final replaced or followed the normal assistant final

Observed result after fix: Default/raw behavior still includes the title. Status mode renders only exit 1, so the command-output title is suppressed. Discord progress mode now uses that config-aware formatter for real onCommandOutput callbacks; the Discord regression asserts the progress draft contains exit 1 and not the command-output title. Discord progress-mode final replies no longer edit the progress draft in place; tests assert the progress draft is cleared, pending/no-id progress drafts still call clear() before final delivery, deliverDiscordReply sends the final separately, and later tool-warning finals are suppressed after a visible final. The live Discord status-mode smoke matched the delivery behavior: a failed tool with exit code 42 was followed by the normal assistant final as the visible final message.

What was not tested: A Telegram transport smoke was not run for this PR. The shared formatter behavior is covered by plugin-sdk tests; the live transport proof above is Discord-specific.

Test

  • pnpm exec vitest run --config test/vitest/vitest.plugin-sdk.config.ts src/plugin-sdk/channel-streaming.test.ts
  • pnpm exec vitest run --config test/vitest/vitest.extension-discord.config.ts extensions/discord/src/monitor/message-handler.process.test.ts

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

clawsweeper Bot commented May 22, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs changes before merge. Reviewed May 28, 2026, 9:47 AM ET / 13:47 UTC.

Summary
This PR updates the shared channel progress formatter, routes Discord command-output progress through config-aware formatting, changes Discord progress-mode finals to send separately from progress drafts, and adds focused regressions.

PR surface: Source +9, Tests +64. Total +73 across 5 files.

Reproducibility: yes. Source inspection shows current main appends command-output titles unless the caller supplies commandText: "status", and the PR body supplies live Discord proof for the Discord-specific path.

Review metrics: 1 noteworthy metric.

  • Status-mode command-output surfaces: 1 updated, 4 rendered sibling callbacks still raw. The changed setting is shared channel behavior, so a Discord-only callback update leaves the same title exposure in other chat transports.

Merge readiness
Overall: 🦐 gold shrimp
Proof: 🦞 diamond lobster
Patch quality: 🦐 gold shrimp
Result: needs maintainer review before merge.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • [P2] Route sibling command-output progress through the entry-aware formatter and add status-mode regressions.

Risk before merge

  • [P1] The shared commandText: "status" contract would still expose command-output titles in Slack, Matrix, MS Teams, and Telegram because only the Discord command-output callback is made config-aware.
  • [P1] The PR changes Discord progress-mode final delivery in a file shared with several active Discord progress PRs, so the final merge result needs current-base review for duplicate or missing final messages.

Maintainer options:

  1. Finish sibling status-mode coverage (recommended)
    Update the remaining chat channel command-output callbacks to use the entry-aware formatter and add focused status-mode regressions before merge.
  2. Land Discord-only with explicit follow-up
    Maintainers could accept a Discord-only fix only if a linked follow-up owns the same status-mode command-output title suppression for sibling chat channels.
Copy recommended automerge instruction
@clawsweeper automerge

Special instructions:
Update Slack, Matrix, MS Teams, and Telegram command-output progress callbacks to use the entry-aware channel progress formatter, preserve raw/default behavior, and add focused status-mode regressions.

Next step before merge

  • [P2] A narrow automated repair can update the remaining sibling command-output callbacks and add focused status-mode regressions without a product decision.

Security
Needs attention: The patch improves Discord status-mode title suppression but leaves the same command-title exposure in sibling chat channel command-output paths.

Review findings

  • [P2] Apply status-mode command-output formatting to sibling channels — extensions/discord/src/monitor/message-handler.process.ts:1031
Review details

Best possible solution:

Land one status-mode command-output contract across Discord, Slack, Matrix, MS Teams, and Telegram while preserving raw/default output outside status mode.

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

Yes. Source inspection shows current main appends command-output titles unless the caller supplies commandText: "status", and the PR body supplies live Discord proof for the Discord-specific path.

Is this the best way to solve the issue?

No, not yet. The Discord final-delivery direction is reasonable, but the status-mode command-output fix should cover the sibling chat callbacks or be explicitly split into a tracked follow-up.

Full review comments:

  • [P2] Apply status-mode command-output formatting to sibling channels — extensions/discord/src/monitor/message-handler.process.ts:1031
    This updates the shared formatter and the Discord callback, but Slack, Matrix, MS Teams, and Telegram still build command-output progress with the raw formatter, so streaming.progress.commandText: "status" will still append input.title there. Since commandText is a shared channel privacy setting, route those callbacks through the entry-aware formatter and add sibling regressions before merging.
    Confidence: 0.89

Overall correctness: patch is incorrect
Overall confidence: 0.86

AGENTS.md: found and applied where relevant.

Codex review notes: model gpt-5.5, reasoning high; reviewed against bda924b6390e.

Label changes

Label changes:

  • add merge-risk: 🚨 security-boundary: The status-mode command-output path is a channel-visible privacy boundary for command titles, and the current patch leaves sibling transports outside that suppression.
  • add proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes redacted live Discord gateway smoke output plus focused test output showing the after-fix Discord behavior.

Label justifications:

  • P2: This is a normal channel progress/message-delivery bug with limited blast radius but real user-visible output impact.
  • merge-risk: 🚨 message-delivery: The PR changes how Discord progress drafts are cleared and how final replies are delivered, which can affect whether users see the real final answer or an extra progress/error message.
  • merge-risk: 🚨 security-boundary: The status-mode command-output path is a channel-visible privacy boundary for command titles, and the current patch leaves sibling transports outside that suppression.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦞 diamond lobster and patch quality is 🦐 gold shrimp.
  • status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action. Sufficient (logs): The PR body includes redacted live Discord gateway smoke output plus focused test output showing the after-fix Discord behavior.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes redacted live Discord gateway smoke output plus focused test output showing the after-fix Discord behavior.
Evidence reviewed

PR surface:

Source +9, Tests +64. Total +73 across 5 files.

View PR surface stats
Area Files Added Removed Net
Source 3 16 7 +9
Tests 2 81 17 +64
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 5 97 24 +73

Security concerns:

  • [medium] Complete shared status-mode title suppression — extensions/discord/src/monitor/message-handler.process.ts:1031
    commandText: "status" is a shared channel-visible privacy control; after this PR, sibling command-output callbacks still do not pass channel config into the formatter, so command-output titles can remain visible outside Discord.
    Confidence: 0.86

Acceptance criteria:

  • [P2] node scripts/run-vitest.mjs src/plugin-sdk/channel-streaming.test.ts extensions/discord/src/monitor/message-handler.process.test.ts extensions/slack/src/monitor/message-handler/dispatch.preview-fallback.test.ts extensions/telegram/src/bot-message-dispatch.test.ts extensions/matrix/src/matrix/monitor/handler.test.ts extensions/msteams/src/reply-dispatcher.test.ts.
  • [P2] pnpm exec oxfmt --check --threads=1 src/channels/streaming.ts src/plugin-sdk/channel-streaming.test.ts extensions/discord/src/monitor/message-handler.process.ts extensions/discord/src/monitor/message-handler.process.test.ts extensions/slack/src/monitor/message-handler/dispatch.ts extensions/slack/src/monitor/message-handler/dispatch.preview-fallback.test.ts extensions/telegram/src/bot-message-dispatch.ts extensions/telegram/src/bot-message-dispatch.test.ts extensions/matrix/src/matrix/monitor/handler.ts extensions/matrix/src/matrix/monitor/handler.test.ts extensions/msteams/src/reply-dispatcher.ts extensions/msteams/src/reply-dispatcher.test.ts.
  • [P1] git diff --check.

What I checked:

Likely related people:

  • steipete: Recent GitHub history shows multiple Discord progress draft and shared channel streaming commits, including progress draft rendering, truncated progress finals, and recent tool-warning fallback fixes. (role: recent area contributor; confidence: high; commits: d94e7f5114dc, ef29c85a48c9, 54619d403303; files: extensions/discord/src/monitor/message-handler.process.ts, extensions/discord/src/monitor/message-handler.draft-preview.ts, src/channels/streaming.ts)
  • compoodment: Authored the prior Discord progress-mode final-reply fix that is directly adjacent to this PR's progress finalization path. (role: related behavior introducer; confidence: medium; commits: a9407d2f65ce; files: extensions/discord/src/monitor/message-handler.process.ts)
  • ubehera: Recently touched Discord reply-delivery skip handling in the same process file, adjacent to the final-delivery and error-reporting path this PR changes. (role: recent adjacent contributor; confidence: medium; commits: 3a48366f3ec2; files: extensions/discord/src/monitor/message-handler.process.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

@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 May 22, 2026
@clawsweeper clawsweeper Bot added 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. P2 Normal backlog priority with limited blast radius. labels May 22, 2026
@clawsweeper

clawsweeper Bot commented May 22, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper PR egg

🔥 Warming up: real-behavior proof passed; findings, security review, or rank-up moves are still in progress.

Hatch command

Comment @clawsweeper hatch when this PR is hatchable.

Hatchability rules:

  • Merged PRs are hatchable.
  • Open PRs are hatchable when they are status: 👀 ready for maintainer look, status: 🚀 automerge armed, or labeled clawsweeper:automerge.
  • Closed unmerged PRs are hatchable only when one of those hatchable labels is still present in the durable record.
What is this egg doing here?
  • Eggs appear after the PR passes real-behavior proof. It is here for vibes, not verdicts: it does not change labels, ratings, merge decisions, or automation.
  • The shell reacts to review momentum: open follow-up work warms it up, re-review makes it wobble, and a clean final review lets it hatch.
  • Hatchability usually comes from sufficient real-behavior proof, no blocking P0/P1/P2 findings, no security attention needed, and clean correctness. A merged PR is already final, so merge makes the egg hatchable independently.
  • The hatch is seeded from this repository and PR number, so the same PR keeps the same creature; the reviewed head SHA can only change safe visual details.
  • Rarity is just collectible sparkle: 🥚 common, 🌱 uncommon, 💎 rare, ✨ glimmer, and 🌈 legendary.

@openclaw-barnacle openclaw-barnacle Bot added channel: discord Channel integration: discord size: S and removed size: XS labels May 22, 2026
@clawsweeper clawsweeper Bot added the merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. label May 22, 2026
@Yehonal Yehonal changed the title Hide command-output titles when progress uses status mode Fix Discord progress final and status command output May 22, 2026
@Yehonal

Yehonal commented May 23, 2026

Copy link
Copy Markdown
Contributor Author

Updated the PR body with redacted live Discord proof for the failing-tool progress/finalization path.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented May 23, 2026

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

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

@clawsweeper

clawsweeper Bot commented May 23, 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 removed the mantis: telegram-visible-proof Mantis should capture Telegram visible proof. label May 23, 2026
@Yehonal

Yehonal commented May 23, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Updated the Discord onCommandOutput path to use the config-aware progress formatter and added a Discord regression for progress.commandText: "status" command-output events. Local targeted tests pass:

  • pnpm exec vitest run --config test/vitest/vitest.extension-discord.config.ts extensions/discord/src/monitor/message-handler.process.test.ts => 76/76
  • pnpm exec vitest run --config test/vitest/vitest.plugin-sdk.config.ts src/plugin-sdk/channel-streaming.test.ts => 22/22

@clawsweeper

clawsweeper Bot commented May 23, 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:

@Yehonal

Yehonal commented May 23, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Updated the Discord progress-final cleanup race:

  • progress final cleanup now calls the draft cleanup path even when no Discord draft message id exists yet, so pending/in-flight progress drafts are canceled before normal final delivery.
  • Added a regression for the no-id pending progress draft case and assert cleanup happens before deliverDiscordReply.
  • Added redacted live Discord status-mode proof to the PR body using the PR-built Discord extension with progress.commandText: "status".

Local targeted tests pass:

  • pnpm exec vitest run --config test/vitest/vitest.extension-discord.config.ts extensions/discord/src/monitor/message-handler.process.test.ts => 77/77
  • pnpm exec vitest run --config test/vitest/vitest.plugin-sdk.config.ts src/plugin-sdk/channel-streaming.test.ts => 22/22 from the prior formatter run; plugin-sdk source unchanged in this commit.

@clawsweeper

clawsweeper Bot commented May 23, 2026

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

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

@clawsweeper

clawsweeper Bot commented May 23, 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: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels May 23, 2026
@clawsweeper clawsweeper Bot added status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels May 23, 2026
@Yehonal
Yehonal force-pushed the fix-progress-status-command-output-title branch from 0ae6203 to 0f91ab5 Compare May 24, 2026 23:22
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 24, 2026
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels May 24, 2026
@BingqingLyu

This comment was marked as spam.

@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 28, 2026
@Yehonal
Yehonal force-pushed the fix-progress-status-command-output-title branch from 2d7f4ba to ad6c9a8 Compare May 28, 2026 13:07
@Yehonal

Yehonal commented May 28, 2026

Copy link
Copy Markdown
Contributor Author

Follow-up pushed at ad6c9a887a.

What changed:

  • Rebuilt the branch on current openclaw/main; GitHub now reports mergeable: MERGEABLE / mergeStateStatus: UNSTABLE instead of conflicting.
  • Kept progress-mode final replies separate from preview final edits.
  • Canceled pending progress draft work before the final send, but clear the visible progress draft only after deliverDiscordReply succeeds.
  • Added/updated regression coverage for the final-send failure case so an existing progress draft is preserved if final delivery rejects.
  • Kept the status-mode command-output formatter change, now in the current src/channels/streaming.ts location.

Local validation on the rebased branch:

  • corepack pnpm exec vitest run --config test/vitest/vitest.extension-discord.config.ts extensions/discord/src/monitor/message-handler.process.test.ts => 80/80
  • corepack pnpm exec vitest run --config test/vitest/vitest.plugin-sdk.config.ts src/plugin-sdk/channel-streaming.test.ts => 22/22

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented May 28, 2026

Copy link
Copy Markdown
Contributor

🦞👀
ClawSweeper picked this up.

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

@clawsweeper

clawsweeper Bot commented May 28, 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: sufficient ClawSweeper judged the real behavior proof convincing. merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. labels May 28, 2026
@Yehonal

Yehonal commented May 30, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper autofix

Please extend the existing Discord progress-final/status-output fix to the other chat providers that share the same message/progress rendering path:

  • Slack
  • Matrix
  • Microsoft Teams
  • Telegram

Scope guidance:

  • Find the provider-specific final/progress/status output handling equivalent to the Discord fix in this PR.
  • Apply the same normalization/flush/final-message behavior consistently across those providers.
  • Keep the patch limited to provider parity for this bug; avoid unrelated refactors.
  • Add or update focused tests for each affected provider where the existing test structure supports it.
  • Verify Discord behavior from this PR remains unchanged.

@Yehonal Yehonal closed this Jun 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

channel: discord Channel integration: discord merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. size: S status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants