because the databasechangelog table can be manipulated from outside liquibase environement. I faced a situation where the changeSet entry is there in databasechangelog table but the changes are not applied to the schema.
To handle such issues i think it will be a very useful feature to add a element along with the rollback inside the this test element can have a sql with other conditional operators (as in preCondition) which would determine that the changeSet is actually applied on the database or not.
This will also help the users in identifying the changeSets which have been invalidated and needs cleanup.
the tag would look like
alter table emp add column DEPT_NO
select DEPT_NO from emp
in case the column DEPT_NO was renamed to DEPT_ID by some later changeset then the test for the above changeSet would fail and the user can either remove this changeset or merge it with the new one