В общем я подскажу сам себе, хотя хоть убейте не понимаю в чём была проблема. В общем сравнивание приведённого к "красивому" виду всё и ломало. Изначально для ss_sunrise данные получаются в виде строки которая удовлетворяет формату времени, но она строка (str). Впрямую эти данные сравнивать нельзя, поэтому мы их конвертили в красивые часики и к ним подпихивали now в виде красивых часиков, но что было под капотом - загадка. Но! Эти данные можно заграбастать и конвертнуть в таймштамп - полученный результат будет уже float. Тогда можно вообще не делать templ_sunrise с красивыми часиками (разве что для UI) и сравнить напрямую:
value_template: "{{ as_timestamp(states('sensor.ss_sunrise')) - 60*30 < now().timestamp() }}"
и тогда мы сравниваем два таймштампа, применяя нужную мне коррекцию секунд с любой из сторон. Всё прозрачно и очевидно.
Таймштапм по сайту: 1620182580.0
Таймштамп по текущему: 1620170486.005238
и никаких проблем в сравнении что больше. Я всё ещё без понятия почему в проверке шаблона и в автоматизации были разные результаты, но, по крайней мере, так всё работает нормально. Сейчас 23:32, коррекция выставлена на те же полчаса и никаких аномальных включений - можно сделать вывод что всё работает, хотя я ещё понаблюдаю.
Спасибо всем кто накидал разных примеров, было интересно в этом разобраться.