{
  "docVersion": 1,
  "id": "blog-quorum-0001",
  "name": "Quorum — the network split, decided by arithmetic",
  "purpose": "A 5-node cluster splits 3/2. The majority side keeps a quorum and keeps serving; the minority refuses writes. Any two majorities share a node — that overlap is why split-brain is impossible.",
  "nodes": {
    "w1": {
      "type": "user",
      "label": "Clients (left)",
      "x": 20,
      "y": 230,
      "runtime": "writes continue"
    },
    "n1": {
      "type": "server",
      "label": "Node 1",
      "x": 300,
      "y": 40,
      "color": "green",
      "runtime": "in quorum"
    },
    "n2": {
      "type": "server",
      "label": "Node 2",
      "x": 300,
      "y": 230,
      "color": "green",
      "runtime": "in quorum"
    },
    "n3": {
      "type": "server",
      "label": "Node 3",
      "x": 300,
      "y": 420,
      "color": "green",
      "runtime": "in quorum"
    },
    "n4": {
      "type": "server",
      "label": "Node 4",
      "x": 780,
      "y": 130,
      "color": "red",
      "style": "dashed",
      "runtime": "no quorum"
    },
    "n5": {
      "type": "server",
      "label": "Node 5",
      "x": 780,
      "y": 330,
      "color": "red",
      "style": "dashed",
      "runtime": "no quorum"
    },
    "w2": {
      "type": "user",
      "label": "Clients (right)",
      "x": 1060,
      "y": 230,
      "runtime": "writes REFUSED"
    }
  },
  "edges": {
    "e1": {
      "from": "w1",
      "to": "n2",
      "fromSide": "right",
      "toSide": "left",
      "label": "write · needs 3 of 5 acks",
      "color": "green",
      "animated": true
    },
    "e2": {
      "from": "n2",
      "to": "n1",
      "fromSide": "top",
      "toSide": "bottom",
      "color": "green"
    },
    "e3": {
      "from": "n2",
      "to": "n3",
      "fromSide": "bottom",
      "toSide": "top",
      "color": "green"
    },
    "x1": {
      "from": "n1",
      "to": "n4",
      "fromSide": "right",
      "toSide": "left",
      "label": "PARTITION — links down",
      "color": "red",
      "style": "dashed",
      "dir": "none"
    },
    "x2": {
      "from": "n3",
      "to": "n5",
      "fromSide": "right",
      "toSide": "left",
      "color": "red",
      "style": "dashed",
      "dir": "none"
    },
    "e4": {
      "from": "w2",
      "to": "n4",
      "fromSide": "left",
      "toSide": "right",
      "label": "write → refused: only 2 of 5 reachable",
      "color": "red",
      "style": "dashed"
    }
  },
  "boxes": {
    "b1": {
      "x": 260,
      "y": -30,
      "w": 240,
      "h": 580,
      "label": "majority side — 3 of 5 · HAS quorum",
      "color": "green",
      "opacity": 0.05
    },
    "b2": {
      "x": 740,
      "y": -30,
      "w": 240,
      "h": 580,
      "label": "minority side — 2 of 5 · stalls",
      "color": "red",
      "opacity": 0.05
    }
  },
  "texts": {
    "t1": {
      "x": 20,
      "y": 440,
      "text": "THE idea: any two majorities of the same\ncluster must share at least one node.\nShared node → shared history → the two\nsides can never both decide. No split-brain,\nenforced by arithmetic alone.",
      "color": "green",
      "size": 12
    },
    "t2": {
      "x": 555,
      "y": 560,
      "text": "practical rules that fall out of this:\n· odd sizes — 4 nodes tolerate 1 failure, same as 3 (you paid for nothing)\n· 5 nodes tolerate 2 · 7 tolerate 3 — quorum = floor(n/2)+1\n· lose the majority → the cluster chooses safety and STOPS\n· tunable reads/writes: any R + W > N gives overlap the same way",
      "color": "amber",
      "size": 12
    }
  },
  "meta": {
    "createdAt": "2026-07-18T09:00:00.000Z",
    "modifiedAt": "2026-07-18T09:00:00.000Z"
  }
}