Feedback — опыт сессии, записанный там, где по нему можно действовать
Агент весь день проходит сквозь собственные инструменты: скиллы, которые подошли или увели не туда, описание тула, обещавшее то, чего поверхность не делает, правило, которое было верным и всё равно пропустило случай. Ничто из этого не достигает того, кто эти инструменты держит, — сессия кончается и уносит всё с собой.
Единица — случай, не мнение. «Скилл запутанный» — не повод действовать. «Правило говорит X, я сделал Y, и ничто меня не отклонило» — повод. Фидбэк пригоден тем же, чем пригоден контрпример: случилось конкретное, и оно воспроизводимо настолько, что с ним можно спорить.
Когда срабатывает
Сам, на нетривиальном опыте — не жди, пока попросят. Нетривиально значит: одно из этого действительно случилось с тобой:
- правило существует, ты его читал, и случай всё равно ускользнул;
- описание обещало поведение, которого у поверхности нет, — ты узнал это попыткой хода;
- починка сработала, и ты не можешь сказать, что она достала причину;
- у шага не было собственного знака, и ничто не сказало бы, что он пропущен;
- ты потянулся за инструментом, и он вернул пустоту там, где вещь существовала под другим именем.
И пользователь зовёт его напрямую — /feedback, своими словами. Предложи это, когда он говорит об инструментах что-то, что стоит сохранить и чему больше некуда лечь. Жалоба человека — уже случай; твоя работа — форма, проверка и размещение, никогда не суд о том, считается ли она.
Что его не запускает: сработавшее как задокументировано; трудность, которая была твоей, а не инструмента; предпочтение. Поле, полное «мне бы хотелось», — поле, которого никто не читает.
Прежде чем писать: которую редакцию ты держишь
Скилл не несёт на себе метки своей версии, а установленная копия может отставать от сопровождаемой на несколько выпусков; протухший текст читается так же авторитетно, как текущий, и его дефекты предстают дефектами метода. Сверку редакции установленной поставки несёт iskronify — прогони её прежде, чем докладывать инструкцию скилла неверной, и назови версию поставки первой строкой случая. Избегать надо не заявки «этот скилл неверен» — а заявки «этот скилл неверен» из уст того, кто не проверил, который скилл у него.
Прежде чем писать: не сказано ли это уже
Граф работы долгоживущий и общий для всех делателей контура, поэтому первый ход — не запись, а взгляд. Второй узел, говорящий то, что один уже говорит, раскалывает ответ — и игнорируют именно второй.
iskron_semantic_search(realm=<граф работы>, q=<случай одной фразой>) — одно понятие на запрос, естественной фразой. Мешок терминов — мешок направлений: вся строка становится одним вектором, и центроид между несколькими смыслами не лежит рядом ни с чем. Два понятия — два запроса, никогда не один длиннее. Лексический iskron_search здесь неверный инструмент: его токены матчатся по И и без стемминга, так что многословный запрос возвращает пустоту ровно тогда, когда тебе есть что сказать.
На попадании — допиши новизну в стоящий узел, не открывай второй. Скажи, что ново: ещё один контур, где воспроизвелось, механизм, которого первый рассказ не называл, случай, сужающий или расширяющий. Второе свидетельство стоит больше первого — оно превращает случайность одной сессии в паттерн; записанное дубликатом, оно не стоит ничего.
Почти-попадание — не промах. Узел, покрывающий тот же дефект с другого угла, — попадание. Новый узел открывай только тогда, когда твоё сделало бы существующий узлом о двух вещах.
Форма
Сначала жанр — он решает, как случай будет прочитан:
| Что несёшь | Жанр |
|---|---|
| Правило существует, и случай ускользнул | vyabhichara |
| Описание или обоснование само неверно | hetu-dosha |
| Наблюдение, которое стоит нести, без заявки о дефекте | hint |
| Настоящий вопрос о том, как должно быть | samshaya |
Затем тело, на языке графа, в этом порядке:
- Случай. Где, когда, что на самом деле произошло — конкретно настолько, чтобы с этим можно было спорить.
- Правило, которое должно было поймать, — процитированное дословно, если оно есть. Это несущая часть и самая пропускаемая. «Правила нет» и «правило верно, но его всё равно проскочили» зовут противоположные починки, и различает их только цитата. Случай, подтверждающий правило в четвёртый раз, всё равно стоит записи: он говорит, что проблема не в правиле.
- Где промах на самом деле — что часто не там, где показалось сначала.
- Механизм. Почему это случается, а не что случилось. Шаг без собственного подтверждения пропускается по построению, не по невнимательности; починка, снявшая симптом, учит сама себя. Назови форму — и случай перестанет быть одним инцидентом.
- Что бы это закрыло — критерий, не решение. Чинить будешь не ты.
attrs.posed_by несёт кто и откуда: контур, харнес, дату. Случай, чьё происхождение не проследить, не воспроизвести.
Пиши модус честно. pratyakshita — для того, что видел происходящим; anumita — для выведенного из чтения кода или прозы. Разница — то, что говорит держателю: воспроизводить это или спорить с этим.
Клади в граф работы — адресно
Поле фидбэка — граф, в котором ты работаешь: тот, что назвал AGENTS.md репозитория или вход. Общего поля обратной связи нет: случай, положенный в отдельный граф, где нет ни контура инструмента, ни его стюарда, никто из способных починить не увидит. Контур инструмента, о котором случай, живёт в графе работы — скилл в контуре своей поставки, тул в контуре своей поверхности, дисциплина канала в своей под-границе, — и случай кладётся туда, к тому, кто держит.
Эту работу делают два ребра, и отвечают они на разные вопросы:
- Якорь (
vimarsha_of→ узел инструмента или его контур) решает, где случай находят. Ориентирующийся на этом контуре собирает всё заякоренное под ним; случай, не заякоренный нигде, находим лишь тем, кто читает весь граф. Есть узел самого скилла или тула — якорь на него, не на контур: фокус на контуре и так собирает вопрошания своего охвата. - Адрес (
posed_to→ роль) решает, в чью очередь он входит. Сентинелposed_to="steward"делает прогулку от якоря к стюарду контура за тебя; несколько кандидатов — отказ с перечислением, выбери по нему. Случай о методе вообще, не об одной поставке, адресуется роли владельца продукта.
Одно не заменяет другого: адресованный, но не заякоренный — никогда не всплывает там, где предмет пересматривают; заякоренный, но не адресованный — его никто не держит.
Прочти контур прежде, чем класть. iskron_orient(realm=<граф работы>, focus=<контур инструмента>) показывает узлы и роли, существующие сегодня; узел скилла или тула ищи iskron_search(realm=<граф работы>, q=<имя скилла или тула>). Контура для инструмента нет вовсе — якорь на ближайшую границу, в которой он применяется, и это верно, а не лениво. Якорь на узле, которого нет, хуже отсутствия якоря.
Ты должен случаю рассказ, не починку. Напиши так, чтобы читатель, которого там не было, мог воспроизвести и решить. В сессии, где по нему действуют, тебя не будет.