Hey there.
I’m not quite sure I understand your point, but let me try:
From a functional point of view: SonarQube doesn’t really care about the name of the branch (although it sets a default if no information is provided during project onboarding). The issue here is really that sometimes the main branch of a project changes, or is misconfigured at first, and to preserve the history of the branch SonarQube doesn’t just “switch” and tack on measures for the new default branch to the old default branch.
From a technical point of view: since it was first implemented, the “main branch” of a project in SonarQube has been synonymous with the project itself. We have to separate those concepts, which takes quite a lot of work in the database. Once that is done, SonarQube will be much more flexible.