# Внутренняя и внешняя миграция: проверяемый пакет (INF-05, v1.0.0)

Пакет воспроизводит все числа исследования
«[Миграция](https://by-population-maps.vercel.app/research/migration)»:
«лестницу» расселения 1959–2026, сальдо миграции 128 территорий
(1994–2019 + 2024–2025), межобластную матрицу переписи-2019 и внешнюю
волну 2020+ в интервальных оценках зеркальной статистики.

## Воспроизведение одной командой

```bash
bash code/run.sh
```

Требования: Python ≥ 3.10, только стандартная библиотека (~5 с).
Конвейер стартует с сырых ответов дата-портала Белстата и Eurostat
(завендорены с sha256): парсинг → ярусы/матрица/ставки → интервал
WP-F3 → сверка с `checks/expected_results.json`.

## Главные результаты

- **Контраст официального и зеркального рядов**: официальное
  международное сальдо РБ положительно все 2000–2010-е годы (+13,9 тыс.
  в 2019; отрицательным оно было лишь в 1994–1995 гг.),
  а действующие ВНЖ граждан РБ в одном только ЕС выросли со 133 889
  (2019) до **386 834** (2024); интервал незарегистрированного оттока
  2020–2026 — **178–416 тыс.** (центр 270 тыс., WP-F3). Данные о
  миграции за 2020–2023 Белстат не публиковал.
- **Лестница работает полвека**: село 5,52 → 1,91 млн (1959–2026),
  райцентры ×2,6, Минск ×3,9; в накопленной матрице переписи-2019
  Минск — единственный нетто-магнит (+528,9 тыс.), все шесть регионов
  в минусе; крупнейший поток — Минская область → Минск (310 тыс.).
- **География зарегистрированной миграции**: приток — Минский район
  (+35 ‰/год), Островецкий (АЭС), пригороды; отток — юго-восток
  (Хотимский, Краснопольский) и периферия (Вороновский −18 ‰).
- **Каждая внешняя цифра — интервалом и с источником**: точечные
  оценки 100–600 тыс. (BEROC, ЦНИ, официальные лица) показаны как
  есть, со снапшотами страниц в пакете.

## Структура пакета

- `data/raw/migration/` — 53 файла: сырые ответы дата-портала
  (индикаторы 10101300001/2/3, тела запросов в
  `belstat_request_log.json`), Eurostat по 31 geo, снапшоты всех
  публикаций с точечными оценками; реестр — `sources/registry.csv`;
- `data/raw/mirror/` — входы интервала WP-F3;
- `etl/migration.py` — весь расчёт; `etl/mirror.py` — интервал (импорт);
- `web/public/data/migration.json` — итог лендинга;
- `params/assumptions.yaml` — допущения; `checks/` — 17 метрик.

Методика, ограничения, инструкции для агентов — LIMITATIONS.md,
PROVENANCE.md, AGENT.md.
