I think you might have mixed up 2 hooks? The [Codex](https://codex.wordpress.org/Post_Status_Transitions) refers to the following hooks: 

1. **{old_status}_to _{new_status} Hook**

> An {old_status}_to_{new_status} action will execute when a post transitions from {old_status} to {new_status}. 

In your case: future_to_*publish* (future_to_*post* won't work because *post* isn't a status

2. **{status}_{post_type} Hook**

> A {status}_{post_type} action will execute when a post of type {post_type} transitions to {status} from any other status.

In your case: This would be publish_post (I think this may be where you got them mixed up?)

I assume you only want future to publish transitions so try:

    add_action( 'future_to_publish', 'future_publish' );