firewall guard: барьер покоя fail-closed и явный контракт транзиентного таймера
Барьер, обязанный ДОКАЗАТЬ отсутствие асинхронного исполнителя, в трёх местах принимал за доказательство отсутствие наблюдения. - отказ `systemctl` больше не выдаётся за отсутствие guard: вместо `return []` введён единый наблюдатель inspectRollbackGuard с исходами quiescent/pending/ unknown и отдельным типом отказа GuardStateUnknownError; - покой перечисляется белым списком (inactive, failed): maintenance, refreshing и любое незнакомое состояние systemd блокируют операцию; - у транзиентного таймера явно заданы AccuracySec=1s (умолчание 1min превращало обещанные 45 секунд в 45-105) и RemainAfterElapse=no; барьер дополнительно опознаёт SubState=elapsed у *.timer как покой; - команда взведения строится чистой buildArmGuardArgv и выполняется новым runMutatingArgv без shell, поэтому её контракт проверяется значением, а не грепом по исходнику; - status перестал листить guard-юниты своей копией кода: без --plain, с `|| true` и с трактовкой failed как «вооружён» отчёт вечно противоречил барьеру. Добавлены rollback_guard_state и firewall_state=guard_unknown; - purge-v0.sh пропускал failed-юниты из-за маркера в первой колонке. Барьер покрыт поведенческими тестами через подставляемый SystemdUnitProbe: прежние проверки грепом по тексту функции пережили инверсию смысла - строка `return [];` была на месте, а решение стало неверным. Документация (README, docs/07, 11, 12, 13, 14, CHANGELOG) приведена к реальному окну 45-46 секунд и к новому тексту отказа. Отдельно исправлен комментарий PNPM_AUDIT_LEVEL в versions.env: гейт давно проверяет весь lock-граф.
This commit is contained in:
@@ -186,10 +186,14 @@ sudo systemctl stop hysteria-server hy2xs-admin h-ui
|
||||
sudo systemctl disable hysteria-server hy2xs-admin h-ui
|
||||
sudo systemctl reset-failed hysteria-server hy2xs-admin h-ui
|
||||
|
||||
# таймеры отката firewall от незавершённой установки
|
||||
sudo systemctl list-units --all 'hy2xs-fw-rollback-*'
|
||||
# таймеры отката firewall от незавершённой установки.
|
||||
# --plain обязателен: у юнита в состоянии failed первой колонкой идёт маркер `●`,
|
||||
# и без флага такой юнит легко пропустить — а это ровно те, что остались после
|
||||
# аварийной установки.
|
||||
sudo systemctl list-units --all --plain 'hy2xs-fw-rollback-*'
|
||||
# для каждого найденного юнита:
|
||||
# sudo systemctl stop <unit> && sudo systemctl disable <unit>
|
||||
# sudo systemctl reset-failed <unit>
|
||||
# sudo rm -f /etc/systemd/system/<unit>
|
||||
|
||||
sudo rm -f /etc/systemd/system/hysteria-server.service \
|
||||
|
||||
Reference in New Issue
Block a user