ReadonlyciphersuiteReadonlypeelerThe derived convergence status (group-state.md §Convergence status, B5):
Syncing while the quiescence window since the last convergence-relevant
input has not elapsed, then Resolving / Blocked / Settled per the last
pass. Recomputed on every read against the injected clock, so it advances to
Settled as wall-clock time passes even with no new input.
The full-fork history tree: every group state observed — the canonical branch and every fork — keyed by MLS confirmation tag. Read-only structural access; the engine grows it as commits and proposals arrive.
The group's lifecycle state (group-state.md). A new local commit may only
be prepared while Stable; the commit flow moves through PendingPublish
(commit prepared, publish unconfirmed) and Merging (publish acked, staged
commit applying) and back to Stable.
Number of undecryptable events currently held in the ingestion pool.
Applies staged state after publish confirmation (publish-before-apply).
Releases engine resources — currently the pending settle-check timer. Called on group teardown (destroy/unload) so no timer outlives the group.
Ingests transport envelopes and applies MLS messages to group state.
Optionaloptions: { maxRetries?: number }DispositionedIngestResult - processing result plus inbound Disposition.
Reverts lifecycle when a staged commit publish fails or is abandoned.
Executes a local send intent and returns the wrapped transport envelope.
Transport-agnostic MLS group state machine: ingest, send intents, fork recovery, and publish-before-apply lifecycle for local commits.
This class is a coordinator. The heavy concerns live in focused modules it composes: retained history (RetainedHistoryStore), convergence fork recovery (ForkRecovery), and the inbound pipeline (ingestEnvelopes). The engine owns only the live state and lifecycle, the send path, and the wiring between those modules — mirroring darkmatter's
cgka-enginesplit acrossmessage_processor/{ingest,send,store},fork_recovery, andepoch_manager.