Skip to content

refactor(imessage): remove retired split-send coalescing#108436

Merged
steipete merged 1 commit into
mainfrom
agent/imessage-coalescing-clean-91243
Jul 23, 2026
Merged

refactor(imessage): remove retired split-send coalescing#108436
steipete merged 1 commit into
mainfrom
agent/imessage-coalescing-clean-91243

Conversation

@omarshahine

@omarshahine omarshahine commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Closes #91243

What Problem This Solves

OpenClaw still carried an unreachable iMessage split-send coalescing path after #111527 removed channels.imessage.coalesceSameSenderDms from the config schema and added its doctor migration. That dead path duplicated behavior now owned by released imsg and left stale tests and documentation behind.

Why This Change Was Made

This rewrites the original contributor branch on current main and finishes the owner-boundary cleanup: it removes the hardcoded flag, 7-second compatibility debounce, URL-balloon classification branches, balloon_bundle_id plumbing, and obsolete path tests. Generic messages.inbound batching remains unchanged and still uses the bounded iMessage merge helper when operators configure it.

The installed dependency path is source-backed. The plugin does not bundle an imsg binary; setup installs steipete/tap/imsg, whose formula currently selects released v0.13.2 (formula, release). In that release:

User Impact

iMessage command-plus-URL compositions continue to arrive as one logical message through imsg 0.13.1 and newer, without an OpenClaw-specific setting or added DM delay. openclaw doctor --fix removes the retired key from existing config. If an older imsg still emits split rows, operators should update it rather than re-enable a second OpenClaw coalescer.

Release-note context: removes the retired OpenClaw-side iMessage split-send coalescer now that released imsg owns the behavior. Credits Omar Shahine (@omarshahine), author of PR #108436 and reporter of #91243.

Evidence

Exact head: a50228f8b1f4e2575cd9e6928b58825d17f9432b.

  • node scripts/run-vitest.mjs extensions/imessage/src/monitor.behavior.test.ts extensions/imessage/src/monitor.last-route.test.ts extensions/imessage/src/monitor.plugin-payload.test.ts passed 3 files and 199 tests (final rerun).
  • node scripts/check-docs-mdx.mjs docs/channels/imessage.md docs/channels/imessage-from-bluebubbles.md docs/concepts/messages.md passed all 3 files.
  • node scripts/docs-link-audit.mjs checked 6,157 internal links with 0 broken.
  • node scripts/generate-docs-map.mjs --check passed after regenerating the removed heading projection.
  • node scripts/check-changed.mjs passed in Blacksmith Testbox tbx_01ky6jk4yahr7dsdb1e3qcf8sz (extension production/test typechecks, zero lint findings, docs formatting, dependency pins, plugin boundaries, database guards, and 0 runtime import cycles): https://github.com/openclaw/openclaw/actions/runs/29978804320.
  • $HOME/.claude/skills/autoreview/scripts/autoreview --mode branch --base origin/main exited 0: autoreview clean: no accepted/actionable findings reported.
  • git diff --check passed.

No live iMessage send was performed from this machine, by design. The behavior contract is proven from the released upstream source plus focused OpenClaw tests.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation channel: imessage Channel integration: imessage commands Command implementations labels Jul 15, 2026
@omarshahine

Copy link
Copy Markdown
Contributor Author

@clawsweeper review

@clawsweeper

clawsweeper Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@openclaw-barnacle openclaw-barnacle Bot added the maintainer Maintainer-authored PR label Jul 15, 2026
@omarshahine
omarshahine force-pushed the agent/imessage-coalescing-clean-91243 branch 2 times, most recently from 7697b7d to 2418416 Compare July 16, 2026 05:40
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal backlog priority with limited blast radius. 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 Jul 16, 2026
@clawsweeper

clawsweeper Bot commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed July 17, 2026, 12:58 PM ET / 16:58 UTC.

Summary
Removes the persisted iMessage split-send coalescing option and channel-specific merge policy, adds doctor migration for retired keys, requires imsg 0.13.1 or newer, and refreshes related docs and generated API/config baselines.

PR surface: Source +84, Tests -127, Docs -53, Generated 0. Total -96 across 24 files.

Reproducibility: not applicable. as a cleanup PR. The relevant acceptance scenario is clearly defined, but the final packaged dependency and exact OpenClaw head cannot be exercised together until imsg 0.13.1 is published.

