Skip to content

fix(tts): allow trusted local media in message_tool_only mode#91192

Open
clawSean wants to merge 1 commit into
openclaw:mainfrom
clawSean:fix/tts-message-tool-media
Open

fix(tts): allow trusted local media in message_tool_only mode#91192
clawSean wants to merge 1 commit into
openclaw:mainfrom
clawSean:fix/tts-message-tool-media

Conversation

@clawSean

@clawSean clawSean commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

What Problem This Solves

Trusted local TTS media generated during message_tool_only room-event flows could be attached to a source-reply transcript mirror or consumed by suppressed block delivery before reaching the channel.

Why This Change Was Made

  • Keep message-tool transcript mirrors immutable.
  • Split trusted local TTS media into a standalone media-only payload.
  • Preserve current-main harness-owned media provenance; harness artifacts remain separately marked and cannot collapse into the TTS payload.
  • Allow trusted block/final media through message_tool_only suppression only after stripping private text.
  • Keep ordinary final text, reasoning/status blocks, untrusted media, and duplicate source mirrors suppressed.

User Impact

Voice notes generated by the configured TTS provider can reach Telegram/other channel adapters in message-tool-only flows without leaking the private source/final text or duplicating the already-sent message-tool response.

Evidence

Current contributor head: 76d62ec04ae on upstream main a040f10e85a.

  • node scripts/run-vitest.mjs src/agents/embedded-agent-runner/run/tool-media-payloads.test.ts src/auto-reply/reply/dispatch-from-config.test.ts: 287 tests passed (14 merge/provenance tests + 273 dispatch tests).
  • Positive coverage: trusted TTS media becomes a media-only voice payload and survives block/final suppression.
  • Negative coverage: source text is absent from the delivered payload; untrusted media and reasoning/status content remain suppressed; harness-owned media remains independently provenance-marked.
  • Direct formatter check and git diff --check upstream/main...HEAD passed.
  • The pre-PR plan gate passed for core/runtime test lanes with no dependency-sensitive changes.

Real behavior proof

An earlier patch-equivalent head generated speech through the configured Microsoft TTS provider and sent an OGG/Opus voice note through the real Telegram adapter/API; the redacted send returned operation=sendVoice, deliveryKind=voice, and no outbound text. That transport proof remains useful history but is not claimed as exact-head proof after this rebase.

The current-head focused suite exercises the changed merge and dispatch boundaries directly. No Gateway restart/deploy was performed for this refresh. A maintainer/Mantis live run on the current head remains the strongest visual confirmation.

Fixes #83636.

AI-assisted; reviewed and validated before submission.

@openclaw-barnacle openclaw-barnacle Bot added agents Agent runtime and tooling size: XS triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 7, 2026
@clawsweeper

clawsweeper Bot commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed July 26, 2026, 6:40 AM ET / 10:40 UTC.

ClawSweeper review

What this changes

The branch keeps message-tool transcript mirrors text-only, emits trusted local TTS audio as a separate media-only reply, and permits that stripped reply through message_tool_only suppression for channel delivery.

Merge readiness

Blocked until stronger real behavior proof is added - 5 items remain

Keep this PR open. Current main still drops tool media when a message_tool_only source-reply transcript mirror is present, while this branch introduces the intended standalone trusted-media path for the linked delivery bug. The remaining merge blockers are an explicit owner decision on the suppression-bypass trust boundary and redacted real Telegram proof from the current head, not a stale-PR cleanup case.

Priority: P2
Reviewed head: d6001f9aea3822873955f1caa007659661d40e3d
Owner decision: Required. See Decision needed.

Review scores

Measure Result What it means
Overall readiness 🦪 silver shellfish (2/6) The implementation is focused and regression-tested, but the exact-head real behavior proof required for this channel-delivery change is still missing.
Proof confidence 🦪 silver shellfish (2/6) Needs stronger real behavior proof before merge: The PR provides focused current-branch tests and prior redacted Telegram transport output, but its own body says the live proof was from an earlier patch-equivalent head rather than current head d6001f9; add a redacted exact-head voice-delivery run that also shows no outbound text. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
Patch quality 🐚 platinum hermit (4/6) Security review found an item that needs attention.

Verification

