История до 1.7.5 — в git log (сообщения коммитов вида v1.7.5: …). Здесь ведём план и состав следующего релиза.
Статус: состав накапливается. Сборка не запускается — Олег добавляет нововведения, релиз собирается после закрытия состава.
Тема: правило периметра данных доводится до работающего механизма, а не остаётся декларацией в промпте.
Основание — аудит профиля 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 сборки |
про обезличивание, периметр и заказчика — ни слова |
Отсюда формулировка «у нас обезличивание до отправки в модель» сегодня не подтверждается: правило записано в скилле, но срабатывает по триггеру и зависит от того, вспомнит ли модель его применить.
Проблема: одна и та же процедура описана в трёх местах — 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 — сведено с 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 в рабочем профиле (иначе правило не действует у того, кто уже установлен).Каталог hooks/ пуст — механизма, физически не дающего уйти оригиналу, нет. Кандидат на следующий релиз: перехват исходящего запроса (hook или шлюз) с прогоном шаблонов ПДн и блокировкой отправки. Перед планированием — проверить, какие события Hermes умеет перехватывать; обещать механизм без проверки нельзя.
Единый источник 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 | блокер: отдельная учётка Яндекс |
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 его нет).anthropic/claude-sonnet-5.5 → резерв anthropic/claude-sonnet-5-5 (у proxyapi дефис вместо точки);openai/gpt-6.1-sol-pro → на proxyapi отсутствует, резерв = деградация на openai/gpt-6.1-sol (подтверждено Олегом). Технически это второй деплоймент в той же группе: model_name = <alias>/<vendor>/<model> (то, что видит ключ), litellm_params.model = фактическая модель proxyapi, api_base = https://api.proxyapi.ru/v1. Группа и список моделей у ключа не меняются.testoff/… в названиях моделей, точный перечень вкладок настроек, маппинг моделей proxy.distribution.yaml → version: 1.7.6; README.md → «Текущая версия: 1.7.6».v1.7.6: <главное изменение>.