Software builds must be labeled with a unique, incrementing version number.
We follow "Semantic Versioning" because our industry as a whole has decided it's useful.
Version numbers should be predictable, so that (as developers) we know —and control— what version of the software we're working on.
Each build must produce a label that is unique enough that we can track a binary back to its build and the commit it was based on.