Check Result Evidence
Real behavior Needs proof Needs stronger real behavior proof before merge: The PR provides focused current-branch tests and prior redacted Telegram transport output, but its own body says the live proof was from an earlier patch-equivalent head rather than current head d6001f9; add a redacted exact-head voice-delivery run that also shows no outbound text. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
Evidence reviewed 5 items Current-main bug boundary: Current main returns the existing payload list when a message-tool-only transcript mirror is present, so tool media is not attached or emitted for later channel delivery. That directly matches the linked report's missing TTS send boundary.
Proposed narrow repair: The PR changes the mirror branch to create a standalone trusted local media payload, then adds block and final dispatch handling that sends only media after suppression has removed text.
Canonical user report: The PR is explicitly linked to the open report describing successful TTS synthesis and media staging followed by no Telegram or Discord provider send in message-tool-only contexts.
Findings None None.
Security Needs attention Confirm trusted-media provenance before bypassing suppression: The new final-dispatch bypass turns a trustedLocalMedia payload into an outbound media-only reply after normal source suppression. Before merge, confirm which producers can set that marker and that untrusted or externally sourced files cannot inherit it through aggregation or normalization.

How this fits together

Embedded agent runs collect media returned by tools and merge it into reply payloads before auto-reply dispatch applies source-reply visibility rules. This PR changes the boundary between tool-media aggregation and suppressed channel delivery so generated TTS audio can reach a channel without publishing private assistant text or duplicating a message-tool response.

flowchart LR
  A[Room event] --> B[Embedded agent and TTS tool]
  B --> C[Tool media aggregation]
  C --> D[Message-tool transcript mirror]
  C --> E[Standalone trusted media payload]
  D --> F[Source-reply suppression]
  E --> G[Text stripped and provenance checked]
  G --> H[Channel voice delivery]
Loading

Decision needed

Question Recommendation
Should message_tool_only allow a trusted-local-media-only reply to bypass source-reply suppression when it has verified TTS provenance, while all text and untrusted media remain suppressed? Approve the narrow TTS-only bypass: Allow the PR after exact-head proof confirms that only trusted, media-bearing TTS payloads bypass suppression and all text is stripped.

Why: This is a core cross-channel visibility and trust contract; tests can prove the selected rule but cannot choose which producer classes may be privileged to deliver after suppression.

Before merge

  • Add real behavior proof - Needs stronger real behavior proof before merge: The PR provides focused current-branch tests and prior redacted Telegram transport output, but its own body says the live proof was from an earlier patch-equivalent head rather than current head d6001f9; add a redacted exact-head voice-delivery run that also shows no outbound text. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
  • Resolve security concern: Confirm trusted-media provenance before bypassing suppression - The new final-dispatch bypass turns a trustedLocalMedia payload into an outbound media-only reply after normal source suppression. Before merge, confirm which producers can set that marker and that untrusted or externally sourced files cannot inherit it through aggregation or normalization.
  • Resolve merge risk (P1) - The new path deliberately permits channel delivery after message_tool_only suppression based on trustedLocalMedia; maintainers need to confirm that only TTS-owned, provenance-preserving media can reach this bypass.
  • Resolve merge risk (P1) - The supplied live Telegram evidence is explicitly from an earlier patch-equivalent head, while the current head is newer; focused tests are useful but do not prove exact-head provider delivery with no outbound text.

Findings

  • [medium] Confirm trusted-media provenance before bypassing suppression — src/auto-reply/reply/dispatch-from-config.finalize.ts:101
Agent review details

Security

Needs attention: The diff introduces a deliberate privileged outbound-delivery path, so it needs owner confirmation that the trusted-media marker is an adequate provenance boundary.

PR surface

Source +101, Tests +84. Total +185 across 5 files.

View PR surface stats
Area Files Added Removed Net
Source 4 114 13 +101
Tests 1 84 0 +84
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 5 198 13 +185

Review metrics

None.

Root-cause cluster

Relationship: fixed_by_candidate
Canonical: #83636
Summary: This PR is a candidate fix for the canonical dynamic-TTS suppression report; the other linked reports overlap in delivery area but retain distinct causes and requested behavior.

Members:

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

Mantis proof suggestion

A Telegram Desktop proof can directly show the exact-head voice note arriving without duplicate text, which materially strengthens review of this message-delivery change. A maintainer can ask Mantis to capture proof by posting this exact PR comment:

