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

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, а не чтением кода проверки права — и это самый убедительный вид границы.
Связанные материалы
- RAGRAF v0.3.0 — релиз на GitHub — заметки к релизу; приложенных файлов нет, установка из репозитория.
- docs/03_implementation/EDITIONS.md — карта изданий — возможности, состояния лицензии, порты профилей и где что лежит в коде.
- EULA.md — условия платных изданий — что предоставляется по Pro и Enterprise и чем это отличается от лицензии Community.
- CHANGELOG.md — журнал изменений — раздел 0.3.0 и записи о закрытых дефектах предыдущих этапов.
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.