The really annoying thing is that "Paxos Made Simple" begins by outlining the algorithm as a solution for a completely async network (unlike real networks) but then towards the end, just blows that off and falls back on timeouts. But if you have timeouts there are far simpler and more efficient solutions.
FWIW: FLP is a silly "theorem" that says "if you can't tell the difference between a system that has crashed and one that is slow - why then you can't tell the difference."
https://www.yodaiken.com/wp-content/uploads/2016/10/paxos.pt...
Embarrassingly badly written Lua code for the simulator https://github.com/yodaikenv/consensus
The key to me is that once you accept the need for leader election, you have much simpler alternatives and can toss away the rest of paxos.
Edit: I took a look at your post[0] and it is interesting. I'll take a look at CM.
[0] https://www.yodaiken.com/papers-and-talks/distributed-consen...
If an acceptor does not receive a message from the coordinator over a sufficient period,it times out and tries to trigger a new coordinator election
Coordinator election: try for t time units to get a majority of acceptors to accept your proposal to be coordinator. give up on timeout or notification that there is a running coordinator.
This is the simplest method and not the most efficienct, but it is both live and safe.
Chang/Maxemchuk propose to make stage 2 more efficient that acceptors be arranged in a cycle and messages from the coordinator be numbered sequentially. Then each acceptor takes a turn to broadcast its accept but only does it if it has seen all prior (lower numbered) messages and their accept message responses. on each cycle completion, the coordinator can commit the first message in the cycle.
I will have to read the Chang-Maxemchuk paper, I have not heard of that before.
The key is to decide whether timeouts work in your network. If timeouts don't work and you don't have some reliable message protocol, then nothing works. If timeouts do work, then a completely simple obvious brute force algorithm works. In this algorithm, we have leader/coordinator election. The leader then polls the acceptors for the highest sequence number of a committed message and recovers all missing messages. Then the leader starts sending new messages - increasing the same sequence number. The old leader, if it recovers should know that its lease as leader has timed out, but if it does not it cannot get acks from a majority of acceptors for a new message because a majority have signed on to the new leader. There is no "value" competition - only a competition for the id of the new leader during leader election. We don't need Paxos at all.