Review metrics: 3 noteworthy metrics.

  • Persisted config surface: 1 removed. Removing an accepted channel option requires a verified doctor migration and explicit upgrade policy.
  • Dependency minimum: 1 added: imsg 0.13.1. The readiness gate can make existing iMessage channels unavailable until operators install the required final release.
  • Doctor validation path: 1 generic preflight path changed. Plugin-owned legacy config may now normalize before strict plugin validation, which expands the upgrade behavior needing proof.

Stored data model
Persistent data-model change detected: migration/backfill/repair: extensions/imessage/doctor-contract-api.ts, migration/backfill/repair: extensions/imessage/src/doctor-contract-api.test.ts, migration/backfill/repair: src/commands/doctor-config-flow.ts, migration/backfill/repair: src/commands/doctor-config-preflight.test.ts, migration/backfill/repair: src/commands/doctor-config-preflight.ts, migration/backfill/repair: src/commands/doctor-session-transcripts.ts, and 6 more. Migration or upgrade compatibility proof is recorded; maintainers should verify it before merge.

Root-cause cluster
Relationship: fixed_by_candidate
Canonical: #91243
Summary: This PR is the active candidate for the canonical teardown issue, replaces an earlier closed branch, and removes the interim behavior introduced by a merged compatibility PR.

Members:

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

Merge readiness
Overall: 🦐 gold shrimp
Proof: 🦐 gold shrimp
Patch quality: 🐚 platinum hermit
Result: blocked until stronger real behavior proof is added.

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

Rank-up moves:

  • [P1] After final imsg 0.13.1 publishes with the upstream fix, record the exact release and binary provenance in the PR body.
  • [P1] Add redacted macOS terminal or log evidence showing doctor cleanup, older-version guidance, one coalesced imsg event, one OpenClaw turn, and no delayed duplicate.

Proof guidance:

  • [P1] Needs stronger real behavior proof before merge: Strong linked evidence covers the upstream candidate and supplemental pre-release ingestion, but merge acceptance still requires redacted proof using the published final imsg 0.13.1 binary and this exact OpenClaw head; update the PR body afterward to trigger review, or ask a maintainer for @clawsweeper re-review.

Risk before merge

  • [P1] Merging before the final imsg 0.13.1 release exists would make every currently released installation fail the iMessage readiness check with no available compliant upgrade.
  • [P1] Removing OpenClaw's client-side merge policy transfers one-turn URL-preview delivery entirely to imsg; the packaged dependency and exact OpenClaw head have not yet shown one event and one agent turn together.
  • [P1] Existing configurations containing the retired key will fail strict normal startup until the operator runs openclaw doctor --fix.
  • [P1] The generic doctor preflight behavior changes for plugin-owned legacy config, so upgrade proof must continue to show that unrelated malformed values cannot bypass plugin validation.

Maintainer options:

  1. Wait for the released floor and prove it (recommended)
    Keep the PR draft until final imsg 0.13.1 includes the upstream fix, then capture packaged exact-head migration, readiness, and one-turn delivery evidence.
  2. Retain compatibility for another release
    Pause this teardown and preserve the current config and OpenClaw merge fallback if maintainers are not ready to require the binary and doctor upgrade together.

Next step before merge

  • [P1] Keep the branch draft until the external release exists; the remaining action is maintainer acceptance of the compatibility boundary plus contributor-supplied packaged proof, not a narrow automated code repair.

Maintainer decision needed

  • Question: After final imsg 0.13.1 ships and packaged proof passes, should OpenClaw make it a hard iMessage startup floor and retire coalesceSameSenderDms in the same release?
  • Rationale: The change intentionally converts previously supported binaries and persisted configuration into fail-closed upgrade states; tests can prove mechanics, but only maintainers can accept that compatibility boundary.
  • Likely owner: steipete — The unresolved choice concerns the supported imsg release floor and operator upgrade policy rather than a mechanical implementation defect.
  • Options:
    • Approve after release proof (recommended): Accept the hard floor and config retirement once final imsg 0.13.1 and this exact OpenClaw head pass the documented packaged macOS scenario.
    • Defer the teardown: Keep the existing option and client-side fallback until maintainers choose a later release for the binary and configuration transition.

Security
Cleared: The diff introduces no new dependency source, workflow permission, secret access, package resolution, download, or execution boundary beyond probing the already configured imsg executable.

