how does the version of projections work

Every time I upgrade a projection it’s version number goes up with 4? What is the logic behind this? I’m trying to look for a mechanism to only update projections on our build pipeline if they have actually changed and the version number looked like a good candidate for that.

The projection version number is a sequence number of an event in the system stream where the projection definition is stored. Every time you upgrade the projection the following sequence happens: stopped&disabled/query updated/started. Every step writes a new definition to the system stream.