-
Notifications
You must be signed in to change notification settings - Fork 173
Preserve legacy watch resume semantics for GUID-linked URL previews #184
Copy link
Copy link
Open
Labels
P1Urgent regression or broken agent/channel workflow affecting real users now.Urgent regression or broken agent/channel workflow affecting real users now.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:message-lossThis issue is about lost, duplicated, misrouted, or suppressed channel messages.This issue is about lost, duplicated, misrouted, or suppressed channel messages.issue-rating: 🦪 silver shellfishThin issue quality; more reproduction proof or environment detail is needed.Thin issue quality; more reproduction proof or environment detail is needed.
Description
Metadata
Metadata
Assignees
Labels
P1Urgent regression or broken agent/channel workflow affecting real users now.Urgent regression or broken agent/channel workflow affecting real users now.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:message-lossThis issue is about lost, duplicated, misrouted, or suppressed channel messages.This issue is about lost, duplicated, misrouted, or suppressed channel messages.issue-rating: 🦪 silver shellfishThin issue quality; more reproduction proof or environment detail is needed.Thin issue quality; more reproduction proof or environment detail is needed.
Type
Fields
Priority
None yet
Problem
PR #181 reproduced a Messages.app URL-preview variant where one composition creates a text row and a GUID-linked preview row, but
imsg watchemits two logical events. The repaired head,5d86702043da, passed maintainer review and CI. The PR closed without merging because its watcher hardening changed the documented resume contract.Peter summarized the remaining work in his closing comment:
Existing consumers persist a watch event's
idand pass it back through--since-rowid. A folded URL-preview event can span the text row and a later physical preview row, so resuming from the logical text-rowidmust not replay the preview or create a second delivery.Proposed plan
5d86702043daand retain its structurally constrained GUID-linked URL-preview coalescing.idas a backward-compatible--since-rowidinput. Resolve a folded event's physical completion boundary inside the watcher so legacy clients neither replay the preview row nor skip the next logical message.cursoradditive and preferred for new clients only if both resume paths can share clear at-least-once semantics. Otherwise defer the publiccursorfield and keep the completion boundary internal.idand physicalcursor, including delayed preview arrival, interruption between the two physical rows, an unlinked preview negative control, and the next-message boundary.idand once withcursorwithout replay or loss.imsgrelease.Acceptance criteria
idproduces no replay, duplicate, or skipped next message.cursor, if shipped, has the same observable delivery boundary.Downstream dependency
openclaw/openclaw#91243 remains open pending an
imsgrelease that owns URL-preview coalescing. Draft openclaw/openclaw#108436 removes OpenClaw's fallback and currently namesimsg 0.13.1, but that release does not contain PR #181. The downstream PR must remain draft and target the eventual release containing this fix.