Честность

Как проверить каждое число на этом сайте

Сайт про математическую честность не может врать про собственные бенчмарки. Поэтому здесь действует одно правило: каждое число либо реально вычислено — и тогда рядом сказано, чем и когда, — либо явно помечено как иллюстрация. Третьего варианта на сайте нет.

Правило провенанса

  • Все измеренные числа приходят из двух файлов — data/benchmarks.json и data/lean-audit.json, — которые создаются скриптами репозитория и коммитятся вместе с метаданными прогона.
  • Страницы читают эти файлы через один модуль (src/lib/data.ts). Это касается и вывода команд, и значений в комментариях к примерам кода: генератор запускает CLI и сами вызовы API и кладёт их результат в JSON, откуда страницы его и печатают. У любой таблицы с измерениями стоит плашка Измерено 2026-09-08.
  • Иллюстративные значения — то есть числа, не полученные прогоном, — помечаются плашкой «Иллюстрация, не измерение» и в сравнениях не участвуют. На сегодня таких значений на сайте нет ни одного: всё, что выглядит как число, вывод команды или результат в комментарии к примеру, снято прогоном и лежит в JSON.
  • Утверждений вида «до N раз быстрее» на сайте нет вовсе. Отношения времён приводятся только там, где обе стороны отношения измерены в одном прогоне — включая случаи, где Balansis проигрывает.

Провенанс текущего прогона

Бенчмарки. Измерено 2026-09-08
Прогон завершён2026-09-08T18:58:44.587394+00:00
Скриптscripts/generate-benchmarks.py, sha256 01439b8fd653e7c3a63b09fd
Библиотекаbalansis 1.1.0PyPI wheel (site-packages)
Колесоsha256 2445ae239cb21e48e5b267e5364e161cc6b89a0fbaef90160bf88bd3eae0b828совпадает с digest, объявленным JSON-API PyPI
РантаймPython 3.12.3, numpy 1.26.4
ХостIntel Xeon (серверный), 8 vCPU, Linux x86_64, glibc 2.39
класс машины, а не её точная модель и версия ядра: для интерпретации таймингов достаточно класса, а публиковать инвентарь живого хоста незачем
Исходники для справкиv1.1.0-1-g91c406d (91c406d72421…), дерево чистое
Доказательства Lean4. Проверено 2026-09-08
Прогон завершён2026-09-08T19:00:15.309614+00:00
Скриптscripts/generate-lean-audit.py
Toolchainleanprover/lean4:v4.28.0 · Lake version 5.0.0-src+7e01a1b (Lean version 4.28.0)
Mathlibv4.28.0 · 8f9d9cff6bd728b17a24e163c9402775d9e6a365
Результат73 теорем, отчёт об аксиомах у 73, все шаги с кодом 0

Повторить у себя

Ничего, кроме Python и доступа к PyPI, для этого не нужно: оба генератора и оба JSON сайт отдаёт файлами, а их sha256 лежат в /repro/manifest.json.

# 1. Бенчмарки — нужен только Python и сеть до PyPI
curl -O https://balansis.xteam.pro/repro/generate-benchmarks.py
curl -O https://balansis.xteam.pro/repro/benchmarks.json
python -m venv .venv && . .venv/bin/activate
pip install "balansis==1.1.0" numpy
python generate-benchmarks.py --out mine.json

# 2. Доказательства — нужен Lean4 (elan) и кеш Mathlib
curl -O https://balansis.xteam.pro/repro/generate-lean-audit.py
git clone https://github.com/StudyLabPro/Balansis
BALANSIS_REPO=./Balansis python generate-lean-audit.py --out mine-lean.json

# 3. Сравнить с опубликованным: точность обязана совпасть, тайминги — нет
python - <<'EOF'
import json
mine, theirs = json.load(open("mine.json")), json.load(open("benchmarks.json"))
for a, b in zip(mine["scenarios"], theirs["scenarios"]):
    for x, y in zip(a.get("results") or [], b.get("results") or []):
        if isinstance(x, dict) and "abs_error" in x:
            print(a["id"], x["method"], x["value"] == y["value"], x["abs_error"] == y["abs_error"])
