== RIO mash test :: COM1 @ 125000 8N1, 300s, chip label 'patched-125000' ==
   lamp echo ON (drives reply/lamp collisions), wedge threshold 2.0s, app auto-recovery DISABLED
   log: C:\VWE\riojoy\riomash-patched-125000-20260718-125310.log
   firmware: 4.2
   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.   <<<

[  33.05s] progress: presses=147 (147/min) analog=344 maxGap=0.31s wedges=0
[  63.12s] progress: presses=472 (449/min) analog=668 maxGap=0.37s wedges=0
[  93.14s] progress: presses=741 (477/min) analog=999 maxGap=0.44s wedges=0
[ 103.09s] operator stop (Ctrl+C) — ending run, snapshotting counters...

== MASH SUMMARY [patched-125000] ==
run              : 103s on COM1, lamps on, wedge threshold 2.0s
firmware         : 4.2
presses/releases : 827 / 824  (470 presses/min)
analog replies   : 1134 (~1872 poll slots; 60.6%), sentinels 0
framing / NAK    : 5 / 1082
gap histogram    : <100ms:804  100-250ms:298  250-500ms:30  0.5-1s:1  1-2s:0  2-5s:0  >5s:0
longest gaps     : 0.52s@95.7s, 0.44s@63.3s, 0.44s@86.0s, 0.38s@79.8s, 0.37s@56.4s, 0.37s@73.4s, 0.37s@81.5s, 0.34s@95.3s, 0.31s@40.8s, 0.31s@58.4s
wedge events     : 0
counters before  : (no status reply — reply path dead?)
counters after   : (no status reply — reply path dead?)
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-125000-20260718-125310.log
