Novij Storage
Проверка разрешения на запуск
- `install-auth verify` теперь возвращает код ошибки при отклонённом разрешении.
Systemd и обновление пакета больше не принимают статус `blocked` за успех.
- Причины отказа сохраняются в обычном и JSON-выводе; положительная проверка
подписи и отрицательные случаи проверяются при сборке пакета.
Стабильная readiness и актуальный Relay bootstrap
- Пакетные Nginx и Traefik edge теперь направляют точный публичный node
challenge в status sidecar, а не на страницу входа PHP-админки.
- Канонический inventory refresh запускается до истечения строгого TTL, поэтому
неизменившаяся нода больше не попадает в периодическое окно `syncing` во время
планового пересчёта.
- Полный canonical cache теперь прогревается при старте и обновляется на половине
TTL; это оставляет достаточно времени для пересчёта под фоновой sync-нагрузкой.
- Bounded `sync repair all` сохраняет следующий divergent prefix и продолжает
с него в новом systemd-цикле, не повторяя бесконечно начало диапазона.
- Неполная prefix-сверка с недоступным peer теперь остаётся `degraded`, а не
маскируется нулевыми счётчиками как успешная.
- Встроенный bootstrap переведён с выводимого INO на действующие Relay SPB/MNS;
authoritative membership по-прежнему берётся из Network Registry.
Безопасное удаление и восстановление блоков
- Cleanup неоплаченных блоков теперь удаляет только тело с полностью проверенным
canonical recovery identity; body-only legacy-блоки остаются защищёнными.
- Prepare и commit повторно сверяют тело с linear/mergeable manifest, а
delete-attestation сохраняет physical hash и параметры consistency mode.
- `sync restore-deleted` поддерживает mergeable manifest и отдельное явное
восстановление исторического body-only backup по точному операторскому SHA3.
Governance config epoch consumer
- Удалён минутный polling `/network/settings`.
- Добавлен один process-wide consumer: startup read, config-head в существующем
keep-alive, bounded cursor pull и атомарная замена runtime snapshot.
- `config_epoch/config_hash/certificate_id/cursor` сохраняются локально;
rollback, hash-конфликт и несертифицированное событие отклоняются.
- Governance-only epochs не создают лишнюю runtime-работу. Новых idle HTTP
запросов для network config: 0.
P30-P32 package/sync foundation
- Добавлен read-only sync/status foundation: `/sync/status`, `/sync/peers`,
`/sync/inventory`, `/sync/block/{block_id}/chunks`, `/sync/conflicts`, `/sync/lag`.
- Добавлен `novij-storagectl` для audit dry-run, safe pull-missing, peer visibility,
install-auth и first-run setup.
- Добавлена Debian packaging конфигурация для `novij-storage`.
- Добавлен package smoke и package-site publish flow для `packages.novij.tech/storage`.
- Сервисы пакета требуют owner-signed install authorization перед запуском.
- `novij-storage-sync.timer` выполняет missing-only sync с caps, без overwrite/delete.
Live write/append, fake billing source и payout settlement не добавлялись.