dotbot: the panel keeps up with the plugin's event ring and draws every failed turn's reason (OrigoZero/DotBot#809, #782). service.module: a cursor behind the ring is answered every event the ring still holds with the head as its cursor (it was the tail with no events, so a panel drawing every two seconds read nothing for as long as a turn streamed), and the end of every turn is kept and read with turnEnd(turnId). source.module: turnEnd. panel.editorPanel: a drain the ring dropped events from ends every row streaming across the gap, ends a turn whose end it missed from the kept end (usage line, reason, Working row down, the queued message sent), and draws a turn that streamed across the gap from what the plugin stored once it ends; an error card carries its own identity, so a turn that fails for the same reason as the one before it shows its card, and the reason a failed turn states twice is drawn once. plugin.wasm and plugin.yaml unchanged