#556: HANDSHAKING state in sim_bridge.gd — decodes first framed message as HandshakeMessage, validates vs Protocol.PROTOCOL_VERSION, 5s timeout, handshake_complete/handshake_failed signals. #342: IPC benchmark now reads and validates HandshakeMessage before starting the timing loop. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>