Проверяется и то и другое, причём раздельно. Сначала эксперт определяет, под какую версию языка написан код: по используемым конструкциям, по объявленным в описании зависимостей требованиям, по обращениям к функциям, которые в поздних версиях удалены. Затем устанавливает, на какой версии код фактически исполнялся на спорной площадке.
Переходы между версиями меняли поведение существенно. На PHP 7 исчезло старое расширение для работы с базой данных и изменилась обработка ошибок; на PHP 8 обращение к несуществующей переменной или ключу стало предупреждением, а сравнение строки с числом изменило результат — и вот это опаснее всего для спора, потому что не даёт ни ошибки, ни записи в журнале. Поэтому отказ после смены версии — не обязательно дефект кода, а работоспособность на старой версии не означает соответствия заданию.
Вывод формулируется через требование: если версия названа в техническом задании или в договоре на сопровождение, несоответствие ей проверяемо. Утверждение «версия устарела» без такой привязки остаётся оценочным.