The fatal issue of git is that it cannot have world monotonic commit serial (or version number) per project (repo). It makes unneededly tooooo hard to bisect things, unlike RCS, CVS and SVN (maybe oldest SCCS would be, too).
Yes, it would be "by design" to make distributed development easier.
But a functionality to assign single repo as "original upstream" and allow the exsitence of backup repos that cannot accept commits directly but keep 100% in sync with "original upstream" and can promote once current "original upstream" dissappears would allow assigning monotonic serial number by the "original upstream".
I've commented something alike this before.
Before, I've proposed to have external database that receives commit emails (or other notifications), assign monotonic version number (per repo or per branch) and keep the pair of monotonic version number and commit hash, but cannot find it in my "sent" email box. Possibly somewhere in Bugzilla PR or Phabricator review.
But "n*" for src was implemented differently. IIRC, it is based on
git rev-list --count --first-parent.
This is clearly simpler, but having a drawback.
If any non-committer downstream (i.e., me) missingly commit to officially existing branch locally, the n-number should become different as upstream.
This should make interactions with others confusing.