eve правим сами и не ждём upstream
Решение владельца 10.10.2026. Частично заменяет ADR-0019 и пересматривает строку ADR-0008 «своего рантайма плагинов Ива не пишет: он принадлежит eve upstream».
Слова владельца: если eve нам мешает, мы её переписываем; обновлений upstream не ждём, они медленные, и eve расходится с нами по философии; eve пользуемся, но переписываем её так, как нам нужно.
Что решено
eve — часть Ивы: Ива ею пользуется и её правит. Где eve мешает опыту человека или нашему устройству, мы меняем код eve сами, а не обходим его снаружи и не ждём upstream.
- Правки живут обычными коммитами в собственной копии
eve/вместе с кодом Ивы. Переезд выполнен по порядку сборки eve: он задевает сборку, установку и обновлятор. - Новую версию eve берём, когда она нам что-то даёт. Обновление — наше решение, а не долг: каждое означает перенос наших правок и прогон тестов границы.
- Issue в upstream заводим, если это дёшево и полезно другим. Ответа не ждём, и работа от него не зависит.
Остаётся в силе из ADR-0019: мерило — опыт человека; то, что eve уже делает хорошо, берём как есть и проверяем запуском; своё решение — один механизм в одном месте для всех провайдеров; каждую нашу правку eve держит тест, который называет изменённое поведение; если новая версия eve сама пришла к нашему решению, своё снимаем.
Что заменяется
Принятое исключение из правила «ошибка модели возвращается модели, ход не падает»
(H3, 20.10.2026): от одного до трёх пустых ответов подряд восстанавливаются
ограниченными повторами; четвёртый пустой ответ завершает ход eve событием
turn.failed. Фоновые ходы Ивы сохраняют понятный исход для владельца через свои
обычные пути доставки (#338): напоминание сохраняет исходный текст и ошибку,
Brief и Insight сообщают о несобранном обзоре, помощник возвращает причину в основной
разговор, Watch сохраняет тишину и пишет причину в журнал. Чатовый ход паркуется
с возможностью повтора владельцем. Предел повторов завершает и случай, когда
модель всегда отвечает пусто.
- ADR-0019, «Отвергнутые альтернативы»: форк eve больше не отвергнут. Цена «все обновления движка придётся вести самим» принята.
- ADR-0019 и
docs/philosophy.md§4: «О расхождении сообщи upstream» — больше не обязательный шаг. - ADR-0008 и
docs/philosophy.md§3: «Своего рантайма плагинов Ива не пишет: контейнер, хуки и жизненный цикл принадлежат eve upstream». Становится: код плагина живёт в eve Extension или в MCP-сервере; чего плагинам не хватает в eve (решающие хуки, экраны без хода модели), дописываем сами — в eve или рядом с ней.
Обоснование
10.10.2026 два запроса упёрлись в старое правило: #274 (свой экран плагина в Telegram без хода
модели) и #285 (хуки, которые решают, а не наблюдают). В eve 0.51.1 обработчик хука возвращает
void и только наблюдает. При старом правиле плагин мог менять поведение Ивы только ходом модели
или правкой Authored tree, которую стирает следующий iva update, а это противоречит правилу
владельца: всё пользовательское живёт в плагинах. Обновление eve 0.51.1 → 0.67.2 владелец отложил
28.09.2026; решающих хуков нет и там. Ожидание upstream оставляло людей без функции на
неизвестный срок.
Цена
Каждая наша правка eve — код, который ведём мы. Чем больше правок, тем дороже перенос на новую версию eve; при своей копии новые версии upstream приходят к нам только переносом. Поэтому каждая правка держится тестом на границе и описана рядом с кодом: что поменяли и почему.
Отвергнутые альтернативы
- Ждать upstream и заводить feature request — человек остаётся без функции на неизвестный срок.
- Обходить eve снаружи (читать её внутренности, второй механизм рядом) — ломается на каждом обновлении и даёт два механизма на одно поведение.