docs(testing): интеграционная проверка не живёт постоянной целью

- Зачем:
  - проверка, которая кормит стенд данными, оставляет их в мире менти
    навсегда: у ODS срока хранения нет, и события, которых мир не рождал,
    неотличимы в лабах от настоящих. Решение принято при разборе постановок
    #41 и #43, чтобы оно решалось по карте, а не заново в каждом тикете.
- Что:
  - добавлен раздел «Интеграционная проверка постоянной целью не становится»:
    такой прогон делается один раз при исполнении, след — запись в теле PR.
  - названо требование прибираться за собой и дешёвый способ это сделать:
    модельный день за границей оси мира и снос его партиции.
  - названо, что стережёт цепочку постоянно вместо неё — проверки на
    настоящих данных, которые стенд произвёл сам.
- Проверка:
  - make config-test

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-07 09:22:56 +03:00
co-authored by Claude Opus 5
parent 896c846cbc
commit b8816466d9
+25
View File
@@ -96,6 +96,31 @@ ClickHouse отвечает сразу.
посмотрите, покраснеет ли прогон и назовёт ли виновника. Не покраснел —
проверка не работает, и чинить надо её, а не стенд.
## Интеграционная проверка постоянной целью не становится
Проверка, которая не спрашивает стенд, а **кормит** его — шлёт сообщения,
вставляет строки, портит данные нарочно, — постоянной целью `make` не живёт.
Такую проверку гоняют один раз при исполнении, убеждаются, что механизм
работает, и оставляют след записью в теле PR. Регулярная жизнь стенда — это
жизнь с менти, а интеграционный прогон в неё не входит; самое большее, он
становится темой урока.
Довод не про цену прогона, а про данные. Вложенное остаётся: у сырья срок
жизни трое суток, а ODS хранит всё, и события, которых мир не рождал, лягут в
лабы менти неотличимо от настоящих — считая конверсию, он молча посчитает и
их. Хуже явного мусора: явный видно.
Отсюда правило для того, что всё-таки вкладывает: **прибираться за собой.**
Дешевле всего это выходит партицией — опыт играет модельный день за границей
оси мира, его строки ложатся в собственную партицию `EventDate`, и она
сносится по окончании. Заодно менти видит партицию как единицу работы — тот
же механизм, на котором стоит переобработка дня X.
Что тогда стережёт цепочку постоянно — проверки на **настоящих** данных, тех,
что стенд произвёл сам: счётчики против манифеста зернового мира ловят
сломанный разбор (события уехали в брак — счёт разошёлся), ничего при этом не
вкладывая.
## Устройство скриптов
| Цель | Скрипт |