RAGRAF — локальная графово-векторная база знаний о коде для LLM-агентов: она отвечает на вопросы «где это лежит, кто вызывает, что сломается при правке» ссылками вида «файл:строка», работает на Python 3.13+ и хранит граф, полнотекстовый индекс и векторы в одном файле SQLite. Релиз Community 0.3.0 от 25 октября 2026 года меняет не операции, а устройство границы между изданиями. Раньше платные модули лежали в общей сборке и закрывались проверкой права во время работы; теперь пять закрытых модулей и их проверки исключаются из сборки Community манифестом, то есть граница изданий держится отсутствием файла. Это решение меняет и то, как выглядит отказ, и то, как читать документацию: рядом с кодом появились условия использования платных изданий и карта «где что лежит и на каком порту запускается», а прежняя история публикации схлопнута — старые теги и релизы сняты.

RAGRAF 0.3.0 — обложка релиза
Граница изданий переехала из проверки права в состав сборки

TL;DR

  • RAGRAF Community 0.3.0 от 25.10.2026 — релиз про границу изданий, а не про новые операции.
  • Закрытые модули (sso.py, siem.py, attest.py, license_offline.py, shared_index.py) исключены из сборки Community манифестом; граница держится отсутствием файла, а не проверкой права в рантайме.
  • Контур качества вынесен в quality_loop.py (Pro и Enterprise), измерение индекса осталось в quality.py, потому что его читает базовая операция index_status.
  • Добавлены EULA.md для платных изданий и docs/03_implementation/EDITIONS.md — карта изданий и портов.
  • Важно при обновлении: история репозитория схлопнута, поэтому старый клон не «подтянется» — нужен свежий, а прежние теги и релизы сняты с публикации.

Что нового

Главное изменение сформулировано в заметках к релизу одной строкой: граница изданий стала границей кода. Модули платных возможностей — единый вход (sso), экспорт в SIEM (siem), аттестация (attest), офлайн-лицензия (license_offline) и общий индекс (shared_index) — вместе со своими проверками исключены из сборки Community манифестом. Практическое следствие: в Community-сборке этих файлов просто нет, а вызов соответствующей операции возвращает отказ с названной причиной, а не трассировку и не «пустой» результат. Это честнее и для пользователя, и для разработчика: нечего случайно включить, нечего проверять в рантайме.

Второе изменение — разделение слоя измерения и контура качества. Сам контур вынесен в src/ragraf/quality_loop.py и принадлежит Pro и Enterprise, а измерение осталось в quality.py, потому что его читает базовая операция index_status — платной она быть не может по определению. Третья строка заметок выглядит как техническая мелочь, но это признание измеренного регресса: константы предела журнала платный модуль теперь читает через модуль, а не копирует при импорте, иначе смена предела не влияла бы на умолчание прореживания. Разделение кода без такой правки ломало поведение — и об этом сказано прямо.

Документация выросла на два документа. EULA.md описывает условия использования платных изданий Pro и Enterprise и действует с 25.10.2026; Community при этом остаётся под Business Source License 1.1, и EULA его не заменяет. docs/03_implementation/EDITIONS.md — карта: какие издания существуют (список закрытый: community, pro, enterprise), какие возможности относятся к каждому, где лежит код по слоям и на каких портах запускаются проверочные профили.

Что Было Стало
Граница изданий проверка права в рантайме отсутствие файла в сборке Community
Контур качества в общем коде quality_loop.py, только Pro и Enterprise
Измерение индекса в общем коде quality.py, доступно всем: читается index_status
Предел журнала константа копировалась при импорте читается через модуль
Проверки слоя изданий зависели от лицензии на машине разработчика изолированы от неё

Что изменилось в публикации

Отдельным пунктом заметок идёт то, что обычно не пишут в релизах: история репозитория схлопнута, прежние теги и релизы сняты с публикации по решению правообладателя. Права, выданные ранее, не отозваны, копия истории сохранена в архиве правообладателя, а ссылки на снятые теги из журнала изменений убраны. Для читателя это значит две вещи: старые ссылки на релизы могут не открываться, а git pull в существующем клоне не сработает — истории больше не родственны.

Ключевые изменения

Что Подробность
Версия 0.3.0 от 25.10.2026, издание Community
Исключено из сборки sso.py, siem.py, attest.py, license_offline.py, shared_index.py и их проверки
Перенесено контур качества → src/ragraf/quality_loop.py (Pro и Enterprise)
Осталось общим quality.py — измерение индекса для index_status
Добавлено EULA.md, docs/03_implementation/EDITIONS.md
Публикация история схлопнута, прежние теги и релизы сняты; права не отозваны

Как обновиться

Обновление здесь — не git pull, а чистая установка: история репозитория схлопнута, и старый клон не сможет втянуть новую. На Windows есть установщик одной командой: он спросит каталог (по умолчанию C:RAGRAF), создаст виртуальное окружение, поставит зависимости и предложит настроить подключение к AutoClaw и DeepSeek Harness.

iwr -OutFile install.ps1 https://raw.githubusercontent.com/paulmann/RAGRAF/main/install.ps1
pwsh -NoLogo -NoProfile -File .install.ps1

