Usually when people think of the global $post object it's assumed that it's actually set whenever you enter The Loop. I started to play around with how early I could actually call global $post which looks like:
before wp_head() in most header.php files
before template_redirect action
after plugins_loaded
So my question is, what's the earliest I have access to global $post?