Code coverage is different without or with minor changes in code (not affecting the test code base or even changing code which is excluded from code coverage) leading to failed builds not reaching the defined quality gates for code coverage.
How does the ‘New code’ detection works? Which is the code base to be compared with? Why can the code coverage be different just by reanalyzing the branch?
At a guess, you’ve set your New Code definition to previous_version, and you’re passing something that changes with every run, probably your build string, in as your sonar.projectVersion value. That would reset what’s considered “new” with each analysis, and explain what you seem to be seeing.