Newer
Older
AI_Lab_SCRUME_Co / CHANGELOG.md

Изменения 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 шагов. Лежит только в профиле ai-si — в сборке файла нет
skills/productivity/docx/scripts/scan_open_pii.py работает (--summary, --header, --json, --fail-on-open). Лежит только в профиле ai-si — в сборке файла нет
skills/ailab/anonymization-check лежит в сборке, в профиль не ставится — категории ailab в установленном профиле нет
skills/engineering/ai-data-perimeter есть только в профиле ai-si, в сборке отсутствует → получателям не приедет
profiles/<p>/hooks/ пусто — принуждения нет
SOUL.md сборки про обезличивание, периметр и заказчика — ни слова

Отсюда формулировка «у нас обезличивание до отправки в модель» сегодня не подтверждается: правило записано в скилле, но срабатывает по триггеру и зависит от того, вспомнит ли модель его применить.

1. Один канон процедуры + скилл в сборку и в профиль

Проблема: одна и та же процедура описана в трёх местах — docx/references/anonymization.md, ailab/anonymization-check, engineering/ai-data-perimeter. Три редакции разъедутся.

Иерархия, которую фиксируем:

Место Роль
engineering/ai-data-perimeter канон: правила периметра, проверка «соблюдается ли», порядок работы с документом заказчика, чек-лист и нормы (references/perimeter-rules.md)
docx/references/anonymization.md техника правки DOCX-пакета + scripts/scan_open_pii.py — исполнение под каноном
ailab/anonymization-check свести к тонкой ссылке на канон либо убрать; сейчас это третья редакция того же правила
  • Что: положить engineering/ai-data-perimeter в сборку (dist/vasily/skills/engineering/) — в сборке этой категории нет вообще, поэтому переносится каталог целиком, вместе с references/perimeter-rules.md и templates/soul-perimeter-block.md.
  • Что, дополнительно (иначе канон ссылается на отсутствующий файл): перенести в сборку исполнение — skills/productivity/docx/references/anonymization.md и skills/productivity/docx/scripts/scan_open_pii.py. Оба сейчас есть только в профиле ai-si; в dist/vasily/skills/productivity/docx/ их нет. Копировать без __pycache__.
  • Проверить, что категории engineering и ailab доезжают до установленного профиля при установке и обновлении (ailab сейчас не доезжает — см. таблицу выше).
  • Критерий приёмки: после чистой установки в профиле есть skills/engineering/ai-data-perimeter/SKILL.md + references/perimeter-rules.md; третьей редакции правила в профиле нет.
  • Причина: скилл, лежащий только в профиле разработчика или только в сборке, в работе не участвует. Правило в SOUL.md на него ссылается — битая ссылка хуже отсутствия ссылки.

2. Правило порядка в SOUL.md — сведено с ai-data-perimeter

Сверено с каноном. SOUL не переписывает светофор и контуры (они в references/perimeter-rules.md), а закрывает то, что действует до первого чтения файла, и не противоречит трём правилам скилла: аудит вместо согласия (Правило 0), декларация ≠ контроль (Правило 1), агент сам канал (Правило 2).

Расхождения первой редакции, исправленные при сверке:

Было в первой редакции Что говорит скилл Исправлено
не покрывала запрос «подтверди, что соблюдается» Правило 0: это аудит по двум слоям, а не согласие добавлены оба слоя и запрет ответа по одному
«не открывается, пока не решено» — без статуса данных документ до классификации считается красным добавлен статус «считается красным»
правило жило само по себе процедура — в скилле, SOUL задаёт только порядок добавлена ссылка на канон, дублирование убрано
не было стоп-сигнала «маркеров нет» = скорее всего оригинал; ноль находок ≠ чисто добавлено
не сказано, кто обезличивает обезличивание — работа человека, спорное агент не решает добавлено

Формулировка для вставки в SOUL.md (в сборку и в рабочий профиль):

## Периметр данных

