Зачем нам эти версии?

Сегодня натолкнулся на мелкую ошибку, которая заняла пол часа чтоб ее понять и 2 секунды чтоб починить. Вместо доставки docker image blah.com/supersystem:develop-2.0.3, в compose по невнимательности было прописано blah.com/supersystem:develop-2.0.2. Это навело на странную мысль - а зачем тут вообще нужны эти версии?

Я, лично, привык все версионировать и никогда не подвергал эту идею обдуманному сомнению. Понятные доводы “можно откатить на версию” и “всегда знаешь какая версия бежит” не вызывали никаких особых раздумий до этого момента. Теперь я спрашиваю себя - а зачем мне это надо кроме как для головной боли? Зачем мне знать, какая именно develop версия если для develop я всегда хочу доставлять свежую? А когда работа идет параллельно в нескольких бранчах то я и деплою тестовые версии из бранчей, если хочу иметь несколько систем работающих параллельно с разными версиями. Тоже самое и про мастер.

Т.е. если всегда строить blah.com/supersystem:<бранч|тэг> без всяких версий, это ведь будет хорошо и просто и нет места глупым ошибкам. В релиз идет из тэгов, т.е. там версия будет соответствовать тэгу и будет “нативная версия” типа blah.com/supersystem:2.0.3.

Я что-то упускаю, или на самом деле избавиться от этого чрезмерного версионирования это хорошая идея? Я понимаю практические плюсы от того, что моя ветка/тэг всегда однозначно связана с head и любой image построенный из любого бранча всегда самый свежий. В теории, я понимаю и что теряется - возможность иметь несколько релизов из каждой ветки, однако практически я не вижу зачем это мне может понадобится.

Я об этом глубоко не думал, так что аргументированные доводы как за, так и против, сильно приветствуются.