Skip to content

Chat: render in-bubble Allow/Deny approval banner + harden plumbing - #567

Merged
kmahone merged 9 commits into
openclaw:masterfrom
RBrid:user/rbrid/ChatImprovements1
Jun 2, 2026
Merged

Chat: render in-bubble Allow/Deny approval banner + harden plumbing#567
kmahone merged 9 commits into
openclaw:masterfrom
RBrid:user/rbrid/ChatImprovements1

Conversation

@RBrid

@RBrid RBrid commented May 28, 2026

Copy link
Copy Markdown
Contributor

Renders the gateway-side exec.approval.requested event as an inline Allow/Deny banner inside the assistant's chat bubble, instead of relying solely on the dashboard modal. Also hardens the chat data-provider plumbing, fixes a contrast bug in the setup wizard's pending-step circle, and fixes a combo-box population bug that surfaced after a gateway reset.

What

  • In-bubble approval banner: OpenClawChatDataProvider surfaces pending exec.approval.requested permissions as inline content blocks rendered directly in the assistant message bubble. Allow/Deny actions route back through the existing approval lifecycle via /approve <slug> allow-once or /deny <slug> slash commands, and the banner clears on phase=resolved.
  • Content-block seam repair: When the gateway streams text fragments around a permission block, the provider stitches the pre/post text into a single bubble so the banner appears mid-sentence rather than splitting into separate bubbles. Tightened the seam regex to stop shredding identifiers like Path.Combine / System.IO.File. New ContentBlockSeamRepairTests cover positive and negative fixtures.
  • Plumbing hardening: Echo suppression, slash-command dispatch (with strict regex), approval LRU lifecycle, and IChatGatewayBridge subscribe-first-then-reconcile pattern around the new approval path.
  • Combo-box population on first run / post-gateway-reset: The setup wizard / connection page combo box no longer comes up empty when the tray app starts after an OpenClaw Gateway reset; the model/agent selection list is repopulated correctly on that path.
  • Setup wizard circle contrast fix: ProgressPage pending-step badge now uses the theme-aware ControlStrongStrokeColorDefaultBrush instead of a hard-coded translucent white that was invisible on light backgrounds.

Why

The dashboard ContentDialog approval modal is easy to miss when the chat window has focus. Rendering the prompt inline keeps the user in flow and matches the gateway's intent of streaming the approval request alongside the agent's response. The combo-box and contrast fixes were small drive-bys on the same branch — the pending-step ring was effectively invisible in light mode, and the combo box was reproducibly empty after a gateway reset.

Validation

  • ./build.ps1
  • OpenClaw.Shared.Tests: 2023 passed / 29 skipped ✅
  • OpenClaw.Tray.Tests: 890 passed (2 pre-existing StartupSetupStateTests failures unrelated to this branch)

Review

Went through 5 rounds of adversarial dual-model review (Opus + Codex) before commit. All consensus HIGH findings addressed.

RBrid and others added 2 commits May 27, 2026 19:30
Render gateway-emitted exec.approval.requested events as an interactive
banner in the chat composer (header + plain-English subtitle + monospace
command + caption + Allow/Deny buttons), matching the dashboard modal
experience but inline. Allow/Deny posts a /approve <slug> allow-once or
/deny <slug> slash command back to the gateway; the banner clears on
phase=resolved.

Feature
- ChatTimelineReducer: preserve PendingPermission across follow-on
  tool item events (previously wiped ~1ms after set).
- OpenClawChatDataProvider: full approval lifecycle (map requested,
  track id-asymmetry between approvalSlug and approvalId, clear on
  positive request-id match only).
- OpenClawComposer + Resources.resw (en, fr, nl, zh-CN, zh-TW):
  banner copy + Allow/Deny buttons.

Plumbing hardening
- Slash-command echo handling: pre-register /approve|/deny in the
  local-echo queue when sent, suppress on our own echo, surface
  remote-issued slashes as dim audit-trail status entries (instead of
  rendering them as user bubbles). chat.history rebuild applies the
  same audit rendering. FetchRemoteUserMessage filters slash commands.
