Проверки по назначению: честные имена целей, карта и быстрый смоук #54

Closed
opened 2026-08-06 09:04:51 +03:00 by ddmitry · 0 comments
Owner

Идёт после #56: там режется код, который иначе пришлось бы делить и
переименовывать здесь.

Цель

Три вещи одним движением.

Первая: вернуть make smoke в разряд быстрых проверок — той, что гоняешь не
задумываясь. Сейчас она идёт 48 секунд, и 42 из них съедают шесть проверок,
которые дёргают Airflow и Superset.

Вторая: дать целям честные имена. Цели на стенде зовутся smoke и
smoke-cluster, и смоук-тест среди них один. smoke-cluster создаёт таблицы,
гоняет распределённые DDL и проверяет репликацию; цель для служб будет
прогонять DAG-и от начала до конца и логиниться в Superset. Это интеграционные
проверки. Префикс достался им от общего происхождения из
scripts/stand-smoke.sh и теперь значит «проверка на поднятом стенде», а не
«смоук».

Третья, и она важнее: записать, зачем в репозитории каждая цель проверки.
Они выросли по одной, и по имени не понять ни что цель утверждает, ни куда
класть новую проверку. Правило «смоук — быстрый» тоже нигде не записано,
поэтому формально его ни разу не нарушили — и без записи скрипт дорастёт снова.

Замер

6 августа 2026 года, на поднятом стенде.

scripts/stand-smoke.sh — 48 секунд на 25 проверок:

Что Цена
Superset: вход, метаданные с подключением, проверка подключения — три проверки 21 с
Kafka с машины: временный топик создан, найден, удалён 11 с
Пробники Airflow: два DAG реально запускаются и ждутся 10 с
Остальные 19 проверок 6 с

scripts/clickhouse-smoke.sh — 7 секунд на 8 проверок.

Разметка

Ось — кого спрашивают. Быстрота выходит следствием, а не критерием:
ClickHouse отвечает сам и за миллисекунды, Airflow — через такт планировщика,
Superset — через сессию и обход метаданных.

Цель Что утверждает Цена
make smoke Стенд собран: службы живы, порты отвечают, подключения настроены друг на друга. Вширь, по касательной к каждой службе. Единственная, кто здесь правда смоук 6 с
make check-clickhouse (бывшая smoke-cluster) Всё, что спрашивают у ClickHouse и он отвечает сам: макросы, шарды, реплики, путь в keeper, ключ шардирования, очередь распределённых DDL 7 с
make check-services (новая) Службы работают: DAG запускается и доходит, топик создаётся и удаляется, Superset логинится и ходит в базу 42 с

Проверка того, что совпадение цены и назначения здесь побочное: smoke не
заметит перепутанных местами макросов shard — обе ноды здоровы и порты
отвечают. check-clickhouse не заметит потерянного подключения Superset — он
про ClickHouse и только.

Дом для будущих проверок ось задаёт сама. Договор со схемой из #43 — вопрос к
ClickHouse, он и так едет в scripts/clickhouse-smoke.sh. Счётчики против
мини-манифеста из #42 — тоже вопрос к ClickHouse, а не «дополнение к смоуку»,
как записано в теле того тикета: данные в ods.event считает сам сервер, и
отвечает он сразу.

