diff --git a/CHANGELOG.md b/CHANGELOG.md index 15e7cd9..e7530cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -117,6 +117,8 @@ | `llm_request` | маскирует по правилам категории из метки; пишет строку в журнал | | `llm_execution` | возвращает реальные значения в ответе (демаскировка) | +Плагин работает только с содержимым запроса к модели. Ключи доступа, учётные данные и личные файлы он не читает и не меняет — это отдельный контур, к политике доступа к документам отношения не имеет. + Политика — файл в профиле (`policy.yaml`), правится без пересборки: | Категория | Кому | Что входит | Режим | @@ -146,6 +148,7 @@ 2. **`policy.yaml` генерируется из этой таблицы скриптом**, а не правится руками: два источника правды разъедутся на первой же кадровой замене. 3. **Учётки со статусом `root` (TESTOFF) политику не обходят** — иначе одна учётка отменяет контроль. Для них отдельная запись в журнале с пометкой `admin`. 4. **Колонка «роль» приведена к кодам 05.11.2026:** столбец G — код (`engineer` — 7, `contracts` — 3, `admin` — 1), столбец H «роль — что делает» — исходное описание задач для человека. Дуда В. заведён (ключ выдан сотруднику, хэш в таблицу не сохранялся) — прежний пункт снят. +5. **`Единый докер USER.xlsx` — личная таблица Олега (OneDrive).** Источник ролей, но не рабочий файл сборки: агент её читает, не изменяет и не переписывает. `policy.yaml` генерируется из копии, снятой на момент подготовки релиза, — чтобы правка личной таблицы не ломала политику, а политика не правила личную таблицу. - Критерий приёмки: 1. Сотрудник без роли просит проверить договор → отказ до чтения, файл не открывается. @@ -190,9 +193,47 @@ --- -## Как выпускается +## Подготовка релиза 1.7.6 (prepare release) -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. +Мероприятия по этапам. Галочка ставится по факту проверки, а не по факту «сделали». + +### Этап 1. Закрыть состав + +- [ ] Олег закрывает список нововведений; всё, что «ещё думаю», уезжает в 1.7.7, а не висит в 1.7.6. +- [ ] У каждого пункта есть критерий приёмки — у пп. 1–4 есть. +- [ ] По п.4 зафиксировано, где живёт `policy.yaml`: общий файл на диске (план) или политика на шлюзе; шлюз остаётся вторым рубежом для тех, кто ходит мимо агента. +- [ ] Роли сняты из личной таблицы Олега на момент подготовки; таблица не изменяется. + +### Этап 2. Реализовать и проверить + +- [ ] Скилл `engineering/ai-data-perimeter` в сборке и в установленном профиле (п.1). +- [ ] Раздел «Периметр данных» в `SOUL.md` сборки и профиля (п.2). +- [ ] Журнал применения: форма + запись по факту задачи (п.3). +- [ ] Плагин, шаг 1: `tool_request` + `policy.yaml` + журнал в режиме «только запись», без маски (п.4). +- [ ] Плагин, шаг 2: маска на жёлтом. +- [ ] Плагин, шаг 3: демаскировка ответа в `llm_execution`. +- [ ] Прогнать 5 критериев приёмки п.4 на живых документах: ТЗ, реестр замечаний, договор. +- [ ] Проверить на чистой установке, а не только в рабочем профиле: иначе скилл и политика не доедут — на этом уже спотыкались. + +### Этап 3. Документы к релизу + +- [ ] `CHANGELOG.md`: перенести 1.7.6 из «план» в «выпущено», поставить дату и номер сборки. +- [ ] Release notes для получателей: что вошло, что не вошло, честная оговорка про остаточные риски — картинки и вложения не маскируются, сканы без текстового слоя требуют OCR до маски, браузер мимо агента закрывается только шлюзом. +- [ ] Инструкция сотруднику: что такое категория документа, почему спросят один раз, что делать при отказе по договору. +- [ ] Инструкция договорному пулу: почему роль не даёт отправку в облако и что делать вместо этого. +- [ ] `README.md`: раздел безопасности — новые правила и роли. + +### Этап 4. Сборка + +- [ ] Состав закрыт; пункты 1–3 (безопасность) проверены на чистой установке, а не только в рабочем профиле, и пункты 1, 2, 4, 6, 6a, 6b из п.5 (UI) проверены там же. +- [ ] `distribution.yaml` → `version: 1.7.6`; `README.md` → «Текущая версия: 1.7.6». +- [ ] Коммит с сообщением `v1.7.6: <главное изменение>` + тег. +- [ ] Сборка bundle, проверка по разделу «Проверка перед передачей» в README. +- [ ] Прогон на чистой машине: установка → скилл виден → правило в SOUL → журнал пишется → маска срабатывает. + +### Этап 5. Откат и первые две недели + +- [ ] Предыдущий bundle (1.7.5) сохранён как точка отката. +- [ ] Записано, как выключается плагин без пересборки (флаг в `config.yaml`) — маска не должна требовать релиза, чтобы её отключить при массовых ложных срабатываниях. +- [ ] Назначен ответственный за журнал инцидентов на первые две недели после выдачи. +- [ ] Через две недели — разбор: сколько записей в журнале, сколько отказов по красному, сколько ложных масок.