- Slash matcher uses a strict regex
  (^/(?:approve\s+[A-Za-z0-9_-]{4,64}(?:\s+allow-once)?|deny\s+...)$)
  to avoid accidentally suppressing user text that starts with /approve.
- ClearPendingPermissionAndPublish takes an expectedRequestId so a
  fresh approval that arrives between the user's tap and the post-send
  clear is not stomped.
- Terminal-clear path inverted to clear only on positive id match;
  empty or no-match -> preserve banner + log.
- Approval LRU is instance-scoped, cleared on disconnect; alt-id map
  shares LRU eviction with the dedupe set.
- On RespondToPermissionAsync send failure: remove the pre-registered
  slash entry from the local-echo queue so it doesn't block subsequent
  echo consumption for 30s.
- IChatGatewayBridge: subscribe-first-then-reconcile ctor pattern with
  an idempotent Disconnected seed so an in-flight Connecting edge is
  preserved.

Content-block seam repair
- Tighten the s_seamSentencePunct regex to require a multi-char
  trailing Pascal word AND a non-EOS terminator
  ((?<=[a-z0-9][.!?:])(?=[A-Z][a-z]+[\s,;:!?])). Eliminates a class of
  false positives where the regex was shredding identifiers like
  Path.Combine and System.IO.File. Add ContentBlockSeamRepairTests
  with both positive and negative fixtures.
- char.ToUpper -> char.ToUpperInvariant on agent labels in
  OpenClawChatRoot to keep label casing stable across locales.

Tests
- ContentBlockSeamRepairTests (new): positive seam-repair cases from
  real Sonnet/Opus captures + negative EOS fixtures.
- ChatTimelineReducerTests, OpenClawChatDataProviderTests,
  ToolMetaCacheTests: extend coverage of new lifecycle paths.

ProgressPage.xaml.cs: minor unrelated tidy that was on the branch.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@clawsweeper

clawsweeper Bot commented May 28, 2026

Copy link
Copy Markdown

Codex review: needs changes before merge. Reviewed June 1, 2026, 3:46 PM ET / 19:46 UTC.

Summary
The branch adds inline chat approval timeline entries with Allow/Deny routing, proactive chat bootstrap, seam repair, setup badge contrast, localized strings, and tray tests.

Reproducibility: yes. from source inspection: the PR clears PendingPermission and stamps Allowed/Denied immediately after sending the slash command, while terminal approval handling only checks PendingPermission. I did not run the Windows app because this review is read-only.

Review metrics: 2 noteworthy metrics.

  • Changed surface: 17 files, +1428/-70. The approval security flow, chat bootstrap, seam repair, setup badge contrast, localization, and tests are bundled into one merge decision.
  • Approval code paths: 3 core files changed. The PR changes the provider, reducer, and timeline renderer that together decide what the user sees for command approvals.

Merge readiness
Overall: 🧂 unranked krab
Proof: 🦞 diamond lobster
Patch quality: 🧂 unranked krab
Result: blocked by patch quality or review findings.

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

Rank-up moves:

  • [P2] Fix the approval lifecycle so gateway terminal events confirm or correct the final badge.
  • [P2] Add regression coverage for allow, deny, expiry/timeout, rejected/error, and mismatched approval ids.
  • [P2] Refresh redacted runtime proof after the lifecycle fix.

Mantis proof suggestion
A short visible desktop proof with redacted logs would materially help verify the approval banner and terminal-state behavior after the lifecycle fix. A maintainer can ask Mantis to capture proof by posting a new PR comment that starts with the OpenClaw Mantis account mention, followed by:

visual task: verify native chat Allow/Deny approval banner waits for gateway resolution and shows the correct terminal state.

