== RIO mash test :: COM1 @ 31250 8N1, 300s, chip label 'patched-31250' ==
   lamp echo ON (drives reply/lamp collisions), wedge threshold 2.0s, app auto-recovery DISABLED
   log: C:\VWE\riojoy\riomash-patched-31250-20260718-003114.log
   firmware: (no version reply!)
   counters before: (no status reply — reply path dead?)

>>> 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.   <<<

[  31.90s] progress: presses=188 (188/min) analog=1185 maxGap=0.09s wedges=0
[  61.90s] progress: presses=395 (383/min) analog=2370 maxGap=0.09s wedges=0
[  91.93s] progress: presses=798 (521/min) analog=3559 maxGap=0.09s wedges=0
[ 121.96s] progress: presses=932 (459/min) analog=4713 maxGap=0.09s wedges=0
[ 126.86s] operator stop (Ctrl+C) — ending run, snapshotting counters...

== MASH SUMMARY [patched-31250] ==
run              : 126s on COM1, lamps on, wedge threshold 2.0s
firmware         : 4.2
presses/releases : 946 / 977  (443 presses/min)
analog replies   : 4927 (~2290 poll slots; 215.2%), sentinels 0
framing / NAK    : 5655 / 5
gap histogram    : <100ms:4925  100-250ms:0  250-500ms:0  0.5-1s:1  1-2s:0  2-5s:0  >5s:0
longest gaps     : 0.54s@126.9s, 0.09s@28.6s, 0.08s@29.5s, 0.08s@121.9s, 0.08s@24.3s, 0.08s@108.9s, 0.08s@21.8s, 0.08s@85.9s, 0.08s@88.9s, 0.08s@83.5s
wedge events     : 0
counters before  : (no status reply — reply path dead?)
counters after   : RestartCount=2  AbandonCount=65  FullBufferCount=0  [board/lamp faults reported!]
counter delta    : (incomplete — a snapshot got no reply)
verdict          : PASS — no wedge; compare gap histogram + counter delta to baseline
log file         : C:\VWE\riojoy\riomash-patched-31250-20260718-003114.log