Review findings

  • [P1] Wait for the released imsg build before enforcing the floor — extensions/imessage/src/constants.ts:5
Review details

Best possible solution:

Use imsg as the sole URL-preview coalescing owner and retain only the doctor migration, but land the teardown after final imsg 0.13.1 contains the upstream fix and a redacted exact-head macOS run proves stale-key repair, clear old-version guidance, one imsg event, and one OpenClaw turn.

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

Not applicable as a cleanup PR. The relevant acceptance scenario is clearly defined, but the final packaged dependency and exact OpenClaw head cannot be exercised together until imsg 0.13.1 is published.

Is this the best way to solve the issue?

Yes on architecture, but not yet on sequencing: moving split-send ownership upstream and using doctor-only migration is the cleanest boundary, while setting an unavailable hard floor cannot safely merge.

Full review comments:

  • [P1] Wait for the released imsg build before enforcing the floor — extensions/imessage/src/constants.ts:5
    0.13.1 is not yet available as a final released build containing the required upstream fix, so merging this constant now would make every released imsg installation fail readiness with no compliant upgrade available. Keep the PR draft until that release ships and the packaged binary plus this exact OpenClaw head pass the command-and-URL scenario.
    Confidence: 0.99

Overall correctness: patch is incorrect
Overall confidence: 0.98

AGENTS.md: found and applied where relevant.

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

Label changes

Label justifications:

  • P2: This is a bounded iMessage cleanup with meaningful compatibility and delivery risk but no demonstrated current emergency.
  • merge-risk: 🚨 compatibility: The PR removes persisted configuration and requires doctor plus binary upgrades for existing installations.
  • merge-risk: 🚨 message-delivery: The PR deletes OpenClaw's split-send policy and relies entirely on upstream imsg to preserve one logical inbound turn.
  • merge-risk: 🚨 availability: The new readiness floor rejects all currently released imsg builds until the required final version is published.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦐 gold shrimp 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: Strong linked evidence covers the upstream candidate and supplemental pre-release ingestion, but merge acceptance still requires redacted proof using the published final imsg 0.13.1 binary and this exact OpenClaw head; update the PR body afterward to trigger review, or ask a maintainer for @clawsweeper re-review.
Evidence reviewed

PR surface:

Source +84, Tests -127, Docs -53, Generated 0. Total -96 across 24 files.

View PR surface stats
Area Files Added Removed Net
Source 12 252 168 +84
Tests 5 299 426 -127
Docs 4 43 96 -53
Config 0 0 0 0
Generated 3 20 20 0
Other 0 0 0 0
Total 24 614 710 -96

What I checked:

  • Current-main behavior: Current main still documents and implements coalesceSameSenderDms as the active opt-in compatibility path, so the PR removes live behavior rather than obsolete declarations. (docs.openclaw.ai) (extensions/imessage/src/monitor/monitor-provider.ts:3276, 12e7f91047e6)
  • Dependency floor blocker: The branch sets the minimum supported CLI version to 0.13.1; the PR discussion explicitly keeps the branch draft because the final release containing the required upstream fix has not been published. (extensions/imessage/src/constants.ts:5, 0a143a32f4f7)
  • Upgrade migration: The plugin-owned doctor contract detects and removes retired root and per-account coalesceSameSenderDms keys instead of preserving a runtime compatibility reader. (extensions/imessage/doctor-contract-api.ts:64, 0a143a32f4f7)
  • Strict recovery path: The core doctor preflight is changed so plugin-owned legacy normalization can run before strict plugin validation while unrelated malformed plugin values still recover through the last-known-good path. (src/commands/doctor-config-preflight.ts:324, 0a143a32f4f7)
  • Focused validation: The exact head adds boundary tests rejecting imsg 0.13.0 and 0.13.1 prereleases, accepting final 0.13.1, and exercising legacy-plus-malformed doctor recovery; the reported focused run passed 56 tests. (extensions/imessage/src/status.test.ts:605, 0a143a32f4f7)
  • Real behavior proof gap: Live evidence proves the upstream candidate can emit one coalesced event, but no published imsg 0.13.1 binary and this exact OpenClaw head have yet demonstrated the complete packaged after-fix path together. (0a143a32f4f7)

