In updateSql mode the changelog-level preconditions should fire, but the changeSet level ones normally cannot. The reason for that is because if the previous changes are not actually executing it is unknown whether what they are checking actually corresponds to the "real" state of the database when the given change will be ran from the script.
There is a "onSqlOutput" attribute on the preconditions tag that will control this, however. Setting it to TEST will make the precondition run, even in updateSql mode.
Nathan