Risk before merge

  • [P1] Merging as-is can show an approval as Allowed or Denied after the local slash command is sent even if the gateway later rejects, times out, errors, or resolves a different approval.
  • [P1] Because local approval slash echoes are suppressed, the timeline can lose the visible correction path once PendingPermission has been cleared.

Maintainer options:

  1. Gate badges on gateway resolution (recommended)
    Keep the approval entry pending or in an awaiting-confirmation state after the slash command send, then stamp Allowed, Denied, or Expired only from a matching gateway terminal event.
  2. Accept optimistic local semantics explicitly
    Maintainers can intentionally accept that the badge means the local slash command was sent rather than the gateway approved it, but that should be a visible product/security decision before merge.
Copy recommended automerge instruction
@clawsweeper automerge

Special instructions:
Fix the native chat approval lifecycle so RespondToPermissionAsync does not permanently stamp Allowed/Denied until a matching gateway terminal approval event confirms the outcome, and add focused regression tests for allow, deny, timeout/expiry, rejected/error, and mismatched approval ids.

Next step before merge

  • [P2] The remaining blocker is a narrow approval lifecycle repair with clear files and tests; automation can attempt it on the PR branch before maintainer merge review continues.

Security
Needs attention: The patch introduces a concrete command-approval UI security concern because local send success can be displayed as a final approval decision.

Review findings

  • [P1] Wait for gateway approval resolution before stamping decisions — src/OpenClaw.Tray.WinUI/Chat/OpenClawChatDataProvider.cs:898-899
Review details

Best possible solution:

Land the inline approval UI after matching gateway terminal events drive or correct the final approval badge, with regression tests for allow, deny, timeout/expiry, rejection, and mismatched approval ids.

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

Yes, from source inspection: the PR clears PendingPermission and stamps Allowed/Denied immediately after sending the slash command, while terminal approval handling only checks PendingPermission. I did not run the Windows app because this review is read-only.

Is this the best way to solve the issue?

No. The maintainable path is to keep a pending/awaiting state until a matching gateway terminal event confirms the outcome, or to allow that event to correct an optimistic state.

Full review comments:

  • [P1] Wait for gateway approval resolution before stamping decisions — src/OpenClaw.Tray.WinUI/Chat/OpenClawChatDataProvider.cs:898-899
    RespondToPermissionAsync calls ClearPendingPermissionAndPublish as soon as SendChatMessageAsync returns, which removes PendingPermission and marks the timeline Allowed/Denied. The terminal approval handler later reads only PendingPermission, and ResolvePermission refuses to overwrite already-decided entries, so a timeout, rejection, error, or mismatched resolution cannot correct the badge.
    Confidence: 0.92

Overall correctness: patch is incorrect
Overall confidence: 0.91

AGENTS.md: found and applied where relevant.

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

Label changes

Label changes:

  • add P1: The PR changes a command-execution approval boundary and can misrepresent the gateway's final approval outcome.
  • add rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🦞 diamond lobster and patch quality is 🧂 unranked krab.
  • remove P2: Current review triage priority is P1, so this older priority label is no longer current.
  • remove rating: 🦪 silver shellfish: Current PR rating is rating: 🧂 unranked krab, so this older rating label is no longer current.

Label justifications:

  • P1: The PR changes a command-execution approval boundary and can misrepresent the gateway's final approval outcome.
  • merge-risk: 🚨 message-delivery: Approval slash-command echo suppression plus optimistic clearing can hide or misstate the delivered approval lifecycle in the chat timeline.
  • merge-risk: 🚨 security-boundary: The inline Allow/Deny UI is part of the command-execution approval boundary and currently treats local send success as a final decision.
  • rating: 🧂 unranked krab: Overall readiness is 🧂 unranked krab; proof is 🦞 diamond lobster and patch quality is 🧂 unranked krab.
  • status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action. Sufficient (logs): The PR discussion includes after-change screenshots and approval logs showing the native approval UI, effective approval, and expired approval behavior in a real setup.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR discussion includes after-change screenshots and approval logs showing the native approval UI, effective approval, and expired approval behavior in a real setup.