Likely related people:

  • omarshahine: Authored the merged metadata-gated OpenClaw coalescing implementation and has continued the corresponding teardown and upstream integration work. (role: introduced interim behavior and recent area contributor; confidence: high; commits: 11c4454ba35e, 9caff5f873cd; files: extensions/imessage/src/monitor/monitor-provider.ts, extensions/imessage/src/monitor/coalesce.ts, extensions/imessage/doctor-contract-api.ts)
  • steipete: Prior release history ties this person to the supported imsg release boundary, making them the strongest available owner for the hard minimum-version and upgrade-policy choice. (role: dependency release owner and likely decision owner; confidence: medium; commits: f97a116; files: extensions/imessage/src/probe.ts, extensions/imessage/src/setup-core.ts, docs/channels/imessage.md)
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.
Review history (10 earlier review cycles; latest 8 shown)
  • reviewed 2026-07-16T16:17:05.276Z sha 27cc61b :: needs real behavior proof before merge. :: none
  • reviewed 2026-07-16T19:40:58.140Z sha a79a392 :: needs real behavior proof before merge. :: none
  • reviewed 2026-07-16T20:23:13.295Z sha a79a392 :: needs real behavior proof before merge. :: none
  • reviewed 2026-07-16T21:05:59.727Z sha a79a392 :: needs real behavior proof before merge. :: none
  • reviewed 2026-07-16T23:57:09.275Z sha a79a392 :: needs real behavior proof before merge. :: [P1] Require the imsg release that actually fixes watch coalescing
  • reviewed 2026-07-17T03:33:38.327Z sha a79a392 :: needs real behavior proof before merge. :: [P1] Require the imsg release that actually fixes watch coalescing
  • reviewed 2026-07-17T15:34:54.167Z sha 0a143a3 :: needs real behavior proof before merge. :: [P1] Wait for the released imsg build before setting the floor
  • reviewed 2026-07-17T16:17:38.468Z sha 0a143a3 :: needs real behavior proof before merge. :: [P1] Wait for the released imsg build before setting the floor

@clawsweeper clawsweeper Bot added the merge-risk: 🚨 availability 🚨 May cause crashes, hangs, restart loops, stalls, or process outages. label Jul 16, 2026
@omarshahine
omarshahine force-pushed the agent/imessage-coalescing-clean-91243 branch 3 times, most recently from 4af135a to 61ebd5b Compare July 16, 2026 19:04
@openclaw-barnacle openclaw-barnacle Bot added the cli CLI command changes label Jul 16, 2026
@omarshahine
omarshahine force-pushed the agent/imessage-coalescing-clean-91243 branch 3 times, most recently from c471cf7 to a5aaf05 Compare July 16, 2026 19:24
@omarshahine

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jul 16, 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:

@omarshahine
omarshahine force-pushed the agent/imessage-coalescing-clean-91243 branch from a5aaf05 to a79a392 Compare July 16, 2026 19:36
@omarshahine

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jul 16, 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:

@omarshahine omarshahine self-assigned this Jul 16, 2026
@omarshahine
omarshahine marked this pull request as draft July 16, 2026 22:27
@omarshahine

omarshahine commented Jul 16, 2026

Copy link
Copy Markdown
Contributor Author

Marking this PR draft because the upstream prerequisite is not met in the currently supported bridge.

Exact-head live proof on macOS 26.4.1 with imsg 0.12.3 used one composed message containing text plus a URL. Apple stored it as a text row without the URL followed by a URLBalloonProvider row. An independent imsg watch emitted two events, and this PR's OpenClaw gateway created two agent turns.

The live rows exposed a narrow upstream fix: in both attempts, the preview row's reply_to_guid exactly matched the originating text row's guid. The upstream fix is now proposed in openclaw/imsg#181. It uses that structural association while preserving the existing chat, sender, direction, handle, row-order, time-window, and URL-containment checks across history, watch, stats, and unread paths. Durable failure-before/pass-after output is posted at openclaw/imsg#181 (comment).

This PR should return to review after the fixed imsg release becomes OpenClaw's minimum supported version and the same live scenario produces one imsg event and one OpenClaw turn. The doctor migration itself passed disposable-config validation, but that is not sufficient while split-send behavior still regresses.

