EN

skillmem 0.12: 16 инвариантов и две модели, которые их проверяли

Опубликовано: 2026-09-29 · Автор: AI Release · @ai_release1
skillmem 0.12: 16 инвариантов и две модели, которые их проверяли

⚡ Главное за 5 секунд - Суть: skillmem 0.12 — релиз локальной памяти для кодовых агентов, построенный на 16 инвариантах (docs/INVARIANTS.md). Каждый инвариант описывает конкретное обещание: точную формулировку, функцию-держатель и статус на момент релиза. - Где доступно: open source, MCP-сервер поверх SQLite с девятью инструментами mem_*. Одну базу делят Claude Code, Codex, Cursor и другие клиенты. - Ограничение: планка релиза — ноль P1/P2 в классах «данные», «доверие» и «конкурентность»; всё остальное открыто уходит в Known issues. ### 🔍 Что обнаружено В ревью участвовали две модели из разных лабораторий: Codex от OpenAI (в проекте — «Астра») и Claude Opus 5.5 от Anthropic. Они работали около десяти дней: 0.11.0 вышел 17 сентября, 0.12.0 — 27-го. Действовало одно правило: находка без воспроизведения не засчитывается — нужна команда или тест, рассуждение не принимается. Каждый фикс сопровождается тестом, который падает на родительском коммите; это проверяет scripts/release-gate.sh. Property-тесты написаны на hypothesis и используют настоящих конкурентных писателей: отдельные процессы и потоки над одним файлом, без моков блокировок. Самая показательная находка — Windows считает перенаправленный из NUL stdin за консоль, из-за чего команда skillmem write < NUL проходила как одобренная владельцем и сохраняла запись запечатанной. Также нашли: метку времени из будущего на Windows (ломала дебаунс рекапа), обходы рамки «данные, не инструкции» через Unicode-разделители строк, NBSP, невидимые символы и похожие скобки ⨠/⪥, потерю записей после Ctrl-C из-за незакрытой транзакции SQLite и копию базы, которая считала себя оригиналом и чистила его бэкапы. Отдельно исправлены: регистронезависимые ФС (APFS, NTFS) путали дампы и вложения, upgrade отправлял сохранённый GitHub-токен через редирект на другой хост, а на Python до 3.14 Path.is_dir() бросал PermissionError вместо False. ### 💡 Почему это важно Главный вывод предыдущего релиза: ревью модели без критерия — это вкусовщина. Одна придирается к именам, другая — к гонкам, и каждая по-своему права. Стоп-условие «два чистых раунда подряд» сработало, но не отвечало на вопрос, что именно гарантирует программа. Инварианты меняют подход: ревьюер больше не оценивает, хорош ли код, — он берёт конкретное обещание и ищет контрпример. Это практическая польза: у пользователей появляются проверяемые гарантии по данным, доверию и конкурентности, а не абстрактная «чистота». ### 🧩 Контекст skillmem — локальная память для кодовых агентов, MCP-сервер поверх SQLite. На Хабре уже выходили две статьи о нём: про превращение чужого README в правило пользователя и про сорок раундов ревью. В 0.12 сначала появился документ с инвариантами, код пришёл потом — это сознательная инверсия процесса. Итог: тесты выросли примерно с 430 до 2 538, полный CI крутится на Linux, macOS и Windows с Python 3.11–3.13, плюс Docker-проверка. Релиз корректности ломает сценарии, которые работали случайно, поэтому release notes открываются разделом «Before you upgrade». Обе модели работали по фиксированным подпискам, отдельных счетов за токены нет. В Known issues около двадцати пунктов, и у каждого указан нарушенный инвариант.

🔗 Читать на habr.com

🤖 Кратко для ИИ
skillmemMCPSQLiteИИтестирование
📖
Читать гайд по теме
Читать →
← ПредыдущаяMicrosoft удалит мини-приложения Calendar, People и Files из Windows 11Следующая →OpenAI отменила запуск ИИ-модели GPT-6.1 Astra из-за проблем с безопасностью

Источник: habr.com · пост в Telegram