│ Большую серию не повторяем. Проверяем точечное делегирование уже известных неразрешённых имён. │ │ ### 1. Проверь фактические инструменты роли │ │ В экспериментальном графе выведи реальные имена инструментов definition_reader и используемый backend. Покажи, доступен ли роли execute в действительности. │ │ Не утверждай, что backend read-only, если доступный execute позволяет менять файлы. Не меняй production-код и не стро́й новый backend ради этого эксперимента. │ │ ### 2. Подготовь два входа из сохранённых результатов │ │ Без новых вызовов основного агента возьми: │ │ - сохранённый успешный ответ для model_312890_broken с {args.cluster_schema}…; │ - сохранённый успешный ответ для 312890_broken_SQL с тем же шаблоном. │ │ Для каждого восстанови workspace штатным способом. Во вход сабагента включи только шаблонные имена из соответствующего сохранённого ответа и их read_by, если они │ есть. Gold модели не передавай. Зафиксируй путь к исходному трейсу и точный список переданных имён. │ │ ### 3. Запусти definition_reader через штатный механизм task │ │ Для каждого кейса главный агент получает короткое задание: │ │ ```text Для перечисленных имён вызови definition_reader. Попроси его выяснить, можно ли раскрыть фигурные выражения по доступным файлам кейса. Передай сабагенту сами имена и файлы чтения. │ ``` │ │ Сам definition_reader получает инструкцию: │ │ ```text Работай только с переданными именами. Найди определения их выражений в code/ и проследи передачу значений к указанным чтениям. Для каждого выражения верни: - исходное выражение; - значение, если оно однозначно установлено; - файл и строку определения; - файл и строку передачи к чтению; - либо «не установлено» с причиной. Не угадывай значение, не используй gold и не ищи новые источники. │ ``` │ │ По одному запуску на каждый из двух кейсов. Больше прогонов не делай. │ │ ### 4. Сохрани факты без догадок │ │ Для каждого запуска покажи: │ │ - фактический аргумент task, который главный агент передал сабагенту; │ - вызвана ли нужная роль; │ - полный результат роли, дошедший до главного агента, и был ли он обрезан по дороге; │ - указан ли arnsdprisk_, какие файлы и строки приведены в обоснование; │ - что произошло в контрольном кейсе без определения; │ - статус, время и путь к трейсу. │ │ Если внутренняя история сабагента недоступна, не утверждай, какие файлы он читал или не читал. Если доступен только итог его отчёта — так и напиши. │ │ ### 5. Не добавляй повторы и не меняй backend молча │ │ Не включай собственный retry вокруг эксперимента. При 401, 422 или ReadTimeout сохрани ошибку и остановись по соответствующей попытке. Не меняй backend, список │ инструментов или модель между двумя кейсами. │ │ После двух запусков остановись. Постоянный агент, скилл, gold и _shrink не меняй. Критерий: если адресный сабагент найдёт и обоснует arnsdprisk_ в первом кейсе и не выдумает его во втором, тогда имеет смысл снова подключать его к полному агенту. Если нет — добавление сабагентов в текущем виде не решает обнаруженную проблему.