# Соглашение об обработке данных (DPA) — ЧЕРНОВИК

> **Статус: черновик, не для публикации.** Юридические формулировки — решение
> владельца. Здесь важно одно: DPA обязано описывать ФАКТИЧЕСКИЕ места, где
> продукт касается данных, а не типовой шаблон. Все места названы файлами.

## 1. Роли

1.1. Лицензиат — оператор (контролёр) данных. Владелец продукта — обработчик
только в той части, где он получает данные при поддержке
`[ВЛАДЕЛЕЦ: описать, какие данные передаются в обращениях]`.

1.2. При локальной работе продукта передачи данных владельцу НЕ происходит:
индекс, графы и журналы лежат на машине Лицензиата.

## 2. Какие данные продукт обрабатывает

| Данные | Где | Для чего | Кто видит |
|---|---|---|---|
| Код и документы корпуса | `<проект>/.ragraf/**` | индекс, граф, поиск | локальный пользователь и агенты, которым разрешено |
| Значения секретов | `catalog/secrets.sqlite`, шифротекст | выдача по праву | тот, кому выдано право; каждое раскрытие — в аудите |
| Журнал аудита хранилища | `catalog/secrets.sqlite`, таблица `audit` | доказуемость доступа | проверяется `ragraf.py secrets audit --verify` |
| Статистика обращений | `.ragraf/control.sqlite` | эффект индекса | локально; экспорт — `analytics` |
| Телеметрия запросов | там же | разбор качества | аргументы хранятся как sha1 + 60 символов, не целиком |

## 3. Персональные данные

3.1. Продукт **не собирает** персональные данные специально. Колонки, помеченные
как персональные, в живой схеме баз скрываются: значение не собирается вовсе
(`ragraf_db_sample`, поле «скрыто: персональные данные»).

3.2. Остаточный риск: персональные данные могут находиться внутри кода или
документов корпуса (например, фикстуры). Их обработка — ответственность
Лицензиата; продукт не классифицирует содержимое корпуса на персональные данные
и не заявляет обратного.

3.3. `[ВЛАДЕЛЕЦ: сроки хранения журналов, порядок удаления, ответственный]`.

## 4. Секреты

4.1. Значения секретов хранятся только в каталоге `catalog/`, вне корпуса,
шифруются PyNaCl SecretBox; мастер-ключ — `catalog/secrets.key` либо переменная
`RAGRAF_SECRETS_KEY`. Ключ подписи аудита — отдельный
(`catalog/audit-signing.key`), чтобы компрометация одного не открывала другое.

4.2. Выдача значения требует права и причины; отказ и удача одинаково попадают в
журнал. Отказ неотличим от «не найдено» для клиента, причина видна только в
аудите.

## 5. Субобработчики и передача

5.1. Внешние обращения возможны только те, что включены настройками:
загрузка модели эмбеддингов (HuggingFace) и публикация аналитики (выключена по
умолчанию). `[ВЛАДЕЛЕЦ: перечислить договоры с этими поставщиками]`.

5.2. Продукт не передаёт содержимое корпуса третьим лицам по своей инициативе.

## 6. Инциденты

6.1. Об инциденте безопасности Лицензиат сообщает по адресу из
`community/SECURITY.md`; порядок и сроки — `SLA.md`, раздел 2.

6.2. Признаки компрометации журнала видны командой
`python tools/ragraf.py secrets audit --verify` (цепочка хэшей); выгрузка для
разбора — `secrets audit --export <файл>` с подписью Ed25519.

## 7. Прекращение и возврат данных

7.1. Данные остаются у Лицензиата: продукт не хранит их копий вне машины.
`[ВЛАДЕЛЕЦ: порядок подтверждения удаления при оказании поддержки]`.
