The rule with every value that was invalid text read again against the column types of schema, e.g. after a source's table was typed again: '300' becomes a SmallInt once the column is one. Text that still isn't a value stays as it is, and so do rules on columns schema doesn't have. The rule itself comes back when nothing was read again.