Cache max-age doesn't correctly expire at midnight
I believe your flaw is that if there is day where no one views a node of bundle wt_lunch your nodes max age will get out of alignment; thus, your block will also be displaying an outdated node. 

For this, don't use preprocess_node, use Job Scheduler or hook_cron instead. 

You might also want to utilize the above with Ultimate Cron.