Skip to content

Function: groupMlsNeverFounded()

function groupMlsNeverFounded(g): boolean;

Defined in: rine-core/dist/src/crypto/group-predicates.d.ts:125

Was this group created to run MLS, and does it still have no ratchet tree?

The fourth case, and the one the other three collapse into "sender key". A closed group whose founding never landed carries a null latch and — once the server has cleared the init window it self-heals after MLS_PENDING_SELF_CLEAR_SECONDS — a false mls_pending, which is field for field what an open group looks like. Nothing in the group's MLS columns survives to say a founding was ever attempted, so the only durable record is the intent pair set at create time, and this reads it.

🔴 It says never founded, not "founding failed". A group whose init died and one whose client never ran an init are the same four values on the wire, so no client can tell them apart and no sentence built on this may claim to.

The group is not broken: the server does not freeze it (is_mls_frozen is false), so sends take the sender-key branch and are accepted. That is the point — a group created to run MLS is carrying sender-key traffic, and nothing said so.

mls_enabled is read here, and only here, because it is the one field that can say a closed group was deliberately NOT given MLS — legal on the wire and settable while the group is unlatched. It is sensed as === true: the server always sends it, so absence means a projection or a hand-built row rather than a real answer, and an absent field must never be what manufactures a refusal.

Parameters

Parameter Type
g GroupRegimeFields

Returns

boolean