Что войдёт

  • Новая цель make check-services. В неё переезжают шесть проверок:
    check_kafka_from_host (одна), оба вызова run_airflow_probe внутри
    check_airflow (две) и check_superset целиком (три: вход, метаданные с
    подключением, test-db). Сколько проверок останется в смоуке — считать
    после #56: состав там меняется.
    В смоуке остаются все три лёгкие проверки check_airflow: здоровье базы
    метаданных, планировщика и обработчика DAG (scripts/stand-smoke.sh:478);
    «учётные данные приняты, оба пробника видны через API» (:504); «подключение
    указывает на clickhouse-01, нода отвечает изнутри контейнера» (:521). Они
    про связность.

  • Переименование цели: smoke-clustercheck-clickhouse.
    Цель smoke-guards переименовывать не нужно — она удалена в #56 вместе со
    своим скриптом, и целей на стенде остаётся ровно три.
    Правка механическая: Makefile, README, документы. Имена файлов скриптов
    не трогаем:
    scripts/clickhouse-smoke.sh занят веткой #43, переименование файла устроит
    конфликт на ровном месте. Расхождение имени цели и имени скрипта живёт до
    следующего касания и отмечается в testing.md одной строкой.

  • Разделение скрипта. Форма на усмотрение исполнителя (два скрипта или
    один с режимом), но общие функции (pass, fail, compose,
    published_port, уборка) не дублируются копипастой. У формы «один скрипт с
    режимом» есть ловушка: общий пролог прогонит check_env_consistency и
    check_host_dependencies дважды и собьёт счёт проверок. У формы «два
    скрипта» check-services останется без проверки зависимостей машины —
    решить, что с этим делать, тоже придётся.

  • Сторожевой части здесь нет. Сторожа удалены в #56 целиком, делить и
    переписывать нечего.

  • docs/architecture/testing.md — новый файл по конвенции каталога, один
    на зону ответственности. В нём карта всех целей проверки: что каждая
    утверждает, нужен ли ей поднятый стенд, сколько стоит. Их станет шесть:
    lint, typecheck, test (генератор, стенд не нужен), config-test
    (конфигурация и статика, стенд не нужен), smoke, check-clickhouse,
    check-services.
    Оттуда же переезжает абзац, записанный в README по #56: проверка, которая не
    умеет краснеть, бесполезна. Мысль остаётся, кода за ней больше нет.
    Практическая мерка документа: по нему можно решить, куда класть новую
    проверку, не читая скрипты. Ответ даёт ось — кого спрашивают.
    Из AGENTS.md — одна строка-указатель в разделе «Код и данные».

  • Правило про быстрый смоук — там же, словами. Дословно:

    make smoke — быстрая проверка для регулярного прогона: её гоняют не
    задумываясь, и потому она обязана укладываться в секунды. Тяжёлые проверки
    в неё включать не следует: тяжёлая — та, из-за которой смоук перестаёт быть
    быстрым. Поодиночке это единицы и десятки секунд, вместе — минуты. Такие
    проверки живут в make check-services.

    На практике дорого обходится не работа, а ожидание службы: такт
    планировщика Airflow, сессия Superset. check-clickhouse создаёт таблицы,
    вставляет строки и гоняет распределённые DDL — и укладывается в семь
    секунд, потому что ClickHouse отвечает сразу.

    Первый абзац — правило, второй — наблюдение, по которому тяжёлую узнают
    заранее, не замеряя. Секунды в таблице целей — замеренная цена с датой
    замера, а не назначенный порог.

  • Автоматического порога по времени не заводить. Число в проверке
    становится законом, которого никто не выбирал: ADR 0004 разбирает ровно этот
    случай — оценка из спеки попала жёстким порогом в make smoke, и дальше
    решения сверялись уже с порогом, а не с исходным доводом. Спека генератора
    формулирует позицию прямо: «наблюдаемость без порогов»
    (docs/specs/2026-08-01-generator.md:354). Замер смоука при приёмке делается
    руками и пишется в PR.

  • Смоук печатает своё время в строке ИТОГ. Не порог и не проверка:
    спека генератора это уже обещает («make up и smoke печатают тайминги»), а
    обещание не выполнено. Одна строка.

  • README. Описания целей и раздел «Какую проверку когда запускать»
    переезжают в testing.md: факт живёт в одном месте. В README остаются
    быстрый старт, две строки про обычный рабочий цикл и ссылка на карту;
    лесенка по частоте в README не повторяется. Устаревшее уходит: «make smoke
    — минута-две», «отсюда и три прогона make smoke внутри», перечисление
    пробников и Superset как части смоука.
    Быстрый старт правится отдельно и осознанно: сейчас первый контакт — это
    make up && make smoke, и после деления такая пара уже не покажет, что
    Airflow запускает DAG, а Superset ходит в базу. Первому запуску нужны все три
    цели; экономия 42 секунд — про рабочую петлю, не про знакомство со стендом.

  • Лесенка по частоте — в testing.md, чтобы деление не превратилось в
    «гонять всегда всё»:

    Когда Что гонять
    Правка в работе config-test + smoke
    PR / задача плюс цели, которых правка касалась: DAG-и, Superset или Kafka — check-services; DDL, кластер или данные — check-clickhouse
    Приёмка этапа make up с нуля и все три цели на стенде
  • Планка приёмки этапа — строкой в спеку. Спека
    (docs/specs/2026-07-30-stand-v2-realism.md, подраздел «Этапы для
    /to-tickets») ставит планкой «make up работает и проходят smoke-проверки».
    После деления и переименования эту фразу надо назвать поимённо — smoke,
    check-clickhouse, check-services, — иначе планка тихо опустится при том
    же названии команды. Решение уровня спеки там и живёт; в testing.md
    операционная сторона.

