diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..99e5cff --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,77 @@ +# Изменения AILab SCRUME Agent + +История до 1.7.5 — в `git log` (сообщения коммитов вида `v1.7.5: …`). Здесь ведём план и состав следующего релиза. + +--- + +## 1.7.6 — план (не выпущено) + +Тема релиза: **правило периметра данных доводится до работающего механизма, а не остаётся декларацией в промпте.** + +Основание — аудит профиля ai-si 05.11.2026. Проверенное состояние: + +| Что | Факт | +|---|---| +| `skills/productivity/docx/references/anonymization.md` | процедура полная: тело, таблицы, все `headerN/footerN.xml`, `docProps/core.xml`, `app.xml`, картинки; замена подчёркиваниями; верификация из 3 шагов | +| `skills/productivity/docx/scripts/scan_open_pii.py` | есть, работает (`--summary`, `--header`, `--json`, `--fail-on-open`) | +| `skills/ailab/anonymization-check` | лежит в сборке, **в профиль не ставится** — категории `ailab` в установленном профиле нет | +| `profiles/
/hooks/` | **пусто** — принуждения нет | +| `SOUL.md` сборки | про обезличивание, периметр и заказчика — **ни слова** | + +Отсюда формулировка «у нас обезличивание до отправки в модель» сегодня не подтверждается: правило записано в скилле, но срабатывает по триггеру и зависит от того, вспомнит ли модель его применить. + +### 1. Поставить `ailab/anonymization-check` в профиль при установке и обновлении + +- Что: категория `skills/ailab/*` должна попадать в установленный профиль так же, как остальные скиллы; сейчас в профиле её нет. +- Где: механизм установки скиллов (bundle → `~/hermes/skills`), `setup.ps1`, проверка состава после установки. +- Критерий приёмки: после чистой установки и после обновления `ls <профиль>/skills/ailab/anonymization-check` даёт `SKILL.md` и `scripts/scan_open_pii.py`; скилл виден в индексе скиллов агента. +- Причина: скилл, лежащий только в сборке, в работе не участвует. Это главное расхождение между «заявлено» и «есть». + +### 2. Правило порядка в `SOUL.md` — и в сборке, и в профиле + +Добавить раздел (формулировка для вставки): + +``` +## Периметр данных + +- Документ заказчика (ТЗ, договор, переписка, форма, ИД) не открывается инструментами + чтения, пока не решено, откуда берётся обезличенная копия: её даёт пользователь + или агент делает копию и читает только её. +- Читается и разбирается только копия. Оригинал не открывать «чтобы посмотреть объект». +- Таблица соответствия токенов и реальных значений не читается никогда — она и есть + закрываемые данные. +- Отчёт по проверке полноты обезличивания агент читает в `--summary` (счётчики); + полный отчёт со значениями — человеку. +- Формулировка «документ обезличен» запрещена. Правильно: «шаблоны нашли N, вот что + осталось открытым». +``` + +- Где: `SOUL.md` в сборке (приезжает всем получателям) + `profiles/
/SOUL.md` в рабочем профиле (иначе правило не действует у того, кто уже установлен). +- Критерий приёмки: правило есть в обоих файлах; на контрольной задаче («прочитай ТЗ и найди требования») агент сначала спрашивает про обезличенную копию, а не открывает оригинал. +- Ограничение, которое надо написать в релиз-ноутах честно: это по-прежнему правило в промпте. Принуждение — только через hook/шлюз (см. п. 4). + +### 3. Журнал применения ИИ — с записями, а не пустая форма + +- Что: форма журнала + процедура, при которой запись появляется сама, а не заполняется задним числом «для проверки». +- Минимальный состав записи: дата · задача · сервис · контур · категория данных (🟢/🟡/🔴) · обезличивание выполнено (да/нет, чем подтверждено) · результат перепроверен человеком · кто. +- Куда писать: файл журнала в рабочей папке проекта (CSV/MD), запись — по факту задачи; при инциденте — отдельной строкой в журнал инцидентов. +- Критерий приёмки: после пилота на одной команде в журнале есть не менее 5 реальных записей, каждая с категорией данных и отметкой обезличивания; повторяющаяся операция закрывается одной строкой, без ручного заполнения таблицы каждый раз. +- Причина: в папке «AI безопасность» журнал присутствует только как пустая форма Регламента. Пустая форма — не контроль. + +### 4. (Задел, вне объёма 1.7.6) Принуждение на исходящем запросе + +Каталог `hooks/` пуст — механизма, физически не дающего уйти оригиналу, нет. Кандидат на следующий релиз: перехват исходящего запроса (hook или шлюз) с прогоном шаблонов ПДн и блокировкой отправки. Перед планированием — проверить, какие события Hermes умеет перехватывать; обещать механизм без проверки нельзя. + +### Что НЕ входит в 1.7.6 + +- Локальная модель / RAG (Ollama + Open WebUI): решения нет, железа нет. Ценность такого контура — только на красной категории, и он снимает риск утечки ценой качества на русском техническом тексте. +- Заполнение Регламента и приказа ООО «СКРАМ ИНЖИНИРИНГ» — организационный слой, отдельная работа вне сборки. + +--- + +## Как выпускается + +1. Пункты 1–3 закрыты и проверены на чистой установке, а не только в рабочем профиле. +2. `distribution.yaml` → `version: 1.7.6`; `README.md` → «Текущая версия: 1.7.6». +3. Коммит с сообщением `v1.7.6: <главное изменение>`. +4. Сборка bundle, проверка по разделу «Проверка перед передачей» в README.