Индикаторы возрастной структуры 2009/2019 для 118 районов и контрфактная когортная передвижка «при нулевой миграции». Расчёт детерминирован — воспроизведение даёт байт-в-байт те же числа.
Исправлен баг бисекции ОПЖ в общем модуле lifetable (найден агентным аудитом вероятностного слоя прогноза): при раннем выходе цикла возвращалось непроверенное k. На контрфакт влияние минимально (изменился один незаданный в контроле показатель — naturalCagr Кормянского района −0,24 → −0,25); все заявленные метрики без изменений.
Версионно-независимая метка контрфакта; синхронизация с движком v2026.3. Метрики без изменений.
Синхронизация с прогнозом v2026.2 (этап 5): обновлён вендоренный движок; все контрольные метрики без изменений.
Первый релиз. Пирамиды сходятся с официальными итогами переписей (допуск — поэлементное округление, ≤17 чел. на регион); контрфакт — движок CCMPP пакета forecast (бэктест −0,41%). 10 контрольных метрик.
by-maps-aging-v1.0.0/
├── README.md · AGENT.md · LIMITATIONS.md · PROVENANCE.md · CHANGELOG.md
├── manifest.json машиночитаемое описание (sha256, допуски)
├── sources/registry.csv реестр первоисточников (WP-F1)
├── data/curated/age2009.csv, age2019.csv переписные структуры, до человека
├── data/curated/mortality.csv, fertility_oblast.csv входы передвижки
├── etl/aging.py индикаторы + контрфакт
├── etl/forecast/ движок CCMPP (идентичен пакету forecast)
├── params/assumptions.yaml допущения с обоснованиями
├── code/run.sh единственная точка входа (~10 секунд)
├── web/public/data/aging.json · data/curated/aging_indicators.csv итоги
└── checks/ инварианты, ожидаемые результаты, chksumsunzip by-maps-aging-v1.0.0.zip && cd by-maps-aging-v1.0.0
bash code/run.sh # только стандартная библиотека Python >= 3.10
# == 1/3 Расчёт индикаторов и контрфактной передвижки ==
# == 2/3 Инварианты ==
# == 3/3 Сверка с заявленными результатами ==
# Все 10 контрольных метрик воспроизведены в допусках.Живая версия — /research/aging; методика — кнопка «О данных и методике» на странице исследования.