Repository navigation
fix(send): keep tracked message GUIDs in Apple's uppercase form - #391
Conversation
|
🦞👀 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 changesThis PR preserves canonical uppercase UUIDs throughout tracked-message sending and response identities. Example: Send an RCS message with attempt_id 196ff9d0-c48e-4613-a5db-8af306a69533.
Review scores
ProductKind: Bug fix · Worth it: Yes · Fix scope: Complete Merge readiness✅ Ready for maintainer review Keep open: current main retains the lowercase conversions behind the reported relay failure, and this PR provides a focused repair with no actionable findings. Priority: P1 Before mergeNone. FindingsNone. Agent review detailsHow this fits togetherThe JSON-RPC server validates a caller UUID, forwards it through the injected Messages helper into native message construction, and exposes the resulting identity for database status reconciliation. flowchart LR
A[RPC caller] --> B[UUID normalization]
B --> C[History collision check]
C --> D[Injected helper]
D --> E[GUID reservation and message construction]
E --> F[Messages relay]
F --> G[Messages database]
G --> H[Status reconciliation]
Technical reviewBest possible solution: Preserve uppercase UUIDs in both existing normalization owners while retaining case-insensitive reconciliation and duplicate rejection. Do we have a high-confidence way to reproduce the issue? Current-main source confirms both lowercase conversions, and the contributor supplies affected-release failures and a controlled uppercase retry comparison; no independent Messages send was run during this read-only review. Is this the best way to solve the issue? Removing both conversions is the smallest complete repair for the demonstrated casing failure and preserves the documented caller-owned UUID contract. 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. Review metrics
Root-cause clusterRelationship: Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. 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, 10:15 PM ET / November 7, 2026, 03:15 UTC (Revision 2). |
|
@clawsweeper re-review |
|
🦞👀 Re-review progress:
|
Messages relays SMS and RCS sends through the paired iPhone, and a send under a lowercase GUID never completes there: chat.db records it unsent with error 4, while Messages' own Try Again resends the same GUID in uppercase and delivers. iMessage sends were unaffected. Amp-Thread-ID: https://ampcode.com/threads/T-01a193d9-7f0b-72f5-b39d-1c64d979b1be Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-01a193d9-7f0b-72f5-b39d-1c64d979b1be Co-authored-by: Amp <amp@ampcode.com>
40558a5 to
99ed6d7
Compare
steipete
left a comment
There was a problem hiding this comment.
Reviewed code and fixture proof; exact-head CI is green.
Tracked sends lowercased caller UUIDs, while Messages' SMS/RCS relay expects Apple's uppercase form. Preserve canonical uppercase UUIDs in both RPC and helper dispatch, with case-insensitive input and duplicate checks.
Refs #390. The focused regression fails on main with three assertions and passes after this change. Six focused tests cover the UUID round trip, collisions, capability rejection, and uncertain-send fallback prevention. No live messages were sent during maintainer verification. Independent Codex review through P2: scoped-clean. Exact-head CI is required before merge.
Thanks @thurstonsand for the diagnosis, fix, and reported RCS evidence.
The first exact-head CI run caught an older helper-envelope fixture still expecting lowercase. Its isolated synthetic executable reproduced that failure; the updated fixture verifies uppercase identity in both the acknowledgment and dispatched object and passes. No live messaging was used.