# NOTICE — RAGRAF

RAGRAF (исходный код, документация и артефакты поставки)
Copyright (c) 2026 Mikhail Deynekin. Все права сохранены, кроме явно
предоставленных в файле [`LICENSE`](LICENSE).

Лицензия: **Business Source License 1.1** (`BUSL-1.1`). Через четыре года после
выпуска версии она переходит на Apache License 2.0. Что можно и что нельзя —
[`docs/03_implementation/LICENSING.md`](docs/03_implementation/LICENSING.md).

## Третьи стороны, входящие в установку

Версии и лицензии **измерены** 24.10.2026 вызовом `importlib.metadata` на
рабочей установке, а не переписаны по памяти. Лицензия указана так, как её
объявляет сам пакет в своих метаданных.

| Пакет | Версия | Лицензия (из метаданных) | Роль |
|---|---|---|---|
| PyYAML | 6.0.3 | MIT | разбор конфигурации корпуса |
| tree-sitter | 0.26.0 | MIT | разбор дерева |
| tree-sitter-language-pack | 1.20.0 | MIT | грамматики языков |
| sqlite-vec | 0.1.9 | MIT или Apache-2.0 | векторный поиск в SQLite |
| fastembed | 0.8.1 | Apache-2.0 | эмбеддинги без torch (ONNX Runtime) |
| ijson | 3.5.1 | BSD-3-Clause и ISC | потоковый разбор экспорта Joern |
| tiktoken | 0.14.0 | MIT | подсчёт токенов в замерах |
| PyNaCl | 1.6.2 | Apache-2.0 | хранилище секретов (`SecretBox`) |

Две оговорки, без которых таблица была бы неверной:

* `tree-sitter-language-pack` объявляет MIT, но отдельные грамматики внутри
  пакета сохраняют собственные лицензии — при перераспространении сборки их
  надо смотреть по отдельности;
* `sqlite-vec` объявляет двойную лицензию, поэтому в таблице стоит «или».

## Необязательные наборы

Ставятся только по явному выбору (`pip install 'ragraf[documents]'`, `[tls]`).

| Пакет | Версия | Лицензия | Когда нужен |
|---|---|---|---|
| pypdf | 6.21.1 | BSD-3-Clause | чтение PDF |
| python-docx | 1.2.0 | MIT | чтение DOCX |
| openpyxl | 3.1.5 | MIT | чтение XLSX |
| python-pptx | 1.0.2 | MIT | чтение PPTX |
| truststore | 0.10.4 | MIT | системное хранилище сертификатов под TLS-инспекцией |

## Транзитивные зависимости

Приходят вместе с обязательными пакетами и в поставку RAGRAF не входят.

| Пакет | Версия | Лицензия |
|---|---|---|
| numpy | 2.5.3 | BSD-3-Clause, 0BSD, MIT, Zlib, CC0-1.0 (набор компонентов) |
| requests | 2.34.2 | Apache-2.0 |

## Инструменты сборки оформления

Нужны только для сборки стилей панели (`npm run build:css`), в поставку Python
не входят: `tailwindcss` и `@tailwindcss/cli` (MIT), `jsdom` (MIT).

## Что в поставку НЕ входит

* **Joern и JDK.** Распространяются под Apache-2.0, ставятся отдельно скриптом
  `scripts/install-joern.ps1`. Без них граф свойств кода не строится, и продукт
  честно сообщает режим `partial` вместо исключения.
* **Модель эмбеддингов.** Скачивается отдельно при первом использовании и
  подчиняется собственной лицензии модели; в артефактах RAGRAF её нет. Без неё
  векторный поиск помечается недоступным, а лексический продолжает работать.
* **CUDA и torch.** Графовые алгоритмы на видеокарте включаются только при
  наличии torch в окружении; пакет ставится отдельно и подчиняется своей
  лицензии (BSD-3-Clause).

## Если вы распространяете сборку

Файл `LICENSE` обязан ехать вместе с ней: лицензия требует явно показывать её
на каждой копии. Этот файл — тоже: он фиксирует, что именно входит в сборку.
