{"abstract":"The replica removal operation is admitted even though physical removal precedes committed membership removal.","category":"Replication","checks":9,"contract":"Return a Boolean admission decision for retire a replica and discard its data. The record r must satisfy all of: r['replacement_count'][0]-1 >= r['replacement_count'][1]; r['replacement_durable'] is True; len(r['handoff_complete']) == 0; r['reader_drain'] == 0; r['membership_commit'][0] <= r['membership_commit'][1]. Extra tracing fields are ignored; validation does not mutate the record.","evaluation_group":"xd-replica-removal","failed_approach":"Adding the membership commit check repairs the reported defect, but replacing the adjacent replacement count check loses that independent invariant.","family":"xd-replica-removal-membership_commit","id":"FA-671","implementations":{"attempt":{"sha256":"60c7ae746f8d5fc432c904b600054856918409d9bdb114caf4f62ad8f553ec9b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(r):\n    return (r['replacement_durable'] is True) and (len(r['handoff_complete']) == 0) and (r['reader_drain'] == 0) and (r['membership_commit'][0] <= r['membership_commit'][1])\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nr = {'replacement_count': [4, 3], 'replacement_durable': True, 'handoff_complete': [], 'reader_drain': 0, 'membership_commit': [20, 20]}\ncheck('valid operation', solve(r), True)\ncheck('Retirement leaves fewer copies than the required factor', solve(dict(r, **{'replacement_count': [3, 3]})), False)\ncheck('The replacement has only volatile copied state', solve(dict(r, **{'replacement_durable': False})), False)\ncheck('Keys still assigned to the retiring replica are lost', solve(dict(r, **{'handoff_complete': ['key-7']})), False)\ncheck('Active snapshot readers lose their pinned source', solve(dict(r, **{'reader_drain': 2})), False)\ncheck('Physical removal precedes committed membership removal', solve(dict(r, **{'membership_commit': [21, 20]})), False)\ncheck('unrelated tracing metadata', solve(dict(r, trace='run-'+str(N))), True)\ncheck('repeat validation is pure', solve(r), True)\ninvalid = {'replacement_count': [3, 3], 'replacement_durable': False, 'handoff_complete': ['key-7'], 'reader_drain': 2, 'membership_commit': [21, 20]}\nkeys = list(invalid)\npair = {keys[N % len(keys)]: invalid[keys[N % len(keys)]], keys[(N+1) % len(keys)]: invalid[keys[(N+1) % len(keys)]]}\ncheck('two independent violations in variant', solve(dict(r, **pair)), False)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"879993aa1ec426c1d6ee3744ef82b1a5368b61c94f724d653c7a2790a050ad44","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(r):\n    return (r['replacement_count'][0]-1 >= r['replacement_count'][1]) and (r['replacement_durable'] is True) and (len(r['handoff_complete']) == 0) and (r['reader_drain'] == 0)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nr = {'replacement_count': [4, 3], 'replacement_durable': True, 'handoff_complete': [], 'reader_drain': 0, 'membership_commit': [20, 20]}\ncheck('valid operation', solve(r), True)\ncheck('Retirement leaves fewer copies than the required factor', solve(dict(r, **{'replacement_count': [3, 3]})), False)\ncheck('The replacement has only volatile copied state', solve(dict(r, **{'replacement_durable': False})), False)\ncheck('Keys still assigned to the retiring replica are lost', solve(dict(r, **{'handoff_complete': ['key-7']})), False)\ncheck('Active snapshot readers lose their pinned source', solve(dict(r, **{'reader_drain': 2})), False)\ncheck('Physical removal precedes committed membership removal', solve(dict(r, **{'membership_commit': [21, 20]})), False)\ncheck('unrelated tracing metadata', solve(dict(r, trace='run-'+str(N))), True)\ncheck('repeat validation is pure', solve(r), True)\ninvalid = {'replacement_count': [3, 3], 'replacement_durable': False, 'handoff_complete': ['key-7'], 'reader_drain': 2, 'membership_commit': [21, 20]}\nkeys = list(invalid)\npair = {keys[N % len(keys)]: invalid[keys[N % len(keys)]], keys[(N+1) % len(keys)]: invalid[keys[(N+1) % len(keys)]]}\ncheck('two independent violations in variant', solve(dict(r, **pair)), False)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"26574c4899d4ab75de3ee303353f85cd810d03389d7872c2571aaddf0af37020","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(r):\n    return (r['replacement_count'][0]-1 >= r['replacement_count'][1]) and (r['replacement_durable'] is True) and (len(r['handoff_complete']) == 0) and (r['reader_drain'] == 0) and (r['membership_commit'][0] <= r['membership_commit'][1])\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nr = {'replacement_count': [4, 3], 'replacement_durable': True, 'handoff_complete': [], 'reader_drain': 0, 'membership_commit': [20, 20]}\ncheck('valid operation', solve(r), True)\ncheck('Retirement leaves fewer copies than the required factor', solve(dict(r, **{'replacement_count': [3, 3]})), False)\ncheck('The replacement has only volatile copied state', solve(dict(r, **{'replacement_durable': False})), False)\ncheck('Keys still assigned to the retiring replica are lost', solve(dict(r, **{'handoff_complete': ['key-7']})), False)\ncheck('Active snapshot readers lose their pinned source', solve(dict(r, **{'reader_drain': 2})), False)\ncheck('Physical removal precedes committed membership removal', solve(dict(r, **{'membership_commit': [21, 20]})), False)\ncheck('unrelated tracing metadata', solve(dict(r, trace='run-'+str(N))), True)\ncheck('repeat validation is pure', solve(r), True)\ninvalid = {'replacement_count': [3, 3], 'replacement_durable': False, 'handoff_complete': ['key-7'], 'reader_drain': 2, 'membership_commit': [21, 20]}\nkeys = list(invalid)\npair = {keys[N % len(keys)]: invalid[keys[N % len(keys)]], keys[(N+1) % len(keys)]: invalid[keys[(N+1) % len(keys)]]}\ncheck('two independent violations in variant', solve(dict(r, **pair)), False)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":" This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"xd-replica-removal-membership_commit","generated_at":"2026-09-29T14:36:54.964930+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A deterministic local contract for replication. Each negative fixture violates exactly one invariant. No transport timing, persistence, cryptographic verification, or full protocol implementation is claimed.","repair":"Require r['membership_commit'][0] <= r['membership_commit'][1] together with every other stated precondition before accepting the operation.","root_cause":"The admission path omits the membership commit invariant while validating the other operation preconditions.","sha256":"7c8e4a6bdc4f77b6372b7f1987c0b48ee7fb6822bcf4a126258c44c13cc19349","title":"Retire a replica and discard its data: Physical removal precedes committed membership removal · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":34.06,"exit_code":1,"observations":[{"actual":true,"check":"valid operation","expected":true,"passed":true},{"actual":true,"check":"Retirement leaves fewer copies than the required factor","expected":false,"passed":false},{"actual":false,"check":"The replacement has only volatile copied state","expected":false,"passed":true},{"actual":false,"check":"Keys still assigned to the retiring replica are lost","expected":false,"passed":true},{"actual":false,"check":"Active snapshot readers lose their pinned source","expected":false,"passed":true},{"actual":false,"check":"Physical removal precedes committed membership removal","expected":false,"passed":true},{"actual":true,"check":"unrelated tracing metadata","expected":true,"passed":true},{"actual":true,"check":"repeat validation is pure","expected":true,"passed":true},{"actual":false,"check":"two independent violations in variant","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"valid operation\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"Retirement leaves fewer copies than the required factor\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"The replacement has only volatile copied state\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"Keys still assigned to the retiring replica are lost\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"Active snapshot readers lose their pinned source\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"Physical removal precedes committed membership removal\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"unrelated tracing metadata\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"repeat validation is pure\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"two independent violations in variant\", \"actual\": false, \"expected\": false, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":34.981,"exit_code":1,"observations":[{"actual":true,"check":"valid operation","expected":true,"passed":true},{"actual":false,"check":"Retirement leaves fewer copies than the required factor","expected":false,"passed":true},{"actual":false,"check":"The replacement has only volatile copied state","expected":false,"passed":true},{"actual":false,"check":"Keys still assigned to the retiring replica are lost","expected":false,"passed":true},{"actual":false,"check":"Active snapshot readers lose their pinned source","expected":false,"passed":true},{"actual":true,"check":"Physical removal precedes committed membership removal","expected":false,"passed":false},{"actual":true,"check":"unrelated tracing metadata","expected":true,"passed":true},{"actual":true,"check":"repeat validation is pure","expected":true,"passed":true},{"actual":false,"check":"two independent violations in variant","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"valid operation\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"Retirement leaves fewer copies than the required factor\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"The replacement has only volatile copied state\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"Keys still assigned to the retiring replica are lost\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"Active snapshot readers lose their pinned source\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"Physical removal precedes committed membership removal\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"unrelated tracing metadata\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"repeat validation is pure\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"two independent violations in variant\", \"actual\": false, \"expected\": false, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":116.87,"exit_code":0,"observations":[{"actual":true,"check":"valid operation","expected":true,"passed":true},{"actual":false,"check":"Retirement leaves fewer copies than the required factor","expected":false,"passed":true},{"actual":false,"check":"The replacement has only volatile copied state","expected":false,"passed":true},{"actual":false,"check":"Keys still assigned to the retiring replica are lost","expected":false,"passed":true},{"actual":false,"check":"Active snapshot readers lose their pinned source","expected":false,"passed":true},{"actual":false,"check":"Physical removal precedes committed membership removal","expected":false,"passed":true},{"actual":true,"check":"unrelated tracing metadata","expected":true,"passed":true},{"actual":true,"check":"repeat validation is pure","expected":true,"passed":true},{"actual":false,"check":"two independent violations in variant","expected":false,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"valid operation\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"Retirement leaves fewer copies than the required factor\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"The replacement has only volatile copied state\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"Keys still assigned to the retiring replica are lost\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"Active snapshot readers lose their pinned source\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"Physical removal precedes committed membership removal\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"unrelated tracing metadata\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"repeat validation is pure\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"two independent violations in variant\", \"actual\": false, \"expected\": false, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}