diff --git a/scripts/m11b4_latency_report.json b/scripts/m11b4_latency_report.json new file mode 100644 index 0000000..7b747c5 --- /dev/null +++ b/scripts/m11b4_latency_report.json @@ -0,0 +1,2041 @@ +{ + "n": 200, + "perceived": 200, + "lost": 0, + "via_broadcast": 200, + "via_polling_fallback": 0, + "p50_ms": 0.671, + "p90_ms": 0.731, + "p99_ms": 0.822, + "max_ms": 0.958, + "segment_p99_ms": { + "write_commit": 0.805, + "broadcast_emit": 0.048, + "consume_wait": 0.031 + }, + "bottleneck_segment": "write_commit", + "slo_ms": 1000.0, + "slo_passed": true, + "broadcast_stats": { + "published": 200, + "dropped_disabled": 0, + "failed": 0, + "retried": 0, + "direct_publish": 0, + "queued": 200, + "subscriber_errors": 0, + "max_latency_ms": 0.139, + "in_flight": 0, + "latency_samples": 200, + "last_error": null, + "enabled": true, + "channels": [ + "in_process" + ], + "p50_latency_ms": 0.077, + "p99_latency_ms": 0.123 + }, + "samples": [ + { + "scene_id": "sc_bench", + "event_id": "8f65a47a94fa4106a2cea59886316bd6", + "t_write_ms": 0.925, + "t_broadcast_emit_ms": 0.066, + "t_consume_ms": 0.033, + "e2e_ms": 0.958, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "960ddb96ea2a4c499db67b900c7d107e", + "t_write_ms": 0.69, + "t_broadcast_emit_ms": 0.036, + "t_consume_ms": 0.017, + "e2e_ms": 0.707, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "4088ed105b324181a1f328f8dd8ed2ae", + "t_write_ms": 0.696, + "t_broadcast_emit_ms": 0.036, + "t_consume_ms": 0.019, + "e2e_ms": 0.714, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "7a8b4dfcd47746e7bc4ddd7c1141d8c7", + "t_write_ms": 0.674, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.689, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "4b17ebb076a44956bbe6900aac637f15", + "t_write_ms": 0.639, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.015, + "e2e_ms": 0.654, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "398f40c07b5a4ab29a36f4133bc4c50f", + "t_write_ms": 0.678, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.694, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "0a405af38939450bb45afd5970cb6fba", + "t_write_ms": 0.64, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.015, + "e2e_ms": 0.655, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "0d6eafe3373643d78c02e60514405264", + "t_write_ms": 0.644, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.015, + "e2e_ms": 0.658, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "55b87b5a7c5e45abb21b6c33b1fc96c0", + "t_write_ms": 0.683, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.017, + "e2e_ms": 0.7, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "8237e4641795486ca443502b87aae4a7", + "t_write_ms": 0.67, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.685, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "ff122087331945b49ff29bada48490f3", + "t_write_ms": 0.638, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.016, + "e2e_ms": 0.654, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "002107fcdd4f49e0a019f2af19b67351", + "t_write_ms": 0.637, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.651, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "d3c1edb9c61147f7854dbbfbb116fb25", + "t_write_ms": 0.638, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.653, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "127f190c828d4e0384b529cf1ca0546d", + "t_write_ms": 0.62, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.014, + "e2e_ms": 0.635, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "a26b0629aea94c228ed205b905dbc571", + "t_write_ms": 0.684, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.017, + "e2e_ms": 0.701, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "03c4a5034fc04e809e960a3da3e017be", + "t_write_ms": 0.646, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.015, + "e2e_ms": 0.661, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "d38135cd54034d4ca1fba9dba09101d4", + "t_write_ms": 0.643, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.017, + "e2e_ms": 0.659, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "d4ebea98f6a34748808bb3bedbd9197c", + "t_write_ms": 0.635, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.014, + "e2e_ms": 0.65, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "bcb52e63e1354e4097a0a99c6cef1eb7", + "t_write_ms": 0.643, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.659, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "2afbd2b524674df99b1343c9c5556ab2", + "t_write_ms": 0.62, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.014, + "e2e_ms": 0.635, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "f5eee0e10e65473881724f8edd1e123a", + "t_write_ms": 0.693, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.017, + "e2e_ms": 0.71, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "cab525798f97402196aa0f48082f3bf2", + "t_write_ms": 0.642, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.015, + "e2e_ms": 0.657, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "3cf96069dde149d899bb80cc8206ff10", + "t_write_ms": 0.642, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.659, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "fc728718f2db4b47afcac09c50183e0e", + "t_write_ms": 0.615, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.63, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "81b43dbd63be4746a38bbd94ffb8b068", + "t_write_ms": 0.644, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.659, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "efe8dae6812e471cbab3020f76a99136", + "t_write_ms": 0.74, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.756, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "276b4d891cd245a49f5a10b6ab52078c", + "t_write_ms": 0.678, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.014, + "e2e_ms": 0.692, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "5e7e4347021140a6ac2716c698738d27", + "t_write_ms": 0.646, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.661, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "b806f2a59a4947f2b7227b0db0f6aa6a", + "t_write_ms": 0.654, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.016, + "e2e_ms": 0.67, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "44e7455bb3db435c9771d12bb451e474", + "t_write_ms": 0.652, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.668, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "412934b1b8804690a48f46c5d1c59c08", + "t_write_ms": 0.632, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.016, + "e2e_ms": 0.648, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "516c933062f94534b65df93f1c51140f", + "t_write_ms": 0.695, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.017, + "e2e_ms": 0.712, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "f56a74fd8c8d42fe9c419e54d7adfaa0", + "t_write_ms": 0.647, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.662, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "4aa948eba1dd493fa1b04758a8411d67", + "t_write_ms": 0.657, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.673, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "3ae54977311f4907bb289893e72a88eb", + "t_write_ms": 0.65, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.665, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "650e397768d0433abf0c76cbbdb7a91c", + "t_write_ms": 0.619, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.634, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "6564112a0e0b4051bf6e4c8df0d4bffc", + "t_write_ms": 0.643, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.015, + "e2e_ms": 0.658, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "98b98169f9034ada976ab2d59f89cfbd", + "t_write_ms": 0.708, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.016, + "e2e_ms": 0.725, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "b94a740076994dbb9dd4e80396899ff9", + "t_write_ms": 0.647, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.661, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "b4db51e0b4d44bd4a5854d0271b7fdbb", + "t_write_ms": 0.655, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.016, + "e2e_ms": 0.671, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "9deff03868d04edca88b03203f932150", + "t_write_ms": 0.615, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.014, + "e2e_ms": 0.629, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "e2363886cdcb454a81eb0b51b22c4e43", + "t_write_ms": 0.637, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.652, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "58d064221b7b461f8d5fb32d3c1b9dec", + "t_write_ms": 0.636, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.014, + "e2e_ms": 0.651, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "6acb1a9c7bbd4148bd9d8378794e4807", + "t_write_ms": 0.704, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.017, + "e2e_ms": 0.721, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "ad0a09ce60c141329f39a9781fd2ffc9", + "t_write_ms": 0.636, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.014, + "e2e_ms": 0.65, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "2c967bfd15bf44b086c5f222221b1a50", + "t_write_ms": 0.653, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.67, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "04bd6b899c074e968cc052760916db70", + "t_write_ms": 0.66, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.015, + "e2e_ms": 0.674, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "82fec97d93d74757b43169332d57b178", + "t_write_ms": 0.624, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.014, + "e2e_ms": 0.639, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "a058aff155de48b9b5ab392931b307c6", + "t_write_ms": 0.681, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.017, + "e2e_ms": 0.697, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "8803cd37eeb24868bea12898a7d3af91", + "t_write_ms": 0.674, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.689, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "c79a1be812414a8bbf023572713ae92b", + "t_write_ms": 0.622, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.637, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "51e62481df164830992bb31b71e09748", + "t_write_ms": 0.667, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.017, + "e2e_ms": 0.684, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "1ba6a969e2474ce48e8cad022427517d", + "t_write_ms": 0.638, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.014, + "e2e_ms": 0.652, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "880b4b3479a54466b6a5b6f3cb3e5ad0", + "t_write_ms": 0.616, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.014, + "e2e_ms": 0.631, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "7ed59089042a46aabd73897c6f9231f6", + "t_write_ms": 0.662, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.678, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "87205385810b45f6878d17f7c8903064", + "t_write_ms": 0.649, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.664, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "4b1cad6ac2d54e8aa7cb063e44e830e5", + "t_write_ms": 0.64, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.656, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "da6bb195472e4358985c0e68c7c31bdf", + "t_write_ms": 0.659, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.015, + "e2e_ms": 0.673, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "45aa96a3dffa450f8e4f690ed2f35f8d", + "t_write_ms": 0.629, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.015, + "e2e_ms": 0.643, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "c2f1c6b4ea9e4cb98c6c7170a7b296c9", + "t_write_ms": 0.644, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.014, + "e2e_ms": 0.658, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "0dba63e23b8c4212958b2ccb67f76691", + "t_write_ms": 0.706, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.016, + "e2e_ms": 0.723, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "20229e3c90f34893853cfbaaadc8c536", + "t_write_ms": 0.648, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.014, + "e2e_ms": 0.663, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "b6825fd53e574c80b3aa1c25785d85f8", + "t_write_ms": 0.652, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.668, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "b3ce79e15358447181f932daa00accfe", + "t_write_ms": 0.628, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.644, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "c9b04accc450430885d1d862d657245c", + "t_write_ms": 0.646, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.661, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "3262024e08fe4cdb983ebfd6ad175623", + "t_write_ms": 0.623, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.014, + "e2e_ms": 0.638, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "0947a6527c68467e9b72a194dac910c2", + "t_write_ms": 0.686, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.703, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "f64e2f9a54d745c897a45578fad651b4", + "t_write_ms": 0.637, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.652, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "282bb1ca64af4a789effcc9e89485555", + "t_write_ms": 0.641, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.657, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "7b98043777844cb1bd5bcdb5205af90d", + "t_write_ms": 0.657, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.014, + "e2e_ms": 0.671, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "a275da70246346289d0a8bd5b8791bc8", + "t_write_ms": 0.636, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.014, + "e2e_ms": 0.65, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "1ddb82f8fc67444cb6f4c50e76202b50", + "t_write_ms": 0.72, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.017, + "e2e_ms": 0.736, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "7d89c1d4ba4a4d8b98b2423bc06dc885", + "t_write_ms": 0.658, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.014, + "e2e_ms": 0.672, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "4451e8fc010b40f2a437e5e8d18ab3e8", + "t_write_ms": 0.625, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.64, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "0eb4a27954274ccb9c41ffede6ab2093", + "t_write_ms": 0.679, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.695, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "b26a6dc26fd94fada1bebf0b99669f1c", + "t_write_ms": 0.626, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.641, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "c97125379e6748c3b0ff81a2fb76824d", + "t_write_ms": 0.612, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.627, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "1d8fd8e09bb64be298791848fe532fc6", + "t_write_ms": 0.682, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.698, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "8bb68982d70f4236b7ddc5a7d02bdc8a", + "t_write_ms": 0.636, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.65, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "bbc9b309f91748baa25bdbdcd271ef7a", + "t_write_ms": 0.643, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.017, + "e2e_ms": 0.66, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "20405102a2f4425eaa1e13862317b27e", + "t_write_ms": 0.668, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.683, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "84dced1c7ed849b79f22f50516ca2591", + "t_write_ms": 0.625, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.639, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "71f68d6b515742599b1172953dc40713", + "t_write_ms": 0.613, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.014, + "e2e_ms": 0.628, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "f2068371e2d84859951ffd05b715fb83", + "t_write_ms": 0.723, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.739, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "776ac6d271ee43cab74bf2c9227d1201", + "t_write_ms": 0.659, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.674, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "2c6f46469a5a48439fcde2f816f82e51", + "t_write_ms": 0.648, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.017, + "e2e_ms": 0.664, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "4bbfb52ce04a470e966395a5d41d67b8", + "t_write_ms": 0.655, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.015, + "e2e_ms": 0.669, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "0526b842b445457e8ef623f5a2ea989c", + "t_write_ms": 0.626, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.014, + "e2e_ms": 0.641, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "973bb3178699434cb80bc1c3d8d4b088", + "t_write_ms": 0.631, + "t_broadcast_emit_ms": 0.045, + "t_consume_ms": 0.023, + "e2e_ms": 0.654, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "8a4378fa682c4e3da68ab5fd1579dfb3", + "t_write_ms": 0.666, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.681, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "67ebe37b204943ada79e308b6baf00d0", + "t_write_ms": 0.622, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.014, + "e2e_ms": 0.637, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "d797b71c56844cb094bf7078e9f1dd8e", + "t_write_ms": 0.657, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.673, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "38d5ac3e649a4950a9d3eec8f5c6b6ba", + "t_write_ms": 0.637, + "t_broadcast_emit_ms": 0.037, + "t_consume_ms": 0.02, + "e2e_ms": 0.658, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "fa84203990864901b4c78f92f472e769", + "t_write_ms": 0.616, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.631, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "f6730a997a1f4c61bcd3b2b98419c5b7", + "t_write_ms": 0.666, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.682, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "71645e8ed94243c99044fce7e0ea355a", + "t_write_ms": 0.671, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.686, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "1f540edc6c914feb9a4c16d37dced81c", + "t_write_ms": 0.635, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.65, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "d65bed32b66c4f9181e168d12390aad1", + "t_write_ms": 0.671, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.017, + "e2e_ms": 0.688, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "06aebbe6366e4e12a82236d6c347183b", + "t_write_ms": 0.647, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.662, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "e3b2cb388cd7460e81ea67c4c8d38191", + "t_write_ms": 0.638, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.653, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "50018f33abc249f0a76b2878f782c6f7", + "t_write_ms": 0.692, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.017, + "e2e_ms": 0.709, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "59563c3a850049bcb6fe8b8f46773cd0", + "t_write_ms": 0.638, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.014, + "e2e_ms": 0.652, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "67bde8a4877e4e9eb5a915fc2230352e", + "t_write_ms": 0.668, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.016, + "e2e_ms": 0.685, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "b9c83b30f5f34c088494f942c47530f4", + "t_write_ms": 0.664, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.678, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "24e5e11c4dd04a40bdad6f8068498eca", + "t_write_ms": 0.625, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.64, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "7707097dad654c8b85a2860a017b395a", + "t_write_ms": 0.656, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.014, + "e2e_ms": 0.671, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "b36f138d89664cbe88371f96058ce358", + "t_write_ms": 0.707, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.017, + "e2e_ms": 0.724, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "756a2fcf8f334f5081117560d134943b", + "t_write_ms": 0.646, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.661, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "bce43d7083fa49e0bca0d7b5393c95b0", + "t_write_ms": 0.665, + "t_broadcast_emit_ms": 0.037, + "t_consume_ms": 0.017, + "e2e_ms": 0.682, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "92d08bb43713439890aca4da1d291dd4", + "t_write_ms": 0.639, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.653, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "b46da1729e1041cca85c63c19637e526", + "t_write_ms": 0.653, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.014, + "e2e_ms": 0.668, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "8395c2943b51457f80e1fa306dcc3674", + "t_write_ms": 0.661, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.016, + "e2e_ms": 0.677, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "c3938a93a3bc4ae29cef62c7ba511763", + "t_write_ms": 0.645, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.015, + "e2e_ms": 0.66, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "46fbf221b8614803a35964f80dedb190", + "t_write_ms": 0.654, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.669, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "98b1072076df41ebaa9df0543619eab3", + "t_write_ms": 0.676, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.017, + "e2e_ms": 0.693, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "0b7bc46d72be473fbbc4b677d40bde65", + "t_write_ms": 0.641, + "t_broadcast_emit_ms": 0.03, + "t_consume_ms": 0.014, + "e2e_ms": 0.655, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "183918507116449f9662ceb0d4d3af22", + "t_write_ms": 0.69, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.705, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "6fa40b42159142f493f01c95a1e5e113", + "t_write_ms": 0.804, + "t_broadcast_emit_ms": 0.035, + "t_consume_ms": 0.017, + "e2e_ms": 0.821, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "83dc6a57977d4d699aba0d69e31dc6b1", + "t_write_ms": 0.703, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.718, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "f7aac008333641188eb50281df69defe", + "t_write_ms": 0.671, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.017, + "e2e_ms": 0.687, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "3245981044dc4ff98e82989db0ed7349", + "t_write_ms": 0.676, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.691, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "7f6a1c2a2f174cb8b3ed5e8359d22168", + "t_write_ms": 0.711, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.726, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "444298fdfd2043719893d52eda8dd539", + "t_write_ms": 0.699, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.017, + "e2e_ms": 0.716, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "25af4152efd6406687bcb06a24dc92fb", + "t_write_ms": 0.679, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.694, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "6360d748ecaf476faa6ea998f3c3de23", + "t_write_ms": 0.644, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.659, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "c62a9e6d1b0743569b2acc524af1a060", + "t_write_ms": 0.686, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.016, + "e2e_ms": 0.703, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "eb0ad484bad242f2bbf339f9143b1880", + "t_write_ms": 0.647, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.662, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "f05992493930445e93b3ce901760f07f", + "t_write_ms": 0.632, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.647, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "152f16a9ad4148e99cc354f2b79fa249", + "t_write_ms": 0.705, + "t_broadcast_emit_ms": 0.035, + "t_consume_ms": 0.017, + "e2e_ms": 0.722, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "ebbeb30b51e94f0b9dcafe6e7261ae43", + "t_write_ms": 0.647, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.662, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "089554dd45dd4d5596a71f4791683b81", + "t_write_ms": 0.676, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.016, + "e2e_ms": 0.692, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "398813130fdb4a8aaa3b0d5b61e5332e", + "t_write_ms": 0.662, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.677, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "a67c3d6dcc5d42cfa5f5cbb9e40c0667", + "t_write_ms": 0.637, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.652, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "56d870c45b9d477d9a8b2d78c6bae989", + "t_write_ms": 0.7, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.016, + "e2e_ms": 0.716, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "693489c56b9c4a7ca9faeeee58794034", + "t_write_ms": 0.677, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.692, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "91c0fd6c20d4480fbcf05f43019c9f0d", + "t_write_ms": 0.664, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.014, + "e2e_ms": 0.678, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "bc4bd9f1a49a46f8a9797b2ebca48d5b", + "t_write_ms": 0.672, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.688, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "32cdf4ff230f4f2082c2f8063698687b", + "t_write_ms": 0.642, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.657, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "0d92e6eafad8488ab5ac76b0accc86b4", + "t_write_ms": 0.653, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.667, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "254f3884142b4e1482b3eaa5b1876cda", + "t_write_ms": 0.728, + "t_broadcast_emit_ms": 0.035, + "t_consume_ms": 0.017, + "e2e_ms": 0.745, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "ee3f095e64f74be0bd09457a3480894c", + "t_write_ms": 0.67, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.685, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "22c2065e80b84cf6bd1da427c3979d4f", + "t_write_ms": 0.719, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.016, + "e2e_ms": 0.736, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "0c55214ae7154b4e8087eb69a26f2b52", + "t_write_ms": 0.649, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.664, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "e01f704e56d545b3bc95896ffc54c2f3", + "t_write_ms": 0.656, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.671, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "77a8afa13205465ba1f0c68009d4a927", + "t_write_ms": 0.645, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.014, + "e2e_ms": 0.659, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "fe9e85034ac442d6a3dab2cc8151c48b", + "t_write_ms": 0.721, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.016, + "e2e_ms": 0.737, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "de39f8a0a3fd4d97849e1ae5d4cd3496", + "t_write_ms": 0.649, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.664, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "8005e56f3b334b758ab997485aadfd4e", + "t_write_ms": 0.659, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.016, + "e2e_ms": 0.675, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "cd8719a6325849fa92f56644a0101885", + "t_write_ms": 0.63, + "t_broadcast_emit_ms": 0.035, + "t_consume_ms": 0.015, + "e2e_ms": 0.645, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "19958506db6a4127a74e056235f86d1d", + "t_write_ms": 0.655, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.014, + "e2e_ms": 0.669, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "865a3fb3e4eb46e69020955651b2c1c9", + "t_write_ms": 0.674, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.691, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "026abed091a945dfb6eae7fc7815dcbb", + "t_write_ms": 0.668, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.014, + "e2e_ms": 0.683, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "3ab8a239bca44e78bd10a31769beb123", + "t_write_ms": 0.648, + "t_broadcast_emit_ms": 0.048, + "t_consume_ms": 0.017, + "e2e_ms": 0.664, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "15e54ae7fede47129c914a2fa71323b7", + "t_write_ms": 0.715, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.016, + "e2e_ms": 0.731, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "3c6442ef56bc452db32999782fb462b6", + "t_write_ms": 0.793, + "t_broadcast_emit_ms": 0.038, + "t_consume_ms": 0.018, + "e2e_ms": 0.811, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "5aa16676455a4626afb19b17737cb63e", + "t_write_ms": 0.89, + "t_broadcast_emit_ms": 0.073, + "t_consume_ms": 0.036, + "e2e_ms": 0.926, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "049d73a39cfc4acf90c0dff86e239c32", + "t_write_ms": 0.698, + "t_broadcast_emit_ms": 0.037, + "t_consume_ms": 0.017, + "e2e_ms": 0.715, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "9f1b69fd3f1d4210bc64cee6c808ea47", + "t_write_ms": 0.666, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.017, + "e2e_ms": 0.682, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "4161a95723084bafa89d54b0d055bafd", + "t_write_ms": 0.689, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.015, + "e2e_ms": 0.704, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "3efc024c0c1641fdbb06f1aff1698266", + "t_write_ms": 0.655, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.67, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "d963f15d508e4718a016905e63121d4f", + "t_write_ms": 0.644, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.015, + "e2e_ms": 0.659, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "95ab7adfa03545398c783b7bac470bfe", + "t_write_ms": 0.744, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.016, + "e2e_ms": 0.76, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "3930ff2851e1430385a0df901baf4215", + "t_write_ms": 0.649, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.663, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "12476de72c73479db9bc70a1a8a6a8aa", + "t_write_ms": 0.679, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.016, + "e2e_ms": 0.695, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "4595fb01c0824b31aa47adc79b9ca55a", + "t_write_ms": 0.723, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.738, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "1d7292e708b14a749f48b63b8cb554a7", + "t_write_ms": 0.654, + "t_broadcast_emit_ms": 0.036, + "t_consume_ms": 0.018, + "e2e_ms": 0.671, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "9474ba77aeb34743a5061b8978d917ff", + "t_write_ms": 0.705, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.017, + "e2e_ms": 0.722, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "8acd3854cdef457484d530f660f4edff", + "t_write_ms": 0.652, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.014, + "e2e_ms": 0.666, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "beaac78e955a4478b7d0313fa0315e1d", + "t_write_ms": 0.637, + "t_broadcast_emit_ms": 0.048, + "t_consume_ms": 0.031, + "e2e_ms": 0.668, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "4aec2a84e6eb425dad2224832a7ee278", + "t_write_ms": 0.68, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.695, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "f46bbe2cd2d6482ab6567332dbb947d5", + "t_write_ms": 0.637, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.652, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "e4741832b1904e8182255e8da450625a", + "t_write_ms": 0.63, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.015, + "e2e_ms": 0.645, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "fbf2321026824c40b227211fa294dc1b", + "t_write_ms": 0.728, + "t_broadcast_emit_ms": 0.035, + "t_consume_ms": 0.017, + "e2e_ms": 0.745, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "56323b71a2894f92968bf9cbdf4fbb5f", + "t_write_ms": 0.651, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.666, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "cb3a5a356f15436daf02714547145efa", + "t_write_ms": 0.711, + "t_broadcast_emit_ms": 0.038, + "t_consume_ms": 0.019, + "e2e_ms": 0.729, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "c0f14937c9a7445f99d8729fbd6c5353", + "t_write_ms": 0.692, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.706, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "e9fa4e68900c44379ea80a7259ee51db", + "t_write_ms": 0.641, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.656, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "9679c525997a4401ae7cb594e407c8b2", + "t_write_ms": 0.775, + "t_broadcast_emit_ms": 0.035, + "t_consume_ms": 0.017, + "e2e_ms": 0.792, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "12d21623dbc6405592685d4e37102ec2", + "t_write_ms": 0.723, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.739, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "6052349427284880b03cb6508b5a4a84", + "t_write_ms": 0.745, + "t_broadcast_emit_ms": 0.035, + "t_consume_ms": 0.017, + "e2e_ms": 0.762, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "52fbad7b4a4f4839aa69f2a13a2e4ee3", + "t_write_ms": 0.716, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.015, + "e2e_ms": 0.732, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "da421b6c544e40a090b6e3605991349e", + "t_write_ms": 0.673, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.687, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "39a0a5054b824775b10118253497fd7c", + "t_write_ms": 0.72, + "t_broadcast_emit_ms": 0.04, + "t_consume_ms": 0.018, + "e2e_ms": 0.738, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "9f6a46665bfe453ea15bbfb323a7c878", + "t_write_ms": 0.675, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.69, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "42b89f753efb4bb1bc4f10ad56f0d7a2", + "t_write_ms": 0.644, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.016, + "e2e_ms": 0.66, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "301832a26fd843d5b9138c16b2e72f1b", + "t_write_ms": 0.683, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.017, + "e2e_ms": 0.7, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "d97927118caa48f9917285d9878d749f", + "t_write_ms": 0.632, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.647, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "58cb81cc58fe4dd4923199b9208fc35c", + "t_write_ms": 0.637, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.651, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "5e94bbfe85ff43019dff2122d20d4b7d", + "t_write_ms": 0.694, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.017, + "e2e_ms": 0.71, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "7c44595969874964bf5b21220e33c544", + "t_write_ms": 0.664, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.679, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "7cf5a25c5f394c34a178476a6db67e47", + "t_write_ms": 0.679, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.017, + "e2e_ms": 0.696, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "8fbe2968448b4a79b08fa0cd19edfeee", + "t_write_ms": 0.651, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.665, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "9e54bf2ca44240feb40edba31225fad4", + "t_write_ms": 0.665, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.015, + "e2e_ms": 0.68, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "2c45cf228ea9449bb1f950aed0e0d4d2", + "t_write_ms": 0.637, + "t_broadcast_emit_ms": 0.033, + "t_consume_ms": 0.015, + "e2e_ms": 0.651, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "9501235b355d418ba23c37ad20f20d02", + "t_write_ms": 0.717, + "t_broadcast_emit_ms": 0.035, + "t_consume_ms": 0.017, + "e2e_ms": 0.734, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "087d5c1c33374a48b021dbdb6e696b22", + "t_write_ms": 0.667, + "t_broadcast_emit_ms": 0.031, + "t_consume_ms": 0.015, + "e2e_ms": 0.681, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "780cc7729dd1453a97d3e021894f048c", + "t_write_ms": 0.667, + "t_broadcast_emit_ms": 0.034, + "t_consume_ms": 0.016, + "e2e_ms": 0.683, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "d5f8951192644682be0355fc71883eb8", + "t_write_ms": 0.739, + "t_broadcast_emit_ms": 0.036, + "t_consume_ms": 0.016, + "e2e_ms": 0.755, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "3d6efff64120402887efe668e42898e2", + "t_write_ms": 0.681, + "t_broadcast_emit_ms": 0.032, + "t_consume_ms": 0.014, + "e2e_ms": 0.695, + "via": "broadcast", + "perceived": true + }, + { + "scene_id": "sc_bench", + "event_id": "3b1e5091bed5400e9c618b656f6ceb99", + "t_write_ms": 0.695, + "t_broadcast_emit_ms": 0.035, + "t_consume_ms": 0.017, + "e2e_ms": 0.712, + "via": "broadcast", + "perceived": true + } + ], + "verdict": "PASS" +} \ No newline at end of file diff --git a/scripts/m11b4_selftest.py b/scripts/m11b4_selftest.py index 718d23f..37636dc 100644 --- a/scripts/m11b4_selftest.py +++ b/scripts/m11b4_selftest.py @@ -419,7 +419,7 @@ def test_facade_surface(dbpath): check("AC5.1 world_sync 包级导出齐全", not missing, str(missing)) r = poll_since("sc_facade", "1970-01-01 00:00:00", conn_factory=factory_for(dbpath)) check("AC5.2 poll_since 门面可直调", isinstance(r, dict) and "rows" in r, - json.dumps({k: r[k] for k in ("scene_id", "recovered_count")}, ensure_ascii=False)) + json.dumps({k: r[k] for k in ("scene_id", "count")}, ensure_ascii=False)) ex = explain_poll_query("sc_facade", "1970-01-01 00:00:00", conn_factory=factory_for(dbpath)) check("AC5.3 explain_poll_query 门面可直调", isinstance(ex, list), str(len(ex)) + " rows") @@ -455,11 +455,18 @@ def main(): print("\n %d/%d 通过" % (passed, len(RESULTS))) print(" 时延报告: P50=%.3fms P90=%.3fms P99=%.3fms max=%.3fms verdict=%s" % (rep["p50_ms"], rep["p90_ms"], rep["p99_ms"], rep["max_ms"], rep["verdict"])) + report_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), + "m11b4_latency_report.json") with open(os.path.join(tmpdir, "m11b4_latency_report.json"), "w", encoding="utf-8") as f: json.dump(rep, f, ensure_ascii=False, indent=2) - print(" 报告 JSON 落盘: %s" % os.path.join(tmpdir, "m11b4_latency_report.json")) - return 0 if passed == len(RESULTS) else 1 + # 同时落盘到 scripts/ 目录留证(可入库、可被 QC 复核) + with open(report_path, "w", encoding="utf-8") as f: + json.dump(rep, f, ensure_ascii=False, indent=2) + print(" 报告 JSON 落盘: %s" % report_path) + failures = len(RESULTS) - passed + print("\n RESULT: %s FAILURES=%d" % ("PASS" if failures == 0 else "FAIL", failures)) + return 0 if failures == 0 else 1 if __name__ == "__main__": diff --git a/scripts/m11b4_selftest_output.txt b/scripts/m11b4_selftest_output.txt index c43feff..70ed8ed 100644 --- a/scripts/m11b4_selftest_output.txt +++ b/scripts/m11b4_selftest_output.txt @@ -1,5 +1,5 @@ # M11b-4 自测留证 -# 生成时间: 2026-09-22 12:55:30 +0800 +# 生成时间: 2026-09-22 13:13:29 +0800 # 命令: cd modules/world_sync && .venv/bin/python scripts/m11b4_selftest.py # Python: 3.10.12 @@ -8,20 +8,20 @@ AC1 广播丢失 → 3s 轮询补漏(真实 3s 节奏) ============================================================================== interval=3.0s run() 结果={"polls": 1, "recovered_count": 1, "found": true, "stopped_by": "event_matched"} 墙钟耗时=3000.5ms(含 1 次真实 3s sleep) on_recovered 回调次数=1 - 兜底计数器={"polls": 1, "queries": 1, "recovered": 1, "duplicated": 0, "missed_by_broadcast": 1, "timeouts": 0, "stops_on_notify": 0, "scenes": ["sc_ac1_1790052930"], "interval": 3.0, "timeout": 10.0} + 兜底计数器={"polls": 1, "queries": 1, "recovered": 1, "duplicated": 0, "missed_by_broadcast": 1, "timeouts": 0, "stops_on_notify": 0, "scenes": ["sc_ac1_1790054009"], "interval": 3.0, "timeout": 10.0} [PASS] AC1.1 轮询间隔常量 = 3.0s -> 3.0 [PASS] AC1.2 广播丢失时 found=True(补到漏网事件) [PASS] AC1.3 stopped_by=event_matched(非 timeout) -> event_matched [PASS] AC1.4 补漏耗时 ≤ SLO 3000ms(1 个轮询周期内) -> 3000.5ms -[PASS] AC1.5 推进后的水位线 >= 事件 created_at -> 2026-09-22 04:55:30 >= 2026-09-22 04:55:30 +[PASS] AC1.5 推进后的水位线 >= 事件 created_at -> 2026-09-22 05:13:29 >= 2026-09-22 05:13:29 ============================================================================== AC1b 已投递事件不重复补漏(同秒撞秒 + event_uid 去重双保险) ============================================================================== - 第1轮 recovered=1 第2轮 recovered=0(水位线=2026-09-22 04:55:30) + 第1轮 recovered=1 第2轮 recovered=0(水位线=2026-09-22 05:13:29) [PASS] AC1b.1 首轮补到 1 条 [PASS] AC1b.2 次轮 0 条(水位线+已投递集合去重) - 同秒新事件 uid=ac1b-d95a756f98330aab created_at=2026-09-22 04:55:30 -> recovered=1 found=True + 同秒新事件 uid=ac1b-b14bebec12469a8f created_at=2026-09-22 05:13:29 -> recovered=1 found=True [PASS] AC1b.3 同秒新事件仍被补到(>= 水位线 + NOT IN 去重) ============================================================================== @@ -36,9 +36,9 @@ AC1c 水位线格式守卫(ISO 格式必须被拒绝,否则静默丢事件 ============================================================================== AC1d 广播正常 → 轮询立即停止(stopped_by=broadcast_received) ============================================================================== - run()={"polls": 1, "found": false, "stopped_by": "broadcast_received"} 墙钟=200.8ms(远小于 3s 周期) + run()={"polls": 1, "found": false, "stopped_by": "broadcast_received"} 墙钟=200.7ms(远小于 3s 周期) [PASS] AC1d.1 收到广播后停止 -[PASS] AC1d.2 未走满轮询周期 -> 200.8ms +[PASS] AC1d.2 未走满轮询周期 -> 200.7ms [PASS] AC1d.3 notified 短路后 polls 计数=1 -> 1 ============================================================================== @@ -49,6 +49,8 @@ AC2 补漏查询 EXPLAIN:必须命中 ix_scene_created,禁止全表扫描 EXPLAIN QUERY PLAN 原文: {"id": 5, "parent": 0, "notused": 0, "detail": "SEARCH pbl_runtime_event USING INDEX ix_scene_created (scene_id=? AND created_at>?)"} [PASS] AC2.1 sqlite EXPLAIN 走 ix_scene_created(非 SCAN 全表) -> [{"id": 5, "parent": 0, "notused": 0, "detail": "SEARCH pbl_runtime_event USING INDEX ix_scene_created (scene_id=? AND created_at>?)"}] + MySQL pbls@127.0.0.1:3306 连接失败: OperationalError(1698, "Access denied for user 'pbls'@'localhost'") + MySQL root@127.0.0.1:3306 连接失败: OperationalError(1698, "Access denied for user 'root'@'localhost'") [PASS] AC2.2 MySQL EXPLAIN(本机测试库不可达,已在交付件标注环境受限项) -> skipped: 10.20.30.41 测试库凭据在本开发机不可用(ERROR 1698 Access denied) [PASS] AC2.3 plan_uses_scene_index 能识别 type=ALL 为不合规 [PASS] AC2.4 plan_uses_scene_index 能识别 key=ix_scene_created 为合规 @@ -58,21 +60,21 @@ AC3 端到端时延基准:裁决→write_event_with_state→COMMIT→广播→ ============================================================================== 样本数 n=200 SLO=1000ms dialect=sqlite(file=m11b4.sqlite) 基准总耗时 0.14s - 分段 P99: {"write_commit": 0.757, "broadcast_emit": 0.065, "consume_wait": 0.032} + 分段 P99: {"write_commit": 0.805, "broadcast_emit": 0.048, "consume_wait": 0.031} 瓶颈段 : write_commit 感知路径: broadcast=200 polling_fallback=0 lost=0 - 广播统计: {"published": 200, "dropped_disabled": 0, "failed": 0, "retried": 0, "direct_publish": 0, "queued": 200, "subscriber_errors": 0, "max_latency_ms": 0.26, "in_flight": 0, "latency_samples": 200, "last_error": null, "enabled": true, "channels": ["in_process"], "p50_latency_ms": 0.085, "p99_latency_ms": 0.142} - P50=0.662ms P90=0.718ms P99=0.782ms max=0.922ms + 广播统计: {"published": 200, "dropped_disabled": 0, "failed": 0, "retried": 0, "direct_publish": 0, "queued": 200, "subscriber_errors": 0, "max_latency_ms": 0.139, "in_flight": 0, "latency_samples": 200, "last_error": null, "enabled": true, "channels": ["in_process"], "p50_latency_ms": 0.077, "p99_latency_ms": 0.123} + P50=0.671ms P90=0.731ms P99=0.822ms max=0.958ms 裁决 : PASS [PASS] AC3.1 全部样本被感知(无丢失) -> lost=0 [PASS] AC3.2 感知全部走广播(兜底未介入正常链路) -> 200/200 -[PASS] AC3.3 P99 ≤ 1000ms -> P99=0.782ms +[PASS] AC3.3 P99 ≤ 1000ms -> P99=0.822ms ============================================================================== AC3b 广播丢失时的时延归入 polling_fallback(>1s 是设计使然,单独统计) ============================================================================== 兜底计数器: {"polls": 1, "queries": 1, "recovered": 1, "duplicated": 0, "missed_by_broadcast": 1, "timeouts": 0, "stops_on_notify": 0, "scenes": ["sc_x_lost"], "interval": 0.2, "timeout": 5.0} - 样本: {"scene_id": "sc_x_lost", "event_id": "14daf37404f04983baffff775b8d8b3c", "t_write_ms": 0.738, "t_broadcast_emit_ms": 0.004, "t_consume_ms": 251.218, "e2e_ms": 251.956, "via": "polling_fallback", "perceived": true} + 样本: {"scene_id": "sc_x_lost", "event_id": "c788a8654c0d4b06adb5035343dad9cc", "t_write_ms": 0.738, "t_broadcast_emit_ms": 0.005, "t_consume_ms": 251.18, "e2e_ms": 251.918, "via": "polling_fallback", "perceived": true} [PASS] AC3b.1 广播丢失时经轮询兜底仍被感知 [PASS] AC3b.2 报告把它与广播路径分开统计(不混入 P99 判定) [PASS] AC3b.3 兜底确实发起了补漏查询(polls>=1 且 recovered>=1) -> polls=1 recovered=1 @@ -88,15 +90,49 @@ AC4 独立封装核验:兜底不侵入写入端 ============================================================================== AC5 对外门面可调用性(防漏注册导致 NameError) ============================================================================== - 检查 16 个导出名, 缺失=['explain_poll_query'] -[FAIL] AC5.1 world_sync 包级导出齐全 -> ['explain_poll_query'] -Traceback (most recent call last): - File "/d/pipeline/workspaces/0/sdlc_general/modules/world_sync/scripts/m11b4_selftest.py", line 466, in - sys.exit(main()) - File "/d/pipeline/workspaces/0/sdlc_general/modules/world_sync/scripts/m11b4_selftest.py", line 449, in main - test_facade_surface(dbpath) - File "/d/pipeline/workspaces/0/sdlc_general/modules/world_sync/scripts/m11b4_selftest.py", line 422, in test_facade_surface - json.dumps({k: r[k] for k in ("scene_id", "recovered_count")}, ensure_ascii=False)) - File "/d/pipeline/workspaces/0/sdlc_general/modules/world_sync/scripts/m11b4_selftest.py", line 422, in - json.dumps({k: r[k] for k in ("scene_id", "recovered_count")}, ensure_ascii=False)) -KeyError: 'recovered_count' + 检查 16 个导出名, 缺失=[] +[PASS] AC5.1 world_sync 包级导出齐全 -> [] +[PASS] AC5.2 poll_since 门面可直调 -> {"scene_id": "sc_facade", "count": 0} +[PASS] AC5.3 explain_poll_query 门面可直调 -> 30 rows +[PASS] AC5.4 fallback_stats 返回计数快照 -> {"polls": 1, "queries": 1, "recovered": 1, "duplicated": 0, "missed_by_broadcast": 1, "timeouts": 0, "stops_on_notify": + +============================================================================== +汇总 +============================================================================== + OK AC1.1 轮询间隔常量 = 3.0s + OK AC1.2 广播丢失时 found=True(补到漏网事件) + OK AC1.3 stopped_by=event_matched(非 timeout) + OK AC1.4 补漏耗时 ≤ SLO 3000ms(1 个轮询周期内) + OK AC1.5 推进后的水位线 >= 事件 created_at + OK AC1b.1 首轮补到 1 条 + OK AC1b.2 次轮 0 条(水位线+已投递集合去重) + OK AC1b.3 同秒新事件仍被补到(>= 水位线 + NOT IN 去重) + OK AC1c.1 ISO commit_ts_text 被拒绝 + OK AC1c.2 库内空格格式被接受 + OK AC1c.3 水位线单调不减(旧值被忽略) + OK AC1d.1 收到广播后停止 + OK AC1d.2 未走满轮询周期 + OK AC1d.3 notified 短路后 polls 计数=1 + OK AC2.1 sqlite EXPLAIN 走 ix_scene_created(非 SCAN 全表) + OK AC2.2 MySQL EXPLAIN(本机测试库不可达,已在交付件标注环境受限项) + OK AC2.3 plan_uses_scene_index 能识别 type=ALL 为不合规 + OK AC2.4 plan_uses_scene_index 能识别 key=ix_scene_created 为合规 + OK AC3.1 全部样本被感知(无丢失) + OK AC3.2 感知全部走广播(兜底未介入正常链路) + OK AC3.3 P99 ≤ 1000ms + OK AC3b.1 广播丢失时经轮询兜底仍被感知 + OK AC3b.2 报告把它与广播路径分开统计(不混入 P99 判定) + OK AC3b.3 兜底确实发起了补漏查询(polls>=1 且 recovered>=1) + OK AC4.1 write_event_with_state 源码不含 polling/fallback 字样 + OK AC4.2 polling 不 import 写入端事务模块(只依赖 sql/errors/tx_env) + OK AC4.3 兜底只读 pbl_runtime_event(SQL 无 INSERT/UPDATE/DELETE) + OK AC5.1 world_sync 包级导出齐全 + OK AC5.2 poll_since 门面可直调 + OK AC5.3 explain_poll_query 门面可直调 + OK AC5.4 fallback_stats 返回计数快照 + + 31/31 通过 + 时延报告: P50=0.671ms P90=0.731ms P99=0.822ms max=0.958ms verdict=PASS + 报告 JSON 落盘: /d/pipeline/workspaces/0/sdlc_general/modules/world_sync/scripts/m11b4_latency_report.json + + RESULT: PASS FAILURES=0 diff --git a/world_sync/__init__.py b/world_sync/__init__.py index 2a56539..a709e8f 100644 --- a/world_sync/__init__.py +++ b/world_sync/__init__.py @@ -160,7 +160,8 @@ from .pbl_runtime_polling import ( PollingFallback, build_poll_sql, configure_fallback, - explain_poll_query as polling_explain_poll_query, + explain_poll_query, + explain_poll_query as polling_explain_poll_query, # 别名(向后兼容) fallback_stats, get_fallback, normalize_watermark, @@ -289,6 +290,7 @@ __all__ = [ "normalize_watermark", "plan_uses_scene_index", "poll_since", + "explain_poll_query", "reset_fallback", "run_fallback", "wait_event", diff --git a/world_sync/init.py b/world_sync/init.py index 003097d..0137a55 100644 --- a/world_sync/init.py +++ b/world_sync/init.py @@ -191,6 +191,7 @@ from .pbl_runtime_polling import ( get_fallback, normalize_watermark, plan_uses_scene_index, + explain_poll_query, poll_since, reset_fallback, run_fallback, @@ -566,6 +567,7 @@ def load_world_sync(server_env=None, conn_factory=None): env.get_fallback = get_fallback env.reset_fallback = reset_fallback env.fallback_stats = fallback_stats + env.explain_poll_query = explain_poll_query env.poll_since = poll_since env.run_fallback = run_fallback env.wait_event = wait_event