6.2 KB · updated 2026-07-31 · md

v0.28.2.ru.md

docs/i18n/release-notes/v0.28.2.ru.md

Tesserae v0.28.2 — verify_claim из шелла и документация, которая об этом лгала

<!-- translations:start -->

English · 한국어 · 中文 · 日本語 · Español · Français · Deutsch

<!-- translations:end -->

Released 2026-07-27 · PyPI · GitHub release · pip install --upgrade tesserae==0.28.2

Оба пункта пришли от команды, которая строила своё решение поверх verify_claim из другой кодовой базы. Оба — из тех, что находишь, только став потребителем.

tesserae verify-claim

verify_claim был инструментом MCP и больше ничем. Это делало его недоступным для всех, кто общается с Tesserae через подпроцесс, а не импортом — а импорт обходится недёшево: он тянет всё дерево в ваше виртуальное окружение и жёстко связывает версию вашего проекта с нашей.

Тот же пробел, который graph-map закрыл в v0.25, и то же решение.

tesserae verify-claim -s 'Flash Attention' -p uses -o 'Tiling'
# -> {verdict, reason, triple, citation, provenance, advisory}

Конечные точки разрешаются только по точному id узла, уникальному имени в casefold-форме или уникальному алиасу. Ввода на естественном языке нет по замыслу — всё остальное даёт NOT_RESOLVABLE, а не догадку.

Код возврата — 0 для любого вердикта, который является ответом, включая ABSENT («этот граф такого не утверждает» — настоящий ответ, а не ошибка), и 2 для NOT_RESOLVABLE, чтобы скрипт мог отличить не удалось проверить от проверено, и вот результат. Ветвитесь по verdict вместе с provenance.class; никогда — по reason.

Перепроверка по источнику (re-grounding) меняет вердикты. Документация утверждала, что не может.

Документация параметра reground обещала, что он «advisory only» и «никогда не может изменить вердикт». Реализация расходилась с этим с момента написания: document_backed требует regrounded is not False.

Права была реализация. SUPPORTED утверждает, что доказательство утверждения — дословный фрагмент реального документа, а на настоящем графе из 15 284 рёбер 198 из 2 088 вердиктов SUPPORTED цитировали текст, которого в файле заведомо нет — фрагменты, сшитые экстрактором через заголовки. Один только класс этого не видит, потому что класс вычисляется из метаданных, а диск читает только перепроверка.

Поэтому исправили документацию, а не сам барьер:

  • regrounded: false — мы прочитали файл, и фрагмент отсутствовал. Опровергнутое доказательство не может быть SUPPORTED; вердикт понижается до PRESENT_UNEVIDENCED.
  • regrounded: null — не проверялось (--no-reground или нет читаемого source_path). Ничего не понижает. Опровергайте, а не предполагайте.

Вердикт остаётся чистой функцией байтов графа при фиксированном reground. Перепроверка — единственная ось, по которой один и тот же граф может ответить иначе, потому что это единственная ось, читающая файл, которым граф не владеет. И она может сдвинуть вердикт только вниз.

Если вы потребляете verify_claim, это меняет то, что вам следует читать. Опираться на verdict было верно всегда. А считать regrounded игнорируемым украшением — нет: это вход для verdict, а не декорация поверх него.

Кроме того

Команда CLI теперь загружает граф тем же путём, что и инструмент MCP, поэтому оверлей обнаруженных связей применяется в обоих случаях. verify_claim локален по паре, так что обнаруженное ребро ровно между двумя проверяемыми конечными точками иначе попадало бы в набор рёбер на одной поверхности и не попадало на другой — один и тот же триплет отвечал бы по-разному в зависимости от способа вызова.

tesserae --help выводил verify-claim дважды.

Обновление с v0.28.1

Drop-in. Изменений API нет; контракт из семи вердиктов и ключи полезной нагрузки verify_claim не менялись с v0.27.0.