We also need to establish how an extension gets from our git to the repo. One idea is to use git tags as a basis.
I do not understand the first sentence. "the repo"? What is that?
Regardless of if Packagist or a custom package repository is used, Composer works with tags to indicate versions. This has already been standardized and adopted by many projects. For more details, see the Composer docs on versioning packages.