Evidence reviewed

Security concerns:

  • [high] Approval badge can misrepresent gateway outcome — src/OpenClaw.Tray.WinUI/Chat/OpenClawChatDataProvider.cs:898
    The native chat timeline can show Allowed or Denied before the gateway emits a matching terminal approval event, and later terminal events cannot correct the badge once PendingPermission is cleared.
    Confidence: 0.9

Acceptance criteria:

  • [P1] ./build.ps1.
  • [P1] dotnet test ./tests/OpenClaw.Shared.Tests/OpenClaw.Shared.Tests.csproj --no-restore.
  • [P1] dotnet test ./tests/OpenClaw.Tray.Tests/OpenClaw.Tray.Tests.csproj --no-restore.

What I checked:

  • Current main does not implement the requested chat approval response path: On current master, RespondToPermissionAsync is still a no-op, so the PR is not obsolete on main. (src/OpenClaw.Tray.WinUI/Chat/OpenClawChatDataProvider.cs:810, 1d58d59673c9)
  • PR stamps local approval immediately after sending the slash command: RespondToPermissionAsync calls ClearPendingPermissionAndPublish with Allowed or Denied immediately after SendChatMessageAsync succeeds. (src/OpenClaw.Tray.WinUI/Chat/OpenClawChatDataProvider.cs:898, aaf055bb9e2b)
  • Gateway terminal events cannot correct after the local clear: The approval terminal handler only reads the live PendingPermission request id; once the local clear removes it, later resolved/expired/error events log no PendingPermission instead of correcting the timeline badge. (src/OpenClaw.Tray.WinUI/Chat/OpenClawChatDataProvider.cs:1418, aaf055bb9e2b)
  • Reducer intentionally refuses to overwrite decided entries: ResolvePermission breaks without updating when the matching permission entry is already non-Pending, which makes optimistic Allowed/Denied badges sticky against later gateway backstop events. (src/OpenClaw.Chat/ChatTimelineReducer.cs:95, aaf055bb9e2b)
  • Contributor supplied real behavior proof: The PR comments include screenshots for native approval UI, dashboard parity, combo population, light-theme badge contrast, expired approval behavior, effective approval, and redacted approval logs. (aaf055bb9e2b)
  • Repository policy was inspected: AGENTS.md was read in full; because this is a read-only review, validation commands were not run, and the connection/tray UX guidance prompted inspection of the connection and onboarding docs. (AGENTS.md:1, 1d58d59673c9)

Likely related people:

  • Régis Brid: Introduced the merged native FunctionalUI chat experience that owns these provider, reducer, timeline, composer, and test paths; included here due to prior merged history, not merely this PR. (role: feature owner; confidence: high; commits: 08cab69a038c, b0ba9affa25d, f2fa038bd080; files: src/OpenClaw.Tray.WinUI/Chat, src/OpenClaw.Chat, tests/OpenClaw.Tray.Tests)
  • Scott Hanselman: Current-main blame and file history show recent ownership of the chat provider/reducer files and a later chat timeline fix on master. (role: recent area contributor; confidence: high; commits: aaf50b758504, 15e26493a8b9, 50837d79ecc2; files: src/OpenClaw.Tray.WinUI/Chat/OpenClawChatDataProvider.cs, src/OpenClaw.Chat/ChatTimelineReducer.cs, src/OpenClaw.Tray.WinUI/Chat/OpenClawChatTimeline.cs)
  • Ranjesh Jaganathan: Recent native chat UX/performance and warning-clean build work touched adjacent chat UI surfaces that this PR also changes. (role: adjacent chat contributor; confidence: medium; commits: 131154c13013, a727197dd709, 6bbc74b6d448; files: src/OpenClaw.Tray.WinUI/Chat/OpenClawChatTimeline.cs, src/OpenClaw.Tray.WinUI/Chat/OpenClawComposer.cs)
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.