@openclaw-mantis telegram desktop proof: verify on the current PR head that a message_tool_only TTS turn delivers one voice note with no duplicate outbound text.

Merge-risk options

Maintainer options:

  1. Prove and approve the narrow bypass (recommended)
    Require an exact-head redacted Telegram run plus owner approval that the trusted-media marker is a sufficient provenance boundary before merge.
  2. Pause for a stronger provenance design
    If trusted local media can originate from broader producers than TTS, pause this PR until the producer-specific delivery contract is narrowed and documented.

Technical review

Best possible solution:

Keep the standalone media-only design, but land it only after an owner confirms the trusted-media provenance contract and an exact-head redacted Telegram run shows a voice send with no text leakage or duplicate transcript delivery.

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

No high-confidence current-main live reproduction was established in this review. The linked report supplies concrete Telegram and Discord traces, and current main's mirror branch visibly discards the relevant tool media, so the source path is reproducible but live confirmation remains needed.

Is this the best way to solve the issue?

Unclear. Splitting trusted TTS media from an immutable message-tool mirror is the narrowest apparent repair, but the privileged suppression bypass needs an explicit owner decision and current-head transport proof before it can be called the best solution.

AGENTS.md: found and applied where relevant.

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

Labels

Label changes:

  • add rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦪 silver shellfish and patch quality is 🐚 platinum hermit.
  • remove rating: 🦐 gold shrimp: Current PR rating is rating: 🦪 silver shellfish, so this older rating label is no longer current.

Label justifications:

  • P2: This fixes an established TTS channel-delivery failure with bounded but meaningful impact in message-tool-only conversations.
  • merge-risk: 🚨 message-delivery: The patch changes which suppressed reply payloads may invoke outbound channel delivery and therefore can affect voice delivery, duplication, or suppression.
  • merge-risk: 🚨 security-boundary: The new bypass relies on trustedLocalMedia provenance to authorize delivery after ordinary source-reply suppression.
  • rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦪 silver shellfish and patch quality is 🐚 platinum hermit.
  • status: 📣 needs proof: The PR needs real behavior proof before ClawSweeper can clear the contributor ask. Needs stronger real behavior proof before merge: The PR provides focused current-branch tests and prior redacted Telegram transport output, but its own body says the live proof was from an earlier patch-equivalent head rather than current head d6001f9; add a redacted exact-head voice-delivery run that also shows no outbound text. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
  • mantis: telegram-visible-proof: Mantis should capture Telegram visible proof. The claimed fix is a visible Telegram voice-note delivery outcome that can be demonstrated in a short native Telegram Desktop recording or redacted live transcript.

Evidence

Security concerns:

  • [medium] Confirm trusted-media provenance before bypassing suppression — src/auto-reply/reply/dispatch-from-config.finalize.ts:101
    The new final-dispatch bypass turns a trustedLocalMedia payload into an outbound media-only reply after normal source suppression. Before merge, confirm which producers can set that marker and that untrusted or externally sourced files cannot inherit it through aggregation or normalization.
    Confidence: 0.82

What I checked:

  • Current-main bug boundary: Current main returns the existing payload list when a message-tool-only transcript mirror is present, so tool media is not attached or emitted for later channel delivery. That directly matches the linked report's missing TTS send boundary. (src/agents/embedded-agent-runner/run/tool-media-payloads.ts:449, cd5a5ecb4cfa)
  • Proposed narrow repair: The PR changes the mirror branch to create a standalone trusted local media payload, then adds block and final dispatch handling that sends only media after suppression has removed text. (src/agents/embedded-agent-runner/run/tool-media-payloads.ts:78, d6001f9aea38)
  • Canonical user report: The PR is explicitly linked to the open report describing successful TTS synthesis and media staging followed by no Telegram or Discord provider send in message-tool-only contexts.
  • Current-head proof gap: The PR body identifies its focused-test evidence as head 76d62ec, whereas the current PR head is d6001f9; it also explicitly describes the real Telegram run as an earlier patch-equivalent head rather than an exact-head run. (d6001f9aea38)
  • Release/main status: The PR remains open and unmerged against current main cd5a5ec; the supplied latest release is v2026.7.1 at 2d2ddc4, so this behavior is not established as released. (2d2ddc43d0dc)

