# Comparison of conditions A and B

A = reconciliation-aware controller (CNPG replication); B = snapshot-restore baseline. Run i of A is paired with run i of B. Two-sided Wilcoxon signed-rank test, zero differences dropped.

## Failure type: partition

Runs: A = 10, B = 10, complete pairs = 10

| metric | cond | n | median | IQR | mean | sd | min | max |
|---|---|---|---|---|---|---|---|---|
| RTO (s) | A | 10 | 76.16 | 22.85 to 77.42 | 55.26 | 28.16 | 21.79 | 78.00 |
| RTO (s) | B | 10 | 170.05 | 166.43 to 172.56 | 169.59 | 3.38 | 165.46 | 173.82 |
| RPO (writes lost at recovery) | A | 10 | 0.00 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| RPO (writes lost at recovery) | B | 10 | 708.50 | 682.50 to 746.00 | 711.10 | 36.83 | 667 | 751 |
| RPO window (s) | A | 10 | 0.00 | 0.00 to 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| RPO window (s) | B | 10 | 141.46 | 136.19 to 148.90 | 141.92 | 7.34 | 133.12 | 149.87 |
| writes lost at the end | A | 10 | 0.00 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| writes lost at the end | B | 10 | 708.50 | 682.50 to 746.00 | 711.10 | 36.83 | 667 | 751 |
| writes duplicated | A | 10 | 0.00 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| writes duplicated | B | 10 | 0.00 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| RTO, steady (s): first success after the last relapse failure | A | 10 | 107.13 | 22.85 to 111.00 | 75.08 | 45.25 | 21.79 | 112.66 |
| RTO, steady (s): first success after the last relapse failure | B | 10 | 229.65 | 227.31 to 230.59 | 228.79 | 2.67 | 223.46 | 231.53 |
| failed attempts after the first recovery | A | 10 | 1039.00 | 0.00 to 1394.50 | 769.00 | 677.06 | 0 | 1424 |
| failed attempts after the first recovery | B | 10 | 2267.50 | 2248.50 to 2680.75 | 2435.20 | 278.43 | 2111 | 2844 |
| platform: new primary writable (s) | A | 10 | 15.30 | 11.95 to 18.28 | 14.98 | 3.95 | 8.87 | 19.49 |
| platform: new primary writable (s) | B | 10 | 153.28 | 147.49 to 159.89 | 154.54 | 8.59 | 143.66 | 166.96 |
| platform: DNS switched (s) | A | 10 | 15.79 | 12.40 to 18.77 | 15.46 | 3.96 | 9.38 | 19.98 |
| platform: DNS switched (s) | B | 10 | 153.83 | 148.08 to 160.31 | 155.06 | 8.63 | 143.99 | 167.53 |
| attempts never acknowledged | A | 10 | 0.00 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| attempts never acknowledged | B | 10 | 380.00 | 357.50 to 390.00 | 376.30 | 26.84 | 335 | 416 |

Runs with no RTO (never recovered): A = 0, B = 0

| metric | pairs used | median diff (A - B) | Hodges-Lehmann | rank-biserial r | W | p |
|---|---|---|---|---|---|---|
| RTO (s) | 10 | -93.67 | -119.22 | -1.00 | 0.0 | 0.0020 |
| RPO (writes lost at recovery) | 10 | -708.50 | -709.00 | -1.00 | 0.0 | 0.0020 |
| RPO window (s) | 10 | -141.46 | -141.51 | -1.00 | 0.0 | 0.0020 |
| writes lost at the end | 10 | -708.50 | -709.00 | -1.00 | 0.0 | 0.0020 |
| writes duplicated | 10 | 0.00 | 0.00 | 0.00 | - | - |
| RTO, steady (s): first success after the last relapse failure | 10 | -120.23 | -162.13 | -1.00 | 0.0 | 0.0020 |
| failed attempts after the first recovery | 10 | -1666.00 | -1666.00 | -1.00 | 0.0 | 0.0020 |
| platform: new primary writable (s) | 10 | -136.96 | -138.07 | -1.00 | 0.0 | 0.0020 |
| platform: DNS switched (s) | 10 | -136.78 | -138.08 | -1.00 | 0.0 | 0.0020 |
| attempts never acknowledged | 10 | -380.00 | -378.50 | -1.00 | 0.0 | 0.0020 |

McNemar (optional), run had at least one lost or duplicated acknowledged write: only A 0, only B 10, exact p = 0.0020 (10 pairs)


**Headline: incident rate (percentage of runs showing each outcome)**

| outcome | A runs showing | A rate (95% CI) | B runs showing | B rate (95% CI) | reduction of A relative to B |
|---|---|---|---|---|---|
| lost | 0 of 10 | 0% (0 to 31) | 10 of 10 | 100% (69 to 100) | 100% |
| duplicated | 0 of 10 | 0% (0 to 31) | 0 of 10 | 0% (0 to 31) | - |
| delayed_but_recovered | 0 of 10 | 0% (0 to 31) | 0 of 10 | 0% (0 to 31) | - |
| incident (lost or duplicated) | 0 of 10 | 0% (0 to 31) | 10 of 10 | 100% (69 to 100) | 100% |

Writes lost or duplicated per 1,000 acknowledged writes (pooled): A 0.00 (0 of 10500), B 306.02 (7111 of 23237); reduction 100%

## Failure type: pod-kill

Runs: A = 10, B = 10, complete pairs = 10

