If I'm understanding you correctly, no, there is no way to do that.
All of your top-level compiled splices MUST all be defined at load
time--i.e. when initHeist is called. There is a technique that allows
you to somewhat work around this. Create a splice that runs its
children with other splices bound. That is essentially what you are
doing there with the withSplices call. But you have to do that in a
splice that is bound up front in the scCompiledSplices field of
SpliceConfig. This means that your post splice will need the
knowledge of how to figure out which post is being rendered.
More philosophically speaking, compiled splices are fundamentally
incompatible with this "determine data, then render page" model.
Compiled splices should be thought of more like a fixed API that any
template can call on at any time. This makes debugging easier in some
ways because you don't run into the question "has this splice been
bound yet"? All splices are bound everywhere (except for splices
bound inside of another splice). They're available no matter which
handler you take.