== RIO mash test :: COM1 @ 62500 8N1, 300s, chip label 'patched-62500' ==
   lamp echo ON (drives reply/lamp collisions), wedge threshold 2.0s, app auto-recovery DISABLED
   log: C:\VWE\riojoy\riomash-patched-62500-20260718-130333.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 300s. A wedge alarm will beep + banner.   <<<
>>> Ctrl+C ends the run early and still prints the summary.   <<<

[  33.04s] progress: presses=156 (156/min) analog=521 maxGap=0.22s wedges=0
[  63.12s] progress: presses=299 (284/min) analog=998 maxGap=0.22s wedges=0
[  93.15s] progress: presses=396 (255/min) analog=1478 maxGap=0.22s wedges=0
[ 123.17s] progress: presses=505 (246/min) analog=1954 maxGap=0.22s wedges=0
[ 132.35s] operator stop (Ctrl+C) — ending run, snapshotting counters...

== MASH SUMMARY [patched-62500] ==
run              : 132s on COM1, lamps on, wedge threshold 2.0s
firmware         : 4.2
presses/releases : 530 / 530  (238 presses/min)
analog replies   : 2115 (~2400 poll slots; 88.1%), sentinels 0
framing / NAK    : 24 / 69
gap histogram    : <100ms:2103  100-250ms:11  250-500ms:0  0.5-1s:0  1-2s:0  2-5s:0  >5s:0
longest gaps     : 0.25s@132.3s, 0.22s@1.8s, 0.14s@54.9s, 0.14s@117.2s, 0.13s@43.6s, 0.13s@14.8s, 0.13s@43.1s, 0.13s@115.0s, 0.12s@124.0s, 0.12s@94.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-patched-62500-20260718-130333.log
