rdkafka-hs-1.1.0.0: docs/testing/broker-failure-evidence.json
{
"status": "Accepted all nine permanent leader/group/outage/transaction/cancellation cases on the exact clean archive; Apache policy and inherited fencing/init evidence integrated",
"source": {
"candidate_archive": {
"path": "dist-compatibility/linux-arm64-ghc9141-native2160-apache440/candidate.tar.gz",
"sha256": "b02206dc4621d86226f15f6b8b88768e8e9e494b51cb13ec6746805ae1d367ba"
},
"library_fingerprint": "eb6352fe62c75ec289a0a5f543ed0692106d24f3370ddb46ef31f0188410b14a",
"probe": {
"path": "dist-compatibility/linux-arm64-ghc9141-native2160-apache440/LeaderProbe.hs",
"sha256": "932cf2bec75d2ed20ed8193a8dd7a0ddc76a0240a79c6b002edd865b298388e9"
}
},
"environment": {
"os": "PRETTY_NAME=\"Ubuntu 24.04.5 LTS\"\nNAME=\"Ubuntu\"\nVERSION_ID=\"24.04\"\nVERSION=\"24.04.5 LTS (Noble Numbat)\"\nVERSION_CODENAME=noble\nID=ubuntu\nID_LIKE=debian\nHOME_URL=\"https://www.ubuntu.com/\"\nSUPPORT_URL=\"https://help.ubuntu.com/\"\nBUG_REPORT_URL=\"https://bugs.launchpad.net/ubuntu/\"\nPRIVACY_POLICY_URL=\"https://www.ubuntu.com/legal/terms-and-policies/privacy-policy\"\nUBUNTU_CODENAME=noble\nLOGO=ubuntu-logo\n",
"kernel": "Linux 6.18.15 aarch64",
"architecture": "aarch64",
"ghc": "9.14.1",
"cabal": "3.16.1.0",
"loaded_libraries": {
"path": "dist-compatibility/linux-arm64-ghc9141-native2160-apache440/loaded-libraries.log",
"sha256": "1eadb3fce16b3a55fd4cc4a9a27eccefc277fd3e664fd3b76c75acccfa846e3a"
},
"native_binary": {
"path": "dist-compatibility/linux-arm64-ghc9141-native2160-apache440/native-candidate.so.1",
"sha256": "e4ebf0b82581b51a86a0d861a90c07004b0b1fec67ab71e409b572594846154f"
},
"native_version": "2.16.0",
"loaded_native_identity": {
"version": "2.16.0",
"number": 34603263,
"path": "/opt/librdkafka-2.16.0/lib/librdkafka.so.1",
"sha256": "e4ebf0b82581b51a86a0d861a90c07004b0b1fec67ab71e409b572594846154f",
"observed": "(\"2.16.0\",34603263)"
},
"broker_version": "Apache Kafka 4.4.0",
"broker_topology": "Three owned combined broker/controllers, IDs 1/2/3 on loopback 41092/42092/43092; broker default min ISR 1 for single-replica inherited fixtures; failover topic replication 3 and min ISR 2"
},
"observations": {
"callback_modes": [
"async",
"sync"
],
"old_leader": 2,
"new_leader": 3,
"replication_factor": 3,
"min_insync_replicas": 2,
"observed_isr_after_failure": [
3,
1
],
"exact_record_offsets": [
0,
1
],
"exact_committed_next_offset": 2,
"stopped_node": 2,
"restoration": "Node 2 restarted and ISR returned to three before cleanup in each mode"
},
"artifacts": {
"LeaderProbe.hs": {
"path": "dist-compatibility/linux-arm64-ghc9141-native2160-apache440/LeaderProbe.hs",
"sha256": "932cf2bec75d2ed20ed8193a8dd7a0ddc76a0240a79c6b002edd865b298388e9"
},
"leader-build.log": {
"path": "dist-compatibility/linux-arm64-ghc9141-native2160-apache440/leader-build.log",
"sha256": "e76e214025478ec384c464ceb3edb651bedd5f56d97836ecc6de6bd833117ed2"
},
"leader-probe.log": {
"path": "dist-compatibility/linux-arm64-ghc9141-native2160-apache440/leader-probe.log",
"sha256": "8f82f2c0f05e3d73b2c5040b3de68b060d25c8d18abdfc29d8b52677183c4cf7"
},
"restart-one.py": {
"path": "dist-compatibility/linux-arm64-ghc9141-native2160-apache440/restart-one.py",
"sha256": "88b578b3e71233c580474dfd890ebafc48a4ed412d76707faea03009a112db55"
},
"start-kafka.py": {
"path": "dist-compatibility/linux-arm64-ghc9141-native2160-apache440/start-kafka.py",
"sha256": "4e3bb507b55624513a7fdd72d10912e754c88620fc9a15e2011a58cb93fb69e8"
},
"kafka-start.log": {
"path": "dist-compatibility/linux-arm64-ghc9141-native2160-apache440/kafka-start.log",
"sha256": "e04defe1b1b98ad409439177368842c1c2c2767a44aebe68c77066fa6e4ad02d"
}
},
"remaining": [],
"permanent_m1": {
"test_cases": 2,
"source_fingerprint": "35f44f61ae9c18f7e7e0e085f3258081e1d391fc2c934c9bf112a64ab0d8cf00",
"configuration": "Owned three-node Apache Kafka 4.4.0, RF3 topic and min ISR2; actual loaded librdkafka 2.16.0",
"command": "rdkafka-hs-integration --broker-qualification",
"observations": {
"async_leader": [
1,
2
],
"sync_leader": [
3,
1
],
"records": [
0,
1
],
"committed_next": 2,
"ISR": "Exact [1,2,3] before stop, exact remaining two after election, exact [1,2,3] after owned node restart"
},
"log": {
"path": "dist-compatibility/owned-fixture-checkpoint/broker-policy.log",
"sha256": "bf13d5b8e73c44c17788214b953afcc4e21d17dc06724011ce2885077f92d7b1"
},
"remaining": "Fresh full candidate replay and interruption acceptance are distinct from the passing M1 behaviors."
},
"distributed_checkpoint": {
"tests": 8,
"seconds": 337.27,
"source_receipt": "dist-compatibility/expanded-recovery-checkpoint/distributed-phase6-receipt.json",
"observations": {
"leader": {
"modes": [
"async",
"sync"
],
"offsets": [
0,
1
],
"committed_next": 2,
"ISR": "three -> two -> three"
},
"group": {
"protocols": [
"eager",
"cooperative"
],
"modes": [
"async",
"sync"
],
"transitions": [
"split",
"pause/seek",
"handoff",
"full outage",
"loss-phase eviction",
"reconnect"
],
"assignmentLost_in_before_revoke": true,
"outage_commit_all": "WaitCoord before eviction; NoOffset after unassignment",
"producer": "queue-full overflow and accepted timeout, with neither record appearing after restore",
"pre_outage_stored_next": 3,
"pre_outage_committed_next": 2,
"replay_offsets": [
2,
2
],
"final_committed_next": [
4,
4
]
},
"transaction": {
"modes": [
"async",
"sync"
],
"offline_commit": "TimedOut; retriable=True, fatal=False, abort=False",
"native_error_counts": [
1,
1
],
"restored": "same transaction commit succeeds; read-committed publishes offset 0 exactly once"
}
},
"artifacts": {
"distributed-all6.log": {
"path": "dist-compatibility/expanded-recovery-checkpoint/distributed-all6.log",
"sha256": "65efc755a6a98f8bb143623f4e7668fe9f27986d49da5a42b49d79a182c9e627"
},
"distributed-phase6-receipt.json": {
"path": "dist-compatibility/expanded-recovery-checkpoint/distributed-phase6-receipt.json",
"sha256": "09f0fc485c48fbbeca7cc236eee6c7c0b490430ed1d5240b77097318d6e3823d"
},
"apache-policy6.log": {
"path": "dist-compatibility/expanded-recovery-checkpoint/apache-policy6.log",
"sha256": "15e7af9d13c2dacee1f8b8cecf7376899067f61975e3e60c0cae1fba96ab1753"
}
}
},
"accepted_current": {
"source": {
"project": "mori://shinzui/rdkafka-hs",
"candidate_fingerprint": "2ec6cfbb3416926925e68ad8e96da1322be55ec292821543a8279040762cd98c",
"execution_fingerprint": "74c7156e6fee8653bcec844001fd8f95d703bcf4d8e978a857a9f8f3560b6b0a",
"revision": "bfa4f2e plus captured source",
"archive": {
"path": "dist-compatibility/expanded-source9/candidate.tar.gz",
"sha256": "a70e4839d24c5e5179ff9a8be48643951e185d604cd8ba3401587730279f3b22"
},
"root_file_inventory": {
"path": "dist-compatibility/expanded-source9/root-functional-files.json",
"sha256": "69506c90cfc124f3a175a664873f5d8b49aff62a7426265c56c3dd64fcc84c21"
},
"archive_file_inventory": {
"path": "dist-compatibility/expanded-source9/phase9-functional-files.json",
"sha256": "d0e5d59aa49833ecd1305410c839cbebdbbb418679cecc6de0c2548b142dca4b"
},
"archive_comparison": {
"changed_files": [],
"added_files": [],
"omitted_development_files": [
".envrc",
"cabal.project",
"flake.lock",
"flake.module.nix",
"flake.nix",
"justfile",
"nix/haskell.nix",
"nix/pre-commit.nix",
"nix/redpanda.nix",
"nix/treefmt.nix"
],
"omitted_project_configuration": {
"path": "cabal.project",
"content": "packages: .\n",
"replacement": "Cabal implicit single package in clean extraction; same package set, no solver/compiler constraints in omitted file"
},
"execution_fingerprint": "74c7156e6fee8653bcec844001fd8f95d703bcf4d8e978a857a9f8f3560b6b0a",
"root_fingerprint": "2ec6cfbb3416926925e68ad8e96da1322be55ec292821543a8279040762cd98c"
},
"configuration_sha256": "c6c0771e7da58c35d40170db3ec18cdd2439997e223ef4c088ac3f4e793707f9"
},
"environment": {
"os": "PRETTY_NAME=\"Ubuntu 24.04.5 LTS\"\nNAME=\"Ubuntu\"\nVERSION_ID=\"24.04\"\nVERSION=\"24.04.5 LTS (Noble Numbat)\"\nVERSION_CODENAME=noble\nID=ubuntu\nID_LIKE=debian\nHOME_URL=\"https://www.ubuntu.com/\"\nSUPPORT_URL=\"https://help.ubuntu.com/\"\nBUG_REPORT_URL=\"https://bugs.launchpad.net/ubuntu/\"\nPRIVACY_POLICY_URL=\"https://www.ubuntu.com/legal/terms-and-policies/privacy-policy\"\nUBUNTU_CODENAME=noble\nLOGO=ubuntu-logo",
"kernel": "Linux 6.18.15",
"architecture": "aarch64",
"ghc": "9.14.1",
"cabal": "3.16.1.0",
"java": "openjdk 21.0.12.1 2026-08-18\nOpenJDK Runtime Environment (build 21.0.12.1+1-1-24.04.4-Ubuntu)\nOpenJDK 64-Bit Server VM (build 21.0.12.1+1-1-24.04.4-Ubuntu, mixed mode, sharing)",
"native_version": "2.16.0",
"broker_version": "Apache Kafka 4.4.0",
"loaded_native_identity": {
"observed": "(\"2.16.0\",34603263)",
"path": "/opt/librdkafka-2.16.0/lib/librdkafka.so.1",
"sha256": "e4ebf0b82581b51a86a0d861a90c07004b0b1fec67ab71e409b572594846154f"
},
"broker_topology": "run-owned three-node combined broker/controllers; ephemeral loopback ports; RF3/min ISR2 fault topics"
},
"tests": [
"broker-failure.async observed leader election preserves exact records and commits",
"broker-failure.sync observed leader election preserves exact records and commits",
"broker-failure.eager async handoff pause seek eviction and complete outage recover exact offsets",
"broker-failure.eager sync handoff pause seek eviction and complete outage recover exact offsets",
"broker-failure.cooperative async handoff pause seek eviction and complete outage recover exact offsets",
"broker-failure.cooperative sync handoff pause seek eviction and complete outage recover exact offsets",
"broker-failure.async transaction commit timeout across full outage retries and preserves read-committed visibility",
"broker-failure.sync transaction commit timeout across full outage retries and preserves read-committed visibility",
"broker-failure.cancellation during complete outage restores all owned brokers"
],
"passed": 9,
"seconds": 347.08,
"command": [
"/evidence/native-phase9-binary",
"--broker-qualification"
],
"native_transaction_integration": [
"rdkafka-hs-integration.transaction-errors.transaction-error-leak-probe releases 300 immediate native errors",
"rdkafka-hs-integration.transaction-errors.native allocation control detects the inherited three-error leak",
"rdkafka-hs-integration.transaction-errors.initialization timeout destroys its native error on each retry",
"rdkafka-hs-integration.transaction-errors.zero-timeout initialization resumes successfully against the broker",
"rdkafka-hs-integration.transaction-errors.transaction state errors preserve empty commit and abort recovery",
"rdkafka-hs-integration.transaction-errors.duplicate transactional IDs report a real fatal fencing error",
"rdkafka-hs-integration.transaction-errors.broker-rejected delivery requires abort and permits a successful new transaction",
"rdkafka-hs-integration.transaction-errors.init without transactional ID preserves native code and destroys error",
"rdkafka-hs-integration.transaction-errors.begin without transactional ID preserves native code and destroys error",
"rdkafka-hs-integration.transaction-errors.abort without transactional ID preserves native code and destroys error",
"rdkafka-hs-integration.transaction-errors.commit without transactional ID preserves native code and destroys error",
"rdkafka-hs-integration.transaction-errors.offset without transactional ID preserves native code and destroys error",
"rdkafka-hs-integration.transaction-errors.init NULL return remains success",
"rdkafka-hs-integration.transaction-errors.begin NULL return remains success",
"rdkafka-hs-integration.transaction-errors.abort NULL return remains success",
"rdkafka-hs-integration.transaction-errors.commit NULL return remains success",
"rdkafka-hs-integration.transaction-errors.offset NULL return remains success",
"rdkafka-hs-integration.transaction-errors.init invalid native code still destroys acquired error",
"rdkafka-hs-integration.transaction-errors.begin invalid native code still destroys acquired error",
"rdkafka-hs-integration.transaction-errors.abort invalid native code still destroys acquired error",
"rdkafka-hs-integration.transaction-errors.commit invalid native code still destroys acquired error",
"rdkafka-hs-integration.transaction-errors.offset invalid native code still destroys acquired error",
"rdkafka-hs-integration.transaction-errors.commit copies native flag combination 0 before destruction",
"rdkafka-hs-integration.transaction-errors.commit copies native flag combination 1 before destruction",
"rdkafka-hs-integration.transaction-errors.commit copies native flag combination 2 before destruction",
"rdkafka-hs-integration.transaction-errors.commit copies native flag combination 3 before destruction",
"rdkafka-hs-integration.transaction-errors.commit copies native flag combination 4 before destruction",
"rdkafka-hs-integration.transaction-errors.commit copies native flag combination 5 before destruction",
"rdkafka-hs-integration.transaction-errors.commit copies native flag combination 6 before destruction",
"rdkafka-hs-integration.transaction-errors.commit copies native flag combination 7 before destruction",
"rdkafka-hs-integration.transaction-errors.offset copies native flag combination 0 before destruction",
"rdkafka-hs-integration.transaction-errors.offset copies native flag combination 1 before destruction",
"rdkafka-hs-integration.transaction-errors.offset copies native flag combination 2 before destruction",
"rdkafka-hs-integration.transaction-errors.offset copies native flag combination 3 before destruction",
"rdkafka-hs-integration.transaction-errors.offset copies native flag combination 4 before destruction",
"rdkafka-hs-integration.transaction-errors.offset copies native flag combination 5 before destruction",
"rdkafka-hs-integration.transaction-errors.offset copies native flag combination 6 before destruction",
"rdkafka-hs-integration.transaction-errors.offset copies native flag combination 7 before destruction",
"rdkafka-hs-integration.transaction-errors.init cancellation at decoder stage 20 releases once",
"rdkafka-hs-integration.transaction-errors.begin cancellation at decoder stage 20 releases once",
"rdkafka-hs-integration.transaction-errors.abort cancellation at decoder stage 20 releases once",
"rdkafka-hs-integration.transaction-errors.commit cancellation at decoder stage 20 releases once",
"rdkafka-hs-integration.transaction-errors.commit cancellation at decoder stage 21 releases once",
"rdkafka-hs-integration.transaction-errors.commit cancellation at decoder stage 22 releases once",
"rdkafka-hs-integration.transaction-errors.commit cancellation at decoder stage 23 releases once",
"rdkafka-hs-integration.transaction-errors.offset cancellation at decoder stage 20 releases once",
"rdkafka-hs-integration.transaction-errors.offset cancellation at decoder stage 21 releases once",
"rdkafka-hs-integration.transaction-errors.offset cancellation at decoder stage 22 releases once",
"rdkafka-hs-integration.transaction-errors.offset cancellation at decoder stage 23 releases once",
"rdkafka-hs-integration.transaction-errors.async commit publishes output and source next offset atomically; abort publishes neither",
"rdkafka-hs-integration.transaction-errors.sync commit publishes output and source next offset atomically; abort publishes neither"
],
"apache_configuration_policy": {
"declared": "reject",
"passed": 1,
"command": [
"/evidence/native-phase9-binary",
"-p",
"/unsupported configuration follows/"
],
"artifact": {
"path": "dist-compatibility/expanded-source9/apache-policy9.log",
"sha256": "619f1dacc2a5c8f5e4fa510ce8d50ef9490183a6e2a9078da8c6a023eaecec7c"
}
},
"cleanup": {
"owned_java_processes_remaining": [],
"fixtures": [
{
"root": "dist-compatibility/kafka-fixtures/owned-138157-0",
"cleanup": "All owned process handles exited; owned broker data removed.",
"security_cleanup": null,
"broker_data_remaining": [],
"secret_directory_remaining": false
},
{
"root": "dist-compatibility/kafka-fixtures/owned-154935-0",
"cleanup": "All owned process handles exited; owned broker data removed.",
"security_cleanup": "Owned credential files and JAAS configurations removed; owned log files checked for ephemeral passwords.",
"broker_data_remaining": [],
"secret_directory_remaining": false
},
{
"root": "dist-compatibility/kafka-fixtures/owned-154935-51",
"cleanup": "All owned process handles exited; owned broker data removed.",
"security_cleanup": "Owned credential files and JAAS configurations removed; owned log files checked for ephemeral passwords.",
"broker_data_remaining": [],
"secret_directory_remaining": false
}
]
},
"artifacts": {
"broker-final9.log": {
"path": "dist-compatibility/expanded-source9/broker-final9.log",
"sha256": "f9236628ae671ffa549c4c9ce17ba8ba1acaf5f69e066acfe4ebfe94bd303681"
},
"broker-final9-tests.txt": {
"path": "dist-compatibility/expanded-source9/broker-final9-tests.txt",
"sha256": "1b2270f302280d667a9a755787ee368fce03adc8f849ef070c54f02d99919b84"
},
"configuration.json": {
"path": "dist-compatibility/expanded-source9/configuration.json",
"sha256": "c6c0771e7da58c35d40170db3ec18cdd2439997e223ef4c088ac3f4e793707f9"
},
"fixture-cleanup.json": {
"path": "dist-compatibility/expanded-source9/fixture-cleanup.json",
"sha256": "22a1434a32c0b23c77e8cb0f788c46ca45dc4129ff55add57033437db77be5aa"
}
}
}
}