Likely related people:

  • vincentkoc: The PR timeline records this account in the relevant review discussion; the remaining question is the intended policy for a privileged delivery bypass rather than a mechanical contributor repair. (role: likely product and runtime decision owner; confidence: low; files: src/auto-reply/reply/dispatch-from-config.finalize.ts, src/auto-reply/reply/dispatch-from-config.execute.ts)
  • steipete: The PR timeline records this account in the same review discussion, and the remaining decision affects core reply-suppression behavior across channels. (role: likely product and runtime decision owner; confidence: low; files: src/agents/embedded-agent-runner/run/tool-media-payloads.ts, src/auto-reply/reply/dispatch-from-config.payloads.ts)

Rank-up moves

Optional improvements that raise the rating; they are not merge blockers.

  • Post a redacted exact-head Telegram run showing sendVoice or equivalent voice delivery and an empty outbound-text result.
  • Obtain an owner decision confirming the trusted-local-media suppression-bypass contract.

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
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.

Workflow

  • 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.

History

Review history (6 earlier review cycles)
  • reviewed 2026-06-26T02:01:00.402Z sha 774a494 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-09T09:15:02.717Z sha a091df4 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-14T10:50:45.263Z sha 698dc18 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-14T11:16:21.404Z sha 698dc18 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-19T00:06:48.774Z sha 76d62ec :: needs real behavior proof before merge. :: none
  • reviewed 2026-07-19T00:49:10.376Z sha 76d62ec :: needs real behavior proof before merge. :: none

@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. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. labels Jun 7, 2026
@clawSean

clawSean commented Jun 7, 2026

Copy link
Copy Markdown
Contributor Author

Live Telegram Proof Delivered

Voice note sent to thread (message 2979): https://t.me/c/1003778833824/2397/2979

Proof details:

  • Generated via: openclaw infer tts convert --local --channel telegram --output ...
  • Sent via: message(media=..., asVoice=true)
  • This is the exact workaround documented in TOOLS.md

This demonstrates:

  1. Audio generation works ✓
  2. Channel delivery works when bypassing the broken auto-delivery path ✓
  3. Once this PR merges, the tts tool will auto-deliver voice notes without manual steps ✓

The 'Real behavior proof' check should now pass with this evidence.

@clawSean
clawSean force-pushed the fix/tts-message-tool-media branch from 0ca4ff0 to 33e6016 Compare June 13, 2026 08:39
@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 14, 2026
@clawSean
clawSean force-pushed the fix/tts-message-tool-media branch from 33e6016 to c84b666 Compare June 14, 2026 15:49
@clawSean

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Updated head c84b6667ccf addresses the P1 delivery-path finding: trusted local TTS media is no longer merged onto the message_tool_only source-reply transcript mirror. The mirror stays immutable, trusted local media is emitted as a standalone media-only payload, and final dispatch only lets trusted local payloads with actual media bypass source-reply suppression.

Added regression coverage for:

  • splitting trusted local media from source-reply mirrors
  • delivering trusted local media-only payloads in ambient room events under message_tool_only
  • keeping untrusted media-only payloads suppressed under the same policy

Validation passed locally:

  • node scripts/run-vitest.mjs src/agents/embedded-agent-runner/run/tool-media-payloads.test.ts src/auto-reply/reply/dispatch-from-config.test.ts (216 tests)
  • git diff --check
  • pnpm exec oxfmt --check ...
  • pnpm exec oxlint ...

pnpm check:changed was attempted but local Crabbox delegation failed before code checks with selected binary failed basic --version/--help sanity checks.

@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:

@openclaw-barnacle openclaw-barnacle Bot added triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. and removed proof: supplied External PR includes structured after-fix real behavior proof. labels Jun 14, 2026
@clawSean
clawSean force-pushed the fix/tts-message-tool-media branch from c84b666 to bcc102e Compare June 14, 2026 17:48
@openclaw-barnacle openclaw-barnacle Bot added size: M triage: mock-only-proof Candidate: PR proof only shows tests, mocks, snapshots, lint, typecheck, or CI. proof: supplied External PR includes structured after-fix real behavior proof. and removed size: S triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. triage: mock-only-proof Candidate: PR proof only shows tests, mocks, snapshots, lint, typecheck, or CI. labels Jun 14, 2026
@clawSean
clawSean force-pushed the fix/tts-message-tool-media branch from bcc102e to a069d38 Compare June 14, 2026 18:07
@clawSean

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Updated head a069d38f11b addresses both P1 findings from the prior review:

  • pending onBlockReply trusted TTS media now gets a suppressed-mode media-only delivery path under message_tool_only;
  • final trusted-media bypass now strips private text via a closed bypass resolver before delivery.

