Skip to content

fix(outbound): keep Discord runtime adapters resolvable#91119

Merged
clawsweeper[bot] merged 6 commits into
mainfrom
clawsweeper/automerge-openclaw-openclaw-90198
Jun 7, 2026
Merged

fix(outbound): keep Discord runtime adapters resolvable#91119
clawsweeper[bot] merged 6 commits into
mainfrom
clawsweeper/automerge-openclaw-openclaw-90198

Conversation

@clawsweeper

@clawsweeper clawsweeper Bot commented Jun 7, 2026

Copy link
Copy Markdown
Contributor

Makes #90198 merge-ready for the ClawSweeper automerge loop.
The edit pass should inspect the live PR diff, review comments, and failing checks; rebase if needed; keep the contributor branch credited; and stop only when validation is green or an external blocker is proven.

ClawSweeper 🐠 replacement reef notes:

  • Repair fallback: GitHub rejected the repair branch push because it updates workflow files and the ClawSweeper app token does not have workflows permission

Inherited issue-closing references from the source PR:
Closes #90162

Co-author credit kept:

fish notes: model gpt-5.5, reasoning high; reviewed against d5fe741.

@clawsweeper clawsweeper Bot added clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge clawsweeper Tracked by ClawSweeper automation labels Jun 7, 2026
@clawsweeper

clawsweeper Bot commented Jun 7, 2026

Copy link
Copy Markdown
Contributor Author

Codex review: passed. Reviewed June 7, 2026, 5:30 AM ET / 09:30 UTC.

Summary
The branch changes outbound channel bootstrap and resolution so delivery paths prefer send-capable runtime adapters from the selected or active registry, avoid setup-only shells for runtime delivery, retry non-send-capable bootstraps, and add regression tests.

PR surface: Source +121, Tests +294. Total +415 across 4 files.

Reproducibility: yes. The linked stable-release report supplies the user-visible Discord failure, and current main source still shows a setup-shell/direct-registry path that can satisfy runtime resolution before a send-capable adapter is verified.

Review metrics: none identified.

Merge readiness
Overall: 🦞 diamond lobster
Proof: 🦞 diamond lobster
Patch quality: 🦞 diamond lobster
Result: ready for maintainer review.

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

Risk before merge

  • [P1] This changes a hot outbound/plugin resolution path: delivery bootstrap no longer treats setup-only or actions-only channel shells as runtime-send-capable when bootstrap is requested.
  • [P1] Because final replies, delivery recovery, message actions, cron delivery, and gateway send paths all depend on the same adapter selection invariant, exact-head validation should stay green before merge.

Maintainer options:

  1. Merge after current-head delivery gates (recommended)
    Require the current head's outbound bootstrap/resolution, message-action, cron, and gateway send checks to pass before merging this compatibility-sensitive routing change.
  2. Pause for owner routing review
    If maintainers are not ready to accept setup-shell rejection on runtime delivery paths, pause for an owner review of the channel/plugin registry semantics.

Next step before merge

  • [P2] No repair lane is needed because this review found no discrete actionable defect; exact-head checks and automerge or human merge gates should handle the remaining risk.

Security
Cleared: The diff changes TypeScript outbound resolution code and tests only; it does not touch workflows, dependencies, package resolution, secrets, or release automation.

Review details

Best possible solution:

Merge the narrow runtime-resolution fix after current-head outbound/gateway validation, preserving read-only setup-shell behavior while making delivery use send-capable runtime adapters.

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

Yes. The linked stable-release report supplies the user-visible Discord failure, and current main source still shows a setup-shell/direct-registry path that can satisfy runtime resolution before a send-capable adapter is verified.

Is this the best way to solve the issue?

Yes. This is the narrowest maintainable fix I found: it keeps read-only setup-shell lookup intact while tightening only runtime delivery/bootstrap paths and mirroring the existing channel-registry-to-active-registry fallback contract.

AGENTS.md: found and applied where relevant.

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

Label changes

Label changes:

  • add rating: 🦞 diamond lobster: Overall readiness is 🦞 diamond lobster; proof is 🦞 diamond lobster and patch quality is 🦞 diamond lobster.
  • remove rating: 🐚 platinum hermit: Current PR rating is rating: 🦞 diamond lobster, so this older rating label is no longer current.

