# Dependencies ## Перед добавлением 1. Найди аналог по назначению и реализации в affected repo. 2. Проверь его direct dependencies, текущий stack и native/stdlib API. 3. Определи масштаб: один простой случай или повторяющаяся техническая задача. 4. Используй существующее решение, если оно полностью покрывает поведение. Новый пакет оправдан меньшей общей сложностью, а не сокращением одной строки. Повтор non-business задачи в примерно 3+ независимых местах — сигнал пересмотреть pattern, а не требование немедленно извлечь abstraction. Сравни общий helper, native API и зрелую небольшую dependency: parsing, serialization, dates, debounce, class composition. Три `Array.map` не требуют utility library. Не продолжай копировать boilerplate, если один принятый способ дешевле сопровождать. ## Автоматические обновления Renovate (`renovate.json` в каждом из пяти repos, копия без общего preset) открывает PR в `develop`, автомерж выключен: - minor/patch — группы `non-major dependencies`, `non-major github actions`, `non-major container images`; major — только после approval в Dependency Dashboard; - npm-обновления ждут 3 дня после публикации (`minimumReleaseAge`); не более 5 открытых PR; `lockFileMaintenance` — раз в месяц; - без расписания: релизы не привязаны к календарю; - OpenSpec в manifests отсутствует (CLI ставится в CI как latest), Renovate его не обновляет. Принятие PR — обычный review и gates repo; правило копируй во все `renovate.json`. ## При выборе пакета - Укажи конкретную потребность, альтернативу из текущего stack и существенную цену: совместимость, browser bundle/server runtime, maintenance/security. - Импортируемый пакет объявляй напрямую в repo владельца; наличие в соседнем repo или транзитивном дереве не является dependency contract. - Сохраняй exact versions и lockfile. Перед Node-командами активируй `.nvmrc` через `nvm use --silent`; воспроизводимая установка — `npm ci` в нужном repo. - Peer-конфликты решай совместимыми версиями, без `--force`/`--legacy-peer-deps`. Версии и compatibility принадлежат местному manifest/lockfile. - После изменения запускай relevant install/type/build/behavior checks и `npm audit` при изменении зависимостей. Не добавляй второй analyzer, когда задача решается настройкой существующего; [карта проверок](guardrails.md).