Правила, светофор и процедура — скилл `ai-data-perimeter`. Здесь — то, что
действует до первого чтения файла.

- Документ заказчика (ТЗ, договор, переписка, форма, ИД) до классификации считается
  красным. Инструментами чтения он не открывается, пока не решено, откуда берётся
  обезличенная копия: её даёт владелец или агент делает копию и читает только её.
- Оригинал не открывать «чтобы посмотреть объект». Таблица соответствия токенов и
  реальных значений не читается никогда — она и есть закрываемые данные.
- Обезличивание — работа человека по его таблице соответствий. Агент делает копию по
  технике `docx/anonymization.md`, только если об этом попросили, и не решает за
  человека, что закрывать в спорных случаях.
- Проверка полноты: `python scripts/scan_open_pii.py "<файл>" --summary`. Агент читает
  счётчики; полный отчёт со значениями — человеку, потому что находки и есть
  закрываемые данные.
- «Маркеров нет» — единственный стоп-сигнал: скорее всего, это оригинал. Ноль находок
  ≠ «документ чист». Формулировка: «шаблоны нашли N, открыто: …».
- «Документ обезличен» и «у нас это соблюдается» без проверки файлов — запрещены.
  На просьбу подтвердить меру проверяются два слоя: организационный (приказ,
  регламент, журнал) и технический (SOUL, установленные скиллы, hooks). Ответ по
  одному слою — ошибка в обе стороны.
- Если механизма принуждения нет — говорить это прямо: правило в промпте срабатывает
  по триггеру, а не по факту.
  • Где: SOUL.md в сборке (приезжает всем получателям) + profiles/<p>/SOUL.md в рабочем профиле (иначе правило не действует у того, кто уже установлен).
  • Критерий приёмки: правило есть в обоих файлах; на контрольной задаче («прочитай ТЗ и найди требования») агент сначала спрашивает про обезличенную копию, а не открывает оригинал.
  • Оговорка для релиз-ноутов, честно: это по-прежнему правило в промпте. Принуждение — только hook/шлюз (п. 4).

3. Журнал применения ИИ — с записями, а не пустая форма

  • Что: форма журнала + процедура, при которой запись появляется по факту задачи, а не заполняется задним числом «для проверки».
  • Минимальный состав записи: дата · задача · сервис · контур · категория данных (🟢/🟡/🔴) · обезличивание выполнено (да/нет, чем подтверждено) · результат перепроверен человеком · кто.
  • Куда писать: файл журнала в рабочей папке проекта (CSV/MD), запись — по факту задачи; при инциденте — отдельной строкой в журнал инцидентов.
  • Критерий приёмки: после пилота на одной команде в журнале есть не менее 5 реальных записей, каждая с категорией данных и отметкой обезличивания; повторяющаяся операция закрывается одной строкой, без ручного заполнения таблицы каждый раз.
  • Причина: в папке «AI безопасность» журнал присутствует только как пустая форма Регламента. Пустая форма — не контроль.

4. (Задел, вне объёма 1.7.6) Принуждение на исходящем запросе

Каталог hooks/ пуст — механизма, физически не дающего уйти оригиналу, нет. Кандидат на следующий релиз: перехват исходящего запроса (hook или шлюз) с прогоном шаблонов ПДн и блокировкой отправки. Перед планированием — проверить, какие события Hermes умеет перехватывать; обещать механизм без проверки нельзя.

5. Состав из «Mastermind — требования к следующей сборке»

Единый источник UI- и функциональных требований — C:\Users\Admin\OneDrive\Документы\OM LAB\Mastermind — требования к следующей сборке.md (§0 — сводка, §1–§4 — тексты). Здесь только состав и статусы; требования не дублируются, при расхождении верен документ.

