docs(docs): describe durable jobs, telemetry, and bundle limits

Зафиксированы очередь job, семантика метрик, лимиты бандла и исходящих запросов, а также чеклист продакшена для пула соединений.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
DenozordecandCursor committed 2026-11-02 17:24:18 +07:00
1 parent bda45d633e
commit 240d83fc61
15 files changed
+839 -17

No files matched your search

+25
View File
@@ -0,0 +1,25 @@
# Ограничения подписанных 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 и восстановление описываются отдельно.