Novij Backup Agent
Изменения
- Storage без зарегистрированного на выбранном Relay биллингового кошелька больше
не выбирается для записи: probe сверяет фактический `wallet_id`, а не принимает
один WebSocket `pong` за полную готовность ноды. Автоматический failover также
ограничен проверенными в текущем discovery Storage.
- Встроенные bootstrap Relay переведены с временных seed-алиасов на исходные
домены Ino и петербургского Relay.
- Network Registry теперь используется только как авторитетный источник active
membership, а доступность Storage агент подтверждает собственным probe.
Задержавшийся heartbeat больше не создаёт ложную ошибку отсутствия Storage в
`verify`, `doctor` и `restore`.
- Vendored C++ SDK обновлён до 48-часового срока валидного Network Registry
checkpoint и планового выбора узлов. Временный отказ одного seed по-прежнему
приводит к безопасному failover, но не вызывает лишние сетевые пробы.
- Исправлена сборка фрагментированных текстовых WebSocket-ответов Storage:
C++ SDK теперь ждёт финальный continuation-кадр, сохраняет порядок частей и
собирается без ложного предупреждения GCC о неинициализированном opcode.
- Устранено предупреждение современного CMake от vendored `yaml-cpp 0.8.0`:
минимальная policy-совместимость зависимости повышается до 3.5 штатным
воспроизводимым patch-step без отключения диагностик.
- `novij-backup blocks` теперь выводит только chunks и manifest-блоки, необходимые активным сохраняемым backup; истёкшая история и устаревшие coverage-only ссылки исключены.
- Пополнение отдельного ZK безопасно повторяется при явном `LEDGER_BACKEND_UNAVAILABLE`, но не при неоднозначном результате transfer.
- ZK sync теперь возвращает и сразу использует фактический active coupon ID, поэтому после ротации doctor/verify не перепроверяют истёкший предыдущий купон.
- `doctor` загружает сохранённый `zk-coupon.json` до первого аудита, поэтому повторная проверка ротированного купона идемпотентна и не перезаписывает устаревший bootstrap-купон.
- Добавлено разделение package-site на каналы `latest` и `stable`.
- Добавлены HTML-страницы патч-ноутов для package-site.
- Добавлена двуязычная главная страница package-site.
Обновление
- Обновлено автообновление: поддерживаются `updates.base_url`, `updates.channel` и `novij-backup update --channel`.
- Обновлён установщик: поддерживается `NOVIJ_PACKAGE_CHANNEL=latest|stable`.
- Обновлена генерация `.deb`-версий в CI: используется хронологический формат `0.<Y>.<MM>.<DDHHMM>` в зоне `Europe/Moscow`.
- Обновлена публикация package-site: deploy проверяет права на всё дерево сайта, чинит владельца через `sudo` при возможности и показывает команду для сервера при нехватке прав.
Совместимость
- Существующие конфиги без `updates.base_url` и `updates.channel` продолжают использовать канал `latest`.