How tiresome. :P
Now I see the magic_zero thingy is a workaround for the same thing. It wasn't the wisest choice to disregard any false value like that in the parser.
I think the best solution would be to fix Parser.XML.Simple.parse to use UNDEFINED as "disregard" value instead, since the current behavior clearly affects the usability.
But doing so would of course introduce another compat issue, and I don't know if a flag would be required there as well, or if we could just use the #pike compat level. I'd be somewhat in favor of the latter, but I don't really know how much that parser is used.
In any case, it wouldn't be good to extend the decoder to handle Val.true without handling Val.false as well. If you're not inclined to dig into the parser, and cannot find another passable workaround (by using another xml parser, or perhaps another way to collect the results, or something), then I think the best course is to not change anything on the decode side for now.