№ в документе Пункт Раздел Статус на 05.11.2026
1 Только разрешённые модели, персональный ключ, бренд агрегатора скрыт §1 готово к реализации
2 Один провайдер (шлюз), прямой polza.ai удалён, discover_models выключен + миграция для установленных §3a готово к реализации
3 Прогресс-бар лимита — по ключу в рублях, через шлюз §1a блокер: нужен /v1/wallet на шлюзе
4 Vision через шлюз тем же ключом §1b готово к реализации
5 Резерв proxyapi.ru, только автопереключение, пользователю не виден §2 в объёме 1.7.6, делается при сборке (работа шлюза, не клиента): ключ есть (797 моделей), группы и fallbacks заведены, но LiteLLM отклоняет переход по правам ключа → переделать на второй деплоймент в группе + cooldown_time: 300
6 Настройки: пять вкладок, «О программе» скрыть §3 готово к реализации
6a Вкладка «Боты» скрыта, Bot Mode остаётся в коде §3b решено 04.11.2026: только вкладка
6b Первое открытие после установки — тёмная тема §3c записано 04.11.2026
7 Бот на звонок в Телемост §4 блокер: отдельная учётка Яндекс
  • Что реально войдёт в 1.7.6: пункты без внешних блокеров — 1, 2, 4, 6, 6a, 6b (плюс безопасность п.1–3 выше) и пункт 5 (резерв, работа шлюза — по решению Олега 05.11.2026 переделка делается при сборке 1.7.6, а не сейчас).
  • Пункт 5 (резерв) — не клиентская работа, но входит в 1.7.6 и делается при сборке (решение Олега 05.11.2026). Проверено 05.11.2026 на шлюзе: ключ proxyapi.ru живой, GET /v1/models → 200, 797 моделей, ограничений на ключе нет (подтверждено Олегом). Группы proxy/<vendor>/<model> и router_settings.fallbacks для всех алиасов уже заведены, но переход не выполняется: в логе gw-llm — Fallback to proxy/google/gemini-4-argon was skipped because the caller is not authorized to call it. Причина: у ключа сотрудника в models только его 9 моделей, proxy/* в них нет. Отсюда решение: не отдельная группа, а второй деплоймент внутри той же группы <alias>/<vendor>/<model> (список моделей у ключа не меняется — резерв остаётся невидимым), плюс явный cooldown_time: 300 (сейчас «5 минут» держатся на дефолте роутера, в router_settings его нет).
  • Маппинг моделей (бывший открытый вопрос): из 9 моделей 7 совпадают с proxyapi по имени, anthropic/claude-sonnet-5.5 → на proxyapi anthropic/claude-sonnet-5-5, openai/gpt-6.1-sol-pro на proxyapi отсутствует (резерв возможен только на openai/gpt-6.1-sol).
  • Переносятся 3, 7 — собираются, когда закроются блокеры; тогда же поднимается номер (1.7.7 или следующий по порядку).
  • Не путать: «п.4» здесь — vision, а «§4» документа — бот на звонок; сквозная нумерация в документе своя.
  • Перед сборкой закрыть открытые вопросы §5 документа: префиксы testoff/… в названиях моделей, точный перечень вкладок настроек, маппинг моделей proxy.

Что НЕ входит в 1.7.6

  • Локальная модель / RAG (Ollama + Open WebUI): решения нет, железа нет. Ценность такого контура — только на красной категории, и он снимает риск утечки ценой качества на русском техническом тексте.
  • Заполнение Регламента и приказа ООО «СКРАМ ИНЖИНИРИНГ» — организационный слой, отдельная работа вне сборки.

Как выпускается

  1. Состав закрыт Олегом; пункты 1–3 (безопасность) проверены на чистой установке, а не только в рабочем профиле, и пункты 1, 2, 4, 6, 6a, 6b из п.5 (UI) проверены там же.
  2. distribution.yaml → version: 1.7.6; README.md → «Текущая версия: 1.7.6».
  3. Коммит с сообщением v1.7.6: <главное изменение>.
  4. Сборка bundle, проверка по разделу «Проверка перед передачей» в README.