Если установщик уже есть в дереве, работают его ключи; репетиция без зависимостей — -SkipDeps, индексация проекта сразу — -Project и -Index.

pwsh -NoLogo -NoProfile -File scripts/install.ps1
pwsh -File scripts/install.ps1 -Project C:workmyproject -Index

Для ручной установки из исходников остаётся pip: репозиторий ставится как пакет, но общий путь через pip на Linux и macOS разработчиком не проверялся — проверен Windows.

pip install -e .

Что проверить после обновления

cd <каталог дерева RAGRAF>
python toolsragraf.py edition
python toolsragraf.py --json edition
python teststest_editions.py

Критерий «работает»: edition печатает заявленное издание, действующее, список возможностей и состояние лицензии с причиной; без файла лицензии действует community и в возможностях видно search, graph, schema, db-live, audit. Значение unresolved с пустым списком возможностей означает, что слой изданий не разрешён, — это не то же самое, что Community, и путать их нельзя. Тесты слоя изданий должны пройти все 65 свойств.

Отдельно стоит посмотреть на конверт любого ответа: рядом с index_rev и capability там теперь есть edition и features, а при отказе — блок refused с операцией, возможностью, требуемым изданием и подсказкой.

python toolsragraf.py -p config/ragraf.yaml query search "формулировка" --kind file

Совместимость и требования

Параметр Значение
Язык и версия Python 3.13+
Хранение SQLite: граф, FTS5 и векторы в одном файле
Разбор кода tree-sitter; вложения считаются локально, без torch
Опционально Java и Joern — слой свойств кода и слайсинг; без него продукт работает
Проверено Windows, PowerShell 7.6, Python 3.14.7
Не проверено установка через pip на Linux и macOS
Лицензия Community Business Source License 1.1: использование внутри организации разрешено, предоставление третьим лицам как хостингового сервиса — нет; через четыре года смена на Apache 2.0
Лицензия Pro и Enterprise EULA.md, действует с 25.10.2026

Кому это нужно

Первый сценарий — команда, которая ставит Community и хочет заранее знать, что входит в сборку: теперь это видно не по обещаниям, а по списку файлов и ответу edition. Второй — интеграторы, которые пишут свои обёртки над MCP: отказ по изданию приходит разбираемым конвертом с полем refused, а не исключением, поэтому клиент может показать человеку внятную причину вместо стектрейса.

Подводные камни

  • Старый клон не обновится. История схлопнута, общих предков у прежних и новых коммитов нет: git pull даст расхождение историй, а не обновление. Нужен свежий клон или распаковка поверх чистой установки.
  • «Заявлено pro» не даёт прав. Действует наименьшее из заявленного и разрешённого подписанной лицензией; при отсутствии лицензии работает Community, а причина попадает в edition_notes. Записать издание в настройке и получить возможности нельзя.
  • Объявленная возможность — не работающая. В базовой линии объявлено четырнадцать возможностей, действующих пять; остальные перечислены в разделе missing с причиной. Читать «полное издание» по названию нельзя.
  • Прежние ссылки на релизы мертвы. Теги и релизы сняты с публикации; если в вашем runbook закреплена версия v0.2.x, ссылка может не открыться, а обновление потребует чистой установки.
  • Отказ виден в журналах, но не как ошибка клиента. Запись попадает в usage_call с текстом EditionRefusal: … и в admin_access_log как denied — искать причину стоит там, а не в коде обёртки.

FAQ

Что практически изменилось, если я пользуюсь Community?

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

Почему измерение индекса осталось бесплатным, а контур качества стал платным?

Потому что измерение читает базовая операция index_status, и платным оно быть не может: иначе отчёт о состоянии индекса перестал бы работать у всех. В Pro и Enterprise ушёл именно контур — набор прогонов, сравнение и прореживание.

Как узнать, какое издание у меня работает?

Команда python tools
agraf.py edition
печатает заявленное и действующее издание, список возможностей и состояние лицензии; --json edition даёт то же машиночитаемо. В каждом ответе фасада рядом с index_rev теперь есть edition и features.

Что значит отказ по изданию в ответе агента?

Это обычный конверт с полем error и блоком refused, где названы операция, возможность, требуемое издание и подсказка, как посмотреть действующее. Исключения нет намеренно: клиент должен разбирать причину, а не ловить трассировку.

Итог

0.3.0 — релиз про честность границы. Перенос её из проверки права в состав сборки означает, что «платного» кода в Community физически нет, а не «есть, но закрыт флажком». Заодно документы признают две вещи, которые обычно прячут: разделение слоя качества без правки констант ломало прореживание, а проверки изданий до этого релиза зависели от лицензии на машине разработчика. Если вы ставите Community — берите свежий клон и один раз посмотрите на edition; если ждёте платные возможности — их пять написанных, и это тоже названо в релизе.

Цитата: Граница, которая держится отсутствием файла, проверяется одним ls, а не чтением кода проверки права — и это самый убедительный вид границы.

Связанные материалы