Критерии приёмки

  • В make smoke не осталось ни одной проверки, которая ждёт службу: ни
    запуска DAG, ни входа в Superset, ни работы с Kafka с машины. Это видно по
    составу, а не по секундомеру.
  • Смоук на поднятом стенде идёт секунды и печатает своё время. Замер при
    приёмке — руками, число в теле PR рядом с нынешними 48 секундами.
  • Шесть тяжёлых проверок работают под make check-services и там зелёные.
  • Ни одна проверка не потеряна: сумма пройденных у make smoke и
    make check-services равна тому, сколько их было до деления. Точное число
    берётся после #56 — там состав смоука меняется — и называется в теле PR.
    Единственное допустимое дублирование — check_containers_survived: ею же
    заканчивается check-services, потому что стенд нагружает именно она
    (по ADR 0004 отказ по памяти во время пробников иначе не увидит никто).
  • Цель переименована всюду: Makefile, README.md, документы.
    make smoke-cluster больше не существует.
  • docs/architecture/testing.md описывает все цели проверки, включая
    те, что этот тикет не трогает: что утверждает, нужен ли стенд, сколько
    стоит. Читатель по нему решает, куда класть новую проверку.
  • Правило про быстрый смоук, наблюдение к нему и лесенка по частоте
    записаны там же; указатель из AGENTS.md стоит; README карту не дублирует.
  • Быстрый старт README после деления по-прежнему показывает работающий
    стенд, а не только собранный.
  • Планка приёмки этапа в спеке названа поимённо.
  • make config-test, make smoke, make check-clickhouse,
    make check-services зелёные.

Границы

  • Идёт после #56. Пока тот не слит, состав проверок ещё меняется.
  • Содержание проверок не менять: это перенос, разделение и переименование, а
    не переписывание. Проверка, которая после #56 ловит поломку, обязана ловить
    её и завтра. Резать здесь больше нечего — это работа #56.
  • scripts/clickhouse-smoke.sh не трогать: в него встраивается contract-тест
    из #43. Описать его в документе и переименовать вызывающую цель — да;
    править содержимое — нет.
  • Генератор и DDL не трогать.
  • Секунды смоука считаются на поднятом стенде: время make up в них не входит.

Подводные камни

  • Токен Airflow. Лёгкая часть check_airflow добывает токен
    (scripts/stand-smoke.sh:488), и на нём же держатся видимость пробников и
    сверка подключения. После переноса check-services логинится заново — и
    нового pass на этот логин заводить не надо, иначе счёт не сойдётся.
    В смоуке остаются две переменные семейства cleanup
    airflow_cleanup_port и airflow_cleanup_token; имена стоит поправить, раз
    уборки в смоуке больше нет.
  • Слой уборки едет целиком: cleanup_kafka_topic, cleanup_airflow_run,
    cleanup_airflow_pause и ловушки on_exit/on_signal обслуживают только
    переезжающие проверки. В смоуке ловушек не остаётся.

Сначала прочитать

  • scripts/stand-smoke.sh — 25 проверок и их устройство; имена функций
    названы выше.
  • scripts/clickhouse-smoke.sh — 8 проверок кластера; нужен, чтобы описать
    цель в документе.
  • Makefile — все цели проверки разом.
  • #56 — что срезано и почему; этот тикет продолжает ту же линию.
  • README.md — быстрый старт, описания целей и лесенка «какую проверку когда
    запускать»: это и есть та карта, что переезжает.
  • docs/adr/0004-resource-limits.md — почему числа в проверки не заводят и
    зачем нужна check_containers_survived.
  • docs/specs/2026-07-30-stand-v2-realism.md, подраздел «Этапы для
    /to-tickets» — планка приёмки этапа.
  • AGENTS.md — конвенции языка и структуры документов; docs/architecture/
    и его правило именования.

Проверка

