Two templates that cannot become block templates, and the rule that identifies them.
the rule: if the template contains a conditional that
changes WHAT IS QUERIED, it stays PHP.
page-pricing.php renders a table from a
third-party API, with a cache
and a fallback. the query block
cannot express "call this
service".
archive-event.php orders by a meta value, with a
different ordering for past
events. a pre_get_posts filter
plus a block template was tried
and the conditional ordering
did not survive.
conditionals affecting presentation are fine. this
rule is about the query.
Three years and the rule has held for every template that came up, which is the strongest evidence available for a heuristic. The pricing page could become a dynamic block and was costed at three days against a template nobody edits, which is a deferral rather than a limitation.