How to check for vine-placeable facet?

TL;DR im making a recursive function that makes vines grow up a wall if the player facilitates it. I know how to do 90% of it, but how do I check whether the next block up can be placed on with vines? my current idea is to simply make a tag for all solid blocks and a tag for all stairs, and if it is a stair check all stair types for facing the right direction, if that fails end the recursion, if it is a block simply place the next vine. But do I actually need to hardcode that? If there is a better way I want to know it also, i would be fine with simply forcing a block update to instantly break the vine if it cannot be placed there, but I don't know if that's possible
Continue to help post