# 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 = 5, B = 5, complete pairs = 5

| metric | cond | n | median | IQR | mean | sd | min | max |
|---|---|---|---|---|---|---|---|---|
| RTO (s) | A | 5 | 77.60 | 76.87 to 77.60 | 77.36 | 0.54 | 76.72 | 78.00 |
| RTO (s) | B | 5 | 166.41 | 166.09 to 166.50 | 166.47 | 0.89 | 165.46 | 167.88 |
| RPO (writes lost at recovery) | A | 5 | 0 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| RPO (writes lost at recovery) | B | 5 | 746 | 746.00 to 751.00 | 745.20 | 7.79 | 732 | 751 |
| RPO window (s) | A | 5 | 0.00 | 0.00 to 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| RPO window (s) | B | 5 | 148.93 | 148.82 to 149.83 | 148.72 | 1.51 | 146.17 | 149.87 |
| writes lost at the end | A | 5 | 0 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| writes lost at the end | B | 5 | 746 | 746.00 to 751.00 | 745.20 | 7.79 | 732 | 751 |
| writes duplicated | A | 5 | 0 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| writes duplicated | B | 5 | 0 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| RTO, steady (s): first success after the last relapse failure | A | 5 | 110.06 | 108.65 to 112.27 | 109.85 | 2.88 | 105.61 | 112.66 |
| RTO, steady (s): first success after the last relapse failure | B | 5 | 228.59 | 225.73 to 229.10 | 227.45 | 2.81 | 223.46 | 230.39 |
| failed attempts after the first recovery | A | 5 | 1384 | 1093.00 to 1398.00 | 1253.20 | 199.39 | 985 | 1406 |
| failed attempts after the first recovery | B | 5 | 2717 | 2572.00 to 2838.00 | 2641.60 | 251.88 | 2237 | 2844 |
| platform: new primary writable (s) | A | 5 | 18.42 | 17.86 to 19.29 | 18.57 | 0.79 | 17.78 | 19.49 |
| platform: new primary writable (s) | B | 5 | 148.52 | 147.15 to 148.85 | 150.31 | 5.62 | 146.77 | 160.24 |
| platform: DNS switched (s) | A | 5 | 18.90 | 18.39 to 19.73 | 19.06 | 0.76 | 18.31 | 19.98 |
| platform: DNS switched (s) | B | 5 | 148.97 | 147.79 to 149.58 | 150.85 | 5.54 | 147.28 | 160.63 |
| attempts never acknowledged | A | 5 | 0 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| attempts never acknowledged | B | 5 | 351 | 340.00 to 379.00 | 357.20 | 21.61 | 335 | 381 |

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) | 5 | -88.81 | -89.18 | -1.00 | 0.0 | 0.0625 |
| RPO (writes lost at recovery) | 5 | -746 | -746.00 | -1.00 | 0.0 | 0.0625 |
| RPO window (s) | 5 | -148.93 | -148.93 | -1.00 | 0.0 | 0.0625 |
| writes lost at the end | 5 | -746 | -746.00 | -1.00 | 0.0 | 0.0625 |
| writes duplicated | 5 | 0 | 0.00 | 0.00 | - | - |
| RTO, steady (s): first success after the last relapse failure | 5 | -119.94 | -118.48 | -1.00 | 0.0 | 0.0625 |
| failed attempts after the first recovery | 5 | -1460 | -1399.00 | -1.00 | 0.0 | 0.0625 |
| platform: new primary writable (s) | 5 | -129.36 | -129.69 | -1.00 | 0.0 | 0.0625 |
| platform: DNS switched (s) | 5 | -129.60 | -129.77 | -1.00 | 0.0 | 0.0625 |
| attempts never acknowledged | 5 | -351 | -358.00 | -1.00 | 0.0 | 0.0625 |

