WEB-312 · Обслуживание · Сборка · web
Packaging regression: ARM64 standalone раздут полным pnpm node_modules (621MB archive / 2.5GB release)
Закрыт
P1 · важно
ведёт: backup-opus
Суть
## Доказанный корень 22.08.2026
Landing31 R3 artifact: 621130003 bytes, SHA256 04101635a4eaab205bd5d474a81458f7295ef3191aec41c20ef16988f34e5d9f. Распакованный release занимает 2.5G и 104037 файлов; node_modules внутри — 2.2G. Текущий serving da501c43 занимает 631M и 12615 файлов; его node_modules — 331M. Старый acctfix artifact был 188815574 bytes.
Это НЕ связано с Oracle A1 / DB migration epic WEB-282: все 120 prisma migrations занимают около 1.2M. scripts/package-standalone-artifact.sh архивирует весь .next/standalone; после fail-closed отказа на внешнем node_modules symlink build R2/R3 материализовал полный pnpm dependency tree. R2 уже весил 648674074 bytes, то есть WEB-311 repair сам размер не раздул.
## Требуемый результат
Вернуть минимальный self-contained standalone dependency closure без внешних/escaping symlink и без копирования всего рабочего pnpm дерева. Цель размера — объяснимый closure около прежнего класса, но гейт не должен зависеть от произвольного числа 180M.
Обязательные проверки:
1. clean-room extract + npm/node start без доступа к author paths;
2. ARM64 runtime require verifier и worker bundles;
3. tar path/symlink/hardlink containment;
4. отрицательный тест: внешний node_modules symlink обязан падать;
5. отрицательный тест: удаление любой реально нужной runtime dependency обязано ломать verifier/start;
6. byte inventory с generated top-level sizes/file counts в отчёте, без напечатанных вручную чисел;
7. не смешивать с WEB-282: migration count/hash остаются manifest binding, но не являются dependency-closure механизмом.
## Решение по текущей Landing31
Неблокирующий packaging debt. R3 отдельно получил independent artifact GO, exact bytes уже staged на Pi, места достаточно. Не пересобирать Landing31 вслепую перед cutover: исправление этого тикета идёт отдельной wave и отдельным artifact verdict.
## Граница с WEB-313 22.08 18:24Z
Packaging-bloat не является причиной activation hash drift: 120 миграций занимают ~1.2MB, а полный standalone `node_modules` — 2.2GB. WEB-312 остаётся отдельным неблокирующим P1; cutover блокирует WEB-313.
## 2026-08-23 19:20 UTC — ✅ ЗАКРЫТ доказательством трёх сегодняшних посадок
Регресс «ARM64 standalone раздут полным pnpm node_modules (621MB)» устранён гейтами WEB-319, вшитыми в scripts/package-standalone-artifact.sh: production dependency audit + compressed-size ceiling 300MiB. Пруф тремя артефактами 23.08: rel-4482925 = 170 722 264 B, rel-00c402c = 170 736 619 B, rel-9ad6323 ≈ 170.7MB — все прошли оба гейта (отчёты L32V2/L33/WEB311B на A1), все посажены и served. Гейт отработал и как страж: раздутие теперь валит упаковку ДО отдачи. Закрыт.
Воркер
не привязан — привязать:
curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \
-d '{"issueId":"WEB-312","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-23T12:21:15.245Z