Label justifications:

  • P1: The PR fixes a reported Discord final-reply regression where agent turns can complete but user-visible replies are not delivered until recovery.
  • merge-risk: 🚨 compatibility: The diff changes plugin registry/bootstrap fallback semantics for runtime delivery versus setup/read-only channel surfaces.
  • merge-risk: 🚨 message-delivery: The diff directly changes outbound message adapter resolution that decides whether final replies send or fail as unconfigured.
  • rating: 🦞 diamond lobster: Overall readiness is 🦞 diamond lobster; proof is 🦞 diamond lobster and patch quality is 🦞 diamond lobster.
  • status: 🚀 automerge armed: This PR is in ClawSweeper's automerge lane. Sufficient (logs): The PR context includes redacted live Discord logs and API readback showing the after-fix final reply delivery path succeeded without the reported outbound-not-configured error.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR context includes redacted live Discord logs and API readback showing the after-fix final reply delivery path succeeded without the reported outbound-not-configured error.
Evidence reviewed

PR surface:

Source +121, Tests +294. Total +415 across 4 files.

View PR surface stats
Area Files Added Removed Net
Source 2 147 26 +121
Tests 2 299 5 +294
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 4 446 31 +415

What I checked:

  • Repository policy read: Read the full root AGENTS.md plus the scoped outbound and plugin guides; their hot-path, plugin registry, and compatibility guidance shaped the review. (AGENTS.md:6, c2d825ae534c)
  • Current main still has the risky resolver shape: Current main returns the loaded/direct-active/bundled plugin before checking whether it has a runtime send surface, and the message adapter resolver simply projects .message from that plugin. (src/infra/outbound/channel-resolution.ts:193, c2d825ae534c)
  • PR adds send-capable registry selection: The PR head adds send-capable message/runtime surface checks and searches the pinned channel registry before the distinct active registry, which addresses the selected-registry versus replacement-registry split. (src/infra/outbound/channel-resolution.ts:130, 8711ada0c43c)
  • PR keeps setup shells out of runtime delivery bootstrap: The PR head only returns setup shells when bootstrap is not requested; delivery/bootstrap callers require a runtime outbound or send-capable message surface after bootstrap. (src/infra/outbound/channel-resolution.ts:274, 8711ada0c43c)
  • PR fixes one-shot bootstrap misses: The bootstrap guard now keys on both channel and active registry versions and clears the attempt after a load that still does not make the channel send-capable. (src/infra/outbound/channel-bootstrap.runtime.ts:62, 8711ada0c43c)
  • Focused regression coverage exists: The PR adds tests for pinned message adapter lookup, metadata/setup shells, active runtime preference, non-send-capable bootstrap retry, and preserving read-only setup-shell lookup. (src/infra/outbound/channel-resolution.test.ts:166, 8711ada0c43c)