McNemar (optional), run had at least one lost or duplicated acknowledged write: only A 0, only B 5, exact p = 0.0625 (5 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 5 | 0% (0 to 52) | 5 of 5 | 100% (48 to 100) | 100% |
| duplicated | 0 of 5 | 0% (0 to 52) | 0 of 5 | 0% (0 to 52) | - |
| delayed_but_recovered | 0 of 5 | 0% (0 to 52) | 0 of 5 | 0% (0 to 52) | - |
| incident (lost or duplicated) | 0 of 5 | 0% (0 to 52) | 5 of 5 | 100% (48 to 100) | 100% |

Writes lost or duplicated per 1,000 acknowledged writes (pooled): A 0.00 (0 of 5250), B 318.08 (3726 of 11714); reduction 100%

_Only 5 complete pair(s); the proposal plans 10 per failure type. Treat these numbers as preliminary._

## Failure type: pod-kill

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

| metric | cond | n | median | IQR | mean | sd | min | max |
|---|---|---|---|---|---|---|---|---|
| RTO (s) | A | 4 | 31.03 | 30.81 to 31.28 | 31.07 | 0.30 | 30.81 | 31.39 |
| RTO (s) | B | 5 | 181.65 | 181.46 to 183.69 | 175.73 | 15.73 | 147.68 | 184.17 |
| RPO (writes lost at recovery) | A | 4 | 0.00 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| RPO (writes lost at recovery) | B | 5 | 645 | 644.00 to 654.00 | 647.60 | 7.16 | 639 | 656 |
| RPO window (s) | A | 4 | 0.00 | 0.00 to 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| RPO window (s) | B | 5 | 128.80 | 128.53 to 130.59 | 129.28 | 1.42 | 127.58 | 130.91 |
| writes lost at the end | A | 5 | 0 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| writes lost at the end | B | 5 | 645 | 644.00 to 654.00 | 647.60 | 7.16 | 639 | 656 |
| writes duplicated | A | 5 | 0 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| writes duplicated | B | 5 | 0 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| RTO, steady (s): first success after the last relapse failure | A | 4 | 33.91 | 31.25 to 36.78 | 34.13 | 3.55 | 30.81 | 37.89 |
| RTO, steady (s): first success after the last relapse failure | B | 5 | 242.97 | 237.93 to 244.99 | 236.26 | 17.99 | 205.07 | 250.34 |
| failed attempts after the first recovery | A | 5 | 0 | 0.00 to 5.00 | 3.40 | 5.27 | 0 | 12 |
| failed attempts after the first recovery | B | 5 | 2404 | 2341.00 to 2600.00 | 2536.00 | 293.88 | 2313 | 3022 |
| platform: new primary writable (s) | A | 4 | 14.54 | 13.93 to 15.09 | 14.49 | 1.22 | 12.96 | 15.90 |
| platform: new primary writable (s) | B | 5 | 133.16 | 131.07 to 143.92 | 138.23 | 12.24 | 126.19 | 156.80 |
| platform: DNS switched (s) | A | 4 | 14.97 | 14.37 to 15.53 | 14.93 | 1.23 | 13.42 | 16.37 |
| platform: DNS switched (s) | B | 5 | 133.63 | 131.47 to 144.56 | 138.72 | 12.29 | 126.64 | 157.31 |
| attempts never acknowledged | A | 5 | 0 | 0.00 to 0.00 | 0.00 | 0.00 | 0 | 0 |
| attempts never acknowledged | B | 5 | 455 | 427.00 to 468.00 | 429.80 | 92.79 | 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) | 4 | -151.35 | -150.88 | -1.00 | 0.0 | 0.1250 |
| RPO (writes lost at recovery) | 4 | -644.50 | -644.75 | -1.00 | 0.0 | 0.1250 |
| RPO window (s) | 4 | -128.67 | -128.73 | -1.00 | 0.0 | 0.1250 |
| writes lost at the end | 5 | -645 | -647.50 | -1.00 | 0.0 | 0.0625 |
| writes duplicated | 5 | 0 | 0.00 | 0.00 | - | - |
| RTO, steady (s): first success after the last relapse failure | 4 | -206.83 | -205.95 | -1.00 | 0.0 | 0.1250 |
| failed attempts after the first recovery | 5 | -2399 | -2464.50 | -1.00 | 0.0 | 0.0625 |
| platform: new primary writable (s) | 4 | -118.22 | -118.28 | -1.00 | 0.0 | 0.1250 |
| platform: DNS switched (s) | 4 | -118.21 | -118.30 | -1.00 | 0.0 | 0.1250 |
| attempts never acknowledged | 5 | -455 | -447.50 | -1.00 | 0.0 | 0.0625 |

McNemar (optional), run had at least one lost or duplicated acknowledged write: only A 0, only B 5, exact p = 0.0625 (5 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 5 | 0% (0 to 52) | 5 of 5 | 100% (48 to 100) | 100% |
| duplicated | 0 of 5 | 0% (0 to 52) | 0 of 5 | 0% (0 to 52) | - |
| delayed_but_recovered | 0 of 5 | 0% (0 to 52) | 0 of 5 | 0% (0 to 52) | - |
| incident (lost or duplicated) | 0 of 5 | 0% (0 to 52) | 5 of 5 | 100% (48 to 100) | 100% |

Writes lost or duplicated per 1,000 acknowledged writes (pooled): A 0.00 (0 of 5250), B 285.26 (3238 of 11351); reduction 100%

_Only 5 complete pair(s); the proposal plans 10 per failure type. Treat these numbers as preliminary._

## 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 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% |

