Repository navigation
fix: mark pre-dispatch rich-link refusals as not started - #387
Conversation
Caller-owned GUID, send-modifier, and non-iMessage service refusals returned a plain error before any message was built. send-rich-link is a mutation, so a missing delivery_disposition was treated as may_have_completed and was not safe to retry. Return not_started on those three paths, matching chat-not-found. Signed-off-by: Sebastien Tardif <sebtardif@ncf.ca>
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs maintainer review before merge. What this changesMark three rich-link refusals before dispatch as not_started and add native regression coverage. Example: A send-rich-link request includes effectId=com.apple.messages.effect.Echo.
Review scores
ProductKind: Bug fix · Worth it: Yes · Fix scope: Complete Merge readiness✅ Ready for maintainer review This PR fixes a current delivery-classification bug with a focused patch and no actionable findings. Priority: P2 Before mergeNone. FindingsNone. Agent review detailsHow this fits togetherThe injected helper consumes bridge requests, rejects unsupported rich-link combinations, and returns delivery facts that the Swift client uses to determine retry safety. flowchart LR
A[Bridge request] --> B[V2 filesystem inbox]
B --> C[Action router]
C --> D[Rich-link validation]
D --> E[Response envelope]
E --> F[Client delivery classification]
Technical reviewBest possible solution: Use the existing disposition helper for these three proven pre-dispatch refusals while preserving all validation and uncertain-delivery handling. Do we have a high-confidence way to reproduce the issue? Current-main source deterministically omits the disposition on these refusals, and the client consequently classifies them as may_have_completed; supplied macOS output corroborates the path. Is this the best way to solve the issue? The patch uses the existing authoritative response helper at the three refusal sites and leaves later failures unchanged, making it the smallest complete fix for the stated scope. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against 1bc0679663bf. Provenance checked
TestingProof path: shipped entry point. SecurityNone. EvidenceWhat I checked:
Likely related people:
Preflight sourceSource unknown. Source comparison at the observed PR snapshot only. Completion is self-reported; body, policy, tests, execution, and report bytes are not verified. LabelsLabel changes:
Label justifications:
Rating scale6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior. WorkflowClawSweeper edits this one comment on every review. Comment HistoryReview history (1 earlier review cycle)
Reviewed November 6, 2026, 11:54 AM ET / 16:54 UTC (Revision 2). |
|
@clawsweeper re-review A v2 inbox scan of the helper source refused a send-rich-link effect before building a message. The production client types report not_started and retry_safe true. |
|
🦞👀 Re-review progress:
|
steipete
left a comment
There was a problem hiding this comment.
Reviewed code and fixture proof; exact-head CI is green.
Rich-link requests with caller-owned GUIDs, unsupported send modifiers, or a live non-iMessage service are refused before message construction. Return
not_startedso callers can retry these refusals safely.Validated with the compiled synthetic helper fixture: all three cases fail on main with a missing disposition and pass with this change. No Messages injection or sends were performed. Independent Codex review through P2: scoped-clean. Full exact-head CI is required before merge.
Thanks @SebTardif for the fix and fixture.