Likely related people:

  • Vincent Koc: Current main blame shows Vincent Koc created the present outbound channel-resolution and bootstrap runtime files, and recent symbol history includes the plugin-registry surfaces this PR changes. (role: recent area contributor; confidence: high; commits: 2fe7b5e8c98e, 97b60b992ca8; files: src/infra/outbound/channel-resolution.ts, src/infra/outbound/channel-bootstrap.runtime.ts, src/plugins/runtime-channel-state.ts)
  • Shakker: History shows Shakker introduced the lazy outbound channel bootstrap runtime that this PR modifies. (role: introduced adjacent bootstrap behavior; confidence: medium; commits: 4a0905b94b6c; files: src/infra/outbound/channel-bootstrap.runtime.ts)
  • GodsBoy: History shows GodsBoy changed channel registry loader behavior to use the pinned channel registry for outbound adapter resolution, which is the sibling invariant this PR extends to the sync resolver/bootstrap path. (role: adjacent registry-resolution contributor; confidence: medium; commits: bc9c074b2c17; files: src/channels/plugins/registry-loader.ts)
  • affsantos: History shows affsantos added the gateway/channel registry pinning behavior that makes selected-registry and active-registry divergence possible. (role: introduced pinned registry behavior; confidence: medium; commits: 3a4c86079861; files: src/plugins/runtime.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.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 🚀 automerge armed This PR is in ClawSweeper's automerge lane. P1 High-priority user-facing bug, regression, or broken workflow. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. labels Jun 7, 2026
@clawsweeper

clawsweeper Bot commented Jun 7, 2026

Copy link
Copy Markdown
Contributor Author

🦞✅
ClawSweeper merged this PR after the passing review.

Source: clawsweeper[bot]
Feedback: structured ClawSweeper verdict: pass (sha=8711ada0c43cb3edbdb39ecac68460360dae9aa3)
Merge status: merged by ClawSweeper automerge
Merged at: 2026-06-07T09:30:42Z
Merge commit: 58b68e92f2a5

What merged:

  • The branch changes outbound channel bootstrap and resolution so delivery paths prefer send-capable runtime a ... avoid setup-only shells for runtime delivery, retry non-send-capable bootstraps, and add regression tests.
  • PR surface: Source +121, Tests +294. Total +415 across 4 files.
  • Reproducibility: yes. The linked stable-release report supplies the user-visible Discord failure, and curren ... p-shell/direct-registry path that can satisfy runtime resolution before a send-capable adapter is verified.

Automerge notes:

  • PR branch already contained follow-up commit before automerge: fix(outbound): keep Discord runtime adapters resolvable
  • PR branch already contained follow-up commit before automerge: fix(clawsweeper): reconcile automerge-openclaw-openclaw-90198 with ma…

The automerge loop is complete.

Automerge progress:

  • 2026-06-07 08:28:52 UTC review requested repair d5fe7414c6d5 (structured ClawSweeper marker: fix-required (finding=review-feedback sha=d5fe74...)
  • 2026-06-07 09:03:45 UTC review queued 8711ada0c43c (after repair)
  • 2026-06-07 09:30:32 UTC review passed 8711ada0c43c (structured ClawSweeper verdict: pass (sha=8711ada0c43cb3edbdb39ecac68460360dae9...)
  • 2026-06-07 09:23:07 UTC review queued 8711ada0c43c (queued)
  • 2026-06-07 09:30:44 UTC merged 8711ada0c43c (merged by ClawSweeper automerge)

@clawsweeper clawsweeper Bot force-pushed the clawsweeper/automerge-openclaw-openclaw-90198 branch from d5fe741 to 8711ada Compare June 7, 2026 09:03
@clawsweeper clawsweeper Bot added 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. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. labels Jun 7, 2026
@clawsweeper clawsweeper Bot merged commit 58b68e9 into main Jun 7, 2026
175 of 179 checks passed
@clawsweeper clawsweeper Bot deleted the clawsweeper/automerge-openclaw-openclaw-90198 branch June 7, 2026 09:30
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jun 8, 2026
Summary:
- The branch changes outbound channel bootstrap and resolution so delivery paths prefer send-capable runtime a ...  avoid setup-only shells for runtime delivery, retry non-send-capable bootstraps, and add regression tests.
- PR surface: Source +121, Tests +294. Total +415 across 4 files.
- Reproducibility: yes. The linked stable-release report supplies the user-visible Discord failure, and curren ... p-shell/direct-registry path that can satisfy runtime resolution before a send-capable adapter is verified.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(outbound): keep Discord runtime adapters resolvable
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): reconcile automerge-openclaw-openclaw-90198 with ma…

Validation:
- ClawSweeper review passed for head 8711ada.
- Required merge gates passed before the squash merge.

Prepared head SHA: 8711ada
Review: openclaw#91119 (comment)

Co-authored-by: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: thewilloftheshadow
Co-authored-by: thewilloftheshadow <35580099+thewilloftheshadow@users.noreply.github.com>
wangmiao0668000666 pushed a commit to wangmiao0668000666/openclaw that referenced this pull request Jun 9, 2026
Summary:
- The branch changes outbound channel bootstrap and resolution so delivery paths prefer send-capable runtime a ...  avoid setup-only shells for runtime delivery, retry non-send-capable bootstraps, and add regression tests.
- PR surface: Source +121, Tests +294. Total +415 across 4 files.
- Reproducibility: yes. The linked stable-release report supplies the user-visible Discord failure, and curren ... p-shell/direct-registry path that can satisfy runtime resolution before a send-capable adapter is verified.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(outbound): keep Discord runtime adapters resolvable
- PR branch already contained follow-up commit before automerge: fix(clawsweeper): reconcile automerge-openclaw-openclaw-90198 with ma…

Validation:
- ClawSweeper review passed for head 8711ada.
- Required merge gates passed before the squash merge.

Prepared head SHA: 8711ada
Review: openclaw#91119 (comment)

Co-authored-by: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: thewilloftheshadow
Co-authored-by: thewilloftheshadow <35580099+thewilloftheshadow@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge clawsweeper Tracked by ClawSweeper automation merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. P1 High-priority user-facing bug, regression, or broken workflow. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. size: M status: 🚀 automerge armed This PR is in ClawSweeper's automerge lane.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Discord final replies can still lose outbound adapter on 2026.6.1

1 participant