EOF

Расхождения ожидаемы в двух местах: тайминги зависят от машины и загрузки, а результаты BLAS-зависимых операций (numpy.dot, numpy.linalg.svd) могут отличаться в последних битах на другой сборке numpy. Значения, полученные точным суммированием и EFT-примитивами, отличаться не должны — если отличаются, это ошибка, и о ней стоит сообщить в репозиторий.

Где документация Balansis расходится с прогоном

Это не претензия к библиотеке, а обязательство сайта: если наш прогон не подтверждает утверждение из README, мы пишем об этом здесь, а не тихо повторяем удобную формулировку.

Проверено на источниках 2026-09-08. Измерено 2026-09-08
Утверждение источникаЧто показал прогонКак это отражено на сайте
README, раздел Real-World Value First: sum([1e16, 1.0, -1e16]) # 0.0На CPython 3.12.3 встроенный sum() применяет компенсацию Ноймайера и возвращает 1. Ноль (0) даёт наивный цикл, а не sum().В сценарии агрегации сравниваются оба варианта отдельно; наивный цикл назван наивным циклом
README, Catastrophic Cancellation: Balansis «сохраняет информативный остаток»compensated_add(1e16, −1e16) возвращает 2 при точном ответе 0.0. Это величина в один ULP — сигнал о риске потери точности, не восстановленное значениеОтдельный пример с прямой формулировкой «сигнал, а не значение»
README, Financial Cancellation: встречные проводки «сокращаются структурно в ABSOLUTE»Верно только когда суммы точно представимы в двоичном float64 (как 250.00 в примере README). На 12345.67 структурный ноль исчезает: Ledger.post_entry приводит Decimal к float на входеПример прогнан в трёх масштабах; вывод — для денег берите Decimal
Бейдж README: доказаны A1–A5, E1–E4, S1–S3Прогон нашёл 73 доказанных теорем: сверх бейджа — вся семантика ExtendedRatio и аналитический слой. Это недоговаривание, а не преувеличениеПоказаны все 73 с аксиоматической базой каждой
Название модуля linalg.svd как «ACT-compensated SVD»Бэкенд numpy_gesdd вызывает numpy.linalg.svd; компенсировано в нём телеметрия и политика, а не разложение. Бэкенд act_jacobi в нашем прогоне медленнее и не точнееСказано прямо в примере и в таблице проигрышей
ROADMAP.md: «Current Version 0.6.1», «PyPI publication: Not published»; benchmarks/baselines.json версии 0.5.0Актуальная версия — 1.1.0, пакет на PyPI опубликован 2026-08-31. Эти файлы устарелиСайт на них не опирается ни одним числом
LICENSING.md: файл LICENSE сделан verbatim ради автоопределения лицензииGitHub API всё равно отдаёт spdx_id: NOASSERTION — автоопределение не сработалоЛицензия названа явно (AGPL-3.0-only плюс коммерческая) со ссылкой на LICENSING.md

Чего на сайте нет

Живого исполнения кода в браузере. Это было бы честнее всего — читатель сам запускает Balansis и видит числа. Технически путь известен (Pyodide с самохостингом дистрибутива), но он тянет за собой ≈11 МБ загрузки и отдельный контракт честности для рантайма, который не тестировался апстримом. Пока этого нет, числа приходят из зафиксированного прогона — с полным провенансом, но не «вживую».

Английской версии. Сайт пока только на русском, хотя аудитория библиотеки — международная.

Ничего из закрытых частей экосистемы. На сайт вынесено только то, что уже опубликовано: код на GitHub, пакет на PyPI, формальный слой в том же репозитории. Ни внутренних документов, ни данных пользователей, ни непубличных проектов здесь нет.