Problem solved!
It was fat-fingering on my part. Sorry about the noise.
I reconfigured from scratch with more paranoid filtering rules and to my surprise, my end started sending my v6 network to my ISP who appropriately has now propagated out to the rest of the world.
So the good news is that - at least for simple cases like mine - OPNSense is perfectly capable of exchanging v4/v6 routes with other BGP instances.
And thanks to all those who responded. Some of you may or may not have been on the right track, but every post gave me a question to answer and an opportunity to check whether what I was doing was right or not.
Edit: Just to be clear: it wasn't the more paranoid filtering rules that solved the problem. It was that the whole process of re-entering the config serendipitously removed my previous typos that were present in the initial config.
It was fat-fingering on my part. Sorry about the noise.
I reconfigured from scratch with more paranoid filtering rules and to my surprise, my end started sending my v6 network to my ISP who appropriately has now propagated out to the rest of the world.
So the good news is that - at least for simple cases like mine - OPNSense is perfectly capable of exchanging v4/v6 routes with other BGP instances.
And thanks to all those who responded. Some of you may or may not have been on the right track, but every post gave me a question to answer and an opportunity to check whether what I was doing was right or not.
Edit: Just to be clear: it wasn't the more paranoid filtering rules that solved the problem. It was that the whole process of re-entering the config serendipitously removed my previous typos that were present in the initial config.