  Reconfiguration is one of the central mechanisms in distributed systems. Due
to failures and connectivity disruptions, the very set of service replicas (or
servers) and their roles in the computation may have to be reconfigured over
time. To provide the desired level of consistency and availability to
applications running on top of these servers, the clients of the service should
be able to reach some form of agreement on the system configuration. We observe
that this agreement is naturally captured via a lattice partial order on the
system states. We propose an asynchronous implementation of reconfigurable
lattice agreement that implies elegant reconfigurable versions of a large class
of lattice abstract data types, such as max-registers and conflict detectors,
as well as popular distributed programming abstractions, such as atomic
snapshot and commit-adopt.