@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. P2 Normal priority bug or improvement with limited blast radius. merge-risk: 🚨 message-delivery 🚨 Merging this PR could drop, duplicate, misroute, suppress, or wrongly target messages. merge-risk: 🚨 security-boundary 🚨 Merging this PR could weaken sandboxing, authorization, credentials, or sensitive data. labels May 28, 2026
@RBrid

RBrid commented May 28, 2026

Copy link
Copy Markdown
Contributor Author

Screenshot of initial combo boxes population on first start:
image

Visible circles in light theme:
image

Fixed content-block seam:
image

Gateway approval request UI in the Dashboard for reference:
image

Native chat approval UI:
image

@clawsweeper

clawsweeper Bot commented May 28, 2026

Copy link
Copy Markdown

ClawSweeper PR egg

🎁 Pass real behavior proof to wake the egg and unlock a hatchable treat.

Where did the egg go?
  • The egg game starts only after the PR passes the real-behavior proof check.
  • Before that, no creature or rarity is rolled. The treat waits for real proof.
  • This is still just collectible flavor: proof affects review readiness, not creature quality.

@clawsweeper clawsweeper Bot added rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. and removed 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. labels May 28, 2026
RBrid and others added 2 commits May 28, 2026 10:40
…d enforcement

Master enabled TreatWarningsAsErrors (commit 6bbc74b "eng: enforce
warning-clean builds"). After merging master, the existing
`effectiveThread.Id` usage in the composer construction and its lambda
callbacks tripped CS8604 because `ChatThread.Id` is typed `string?`
even though the surrounding `effectiveThread is not null` guard
implies it's safe to access.

Add `!` null-forgiving operators to `effectiveThread.Id` in the
composer props (ChannelId, synthetic ChannelGroup Sessions entry) and
in the OnSend/OnStop/OnPermissionResponse/OnModelChanged/
OnThinkingLevelChanged/OnPermissionsChanged callbacks so the build
stays clean under the new warning-as-error policy.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@clawsweeper clawsweeper Bot added proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. 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. and removed rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. labels May 28, 2026
RBrid and others added 2 commits May 28, 2026 11:37
The [ChatTrace] log line included a stable FNV-1a hash of every chat
message so two near-duplicate frames could be told apart while hunting
the duplicate-bubble bug. ClawSweeper flagged that a stable content-
derived hash is itself a content fingerprint: anyone with the log can
rainbow-table common short messages back to their hash and confirm
what was sent.

Keep the diagnostic by seeding FNV-1a with a per-process random uint
from RandomNumberGenerator. Within one tray run, identical text still
collides (so duplicate-frame detection still works), but the hash is
not reproducible from a guessed plaintext and rotates on every restart.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Approval requests previously rendered as a floating bubble pinned above
the composer, which made them disappear from history once resolved and
made it impossible to scroll back to confirm what was approved/denied.
This change folds the approval flow into ChatTimelineReducer so each
request becomes a real ChatTimelineItem alongside user/assistant/tool
entries.

Reducer changes (OpenClaw.Chat):
- New ChatTimelineItemKind.PermissionRequest and ChatPermissionDecision
  enum (Pending/Allowed/Denied/Expired).
- ApplyPermissionRequest expires any prior Pending entries, appends the
  new request, and sets PendingPermission. Empty/whitespace RequestId
  events are dropped to avoid orphaning a Pending entry whose buttons
  are permanently disabled.
- ResolvePermission stamps the matching entry without downgrading an
  already-decided one (gateway backstop events can't clobber a local
  Allow/Deny click). Mismatched RequestId is a no-op for both entries
  and PendingPermission.
- ClearPermission delegates to ResolvePermission(Expired).

WinUI changes:
- RenderPermissionEntry in OpenClawChatTimeline renders the live bubble
  (Allow/Deny buttons) and decided badges (Allowed / Denied / Expired)
  inline. Decided detail is truncated at 120 chars with surrogate-safe
  boundary handling so emoji/CJK supplementary chars don't render as
  U+FFFD.
- AutomationProperties.Name on Allow/Deny buttons and the decided badge
  so screen readers hear 'Allow shell.exec' / 'Allowed run script.sh'
  instead of bare glyphs. Omits the suffix when no IntentSummary is set
  to avoid awkward 'Allow Approval needed' phrasing.
- OpenClawComposer no longer renders the floating bubble.
- OpenClawChatRoot's isEmptyConversation guard documents that the
  pendingPermissionOverride check is now preview-only (live data always
  has entries.Count > 0 when PendingPermission != null).

Localization:
- Added Chat_Permission_DecisionAllowed/Denied/Expired keys in all five
  locales (en-us, fr-fr, nl-nl, zh-cn, zh-tw).

Tests: +ResolvePermission_MismatchedRequestId_NoOp,
+ApplyPermissionRequest_EmptyRequestId_DroppedToAvoidOrphanedEntry,
and extended ResolvePermission_Denied_StampsEntry with a
PendingPermission null-assertion.

Validated: ./build.ps1, Shared 2023/29 skipped, Tray 897/0.

Addresses ClawSweeper feedback on PR openclaw#567 plus two rounds of
adversarial code review (Opus 4.6 + Sonnet 4.6).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@RBrid

RBrid commented May 28, 2026

Copy link
Copy Markdown
Contributor Author

A few more screenshots and logs for the approval process:

Gateway Node Configuration allowing approval prompts:
image

Side-by-side approval UI for the HTML Dashboard and Windows Companion:
image

Approval after expiration is ineffective:
image

Effective approval:
image

And the logs for that approval:

[2026-05-28 14:15:41.430] [INFO] [EVENT] Received event: exec.approval.requested
[2026-05-28 14:15:41.486] [DEBUG] Agent event received: stream=approval len=561
[2026-05-28 14:15:41.488] [INFO] [Approval] emitting ChatPermissionRequestEvent requestId=15bdf574 kind='Command approval requested' tool='node' detail.len=36
[2026-05-28 14:15:48.718] [INFO] [Approval] user response requestId=15bdf574 decision=allow-once thread='agent:main:main'
[2026-05-28 14:15:48.723] [INFO] [Approval] clearing PendingPermission requestId='15bdf574' on thread='agent:main:main' decision=Allowed
[2026-05-28 14:15:48.871] [INFO] [EVENT] Received event: exec.approval.resolved
[2026-05-28 14:15:48.989] [DEBUG] [NODE RX] node.invoke.request system.run … "approved":true,"approvalDecision":"allow-once"
[2026-05-28 14:15:49.058] [INFO] [EXEC-POLICY] DEFAULT Allow: 'cmd.exe /d /s /c "del "E:\Temp\CCOCRJaWithTiling4.txt""'

@RBrid

RBrid commented May 28, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented May 28, 2026

Copy link
Copy Markdown

🦞🧹
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:

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@clawsweeper clawsweeper Bot added proof: sufficient Contributor real behavior proof is sufficient. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. and removed proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels May 28, 2026
@clawsweeper clawsweeper Bot added status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels May 28, 2026
@RBrid
RBrid marked this pull request as ready for review May 28, 2026 21:48
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels May 28, 2026
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. P1 Urgent regression or broken agent/channel workflow affecting real users now. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. P2 Normal priority bug or improvement with limited blast radius. labels Jun 1, 2026
@kmahone
kmahone merged commit 7d9152f into openclaw:master Jun 2, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk: 🚨 message-delivery 🚨 Merging this PR could drop, duplicate, misroute, suppress, or wrongly target messages. merge-risk: 🚨 security-boundary 🚨 Merging this PR could weaken sandboxing, authorization, credentials, or sensitive data. P1 Urgent regression or broken agent/channel workflow affecting real users now. proof: sufficient Contributor real behavior proof is sufficient. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. 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