# Инструкция для ИИ-агента: аудит пакета INF-05 «Миграция»

Ты работаешь с проверяемым пакетом исследования. Всё, что заявлено на
лендинге, обязано воспроизводиться отсюда одной командой.

## Быстрый старт

```bash
bash code/run.sh   # Python >= 3.10, стандартная библиотека, ~5 с
```

Ожидаемый финал: `Все 17 контрольных метрик воспроизведены в допусках.`

## Что проверять

1. **Сырьё**: sha256 файлов `data/raw/migration/*` против
   `sources/registry.csv`. При доступе в сеть — повтори запросы к
   дата-порталу (точные тела в `belstat_request_log.json`; браузерный
   User-Agent обязателен, лимит 10 лет на запрос) и к Eurostat
   (`eurostat_request_urls.txt`).
2. **Аддитивность**: сумма сальдо районов области = сальдо области
   (2019, 2024 — инварианты проверяют точно).
3. **Дыра 2020–2023**: в сырых ответах Белстата этих лет нет — это
   свойство источника, а не ошибка парсинга (проверь сырой JSON).
4. **Матрица F602 накопленная**: 1 459 418 переходов — НЕ годовой
   поток; не сравнивай с годовыми сальдо напрямую.
5. **Точечные оценки**: каждая цифра из ESTIMATES/NON_EU в
   etl/migration.py обязана находиться в соответствующем снапшоте
   (grep по файлу из поля snap).
6. **Интервал WP-F3 импортируется** из etl/mirror.py, не пересчитан:
   178 285 / 269 955 / 415 883 — сверь с пакетом forecast v1.2.0.

## Ловушки

- `etl/census_age.py` и `etl/wages.py` включены ради словарей имён
  (RAION_RU2ID, CITY_RU2ID, OBL_RU2ID); их parse()/build() ссылаются
  на данные, которых в пакете нет, — не вызывай, это не дефект.
- Имена районов в сырье — прилагательные («Барановичский»), города
  областного подчинения — «г. Барановичи»: два разных словаря.
- В строках дата-портала 7 колонок измерений перед годами; на районном
  уровне есть только поток «Всего по всем потокам миграции».
- Официальное международное сальдо положительно — это не противоречие
  зеркалу, а разница определений (регистрация против фактического
  проживания); контраст и есть результат.
- racyja.com в реестре — снапшот БЕЗ цифры 137,7 тыс. (она в belsat);
  реестр это оговаривает — не «чини».
