with postBuild being a stage, this results in a confusing experience.
User is used to seeing:
Should things fail on A, they will see:
This hides the fact there are other stages that would normally be executed.
For stage view, and blue ocean, this can result in a visual report of:
A->postBuild->B (skipped) -> C (skipped)
which is very confusing.
So either postBuild steps should be rolled into the final stage that was executed (acceptable) or else if there is a failure, all subsequent stages have to be reported (but with no steps in them) so that the presentation is consistent (former is easier and clearer).
I believe James Dumay will be able to explain more.
The bottom line is by making postBuild a synthetic stage, the structure of the pipeline radically changes depending on success of failure (vs just being early terminated).