It may not really be a bug, but it's strange anyways smile

First some normal things
if (a == b) || ( [ [ a == b ] ] ) || $iif (a == b, $true,$false) -> all $false

Strange at first, but correct ($strip doesn't return $null, 0 or $false)
if ( $strip( a == b ) ) -> $true
$iif ($strip(a ==b), $true,$false) -> $true

And now the strange stuff:
if ( [ [ $strip( a == b ) ] ] ) -> $true
$iif ( [ [ $strip(a ==b) ] ] , $true,$false) -> $false

This means that, if you get the actual tests from file/hash/%var/$id you need either of these to do it:
if ($iif( [ [ %test ] ] ,$true,$false)) { commands }
$iif( [ [ %test ] ] ,commandiftrue,commandiffalse)
while this will not work (the same way)
if ( [ [ %test ] ] ) { commands }