Skip to content

Ouroboros-Logger 0.3.0

Choose a tag to compare

@the-homeless-god the-homeless-god released this 29 Aug 09:06
· 106 commits to main since this release

Одинаковость поведения теперь проверяется, а не предполагается

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.