diff --git a/Resources/Views/spec.leaf b/Resources/Views/spec.leaf index d98786f..3e9c52a 100644 --- a/Resources/Views/spec.leaf +++ b/Resources/Views/spec.leaf @@ -3,7 +3,7 @@ + source-sha256: 13aa934f35a182ec -->

Flamenet @@ -707,6 +707,63 @@ connection and rings from its own foreground service, so an Android client MAY set the flag for interop but gains nothing from it. The asymmetry is Apple's process model, not a design choice, and it belongs on the privacy page for the same reason the push dependency does.

+

6.18 Mentions

+

A group message MAY name the members it is addressed to, in +ment:

+
{ "fnc": 1, "kind": "text", "gid": "<group>", "ment": [12, 34], "caption": "@Ada @Adam thoughts?" }
+

A mention decides whether the receiver is notified, and +nothing else. It confers no permission, changes no state, and +is not evidence of anything. This matters because ment is a +claim by the sender like every other field in the envelope: the worst a +dishonest one can achieve is a notification the reader is able to turn +off.

+

Which is the rule that makes mentions safe to have. +A mention that always broke through a mute would hand every member of a +group a way to interrupt somebody whenever they liked — which is how +mentions become the thing people leave a group over. A mention that +never broke through would make muting a busy group mean missing the one +message that was actually for you. So the responsibility splits:

+ +

A client MUST make the second half a setting the receiving person +controls, and MUST NOT let anything in an envelope override it. +Defaulting that setting to "a mention breaks a mute" is reasonable and +is what the reference implementation does; defaulting it to "always, +with no way off" is not.

+

Further requirements:

+ +

⚠️ Muting is per conversation, not per author. +Stated here because getting it wrong makes this section unimplementable: +if a mute is keyed on whoever sent an arriving message, a group cannot +be muted at all — silencing it means muting every member one at a time, +and anyone who joins later is not covered. There is then no mute for a +mention to break.

+

What the relay learns: nothing. ment is +inside the ratchet like the rest of the content envelope. A relay cannot +tell an addressed message from any other, and in particular cannot tell +who in a group is being singled out.

+

Status. In progress. The iOS client implements this +section. The Kotlin engine implements the codec; the Android app does +not compose or act on mentions yet.

7. Safety numbers (verification)

For a local identity IK_sig_local_pub and remote