preserve BLE disconnect race stress evidence

This commit is contained in:
Jay
2026-08-18 14:28:10 -04:00
parent 4bf00eb583
commit 3bad2275cc
3 changed files with 28 additions and 0 deletions
+10
View File
@@ -68,6 +68,16 @@ removed before production firmware was built and flashed.
maximum; cumulative error is 152 us over 25.75 seconds. This records bounded
BLE scheduling jitter without rate drift and requires timestamp-derived `dt`
in future fusion work.
- `ble_mtu_race_4bf00eb.trk` — SHA-256
`4a231b54a3c7320fd69cac869b830e94aca8f704f946881b9cdfd21991bfa41f`.
This exact-commit stress capture followed six rapid subscribe, first-fragment,
and disconnect cycles aimed at the MTU lookup race. Telemetry remained live
afterward: the capture contains 1,848 CRC-valid samples with zero packet gaps,
resets, send failures, or invalid ACKs, while status records exactly six
disconnects and six replays. The test deliberately withheld application ACKs
beyond the 10.24-second queue window, so sequences 1,024 through 4,021 were
intentionally lost; the single 2,998-sample gap, matching queue-overflow total,
demonstrates bounded buffer exhaustion rather than a suspended output task.
`tests/test_trikke_protocol.py` verifies the hashes, parses the captures in
fragmented chunks, and asserts these signatures so the hardware evidence remains
Binary file not shown.
+18
View File
@@ -309,6 +309,24 @@ class ProtocolContractTest(unittest.TestCase):
"transport_invalid_ack_count": 0,
},
},
"ble_mtu_race_4bf00eb.trk": {
"sha256": "4a231b54a3c7320fd69cac869b830e94aca8f704f946881b9cdfd21991bfa41f",
"sample_count": 1848,
"first_sequence": 0,
"last_sequence": 4845,
"max_dropped": 2998,
"timing_anomalies": 412,
"gaps": [(1023, 4022, 29_990_016)],
"final_status": {
"sensor_read_failure_count": 0,
"queue_overflow_count": 2998,
"transport_begin_retry_count": 2471,
"transport_disconnect_count": 6,
"transport_send_failure_count": 0,
"transport_replay_count": 6,
"transport_invalid_ack_count": 0,
},
},
}
for name, contract in expected.items():