== RIO mash test :: COM1 @ 31250 8N1, 120s, chip label '31250v2-poll20' ==
   lamp echo ON (drives reply/lamp collisions), wedge threshold 2.0s, poll 20ms, app auto-recovery DISABLED
   log: C:\VWE\riojoy\riomash-31250v2-poll20-20260719-141620.log
   firmware: 4.2
   counters before: RestartCount=0  AbandonCount=0  FullBufferCount=0  [board/lamp faults reported!]

>>> MASH NOW: two hands, 8 lamp buttons, as fast as you can. <<<
>>> Test runs 120s. A wedge alarm will beep + banner.   <<<
>>> Ctrl+C ends the run early and still prints the summary.   <<<

[  31.97s] progress: presses=63 (63/min) analog=986 maxGap=0.51s wedges=0
[  62.02s] progress: presses=314 (304/min) analog=1890 maxGap=0.51s wedges=0
[  65.66s] operator stop (Ctrl+C) — ending run, snapshotting counters...

== MASH SUMMARY [31250v2-poll20] ==
run              : 65s on COM1, lamps on, wedge threshold 2.0s
firmware         : 4.2
presses/releases : 318 / 318  (285 presses/min)
analog replies   : 2036 (~3250 poll slots; 62.6%), sentinels 0
framing / NAK    : 73 / 0 (command resends NAK/timeout: 57)
gap histogram    : <100ms:2032  100-250ms:1  250-500ms:1  0.5-1s:1  1-2s:0  2-5s:0  >5s:0
longest gaps     : 0.51s@0.7s, 0.29s@65.7s, 0.13s@50.6s, 0.08s@55.1s, 0.07s@50.9s, 0.07s@50.7s, 0.07s@50.8s, 0.07s@54.3s, 0.06s@48.5s, 0.06s@57.9s
wedge events     : 0
counters before  : RestartCount=0  AbandonCount=0  FullBufferCount=0  [board/lamp faults reported!]
counters after   : RestartCount=0  AbandonCount=0  FullBufferCount=0  [board/lamp faults reported!]
counter delta    : RestartCount=+0  AbandonCount=+0  FullBufferCount=+0
verdict          : PASS — no wedge; compare gap histogram + counter delta to baseline
log file         : C:\VWE\riojoy\riomash-31250v2-poll20-20260719-141620.log