LLM Summary

  • Тема: RAGRAF — локальная графово-векторная база знаний о коде для LLM-агентов; релиз Community 0.3.0 меняет устройство границы изданий.
  • Версия: 0.3.0 от 25 октября 2026 года; лицензия Community — Business Source License 1.1, платные издания — по EULA.md.
  • Что изменилось: пять закрытых модулей исключены из сборки Community манифестом; контур качества вынесен в quality_loop.py; добавлены EULA.md и карта изданий; проверки изданий изолированы от лицензии разработчика.
  • Ключевые команды: python toolsragraf.py edition, python toolsragraf.py --json edition, python teststest_editions.py, pwsh -File scripts/install.ps1 -Project <каталог> -Index.
  • Требования: Python 3.13+, SQLite (граф, FTS5, векторы в одном файле), tree-sitter; Java и Joern опционально; проверено на Windows с PowerShell 7.6 и Python 3.14.7.
  • Основные риски: история репозитория схлопнута, поэтому старый клон не обновится через git pull; заявленное издание не даёт прав без подписанной лицензии; из четырнадцати объявленных возможностей действуют пять.
  • Проверка результата: edition показывает действующее издание и возможности, test_editions.py проходит 65 свойств, в конверте ответа есть edition и features, отказ приходит блоком refused.
  • Кому полезно: командам, ставящим Community, и интеграторам, которым нужен машинно-разбираемый отказ по изданию.
  • Ссылки: https://github.com/paulmann/RAGRAF/releases/tag/v0.3.0, https://github.com/paulmann/RAGRAF

Промт для агента (установка)

Готовый промт для AI-агента: скопируйте блок целиком кнопкой и отдайте своему ассистенту. Отдельной оговорки требует источник: в опубликованном дереве v0.3.0 файла AGENTS.md нет (проверено 26.10.2026 — ссылка на main и на тег отдаёт 404, при схлопывании истории файл из публикации ушёл). Поэтому шаги ниже собраны дословно из разделов «Установка» файла README.ru.md и «Как проверить» файла docs/03_implementation/EDITIONS.md.

Задача: поставить RAGRAF Community 0.3.0 на Windows, проиндексировать один проект и доказать, что работает издание community, а не «заявленное pro».

Материалы:
- релиз: https://github.com/paulmann/RAGRAF/releases/tag/v0.3.0
- репозиторий: https://github.com/paulmann/RAGRAF
- карта изданий и портов: https://github.com/paulmann/RAGRAF/blob/main/docs/03_implementation/EDITIONS.md
- условия платных изданий: https://github.com/paulmann/RAGRAF/blob/main/EULA.md
- установка и требования: README.ru.md, раздел «Установка»

Важно до начала: история репозитория схлопнута, тегов прежних версий в публикации нет, поэтому обновление существующего клона через git pull не сработает — только свежий клон или установщик.

Установка одной командой (из README.ru.md):
iwr -OutFile install.ps1 https://raw.githubusercontent.com/paulmann/RAGRAF/main/install.ps1
pwsh -NoLogo -NoProfile -File .install.ps1

Установщик спросит каталог установки (по умолчанию C:RAGRAF), создаст виртуальное окружение, поставит зависимости и предложит найти AutoClaw и DeepSeek Harness. Значения для AutoClaw он только показывает, но не записывает; для Harness умеет записать блок профиля с резервной копией.

Из дерева проекта (репетиция без зависимостей — -SkipDeps; индексация сразу):
pwsh -NoLogo -NoProfile -File scripts/install.ps1
pwsh -File scripts/install.ps1 -Project C:workmyproject
pwsh -File scripts/install.ps1 -Project C:workmyproject -Index
pwsh -File scripts/install.ps1 -Project C:workmyproject -Index -NoVectors

Ручная установка из исходников:
pip install -e .

Проверка слоя изданий (EDITIONS.md, раздел «Как проверить»):
cd <каталог дерева RAGRAF>
python toolsragraf.py edition
python toolsragraf.py --json edition
python teststest_editions.py
pwsh -NoLogo -NoProfile -NonInteractive -File toolsInvoke-ProjectDoctrine.ps1

Проверка указателя корпуса и первого поиска:
python toolsragraf.py ensure <каталог проекта>
python toolsragraf.py -p config/ragraf.yaml query search "формулировка" --kind file

Ограничения:
- не подменять действующее издание записью в настройке: без подписанной лицензии работает community, причина видна в edition_notes;
- не читать «полное издание» по названию: объявленных возможностей четырнадцать, действующих пять, остальные перечислены в missing с причиной;
- не занимать порт рабочего профиля проверками: рабочий MCP 9500 и панель 8777, проверочные профили — 9510/8787, 9511/8788, 9512/8789 и отдельный каталог .ragraf;
- общий путь через pip на Linux и macOS не проверялся — проверено на Windows с PowerShell 7.6 и Python 3.14.7;
- если команда падает — остановиться и показать команду, вывод и код возврата.

Что считать успехом: установщик завершился без ошибок; python toolsragraf.py edition печатает действующее издание community и пять базовых возможностей; teststest_editions.py проходит 65 свойств; ensure по каталогу проекта отвечает status actual или reindexed; поиск возвращает факты со ссылкой файл:строка; в конверте ответа есть edition и features.