# Каталог .weld: что коммитить, а что никогда

> Состояние проекта живёт в одном месте, и у каждого файла в нём есть явный ответ на вопрос, попадает ли он в репозиторий.

Source: https://naasson.com/ru/blog/weld-katalog-sostoyaniya/
Published: 2026-04-05
Language: ru
Product: Naasson Cloud (https://naasson.com/ru/products/naasson-cloud/)
Publisher: Naasson — https://naasson.com

---
Всё состояние проекта лежит в одном каталоге `.weld/`. Никаких запасных путей и совместимости с прежними раскладками — продукт до публичного релиза, поддерживать старые установки не нужно, поэтому раскладка одна и безусловная.

Рядом, в корне проекта, лежит `weld.yml` — файл, который редактирует человек и который коммитится в репозиторий. Именно он, а не что-либо в `.weld/`, задаёт проект, трек, облако и кластер.

## Строгий разбор конфигурации

`weld.yml` разбирается строго: неизвестный ключ не игнорируется, а роняет команду с отдельным кодом ошибки. Версия схемы по умолчанию считается первой; любая другая заявленная версия тоже падает со своим кодом.

Это раздражает при первом знакомстве и экономит часы потом. Опечатка в имени ключа в мягком разборе означает, что настройка молча не применилась, а поведение объяснят чем угодно другим.

## Что не попадает в git

База состояния, файл последнего применения, реестр целей, кэш клонов репозиториев, ключи проекта — всё это локальное и в репозиторий не идёт.

Отдельно и жёстче — файлы состояния Terraform, в том числе зашифрованные. Для них есть не рекомендация, а проверка: если такой файл оказался в индексе или в истории, применение и удаление отклоняются с собственным кодом и ненулевым выходом.

Причина в том, что файл состояния Terraform содержит достаточно данных, чтобы им можно было навредить, и попадает он под контроль версий всегда по невнимательности — обычно вместе с `git add .`.

## Что попадает

Манифесты приложений для ArgoCD — это и есть содержимое GitOps-репозитория, оно обязано быть в git.

Публичные ключи SSH — их безопасно коммитить, на то они и публичные.

Журнал аудита — опционально: он добавляется в индекс только если это включено в конфигурации проекта.

## Про два журнала аудита

Их действительно два, и это стоит назвать прямо. Есть журнал в устаревшем формате построчного JSON, без цепочки контроля целостности. И есть новый — с цепочкой на HMAC-SHA256, отдельным файлом на каждую цель.

Второй устойчив к подделке: изменить запись в середине, не сломав цепочку, нельзя. Первый оставлен для совместимости и честно помечен как устаревший, а не выдан за то же самое.

## Почему один каталог, а не разбросанные файлы

Первое: удаление проекта — это удаление одного каталога. Не поиск временных файлов по системе.

Второе: правило про git становится проверяемым. Когда состояние в одном месте, проверить, не утекло ли оно в репозиторий, — конечная операция.

Третье: перенос проекта на другую машину сводится к понятному вопросу — что взять с собой. Ответ: репозиторий, а из `.weld/` только ключи, если так принято в команде.

## Что бывает, когда конфигурации нет

Проект без `weld.yml` падает громко со своим кодом ошибки. Не создаёт файл с настройками по умолчанию, не спрашивает интерактивно, не догадывается.

Это часть общего правила: отсутствие источника истины — ошибка, а не повод для тихого запасного варианта.