Retest and proof plan after the fixed imsg release

  1. Install the released imsg build from the canonical package source and capture its exact version. Update this PR's minimum supported imsg version to that release and record the exact OpenClaw head SHA.
  2. Stop the production and dev OpenClaw gateways so only the isolated exact-head gateway consumes iMessage events. A separate metadata-only imsg watch may observe the database but must not dispatch agent turns.
  3. On a disposable config containing the retired key at both root and account scope, run exact-head doctor --fix and config validation. Record before/after key counts and prove the real user config was not modified.
  4. Record the Messages database baseline, then start a PII-safe independent imsg watch and the isolated exact-head OpenClaw gateway.
  5. Send one brand-new, non-reply composition in the form “Dump proof- https://example.com” and allow the Apple link preview to render before sending.
  6. Acceptance requires: two physical inbound database rows; the preview row structurally linked to the text row; exactly one logical imsg watch event; exactly one OpenClaw message-received event and one agent turn; and no delayed second turn after the coalescing window.
  7. Publish only sanitized evidence: OpenClaw SHA, imsg version, macOS version, doctor before/after counts, physical-row metadata, imsg event count, OpenClaw turn count, and command exit codes. Link the artifact manifest here, then mark the PR ready and request ClawSweeper re-review.

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. labels Jul 17, 2026
@omarshahine

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@omarshahine
omarshahine force-pushed the agent/imessage-coalescing-clean-91243 branch from a79a392 to 0a143a3 Compare July 17, 2026 15:28
@openclaw-barnacle openclaw-barnacle Bot removed the cli CLI command changes label Jul 17, 2026
@omarshahine

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Please resweep exact head 0a143a32f4f77bfdf3e51a7438d570d25545b09a. The PR body now includes the openclaw/imsg#181 exact-head live coalescing proof, the OpenClaw ingestion proof, the new imsg >= 0.13.1 runtime floor and boundary tests, the mixed legacy-plus-malformed doctor regression, and the rebased Testbox evidence. Keep this PR draft until imsg 0.13.1 containing #181 is published.

@clawsweeper

clawsweeper Bot commented Jul 17, 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. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Jul 17, 2026
@steipete
steipete force-pushed the agent/imessage-coalescing-clean-91243 branch from 0a143a3 to a50228f Compare July 23, 2026 04:16
@openclaw-barnacle openclaw-barnacle Bot added size: L and removed commands Command implementations size: XL labels Jul 23, 2026
@steipete steipete changed the title fix(imessage): remove split-send coalescing config refactor(imessage): remove retired split-send coalescing Jul 23, 2026
@steipete
steipete marked this pull request as ready for review July 23, 2026 04:17
@steipete

Copy link
Copy Markdown
Contributor

Land-ready at exact head a50228f8b1f4e2575cd9e6928b58825d17f9432b.

Proof completed:

  • Focused iMessage proof passed: node scripts/run-vitest.mjs extensions/imessage/src/monitor.behavior.test.ts extensions/imessage/src/monitor.last-route.test.ts extensions/imessage/src/monitor.plugin-payload.test.ts (3 files, 199 tests).
  • Changed-surface gate passed in Blacksmith Testbox tbx_01ky6jk4yahr7dsdb1e3qcf8sz: run 29978804320.
  • Exact-head CI passed with required openclaw/ci-gate: run 29979188483 (54 passed, 12 scoped skips, 0 failures).
  • Docs MDX passed for all changed source pages; 6,157 internal links checked with 0 broken; generated docs map current.
  • Codex autoreview against origin/main exited clean with no accepted/actionable findings.
  • scripts/pr review-validate-artifacts 108436 reported READY FOR /prepare-pr; OPENCLAW_TESTBOX=1 scripts/pr prepare-run 108436 completed with the PR and prep heads identical.

The prior ClawSweeper release-provenance move is satisfied by the immutable v0.13.2 formula, release, and source links in the PR body. No live iMessage send was performed from this machine under the maintainer constraint; the PR records that gap and uses the requested focused tests plus released upstream source proof instead.

@steipete
steipete merged commit 58575ed into main Jul 23, 2026
186 of 192 checks passed
@steipete
steipete deleted the agent/imessage-coalescing-clean-91243 branch July 23, 2026 04:26
@steipete

Copy link
Copy Markdown
Contributor

Merged via squash.

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

Labels

channel: imessage Channel integration: imessage docs Improvements or additions to documentation maintainer Maintainer-authored PR merge-risk: 🚨 availability 🚨 May cause crashes, hangs, restart loops, stalls, or process outages. 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. P2 Normal backlog priority with limited blast radius. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. size: L 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.

Remove client-side iMessage split-send coalescing once imsg coalesces upstream

2 participants