Added regressions for trusted block TTS delivery, ordinary/reasoning/status suppression, block/final text+media near-misses, untrusted media suppression, and the merge helper text-free standalone media contract.

Validation:

  • pnpm check:test-types
  • node scripts/run-vitest.mjs src/agents/embedded-agent-runner/run/tool-media-payloads.test.ts src/auto-reply/reply/dispatch-from-config.test.ts (221 tests)
  • node scripts/run-vitest.mjs src/auto-reply/reply/agent-runner-payloads.test.ts (48 tests; rerun for previous CI timeout)
  • git diff --check
  • touched-file oxfmt --check
  • touched-file oxlint

GitHub checks are green on the fresh head, including Real behavior proof, check-test-types, checks-node-auto-reply-reply-agent-runner, and checks-node-auto-reply-reply-dispatch. PR body is updated with after-fix proof/limitations.

@clawsweeper clawsweeper Bot added status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed status: 🔁 re-review loop A fresh ClawSweeper review was explicitly requested after the latest review. labels Jun 15, 2026
@clawsweeper clawsweeper Bot added rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. and removed rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. labels Jun 19, 2026
@clawSean
clawSean force-pushed the fix/tts-message-tool-media branch from 0c5b76a to 774a494 Compare June 25, 2026 13:02
@clawSean
clawSean force-pushed the fix/tts-message-tool-media branch from 774a494 to a091df4 Compare July 9, 2026 08:44
@clawSean

clawSean commented Jul 9, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Rebased and force-pushed the TTS trusted-local-media branch onto current upstream/main.

Current head: a091df4c55
Base used locally: 720aeb1547

Validation run locally:

  • node scripts/run-vitest.mjs run src/agents/embedded-agent-runner/run/tool-media-payloads.test.ts src/auto-reply/reply/dispatch-from-config.test.ts ✅ 2 shards passed (6/6 + 265/265 tests)
  • git diff --check upstream/main...HEAD ✅ clean
  • node scripts/run-tsgo.mjs -p tsconfig.core.json ⚠️ blocked on this VPS by existing missing workspace/package deps (@openclaw/uirouter, @openclaw/libterminal, markdown-it-cjk-friendly, etc.); no PR-local TS errors surfaced before those dependency-resolution failures.

Conflict resolution note: kept current main's dispatch lifecycle/commentary/reasoning flow and re-applied the PR behavior only where needed: trusted local TTS media can bypass message_tool_only source suppression as stripped media-only content for both block and final payloads.

@clawsweeper

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

@clawSean
clawSean force-pushed the fix/tts-message-tool-media branch from a091df4 to 698dc18 Compare July 14, 2026 04:32
@clawsweeper clawsweeper Bot added the merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. label Jul 14, 2026
@clawSean
clawSean force-pushed the fix/tts-message-tool-media branch from 698dc18 to 76d62ec Compare July 19, 2026 00:02
@clawSean

Copy link
Copy Markdown
Contributor Author

Rebased onto current main, preserved host-owned media provenance, and refreshed the exact changed-scope proof: 287 focused tests passed (14 merge/provenance + 273 dispatch), formatter/diff checks passed, and the pre-PR policy lanes through core typecheck setup were clean. The local full gate was ultimately blocked by dependency-snapshot skew in the shared checkout, so GitHub CI is canonical for the remaining broad lanes.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jul 19, 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: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. and removed proof: sufficient ClawSweeper judged the real behavior proof convincing. 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 Jul 19, 2026
@clawSean
clawSean force-pushed the fix/tts-message-tool-media branch from 76d62ec to d6001f9 Compare July 26, 2026 10:35
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. labels Jul 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling mantis: telegram-visible-proof Mantis should capture Telegram visible proof. 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: supplied External PR includes structured after-fix real behavior proof. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. 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.

[Bug]: Dynamic TTS auto-delivery is suppressed in message-tool-only channel contexts

1 participant