[PASS] membership: 4 members, f=1, quorum 3 (n=4 f=1 quorum=3) [PASS] membership: configuration_hash recomputed (51eb143f53b9e31506f7ecc1dd562a9120f56fe7b60f1b5b7338afadb06a3dd4) [PASS] cain-mr-node-1: reports the same configuration_hash [PASS] cain-mr-node-1: 42 COMMIT_QC + 42 PREPARE_QC verified, chain contiguous from genesis (head 040c1a126bbe2cfb) [PASS] cain-mr-node-1: stated head_decision_hash matches the folded chain [PASS] cain-mr-node-2: reports the same configuration_hash [PASS] cain-mr-node-2: 42 COMMIT_QC + 42 PREPARE_QC verified, chain contiguous from genesis (head 040c1a126bbe2cfb) [PASS] cain-mr-node-2: stated head_decision_hash matches the folded chain [PASS] cain-mr-node-3: reports the same configuration_hash [PASS] cain-mr-node-3: 42 COMMIT_QC + 42 PREPARE_QC verified, chain contiguous from genesis (head 040c1a126bbe2cfb) [PASS] cain-mr-node-3: stated head_decision_hash matches the folded chain [PASS] cain-mr-node-4: reports the same configuration_hash [PASS] cain-mr-node-4: 42 COMMIT_QC + 42 PREPARE_QC verified, chain contiguous from genesis (head 040c1a126bbe2cfb) [PASS] cain-mr-node-4: stated head_decision_hash matches the folded chain [PASS] all nodes: identical decision chain (same sequence -> same digest -> same decision_hash) (42 decisions) [PASS] all nodes: identical application state hash after the run (dcb68ef1154ea5a7) [PASS] run spans a view change (decisions committed in more than one view) (views [0, 1]) [PASS] VIEW_CHANGE_QC for view 1: signatures + quorum [PASS] AuthorizationCertificate seq 42 issued by cain-mr-node-1 [PASS] AuthorizationCertificate seq 42 issued by cain-mr-node-2 [PASS] AuthorizationCertificate seq 42 issued by cain-mr-node-3 [PASS] AuthorizationCertificate seq 42 issued by cain-mr-node-4 [PASS] negative control: forged signature -> rejected (signature of 'cain-mr-node-1' does not verify) [PASS] negative control: below quorum (hash recomputed) -> rejected (2 distinct signers, need 3) [PASS] negative control: COMMIT votes presented as PREPARE (domain separation) -> rejected (vote from 'cain-mr-node-1' is a COMMIT by 'cain-mr-node-1', need PREPARE) [PASS] negative control: different decision digest (hash recomputed) -> rejected (vote from 'cain-mr-node-1' is for another (sequence, digest)) [PASS] negative control: cross-cluster replay -> rejected (wrong cluster or epoch) [PASS] negative control: cross-view replay (hash recomputed) -> rejected (vote from 'cain-mr-node-1' is for view 1) [PASS] negative control: vote content altered after signing -> rejected (signature of 'cain-mr-node-1' does not verify) [PASS] placement covers exactly the 4 members ({'cain-mr-node-1': 'atl', 'cain-mr-node-2': 'lax', 'cain-mr-node-3': 'lax', 'cain-mr-node-4': 'mia'}) [PASS] replicas placed in 3 distinct regions (atl, lax, mia) [PASS] every decision carries signatures from at least 2 regions (42 decisions) [PASS] phase A_baseline: stated result PASS recomputed from responses (20/20 ALLOW, expected COMMIT) [PASS] phase A_baseline: PASS [PASS] phase B_mia_down: stated result PASS recomputed from responses (6/6 ALLOW, expected COMMIT) [PASS] phase B_mia_down: PASS [PASS] phase C_one_lax_replica_down: stated result PASS recomputed from responses (6/6 ALLOW, expected COMMIT) [PASS] phase C_one_lax_replica_down: PASS [PASS] phase D_lax_host_down: stated result PASS recomputed from responses (0/3 ALLOW, expected NO_COMMIT (fail closed)) [PASS] phase D_lax_host_down: PASS [PASS] phase E_atl_region_and_primary_down: stated result PASS recomputed from responses (6/6 ALLOW, expected COMMIT) [PASS] phase E_atl_region_and_primary_down: PASS [PASS] phase F_all_back: stated result PASS recomputed from responses (3/3 ALLOW, expected COMMIT) [PASS] phase F_all_back: PASS [PASS] B_mia_down: 6 decisions carry no signature from stopped mia region ['cain-mr-node-4'] (sequences [22, 23, 24, 25, 26, 27]) [PASS] C_one_lax_replica_down: 6 decisions carry no signature from stopped lax replica ['cain-mr-node-3'] (sequences [28, 29, 30, 31, 32, 33]) [PASS] E_atl_region_and_primary_down: 6 decisions carry no signature from stopped atl region ['cain-mr-node-1'] (sequences [34, 35, 36, 37, 38, 39]) [PASS] fail-closed phase: none of its requests is in any replica's decision chain (not executed later) (absent) [PASS] E_atl_region_and_primary_down: decisions in a higher view, proposed by that view's primary, not the killed view-0 primary (proposers ['cain-mr-node-2']) ALL_CHECKS_PASSED: 49/49 checks, 336 certificates verified