make config-test
make up
make smoke            # замерить время и назвать его в теле PR
make check-clickhouse
make check-services
Идёт после #56: там режется код, который иначе пришлось бы делить и переименовывать здесь. ## Цель Три вещи одним движением. Первая: вернуть `make smoke` в разряд быстрых проверок — той, что гоняешь не задумываясь. Сейчас она идёт 48 секунд, и 42 из них съедают шесть проверок, которые дёргают Airflow и Superset. Вторая: **дать целям честные имена.** Цели на стенде зовутся `smoke` и `smoke-cluster`, и смоук-тест среди них один. `smoke-cluster` создаёт таблицы, гоняет распределённые DDL и проверяет репликацию; цель для служб будет прогонять DAG-и от начала до конца и логиниться в Superset. Это интеграционные проверки. Префикс достался им от общего происхождения из `scripts/stand-smoke.sh` и теперь значит «проверка на поднятом стенде», а не «смоук». Третья, и она важнее: **записать, зачем в репозитории каждая цель проверки.** Они выросли по одной, и по имени не понять ни что цель утверждает, ни куда класть новую проверку. Правило «смоук — быстрый» тоже нигде не записано, поэтому формально его ни разу не нарушили — и без записи скрипт дорастёт снова. ## Замер 6 августа 2026 года, на поднятом стенде. `scripts/stand-smoke.sh` — 48 секунд на 25 проверок: | Что | Цена | |---|---| | Superset: вход, метаданные с подключением, проверка подключения — три проверки | 21 с | | Kafka с машины: временный топик создан, найден, удалён | 11 с | | Пробники Airflow: два DAG реально запускаются и ждутся | 10 с | | Остальные 19 проверок | 6 с | `scripts/clickhouse-smoke.sh` — 7 секунд на 8 проверок. ## Разметка Ось — **кого спрашивают**. Быстрота выходит следствием, а не критерием: ClickHouse отвечает сам и за миллисекунды, Airflow — через такт планировщика, Superset — через сессию и обход метаданных. | Цель | Что утверждает | Цена | |---|---|---| | `make smoke` | Стенд **собран**: службы живы, порты отвечают, подключения настроены друг на друга. Вширь, по касательной к каждой службе. Единственная, кто здесь правда смоук | 6 с | | `make check-clickhouse` (бывшая `smoke-cluster`) | Всё, что спрашивают **у ClickHouse** и он отвечает сам: макросы, шарды, реплики, путь в keeper, ключ шардирования, очередь распределённых DDL | 7 с | | `make check-services` (новая) | **Службы работают**: DAG запускается и доходит, топик создаётся и удаляется, Superset логинится и ходит в базу | 42 с | Проверка того, что совпадение цены и назначения здесь побочное: `smoke` не заметит перепутанных местами макросов `shard` — обе ноды здоровы и порты отвечают. `check-clickhouse` не заметит потерянного подключения Superset — он про ClickHouse и только. Дом для будущих проверок ось задаёт сама. Договор со схемой из #43 — вопрос к ClickHouse, он и так едет в `scripts/clickhouse-smoke.sh`. Счётчики против мини-манифеста из #42 — тоже вопрос к ClickHouse, а не «дополнение к смоуку», как записано в теле того тикета: данные в `ods.event` считает сам сервер, и отвечает он сразу. ## Что войдёт - **Новая цель `make check-services`.** В неё переезжают шесть проверок: `check_kafka_from_host` (одна), оба вызова `run_airflow_probe` внутри `check_airflow` (две) и `check_superset` целиком (три: вход, метаданные с подключением, `test-db`). Сколько проверок останется в смоуке — считать после #56: состав там меняется. В смоуке остаются **все три лёгкие проверки** `check_airflow`: здоровье базы метаданных, планировщика и обработчика DAG (`scripts/stand-smoke.sh:478`); «учётные данные приняты, оба пробника видны через API» (:504); «подключение указывает на `clickhouse-01`, нода отвечает изнутри контейнера» (:521). Они про связность. - **Переименование цели:** `smoke-cluster` → `check-clickhouse`. Цель `smoke-guards` переименовывать не нужно — она удалена в #56 вместе со своим скриптом, и целей на стенде остаётся ровно три. Правка механическая: `Makefile`, `README`, документы. Имена файлов скриптов **не трогаем**: `scripts/clickhouse-smoke.sh` занят веткой #43, переименование файла устроит конфликт на ровном месте. Расхождение имени цели и имени скрипта живёт до следующего касания и отмечается в `testing.md` одной строкой. - **Разделение скрипта.** Форма на усмотрение исполнителя (два скрипта или один с режимом), но общие функции (`pass`, `fail`, `compose`, `published_port`, уборка) не дублируются копипастой. У формы «один скрипт с режимом» есть ловушка: общий пролог прогонит `check_env_consistency` и `check_host_dependencies` дважды и собьёт счёт проверок. У формы «два скрипта» `check-services` останется без проверки зависимостей машины — решить, что с этим делать, тоже придётся. - **Сторожевой части здесь нет.** Сторожа удалены в #56 целиком, делить и переписывать нечего. - **`docs/architecture/testing.md`** — новый файл по конвенции каталога, один на зону ответственности. В нём карта **всех** целей проверки: что каждая утверждает, нужен ли ей поднятый стенд, сколько стоит. Их станет шесть: `lint`, `typecheck`, `test` (генератор, стенд не нужен), `config-test` (конфигурация и статика, стенд не нужен), `smoke`, `check-clickhouse`, `check-services`. Оттуда же переезжает абзац, записанный в README по #56: проверка, которая не умеет краснеть, бесполезна. Мысль остаётся, кода за ней больше нет. Практическая мерка документа: по нему можно решить, куда класть новую проверку, не читая скрипты. Ответ даёт ось — кого спрашивают. Из `AGENTS.md` — одна строка-указатель в разделе «Код и данные». - **Правило про быстрый смоук — там же, словами.** Дословно: > `make smoke` — быстрая проверка для регулярного прогона: её гоняют не > задумываясь, и потому она обязана укладываться в секунды. Тяжёлые проверки > в неё включать не следует: тяжёлая — та, из-за которой смоук перестаёт быть > быстрым. Поодиночке это единицы и десятки секунд, вместе — минуты. Такие > проверки живут в `make check-services`. > > На практике дорого обходится не работа, а ожидание службы: такт > планировщика Airflow, сессия Superset. `check-clickhouse` создаёт таблицы, > вставляет строки и гоняет распределённые DDL — и укладывается в семь > секунд, потому что ClickHouse отвечает сразу. Первый абзац — правило, второй — наблюдение, по которому тяжёлую узнают заранее, не замеряя. Секунды в таблице целей — замеренная цена с датой замера, а не назначенный порог. - **Автоматического порога по времени не заводить.** Число в проверке становится законом, которого никто не выбирал: ADR 0004 разбирает ровно этот случай — оценка из спеки попала жёстким порогом в `make smoke`, и дальше решения сверялись уже с порогом, а не с исходным доводом. Спека генератора формулирует позицию прямо: «наблюдаемость без порогов» (`docs/specs/2026-08-01-generator.md:354`). Замер смоука при приёмке делается руками и пишется в PR. - **Смоук печатает своё время** в строке `ИТОГ`. Не порог и не проверка: спека генератора это уже обещает («`make up` и smoke печатают тайминги»), а обещание не выполнено. Одна строка. - **README.** Описания целей и раздел «Какую проверку когда запускать» переезжают в `testing.md`: факт живёт в одном месте. В README остаются быстрый старт, две строки про обычный рабочий цикл и ссылка на карту; лесенка по частоте в README не повторяется. Устаревшее уходит: «`make smoke` — минута-две», «отсюда и три прогона `make smoke` внутри», перечисление пробников и Superset как части смоука. **Быстрый старт правится отдельно и осознанно:** сейчас первый контакт — это `make up && make smoke`, и после деления такая пара уже не покажет, что Airflow запускает DAG, а Superset ходит в базу. Первому запуску нужны все три цели; экономия 42 секунд — про рабочую петлю, не про знакомство со стендом. - **Лесенка по частоте — в `testing.md`,** чтобы деление не превратилось в «гонять всегда всё»: | Когда | Что гонять | |---|---| | Правка в работе | `config-test` + `smoke` | | PR / задача | плюс цели, которых правка касалась: DAG-и, Superset или Kafka — `check-services`; DDL, кластер или данные — `check-clickhouse` | | Приёмка этапа | `make up` с нуля и все три цели на стенде | - **Планка приёмки этапа — строкой в спеку.** Спека (`docs/specs/2026-07-30-stand-v2-realism.md`, подраздел «Этапы для /to-tickets») ставит планкой «`make up` работает и проходят smoke-проверки». После деления и переименования эту фразу надо назвать поимённо — `smoke`, `check-clickhouse`, `check-services`, — иначе планка тихо опустится при том же названии команды. Решение уровня спеки там и живёт; в `testing.md` — операционная сторона. ## Критерии приёмки - [ ] В `make smoke` не осталось ни одной проверки, которая ждёт службу: ни запуска DAG, ни входа в Superset, ни работы с Kafka с машины. Это видно по составу, а не по секундомеру. - [ ] Смоук на поднятом стенде идёт секунды и печатает своё время. Замер при приёмке — руками, число в теле PR рядом с нынешними 48 секундами. - [ ] Шесть тяжёлых проверок работают под `make check-services` и там зелёные. - [ ] Ни одна проверка не потеряна: сумма пройденных у `make smoke` и `make check-services` равна тому, сколько их было до деления. Точное число берётся после #56 — там состав смоука меняется — и называется в теле PR. Единственное допустимое дублирование — `check_containers_survived`: ею же заканчивается `check-services`, потому что стенд нагружает именно она (по ADR 0004 отказ по памяти во время пробников иначе не увидит никто). - [ ] Цель переименована всюду: `Makefile`, `README.md`, документы. `make smoke-cluster` больше не существует. - [ ] `docs/architecture/testing.md` описывает **все** цели проверки, включая те, что этот тикет не трогает: что утверждает, нужен ли стенд, сколько стоит. Читатель по нему решает, куда класть новую проверку. - [ ] Правило про быстрый смоук, наблюдение к нему и лесенка по частоте записаны там же; указатель из `AGENTS.md` стоит; README карту не дублирует. - [ ] Быстрый старт README после деления по-прежнему показывает работающий стенд, а не только собранный. - [ ] Планка приёмки этапа в спеке названа поимённо. - [ ] `make config-test`, `make smoke`, `make check-clickhouse`, `make check-services` зелёные. ## Границы - Идёт после #56. Пока тот не слит, состав проверок ещё меняется. - Содержание проверок не менять: это перенос, разделение и переименование, а не переписывание. Проверка, которая после #56 ловит поломку, обязана ловить её и завтра. Резать здесь больше нечего — это работа #56. - `scripts/clickhouse-smoke.sh` не трогать: в него встраивается contract-тест из #43. Описать его в документе и переименовать вызывающую цель — да; править содержимое — нет. - Генератор и DDL не трогать. - Секунды смоука считаются на поднятом стенде: время `make up` в них не входит. ## Подводные камни - **Токен Airflow.** Лёгкая часть `check_airflow` добывает токен (`scripts/stand-smoke.sh:488`), и на нём же держатся видимость пробников и сверка подключения. После переноса `check-services` логинится заново — и нового `pass` на этот логин заводить не надо, иначе счёт не сойдётся. В смоуке остаются **две** переменные семейства `cleanup` — `airflow_cleanup_port` и `airflow_cleanup_token`; имена стоит поправить, раз уборки в смоуке больше нет. - **Слой уборки едет целиком:** `cleanup_kafka_topic`, `cleanup_airflow_run`, `cleanup_airflow_pause` и ловушки `on_exit`/`on_signal` обслуживают только переезжающие проверки. В смоуке ловушек не остаётся. ## Сначала прочитать - `scripts/stand-smoke.sh` — 25 проверок и их устройство; имена функций названы выше. - `scripts/clickhouse-smoke.sh` — 8 проверок кластера; нужен, чтобы описать цель в документе. - `Makefile` — все цели проверки разом. - #56 — что срезано и почему; этот тикет продолжает ту же линию. - `README.md` — быстрый старт, описания целей и лесенка «какую проверку когда запускать»: это и есть та карта, что переезжает. - `docs/adr/0004-resource-limits.md` — почему числа в проверки не заводят и зачем нужна `check_containers_survived`. - `docs/specs/2026-07-30-stand-v2-realism.md`, подраздел «Этапы для /to-tickets» — планка приёмки этапа. - `AGENTS.md` — конвенции языка и структуры документов; `docs/architecture/` и его правило именования. ## Проверка ``` make config-test make up make smoke # замерить время и назвать его в теле PR make check-clickhouse make check-services ```
ddmitry added the ready-for-agent label 2026-08-06 09:04:51 +03:00
ddmitry changed title from Смоук снова быстрый: разрез на чтение состояния и приёмку стенда to Проверки по назначению: карта целей и быстрый смоук 2026-08-06 09:13:48 +03:00
ddmitry changed title from Проверки по назначению: карта целей и быстрый смоук to Проверки по назначению: честные имена целей, карта и быстрый смоук 2026-08-06 11:35:53 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: ddmitry/clickstream-data-platform#54