Interesting! No, I haven’t David unfortunately 
Though, I have seen cases outside of Discourse where this happen (maybe you experienced it before).
The migration started, reached a particular step, executed that step but then some fault caused a halt. At this point, the migration version number wouldn’t be written to the DB but the migration step would be executed.