Files
EvoBGP/docs/bundle-limits.md
DenozordecandCursor 240d83fc61 docs(docs): describe durable jobs, telemetry, and bundle limits
Зафиксированы очередь job, семантика метрик, лимиты бандла и исходящих запросов, а также чеклист продакшена для пула соединений.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-11-02 17:24:18 +07:00

3.9 KiB
Raw Permalink Blame History

Ограничения подписанных bundles

Формат .tar.gz, поля manifest, порядок файлов и Ed25519-подпись не изменены. Замороженный legacy fixture и проверка структуры старого manifest остаются тестами совместимости. Новые ограничения применяются до больших выделений памяти и не требуют обновления wire-протокола speakers 2.56.2.

Ограничение по умолчанию Значение
Сжатый bundle / HTTP download / локальный файл 128 MiB
Весь распакованный tar, включая headers, PAX и хвост gzip 512 MiB
Один payload-файл 256 MiB
manifest.json 2 MiB
Файловые записи tar, включая manifest и signature; служебные PAX ограничены общим объёмом tar 4096
Длина относительного пути 1024 bytes
Ответ latest revision 64 KiB
Диагностическое тело HTTP-ошибки 4 KiB
Чтение error-body перед HTTP retry 64 KiB на попытку

Это верхние пределы обработки недоверенного ввода, а не гарантия работы на устройстве с малым RAM. Проверка пока хранит сжатый bundle и распакованные payloads в памяти. Большие конфигурации, включая порядок миллиона IPv6 route-строк, не ограничены маленьким лимитом отдельного CDN-источника. Размерный regression test использует повторяющиеся типовые строки и не заменяет benchmark уникальных префиксов или BIRD.

В Go API bundle.Limits позволяет явно менять бюджеты: BuildGzippedTarWithLimits, VerifyGzippedTarWithLimits, WriteExtractedFilesWithLimits и ReadCompressed. Нулевые поля выбирают defaults; отрицательные значения отклоняются. nodecli.SyncConfig.BundleLimits передаёт одинаковые бюджеты в download, verify и extract. Обычные команды CLI используют defaults.

Verifier проверяет gzip checksum, включая данные после tar EOF, ограничивает внутреннее чтение tar/PAX, отвергает дубликаты путей, ссылки и другие nonregular entries, а также payloads вне подписанного manifest. Пути должны быть каноническими относительными POSIX-путями: absolute, traversal, backslash, Windows drive/stream и device names отклоняются. Извлечение использует directory confinement os.Root из Go 1.24 и не следует существующим symlinks; существующий hard link удаляется до exclusive-create нового файла, сохраняя внешний файл.

Sparse entries отклоняются, а суммарный логический размер файлов дополнительно ограничен 512 MiB: физический размер sparse tar не отражает объём создаваемого содержимого.

Эти проверки действуют в новых binaries, не изменяют уже установленный agent 2.56.2 и не делают переключение всего дерева конфигурации атомарным: безопасное применение BIRD и восстановление описываются отдельно.