@fluidframework/protocol-base
Shared protocol code for client and service to share. Manages the lifetime of Quorum and proposals that needs to be
consistent across client and service. It also provides utilities for facilitating summary creation.
Quorum and Proposal
A quorum proposal transitions between four possible states: propose, accept, reject, and commit.
A proposal begins in the propose state. The proposal is sent to the server and receives a sequence number which is
used to uniquely identify it. Clients within the collaboration window accept the proposal by allowing their
reference sequence number to go above the sequence number for the proposal. They reject it by submitting a reject
message prior to sending a reference sequence number above the proposal number. Once the minimum sequence number
goes above the sequence number for the proposal without any rejections it is considered accepted.
The proposal enters the commit state when the minimum sequence number goes above the sequence number at which it
became accepted. In the commit state all subsequent messages are guaranteed to have been sent with knowledge of
the proposal. Between the accept and commit state there may be messages with reference sequence numbers prior to
the proposal being accepted.