Ouroboros-Logger 0.3.0
Одинаковость поведения теперь проверяется, а не предполагается
79 программ на пяти языках (Python, JavaScript, C, C++, Elixir) прогоняются
дважды — без обмазки и с обмазкой — и три исхода сверяются: вывод, код возврата,
исключение.
Расхождений было 16, стало 0. Отдельно порода .mjs: было 16 отказов из 17,
стало 0.
Инструмент обмазывает сам себя
19 файлов, 206 функций, ни одной поломки — и обмазанная копия проходит все 580
проверок.
Числа
| было | стало | |
|---|---|---|
| проверок | 167 | 580 |
| покрытие с ветвями | 66,3 % | 94 % |
| расхождений при обмазке | 16 из 79 | 0 |
| столкновений опознавателей в C++ | 20 из 20 пар | 0 |
Что починено
- Сервер MCP больше не отвечает успехом на неудачу. Если помощник времени
выполнения не удавалось записать, ответ былok: true, а исходник оставался
переписанным и несобираемым. - Помощник кладётся рядом с файлом, а не в корень черновика. Обмазанный код
ищет его возле себя, поэтому запись вsrc/main.cдавала несобираемый файл —
при ответеok: true. Ломались три языка из пяти: C, C++ и JavaScript. - Длительности в C перестали включать время собственной записи — медиана
односточной функции была 10,00 мкс, стала 0,00. - Опознаватели вызовов в C++ перестали повторяться между процессами.
- Записи влезают в
PIPE_BUF. Вызов с 30 доводами давал строку в 6208 байт,
ядро её рвало, и разборщик молча считал обе половины испорченными. - Шесть средств MCP для C и C++ (
symbol_search,document_symbols,
references,call_hierarchy,describe_symbol,lint_file) перестали быть
объявленными и нерабочими: образ не содержалclangdиclang-tidy, а текст
указаний их не называл. - JavaScript больше не теряет
"use strict", C++ собирается на
return {1, 2, 3}, Python не ломается о#!и строку кодировки.
Что остаётся платой, а не поломкой
- C++ не записывает возвращённый объект классового типа: иначе теряется пропуск
копирования, который язык гарантирует. - Имён доводов нет в записи ни у одного из пяти языков — иначе одна схема на пять
языков не сходится. - Обмазка Python добавляет кадр стека на вызов: глубокая рекурсия мельчает вдвое.
Каждое — с замером и разбором в Границах.
Установка
brew install digitable-lol/tap/ouroboros
# или
uv tool install git+https://github.com/digitable-lol/ouroborosПолный справочник 17 средств MCP снят с живого сервера:
docs/mcp-tools.md.