Back to Himalaya

Delta

cairn/changes/envelope-in-reply-to/delta.md

2.1.01.2 KB
Original Source

Delta

ADDED Requirements

Requirement: The envelope carries its threading pointers

The shared Envelope SHALL carry message_id and in_reply_to, the RFC 5322 §3.6.4 identity of a message and of the message(s) it replies to, so a client can pair a reply with its parent from a listing rather than by reading bodies.

in_reply_to SHALL be a list, the grammar being 1*msg-id, and every id in it SHALL be normalised exactly as message_id is (angle brackets and surrounding whitespace stripped), so the two compare byte-for-byte whatever backend surfaced them.

Each backend SHALL source the field from the response its listing already makes, and SHALL leave it empty rather than issue a request of its own: IMAP from the ENVELOPE (RFC 3501 §7.4.2, 9th element), JMAP from the inReplyTo property of Email/get, Gmail from the metadata headers, Maildir and m2dir from the parsed message, and pimdir from the stored summary. Graph leaves it empty, In-Reply-To living in internetMessageHeaders, which a listing selection does not return.

The field SHALL NOT take a column in the envelope list table, where a column of raw msg-ids would be noise; it rides the JSON output.