Признак, который не выключился, а поменял знак
На информационном запросе страница БЕЗ региональной разметки обгоняла точно такую же С разметкой.
ЗамерСвой город 0.0000, без региона +0.0800, чужой город 0.0000. Мы наказывали за ту разметку, к которой сами призываем.
Регион в нашем ранжировании выражен двумя состояниями: «близость к региону пользователя» и «документ без региона». Второе — не нулевое значение первого, а отдельное состояние, и это решение верное: общероссийская страница не должна проигрывать странице чужого города.
Множитель локальности умножает только первое состояние. На информационном запросе множитель ноль — и признак не выключается, а меняет знак: перестаёт поощрять свой город и начинает наказывать любой.
Ошибка тихая вдвойне. На локальных запросах всё выглядело правильно, а портилась соседняя, гораздо более многочисленная половина трафика, где искать региональную причину никто не станет.
Починка — четыре строки: при нулевом множителе выключаются оба состояния. Два состояния одного свойства — это одно свойство, и масштабировать половину свойства нельзя.