| metric | cond | n | median | IQR | mean | sd | min | max |
|---|---|---|---|---|---|---|---|---|
| RTO (s) | A | 9 | 31.11 | 31.06 to 31.24 | 31.12 | 0.20 | 30.81 | 31.39 |
| RTO (s) | B | 10 | 181.74 | 181.50 to 182.70 | 178.87 | 11.00 | 147.68 | 184.17 |
| RPO (writes lost at recovery) | A | 9 | 0 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| RPO (writes lost at recovery) | B | 10 | 630.00 | 619.50 to 644.75 | 633.40 | 15.76 | 617 | 656 |
| RPO window (s) | A | 9 | 0.00 | 0.00 to 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| RPO window (s) | B | 10 | 125.76 | 123.59 to 128.73 | 126.42 | 3.18 | 123.05 | 130.91 |
| writes lost at the end | A | 10 | 0.00 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| writes lost at the end | B | 10 | 630.00 | 619.50 to 644.75 | 633.40 | 15.76 | 617 | 656 |
| writes duplicated | A | 10 | 0.00 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| writes duplicated | B | 10 | 0.00 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| RTO, steady (s): first success after the last relapse failure | A | 9 | 38.00 | 36.42 to 39.17 | 37.32 | 3.94 | 30.81 | 42.46 |
| RTO, steady (s): first success after the last relapse failure | B | 10 | 240.92 | 238.84 to 243.97 | 238.55 | 12.32 | 205.07 | 250.34 |
| failed attempts after the first recovery | A | 10 | 7.00 | 1.25 to 12.00 | 8.50 | 8.67 | 0 | 28 |
| failed attempts after the first recovery | B | 10 | 2357.00 | 2271.75 to 2410.00 | 2418.80 | 238.43 | 2226 | 3022 |
| platform: new primary writable (s) | A | 9 | 9.88 | 9.06 to 14.26 | 11.57 | 2.90 | 8.53 | 15.90 |
| platform: new primary writable (s) | B | 10 | 142.94 | 134.57 to 152.20 | 143.83 | 12.55 | 126.19 | 166.55 |
| platform: DNS switched (s) | A | 9 | 10.35 | 9.50 to 14.68 | 12.03 | 2.88 | 8.98 | 16.37 |
| platform: DNS switched (s) | B | 10 | 143.50 | 135.03 to 152.50 | 144.27 | 12.54 | 126.64 | 166.98 |
| attempts never acknowledged | A | 10 | 0.00 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| attempts never acknowledged | B | 10 | 454.50 | 446.75 to 468.75 | 445.90 | 65.25 | 276 | 523 |

Runs with no RTO (never recovered): A = 1, B = 0

| metric | pairs used | median diff (A - B) | Hodges-Lehmann | rank-biserial r | W | p |
|---|---|---|---|---|---|---|
| RTO (s) | 9 | -150.67 | -150.89 | -1.00 | 0.0 | 0.0039 |
| RPO (writes lost at recovery) | 9 | -621 | -631.00 | -1.00 | 0.0 | 0.0039 |
| RPO window (s) | 9 | -123.94 | -125.94 | -1.00 | 0.0 | 0.0039 |
| writes lost at the end | 10 | -630.00 | -632.50 | -1.00 | 0.0 | 0.0020 |
| writes duplicated | 10 | 0.00 | 0.00 | 0.00 | - | - |
| RTO, steady (s): first success after the last relapse failure | 9 | -202.06 | -202.33 | -1.00 | 0.0 | 0.0039 |
| failed attempts after the first recovery | 10 | -2351.00 | -2360.00 | -1.00 | 0.0 | 0.0020 |
| platform: new primary writable (s) | 9 | -133.44 | -131.94 | -1.00 | 0.0 | 0.0039 |
| platform: DNS switched (s) | 9 | -133.46 | -131.87 | -1.00 | 0.0 | 0.0039 |
| attempts never acknowledged | 10 | -454.50 | -456.50 | -1.00 | 0.0 | 0.0020 |

McNemar (optional), run had at least one lost or duplicated acknowledged write: only A 0, only B 10, exact p = 0.0020 (10 pairs)


**Headline: incident rate (percentage of runs showing each outcome)**

| outcome | A runs showing | A rate (95% CI) | B runs showing | B rate (95% CI) | reduction of A relative to B |
|---|---|---|---|---|---|
| lost | 0 of 10 | 0% (0 to 31) | 10 of 10 | 100% (69 to 100) | 100% |
| duplicated | 0 of 10 | 0% (0 to 31) | 0 of 10 | 0% (0 to 31) | - |
| delayed_but_recovered | 0 of 10 | 0% (0 to 31) | 0 of 10 | 0% (0 to 31) | - |
| incident (lost or duplicated) | 0 of 10 | 0% (0 to 31) | 10 of 10 | 100% (69 to 100) | 100% |

Writes lost or duplicated per 1,000 acknowledged writes (pooled): A 0.00 (0 of 10500), B 281.00 (6334 of 22541); reduction 100%

## Headline across all failure types

| outcome | A runs showing | A rate (95% CI) | B runs showing | B rate (95% CI) | reduction of A relative to B |
|---|---|---|---|---|---|
| lost | 0 of 20 | 0% (0 to 17) | 20 of 20 | 100% (83 to 100) | 100% |
| duplicated | 0 of 20 | 0% (0 to 17) | 0 of 20 | 0% (0 to 17) | - |
| delayed_but_recovered | 0 of 20 | 0% (0 to 17) | 0 of 20 | 0% (0 to 17) | - |
| incident (lost or duplicated) | 0 of 20 | 0% (0 to 17) | 20 of 20 | 100% (83 to 100) | 100% |

