42db78c6a0
Раз v1 принципиально не мигрирует состояние 0.x, политика должна быть операционно завершённой: у оператора обязан быть явный способ привести сервер в состояние, которое установщик примет. tools/legacy/purge-v0.sh делает это отдельной осознанной операцией: - по умолчанию печатает план и НЕ меняет ничего; - выполнение требует --apply вместе с --yes-i-know; - снимает таймеры отката firewall hy2xs-fw-rollback-*, которые переживают неудачную установку и иначе продолжили бы менять ruleset уже после очистки; - из /etc/nftables.conf убирает только include HY2XS: остальной ruleset принадлежит оператору; - в конце проверяет чистоту хоста по тому же контракту, что и установщик. Из install.sh он не вызывается никогда: встроенная очистка вернула бы destructive migration logic обратно в путь свежей установки - ровно то, от чего мы ушли. Acceptance-набор дополнен проверками, которые не дают инвариантам тихо развалиться: порядок фаз в install.sh, наличие read-only guard, preflight раньше первой записи install-state, ownership-aware rollback, отказ по отсутствующей схеме, проверка поколения в reconfigure/repair, структурная редакция, отсутствие удалённых маршрутов, e2e на production-генераторе, сверка с upstream hashes.txt, контрольные суммы в versions.env, версия админки из контракта.