The problem is that it does work only in puppet DSL, here we use plain ruby so symbols and empty string are evaluated as true. Before this change the variable could be set false which worked wit lookupvar, however now when we use undef we got :undef, :undefined or even empty string (in puppet 2.6) as a result of lookupvar.