Проверяемый пакет исследования «Иерархия городов и закон Ципфа, 1897–2026». Один источник (222 города, переписи 1897–2019 + оценки), весь расчёт — стандартная библиотека Python, воспроизведение ~10 секунд.
Первый релиз: 12 срезов 1897–2026, наклоны Габэ–Ибрагимова по топ-20/30/50, примация, 8 контрольных метрик с допуском ±0,001.
by-maps-zipf-v1.0.0/
├── README.md вопрос, вывод, как воспроизвести
├── manifest.json машиночитаемое описание (файлы, sha256, допуски)
├── AGENT.md задачи для LLM-агента и формат отчёта
├── LIMITATIONS.md 7 известных ограничений
├── PROVENANCE.md цепочка источник → преобразование → результат
├── CITATION.cff · LICENSE.md
├── sources/registry.csv реестр источников (URL, лицензия, дата, sha256)
├── sources/raw/ps_cities.html завендоренный сырой источник
├── code/run.sh единственная точка входа
├── code/build.py весь расчёт (стандартная библиотека)
├── code/fetch.py · verify.py · requirements.lock
├── params/assumptions.yaml 6 допущений с обоснованиями
├── data/final/ ранжировки, наклоны, примация, контрольные метрики
└── checks/ инварианты, ожидаемые результаты, контрольные суммыunzip by-maps-zipf-v1.0.0.zip && cd by-maps-zipf-v1.0.0
bash code/run.sh
# == 1/3 Расчёт от sources/raw до data/final ==
# == 2/3 Инварианты данных ==
# == 3/3 Сверка с заявленными результатами ==
# Все 8 контрольных метрик воспроизведены в допусках.Валидация в CI: каждый пуш пересобирает пакет и сверяет с опубликованным байт-в-байт; полный прогон run.sh — часть пайплайна.