# Журнал изменений

Все заметные изменения проекта документируются здесь. Формат —
[Keep a Changelog](https://keepachangelog.com/en/2.0.0/) 2.0.0, версионирование —
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [1.2.2] - 2026-10-24

### Добавлено

- `wiki.drift` — линтер сравнивает числа, пересказанные на страницах вики, с самим промптом: расхождение в числе инвариантов или в ширине ворот — ошибка. Проверено двумя фикстурами (`Nine rules` против десяти, `ten-item gate` против двенадцати), каждая даёт ровно ожидаемую находку.
- Двуязычная вики опубликована: 10 страниц плюс `_Sidebar` и `_Footer` на <https://github.com/paulmann/agent-prompt-kit/wiki>, с навигацией на обоих языках.

### Исправлено

- `wiki/02-Modules.md` говорил «Nine rules never change», хотя в промпте десять, а русская страница заявляла десять, перечисляя девять: инвариант о доставке отсутствовал в обеих. Теперь обе называют десять и называют его.
- Таблица модулей на вики всё ещё описывала M10 как «направить на новый домен»; теперь там процедура «сессия → окружение», а M8 называет ворота из двенадцати проверок.

## [1.2.1] - 2026-10-24

### Исправлено

- В `SKILL.md` лежал русский текст, а в `SKILL.ru.md` — английский: файлы были опубликованы перепутанными. Содержимое обменяно, английский снова основной.
- В линтер добавлено правило, которое это поймало бы: `language.direction` измеряет долю кириллицы в прозе, поэтому и `.ru.md` с английским, и основной файл с русским дают ошибку. Проверено двумя фикстурами — перепутанная пара `SKILL` и перепутанная пара `PROMPT` — каждая даёт ровно ожидаемые ошибки.
- Внешняя проверка проверяет то же свойство по **опубликованным** байтам, а не по локальному дереву, поэтому перепутанность, дошедшая до GitHub, ловится чтением GitHub.
- Прежнее правило парности доказывало только то, что оба файла существуют. Существование — не направление: этот дефект прошёл линтер, контракт документации и аудит, и был найден сверкой пропорций языков.

## [1.2.0] - 2026-10-24

### Добавлено

- Корневые `SKILL.md` / `SKILL.ru.md` — переносимый вход, который устанавливают пользователи: пять шагов от законченной сессии к специализированному окружению, регистрация по рантаймам, стартовый промпт, а режим «роль в сессии» понижен до побочного.
- `tools/install.py` — ставит навык и команду `/agent-prompt-kit` в AutoClaw2 или HARNESS, делает бэкап заменяемого, а `--check` показывает файлы и состояние регистрации. Для SagaAI **отказывается угадывать** и печатает два вопроса, на которые надо ответить.
- `docs/INSTALL.md` / `.ru.md` — замеренная механика по рантаймам: корни навыков и формат файла команды в AutoClaw2, реестр Workspace и индекс сессий в HARNESS, плюс таблица ловушек, где каждая строка соответствует наблюдённому симптому.
- Связанные сессии — полноценный источник: в M3 появляется строка про индекс сессий и два правила (прошлая сессия — свидетельство о том, что было; шум индекса — не свидетельство), в M6 — возможности `session-search` и `workspace-create`.
- Ворота выросли до двенадцати проверок: двенадцатая проверяет **доставку** — каталог по названному пути, честный шаг регистрации, стартовый промпт.
- Три режима отказа (17–19): создано-но-не-установлено, подмена окружения ролью, рассуждение по шуму индекса.
- Десятый инвариант: переиспользуемый результат считается доставленным только когда он зарегистрирован либо назван точный шаг регистрации.

### Изменено

- `M0` теперь называет два выхода — ответ и специализированное окружение, когда работа повторяется, — и называет отказ, который предотвращает: хороший ответ, умирающий вместе с чатом.
- `M10` переписан: раньше это было «заполни карточку» без указания, куда её класть; теперь это процедура из пяти шагов, заканчивающаяся регистрацией и передачей, с таблицей рантаймов: что может модель и что обязан человек.
- README (оба языка) начинается с назначения, а не с механики промпта, и получает раздел «Рантаймы».
- Линтер и внешняя проверка отслеживают десять инвариантов, ворота из двенадцати проверок и наличие `SKILL.md` и `docs/INSTALL.md`.
- Числа в README измерены, а не оценены: бейдж линтера сообщает 27 различных правил, потому что столько инструмент действительно содержит.

### Исправлено

- Документация больше не описывает набор как «вставь это в системный промпт» в качестве основного пути; этот путь один из трёх, остальные два — команды.
- Утверждение «34 проверки контракта» было выдумано в предыдущей версии и заменено измеренным числом.
- В `docs/QA.md` и переводе после автоматической сверки счётчиков появилась дублирующая строка; удалена.

## [1.1.0] - 2026-10-24

### Добавлено

- `M13 — Переиспользование опыта`: до планирования нетривиальной задачи искать в хранилище прежнюю работу; после проверки — записывать. Опыт — гипотеза, никогда не авторитет.
- Четыре вида опыта — запись задачи, рецепт, артефакт, запись провала — с фиксированным заголовком метаданных, чтобы хранилище опрашивалось без чтения всех файлов.
- Проверка применимости из шести вопросов: слепое копирование старого рецепта — самый дешёвый способ воспроизвести старый дефект.
- `tools/experience.py` — хранилище и доставание одной командой: `init`, `add`, `search`, `show`, `check`, `stats`, `deprecate`, `selftest`. Лексическое ранжирование печатает причину каждой позиции; `add` отказывает записи с литералом, похожим на токен, с абсолютным машинным путём или рецепту без `Rollback`.
- `skills/experience-reuse/` — переносимый навык: workflow, правила поиска, чек-лист применимости, четыре шаблона записей, три очищенных примера и политика безопасности и хранения. Каждый файл по-английски и по-русски.
- `memory/` — дом хранилища с правилами, что там уместно, а чего быть не должно.
- Ворота качества выросли с десяти проверок до одиннадцати: доставание выполнено, у каждой переиспользованной записи есть вердикт, ничего чувствительного не попало в хранилище.
- Четыре новых режима отказа (13–16): слепое копирование рецепта, устаревший опыт как истина, хранилище как свалка, два хранилища.
- `prompt_lint.py` теперь принуждает новые контракты: маркеры M13 в двух языках, двенадцать строк ворот, хранилище, инструмент и разделы навыка.

### Изменено

- `M3` — хранилище опыта входит в таблицу источников с приоритетом 5.5 и правилом 7: опыт никогда не встаёт выше текущего репозитория, приложенного материала и явного указания.
- `M5` — в цикл добавлен шаг **Достать** между «Рамкой» и «Планом», а «Запись» теперь решает, заслуживает ли результат записи.
- `M6` — возможности `memory-search` и `memory-write` плюс правило 8: записи опыта проверяемы и никогда не содержат чувствительных значений.
- `M7` — необязательный раздел `## Использованный опыт` и правило 7: переиспользованное называется вместе с адаптацией.
- `M10` — домен может добавлять типы записей, но не менять инварианты M13.
- Девять инвариантов: прежний опыт достаётся до планирования, проверяется до переиспользования, очищается до сохранения.

## [1.0.0] - 2026-10-24

### Добавлено

- `PROMPT.md` — переносимый системный промпт: тринадцать модулей (`M0`–`M12`), у каждого строка самопроверки, плюс восемь инвариантов, действующих в любом домене.
- Карточка задачи и карточка домена как обязательные выходы до работы: тема, практик, набор навыков, факты к проверке и проверяемое определение готовности.
- Поглощение контекста с порядком приоритетов и журналом контекста из пяти колонок — ни одно утверждение не входит в ответ без источника.
- Три метки свидетельств — `[факт]`, `[вывод]`, `[предположение]` — с правилом, что предположение называет последствие.
- Политика инструментов по классам возможностей с явной колонкой деградации и семью правилами безопасности, включая «сначала песочница» и запрет показывать секреты.
- Контракт вывода из пяти разделов, ворота качества из десяти проверок, сообщаемые одной строкой, и таблица двенадцати режимов отказа с противоядиями.
- Протокол специализации: новый домен стоит одну карточку, один файл примеров и одну строку приёмки.
- `examples/EXAMPLES.md` — три несвязанных домена (панель на PHP, служба Windows, документация) на одном промпте без единой правки.
- `tools/prompt_lint.py` — 28 проверок структурных контрактов: последовательность модулей, строки самопроверки, число инвариантов, парность переводов, заготовки, ссылки, секреты, абсолютные пути, висячие ссылки на модули, согласие версий.
- `docs/DESIGN.md`, `docs/ADAPTATION.md`, `docs/QA.md`, `docs/VALIDATION.md` — обоснование, пятнадцатиминутная процедура, человеческий чек-лист ревью и цель, проверенная требование за требованием.
- Русские переводы каждого документа по конвенции `.ru.md`.

### Безопасность

- Набор поставляется без токенов, абсолютных путей машины и личных адресов; линтер роняет сборку при их появлении — так репозиторий применяет к себе правило, которое провозглашает промпт.

[Unreleased]: https://github.com/paulmann/agent-prompt-kit/compare/v1.2.2...HEAD
[1.2.2]: https://github.com/paulmann/agent-prompt-kit/compare/v1.2.1...v1.2.2
[1.2.1]: https://github.com/paulmann/agent-prompt-kit/compare/v1.2.0...v1.2.1
[1.2.0]: https://github.com/paulmann/agent-prompt-kit/compare/v1.1.0...v1.2.0
[1.1.0]: https://github.com/paulmann/agent-prompt-kit/compare/v1.0.0...v1.1.0
[1.0.0]: https://github.com/paulmann/agent-prompt-kit/releases/tag/v1.0.0
