With the exception of "Extractor Trick", any time a cancel is performed, it should essentially erase the previous step. This means both in terms of what is recorded, as well as any objective interactions that occurred.
Steps that are cancelled after an objective has been completed or failed will revert back to an active objective.
Steps that are marked as completed, but are cancelled after a subsequent step is marked as completed will be marked as failed. (There may be a reason to change this after the build order tolerance window is implemented though)
Also, attempting to cancel one of the units for a step that has failed because its multi unit failure timer expired should not result in that failed step being undone
With the exception of "Extractor Trick", any time a cancel is performed, it should essentially erase the previous step. This means both in terms of what is recorded, as well as any objective interactions that occurred.