AI-EDT v0.2.35
Исправление, которое нельзя выполнить, теперь так и говорит; справка отвечает по одной операции; найден класс параметров, недостижимых через фасад.
- Исправление против действия интерфейса
- Справка по одной операции
- Параметры, которых клиент не мог обнаружить
- Чего в выпуске нет
- Проверено на стенде
Исправление против действия интерфейса
EDT предлагает на маркере не только правки. Часть вариантов - действия IDE: «Открыть панель структуры документирующего комментария» ничего в исходнике не меняет, а открывает панель. Выполнение такого варианта вне потока отрисовки бросает SWTException: Invalid thread access, и marker_corrections operation=apply отдавал это как The correction failed: Invalid thread access.
Теперь ответ называет, что произошло: вариант является действием интерфейса, выполнить его может только человек в редакторе, ничего не изменено, находка стоит; поле refusedBy несёт тип и сообщение отказавшего исключения. Выполнение в потоке отрисовки решением не является - оно открыло бы панель в редакторе пользователя и не изменило бы файл.
Распознавание идёт по ТИПУ исключения (org.eclipse.swt.*) и только затем по подстроке сообщения: сообщения платформы локализованы.
operation=list больше не утверждает «N findings can be corrected» - формулировка обещала то, чего apply для такого варианта выполнить не может.
Справка по одной операции
edit_metadata operation=help topic=<имя операции> отвечает параметрами этой операции:
| Операция | Параметры |
|---|---|
create_object |
dryRun, name, objectType, projectName, synonym |
set_role_right |
cascadeDependencies, dryRun, ownerFqn, projectName, rightName, targetFqn, value |
Общая схема фасада перечисляет 113 параметров на каждый запрос.
Карта «операция -> параметры» выведена из исходников для всех 250 операций скриптом scripts/check-operation-params.py и упакована в плагин как ресурс. Способы вывода: делегирование берёт схему делегата плюс чтения переписывателя параметров; ветка, работающая на месте, - свои extract*Argument; ветка, получающая локальные переменные, разрешает их назад через два шага присваивания; крупнейший фасад маршрутизирует реестром обработчиков и разбирается отдельно, включая обработчики-пересыльщики.
Затвор в CI падает на операции, чьи параметры установить не удалось. Три операции с законным нулём перечислены с причиной (обработчик отказывает до чтения - MXL cell API отсутствует), пять инструментов вне охвата названы в отчёте docs/tools/operation-parameters.md.
Параметры, которых клиент не мог обнаружить
Схема - единственное место, откуда клиент узнаёт, что параметр существует. Карта показала 47 параметров, которые обработчики читают, а схемы фасадов не объявляют.
Пять из них - ancestorPath, decisions, decisionsPath, decisionsFrom, intent у insights: compare_three_way не мог объединять через фасад, то есть через ту поверхность, которую показывает пресет по умолчанию. Они объявлены.
Остальные 42 записаны в scripts/unadvertised-parameters.txt как планка, которая может только уменьшаться: затвор падает на новом параметре, а не на унаследованных.
Чего в выпуске нет
Параметры из общей схемы не убраны. Наличие справки по операции этого не делает безопасным: клиент, который справку не спрашивает, составляет вызов только по схеме, и обмен контекста на вызовы, которые нельзя написать, - неверный обмен.
Проверено на стенде
EDT 2026.2.0+289.
| Проверка | Результат |
|---|---|
apply варианта-действия интерфейса |
отказ объясняет причину, refusedBy: SWTException: Invalid thread access |
list на проверках без исправлений |
«none has a correction ... and this is not a failure» |
help topic=create_object |
5 параметров |
help topic=no_such_thing_at_all |
отказ перечисляет темы и говорит про имена операций |
| Именованные темы справки | отвечают по-прежнему |
Сборка - 1645 тестов, семь затворов.