A seemingly valid PD protocol will cause the app to throw a ACK Timeout error when uploaded to the robot. No errors can be observed in the robot logs.
Update:
This seems to be caused by the robot server ending the real-time connection if any given message is greater than 1MB. In this case, the protocol itself is larger than 1MB, so the upload command causes the connection to end unexpectedly

journalctl -fopentrons_simluate.I could also reproduce this running the robot server locally with make dev.
Upon investigation, two problems:
So the summary of events is:
Eventually, these logs show up in the robot server:
2020-07-28 14:16:02,374 robot_server.service.legacy.rpc.rpc ERROR [Line 161] While reading from socket:
Traceback (most recent call last):
File "./robot_server/service/legacy/rpc/rpc.py", line 156, in handle_new_connection
msg = await socket.receive_json()
File "/Users/mc/.local/share/virtualenvs/robot-server-tntD7pR_/lib/python3.7/site-packages/starlette/websockets.py", line 98, in receive_json
self._raise_on_disconnect(message)
File "/Users/mc/.local/share/virtualenvs/robot-server-tntD7pR_/lib/python3.7/site-packages/starlette/websockets.py", line 80, in _raise_on_disconnect
raise WebSocketDisconnect(message["code"])
starlette.websockets.WebSocketDisconnect: 1006
A 1006 is a generic error code that means the connection was closed abnormally
The app's dev tools report the upload command message to be 1171956 bytes long (~1.2 MB)
We seem to have a problem with our WebSocket server. If any given message is > 1 MB, the socket is closed
This ticket will track this bug. I will file a new ticket for the app missing WebSocket disconnects when the robot is otherwise healthy
Most helpful comment
Upon investigation, two problems:
So the summary of events is:
Eventually, these logs show up in the robot server:
A
1006is a generic error code that means the connection was closed abnormallyThe app's dev tools report the upload command message to be 1171956 bytes long (~1.2 MB)