diff --git a/README.md b/README.md index 52e54e3..dc0fde7 100644 --- a/README.md +++ b/README.md @@ -97,7 +97,14 @@ проходами: `doc-wording` по документам, `task-form` и `task-wording` по записям. Выбранный способ реализуется **следующим прогоном**, и запускает его человек: смена сценария по ходу — событие с названным исходом, а не тихий - поворот. Все три сценария лежат справочниками и одинаково — + поворот. + **Письмо уходит агентам:** спеки, код и правки по находкам ревью пишет + отдельный агент по заданию, а оркестратор ставит задание и читает короткий + возврат. Контекст ему нужен под чекпоинт, сверку плана с исходом и доклад — + содержимое тронутых файлов и вывод гейта вытесняют оттуда постановку и + одобренное, и вытесняют молча. Разведка сюда не попадает: её записка и записи + задач и есть исход, из которого собирается доклад. + Все три сценария лежат справочниками и одинаково — `references/solve.md`, `references/maintain.md` и `references/research.md`; в самом скилле только вход, развилка и правила, не зависящие от сценария; - `code-review` — конвейер ревью **по темам**: документ проекта либо заводит diff --git a/av-dev/skills/code-resolve/SKILL.md b/av-dev/skills/code-resolve/SKILL.md index f5a532d..c278fb8 100644 --- a/av-dev/skills/code-resolve/SKILL.md +++ b/av-dev/skills/code-resolve/SKILL.md @@ -276,6 +276,103 @@ flowchart TD Схема — **сводка**: содержание сценариев в их справочниках, и при расхождении прав справочник. +## Кто пишет: письмо уходит агентам + +**Своими руками этот скилл не пишет ничего** — ни спек, ни кода, ни правок по +находкам ревью. Каждую такую работу выполняет **отдельный агент**: оркестратор +ставит задание и читает возврат. Дальше эта работа зовётся **письмом** — всё, что +скилл написал бы сам, если бы писал. + +Причина про контекст, и она одна. Оркестратор ведёт задачу целиком: выбрал +сценарий, собирает чекпоинт, сверяет план прогона с исходом, пишет доклад, — а +для всего этого надо помнить постановку, критерии приёмки и то, что человек +одобрил. Письмо тянет в контекст ровно то, чего в докладе не будет ни строкой: +содержимое тронутых файлов, вывод линтеров и гейта, перебранные варианты правки. +Забитый этим контекст теряет одобренное и постановку — и теряет **молча**: доклад +остаётся связным, а сверять его уже не с чем. + +**Разведённость тут ни при чём**, и путать два довода нельзя. Агент пишет по +заданию оркестратора и отвечает перед ним; разведён с автором тот, кто работу +**судит**, — разметчик и проходы ревью. + +| Работа | Где шаг | +| --- | --- | +| предложение и дельта-спеки — `opsx:propose` | [solve](references/solve.md), шаг 2 | +| правки спек и дизайна по находкам ревью дизайна | [solve](references/solve.md), шаг 4 | +| код — `opsx:apply`, вместе с гейтом до зелёного и поведенческой верификацией | [solve](references/solve.md), шаг 6 | +| правки по находкам триажа, помеченным `инлайн` | [solve](references/solve.md), шаг 7; [maintain](references/maintain.md), шаг 4 | +| правка оснастки в сценарии обслуживания | [maintain](references/maintain.md), шаг 2 | + +**Остальное остаётся оркестратору, и перечень закрыт:** выбор сценария и стопы, +чекпоинт, вызовы `av-dev:code-review`, `av-dev:doc-sync`, `av-dev-git:commit` и +`av-dev:task-track`, сверка плана с исходом, урожай и доклад. Ни одна из этих +работ не пишет файлов проекта — они и есть та работа, ради которой контекст +берегут. + +**Разведка сюда не попадает вовсе.** Её письмо — записка в документы канона и +записи задач, то есть тот самый текст, из которого собираются чекпоинт вариантов +и доклад. Отдать его агенту значило бы получить обратно пересказом то, что +и так надо держать целиком. + +### Устава у этих агентов нет + +Проходы ревью ходят уставами (`av-dev/agents/`), потому что уставом задаётся +**суждение**: что искать и что считать находкой. Здесь суждения нет — работа +нормирована скиллами `opsx:*`, конвенциями проекта и находками триажа, а устав +стал бы вторым домом того же и разошёлся бы с ним молча. Зовётся агент общего +назначения, и всё, чем один его прогон отличается от другого, приходит заданием. + +### Задание собирается адресами + +**Агент не видел разговора.** Он не знает ни постановки, ни выбранного сценария, +ни того, что уже одобрено на чекпоинте. Поэтому задание самодостаточно, а вещи в +нём называются **адресами, а не пересказом** — по тому же правилу, по которому +проход ревью получает дом темы путём и разделом. В задании: + +- корень проекта, текущая ветка и база диффа. Ветку агент не создаёт и не + переключает, не пушит — правило то же, что у скилла; +- **что делать**: файл задачи либо её текст дословно, критерии приёмки, + идентификатор change; +- **что читать**: `CLAUDE.md`, конвенции проекта, дельта-спеки change; +- **находки — дословно**, как их вернул триаж или ревью дизайна, вместе с + оракулом; +- **границы**: правится названное, соседнее не улучшается заодно; развилок агент + не решает, задач не заводит, ничего не коммитит и наружу не ходит — правило + необратимого действует и на него (раздел «Когда спрашивать вне чекпоинта»); +- **чем кончает**: гейт зелёный, а если задача меняет наблюдаемое поведение — + прогнана поведенческая верификация. + +**Пересказ находки — самая дорогая экономия из возможных.** Находка триажа несёт +оракул, и пересказ теряет как раз его: агент чинит то, что понял, гейт зеленеет, +а в отчёт уезжает «исправлено». + +### Возврат — не длиннее экрана + +Агент возвращает: что сделано, **адресами** тронутого; исход гейта и чем он +прогнан; что не удалось и почему; вопросы, если по заданию их не разрешить. +Диффа, пересказа кода и логов в возврате нет — иначе экономия, ради которой шаг +и вынесен, отменяется в момент возврата. + +**Возврату на слово не верят, и перечитывать за агентом дифф для этого не надо.** +Верят независимым артефактам: зелёному гейту, отчёту триажа, ревью следующего +шага. Своей прозе здесь верить нельзя ровно по той причине, по которой ей не +верит конвейер ревью, — её написал тот, кто мог и пропустить. + +**Артефакты, написанные для человека, оркестратор читает сам**: `proposal.md` и +`design.md` нужны ему на чекпоинте. Это не переполнение контекста, а его работа. + +### Один агент на шаг, а не на файл + +Нарезка по файлам разводит одну правку по разным контекстам, и сходиться она +будет в гейте, то есть после. Повторный проход того же шага — **новое задание**, +а не продолжение прежнего: агент прежнего не помнит, и рассчитывать на его память +нельзя. + +**Правило про контекст, а не про полномочия.** Агент упал, вернул не то или не +понял задания — повтори задание, дописав то, чего в нём не хватило. Не вышло и во +второй раз — делай сам и **скажи это строкой доклада**: прогон стоил дороже, чем +должен, и это факт для человека, а не стоп. + ## Автономность и плановый стоп **У двух сценариев ровно один плановый стоп**, и стоят они в разных местах: @@ -395,6 +492,8 @@ change, у второго — сверенный состав гейта и си - **постановка пришла текстом** — сказать это прямо: как она понята, что `ready` не гонялся и что закрывать было нечего; - что сделано, какие вопросы записаны и куда; +- **шаг письма, сделанный не агентом, а тобой** — с причиной: раздел «Кто пишет» + требует называть это строкой, а не молча; - чего проверить или узнать **не удалось**. Сверх ядра каждый сценарий добавляет своё: [solve.md](references/solve.md) — diff --git a/av-dev/skills/code-resolve/references/maintain.md b/av-dev/skills/code-resolve/references/maintain.md index deb5cec..4c353cd 100644 --- a/av-dev/skills/code-resolve/references/maintain.md +++ b/av-dev/skills/code-resolve/references/maintain.md @@ -170,7 +170,7 @@ flowchart TD in["сценарий выбран: обслуживание"] s1["1. прочитать задачу
критерии приёмки и границы"] - s2["2. сделать правку
гейт тронут — сверить состав, не цвет"] + s2["2. правка агентом
гейт тронут — состав снять до правки"] s3["3. гейт проекта до зелёного"] s4["4. ревью фиксированным планом
av-dev:code-review, без change"] s5["5. синк документации — av-dev:doc-sync"] @@ -259,8 +259,11 @@ ADR: список источников канон закрыл двумя — а ### 2. Сделать правку -Код и конфиги — по конвенциям проекта. Правка по размеру задачи: чинится названное в записи, соседнее не улучшается -заодно. +**Правку делает агент** (SKILL.md, «Кто пишет: письмо уходит агентам»): задание +несёт постановку, конвенции проекта, границы правки и требование довести гейт до +зелёного; возврат — адреса тронутого и исход гейта. Код и конфиги — по конвенциям +проекта. Правка по размеру задачи: чинится названное в записи, соседнее не +улучшается заодно. **Гейта ещё нет — сказать это, а не изображать сверку.** Первые шаги плана стройки заводят гейт, сборку и хуки: у них нет ни «до», ни «прежнего», и @@ -277,6 +280,11 @@ ADR: список источников канон закрыл двумя — а их семантикой гейта в `CLAUDE.md`. Снимай исходное состояние **до** правки, по тому, как проект это описал. +**Исходный состав снимаешь ты, а не агент, и это не мелочь.** Сверка «до и +после» уезжает в твой доклад, а снятое тем же, кто правил, сверкой не является: +агент вернёт состав, который получился, и назовёт его исходным. Снимок делается +до того, как задание ушло. + **Проект состав не описал — скажи строкой доклада, что сверен только цвет.** Обходного пути не выдумывай: угаданный состав хуже отсутствующего, потому что читается как сверенный. Это же строка и повод — предложить проекту дописать слот @@ -353,8 +361,9 @@ Change ты не передаёшь — его нет. Отчёт, из которого исчезло «что не смотрел никто», сообщает «проверено», не сообщая, что именно. -Отработка — как в решении: помеченное `инлайн` чини сам и не логируй, `развилка` -— вопросом в запись. После правок снова гейт. Отложенные находки собери в секцию +Отработка — как в решении: помеченное `инлайн` чинит **агент** (SKILL.md, «Кто +пишет»), находки уходят ему дословно с оракулом, гейт после правок гоняет он же, +логировать их не надо; `развилка` — вопросом в запись, и агенту она не отдаётся. Отложенные находки собери в секцию доклада `Урожай`; задачи из него заводит `av-dev:task-track`, не ты. ### 5. Синк документации — главный шаг этого сценария diff --git a/av-dev/skills/code-resolve/references/research.md b/av-dev/skills/code-resolve/references/research.md index 922ecea..7c2e17b 100644 --- a/av-dev/skills/code-resolve/references/research.md +++ b/av-dev/skills/code-resolve/references/research.md @@ -30,6 +30,13 @@ (задачи заводятся и уточняются), `av-dev-git:commit`. Правило обращения к соседям и правило «чего может не быть» — общие, они в [SKILL.md](../SKILL.md). +**Агентов-исполнителей у разведки нет** (SKILL.md, «Кто пишет: письмо уходит +агентам»), и это не пропуск. Её письмо — записка в документы канона и записи +задач, то есть тот самый текст, из которого собираются чекпоинт вариантов и +доклад: отданный агенту, он вернулся бы пересказом. Вычитку разведка всё же +отдаёт — `doc-wording`, `task-form`, `task-wording`: там судят написанное, а не +пишут. + **Отсутствие канона бьёт по разведке сильнее, чем по решению**, и сказать об этом строкой мало: без документов у ответа нет дома, и знание осядет в переписке. Назови исход и предложи `av-dev:canon`; работу не останавливай, но адрес diff --git a/av-dev/skills/code-resolve/references/solve.md b/av-dev/skills/code-resolve/references/solve.md index bb2540e..f27c81b 100644 --- a/av-dev/skills/code-resolve/references/solve.md +++ b/av-dev/skills/code-resolve/references/solve.md @@ -15,7 +15,8 @@ дизайна. Тонкая обёртка над каноническими скиллами `opsx:propose` / `opsx:apply` / -`opsx:archive` — зови их через Skill, не переизобретай их шаги. Ревью — скилл +`opsx:archive` — их шаги не переизобретаются, а **зовёт их агент**, не ты +(SKILL.md, «Кто пишет: письмо уходит агентам»). Ревью — скилл `av-dev:code-review`; он же держит правило выбора метки, а называет её агент `review-scope` — один раз на задачу, для обеих стадий ревью. @@ -25,12 +26,12 @@ flowchart TD in["сценарий выбран: решение"] s1["1. прочитать задачу
критерии приёмки выписать сразу"] - s2["2. opsx:propose — change, дельта-спеки, tasks.md"] + s2["2. opsx:propose — change, дельта-спеки,
tasks.md — агентом"] s3["3. разметка — review-scope:
размер, сложность, метка, план тем"] - s4["4. ревью дизайна, состав по метке
+ отработка замечаний"] + s4["4. ревью дизайна, состав по метке
+ отработка замечаний агентом"] s5(["5. ЧЕКПОИНТ: объяснение
в чём проблема, как решаем,
чем рискуем"]) - s6["6. opsx:apply — код, гейт,
поведенческая верификация"] - s7["7. ревью кода, та же метка
+ отработка замечаний"] + s6["6. opsx:apply — код, гейт,
поведенческая верификация — агентом"] + s7["7. ревью кода, та же метка
+ отработка замечаний агентом"] s8["8. opsx:archive"] s9["9. синк документации — av-dev:doc-sync"] s10["10. коммит работы — av-dev-git:commit"] @@ -103,17 +104,28 @@ flowchart TD ### 2. Завести change — `opsx:propose` -Вызови Skill `opsx:propose`. Получаем `proposal.md`, дизайн, дельта-спеки -(`ADDED`/`MODIFIED`/`REMOVED Requirements`), `tasks.md`. Каждое `### Requirement` -содержит `SHALL`/`MUST`; структурные заголовки английские, сценарии -`GIVEN/WHEN/THEN`. Прогони `openspec validate --strict `. +**Скилл `opsx:propose` зовёт агент** (SKILL.md, «Кто пишет»). В задании: +постановка — файл задачи либо её текст дословно, — критерии приёмки, если они +были, и требование прогнать `openspec validate --strict `. Возврат: +идентификатор change, дельты адресами и исход валидации. -Критерии приёмки задачи, если они были, копируются в `tasks.md` отдельным блоком. -Задаче предшествовала разведка — её записка и отвергнутые варианты **уже -записаны** в документах канона (`docs/research/`, `docs/adr/`): сошлись на них из -`design.md`, а не переписывай второй раз. Варианты, разобранные без разведки -(способ был очевиден, но у него оказались оттенки), — в `design.md`, с причиной -отказа по каждому отвергнутому. +Шаг оставляет `proposal.md`, дизайн, дельта-спеки +(`ADDED`/`MODIFIED`/`REMOVED Requirements`) и `tasks.md`. Форму держит сам +`opsx:propose`, и требования к ней идут агенту заданием: каждое +`### Requirement` содержит `SHALL`/`MUST`, структурные заголовки английские, +сценарии — `GIVEN/WHEN/THEN`. + +**`proposal.md` и `design.md` после возврата читаешь сам** — из них собирается +чекпоинт шага 5, и держать их в контексте это твоя работа, а не переполнение. +Кода нет, читать нечего сверх них. + +Ещё две вещи задание называет прямо, иначе их не сделает никто. **Критерии +приёмки задачи, если они были, копируются в `tasks.md` отдельным блоком.** +И **записанное разведкой не переписывается второй раз**: задаче предшествовала +разведка — её записка и отвергнутые варианты уже лежат в документах канона +(`docs/research/`, `docs/adr/`), и `design.md` на них ссылается. Варианты, +разобранные без разведки (способ был очевиден, но у него оказались оттенки), — в +`design.md`, с причиной отказа по каждому отвергнутому. **`proposal.md` пишется так, чтобы его понял человек, не читавший спек.** Это не стилистическое пожелание: из него собирается чекпоинт шага 5, и переписывать его @@ -175,10 +187,15 @@ flowchart TD **Отработка замечаний, и она идёт до чекпоинта, а не после:** -- мелочь и явные улучшения — правь сам в спеках и дизайне; +- мелочь и явные улучшения — правкой спек и дизайна, и её делает **агент** + (SKILL.md, «Кто пишет»): находки уходят ему дословно, вместе с + идентификатором change и требованием перепрогнать + `openspec validate --strict `; - развилки (компромисс, scope, инвариант) — **не в запись, а в чекпоинт**: он - следующим шагом, и это ровно то, ради чего он поставлен здесь; -- после правок перепрогони `openspec validate --strict `. + следующим шагом, и это ровно то, ради чего он поставлен здесь. Агенту развилка + не отдаётся вовсе: решает её человек, а не тот, кто правит спеку; +- возврат агента — адреса тронутых дельт и исход валидации; правленые спеки + перечитываешь по адресам, если чекпоинт опирается на изменившееся. ### 5. Чекпоинт: объяснение @@ -234,7 +251,12 @@ flowchart TD ### 6. Написать код — `opsx:apply` -Вызови Skill `opsx:apply` для реализации `tasks.md`. Код — по конвенциям проекта +**Код пишет агент, и в его же задании лежит весь этот раздел** (SKILL.md, «Кто +пишет»): вызов `opsx:apply` для реализации `tasks.md`, гейт до зелёного, +поведенческая верификация. Возврат — адреса тронутого, исход гейта и строка +верификации; диффа в нём нет. + +Код — по конвенциям проекта (каталог `docs/conventions/`). Меняешь схему — обнови её описание в документации тем же change, если проект этого требует: гейт обычно это проверяет. @@ -245,8 +267,8 @@ flowchart TD изменение вживую командой из раздела команд `CLAUDE.md` и прогони сценарий. Пропусти только для чисто внутренних правок без наблюдаемого рантайма. -**Сервис не оставляем лежать.** Если запуск упал — почини или откати до конца -шага. +**Сервис не оставляем лежать.** Если запуск упал — агент чинит или откатывает до +конца шага; возврат с лежащим сервисом — незакрытый шаг, а не исход. ### 7. Ревью кода — та же метка @@ -294,8 +316,11 @@ flowchart TD #### Отработка, и здесь появляется одно новое правило -Помеченное `инлайн` чини сам и не логируй. `развилка` — вопросом в запись (он уже -сформулирован триажем, его остаётся перенести). После правок — снова гейт. +Помеченное `инлайн` чинит **агент** (SKILL.md, «Кто пишет»): находки уходят ему +**дословно, вместе с оракулом**, одним заданием на весь урожай инлайна, и гейт +после правок гоняет он же. Логировать их по-прежнему не надо. `развилка` — +вопросом в запись (он уже сформулирован триажем, его остаётся перенести), и +агенту она не отдаётся. **Находка, отменяющая одобренный дизайн, отменяет и одобрение.** Признак проверяемый: **меняются ли дельта-спеки**. @@ -303,7 +328,8 @@ flowchart TD - не меняются — находка внутри дизайна, дожимай сам, это обычная отработка; - меняются — решение стало другим, а одобрено было прежнее. Повтори шаг 3 (разметка выведена из дельта-спек) и **вернись на чекпоинт шага 5** с тем, что - изменилось и почему. + изменилось и почему. Такая находка агенту не отдаётся ни при каких условиях: + она отменяет одобрение, а это разговор с человеком. **Это правило старше правила о развилке.** Находка класса `развилка`, чьё основание — «надо менять спеку», подпадает под оба; побеждает возврат на diff --git a/decisions/72-writing-delegated-to-agents.md b/decisions/72-writing-delegated-to-agents.md new file mode 100644 index 0000000..7262c3d --- /dev/null +++ b/decisions/72-writing-delegated-to-agents.md @@ -0,0 +1,89 @@ +# 72. Письмо уходит агентам: оркестратор ставит задание и читает возврат (2026-08-22) + +## Что было + +`code-resolve` вёл задачу и писал её сам. В одном контексте лежало всё: выбор +сценария, вызов `opsx:propose`, разметка, ревью дизайна, чекпоинт, `opsx:apply`, +правки по находкам триажа, сверка плана прогона с исходом и доклад. Конвейер +ревью своё письмо давно отдал — проходы ходят агентами по уставам, — а письмо +самого скилла не было вынесено никуда. + +Цена оказалась не в токенах, а в том, что вытесняется. Написание тянет в контекст +содержимое тронутых файлов, вывод линтеров и гейта, перебранные варианты правки — +всё то, чего в докладе не будет ни строкой. Вытесняются оттуда постановка, +критерии приёмки и одобренное на чекпоинте, то есть ровно то, по чему оркестратор +и обязан сверять исход. Вытесняются **молча**: доклад остаётся связным, а сверять +его уже не с чем. + +## Решено + +**Р265. Спеки, код и правки по находкам ревью пишет отдельный агент.** +Оркестратор ставит задание и читает возврат. Перечень закрыт и перечислен в +`code-resolve/SKILL.md`: предложение и дельта-спеки (`opsx:propose`), правки спек +и дизайна по ревью дизайна, код (`opsx:apply` вместе с гейтом и поведенческой +верификацией), правки по находкам триажа, помеченным `инлайн`, и правка оснастки +в сценарии обслуживания. + +**Р266. Довод — контекст, а не разведённость, и путать их нельзя.** Агент пишет +по заданию оркестратора и отвечает перед ним; разведён с автором тот, кто работу +**судит**, — разметчик и проходы ревью ([тема 41](41-task-sizing-once.md)). +Вынос письма не добавляет разведённости ни на грамм и не заменяет собой ни одну +проверку. + +**Р267. Устава у этих агентов нет.** Уставом задаётся **суждение**: что искать и +что считать находкой. Здесь суждения нет — работа нормирована скиллами `opsx:*`, +конвенциями проекта и находками триажа, и устав стал бы вторым домом того же, +разошёлся бы с ним молча. Зовётся агент общего назначения, а всё, чем один прогон +отличается от другого, приходит заданием. + +**Р268. Задание самодостаточно и собирается адресами.** Агент не видел разговора: +не знает ни постановки, ни сценария, ни того, что одобрено. Поэтому в задании +лежат корень проекта, ветка и база диффа, постановка или её текст дословно, +критерии приёмки, идентификатор change, что читать, границы правки и признак +готовности — зелёный гейт, а при наблюдаемом поведении ещё и верификация. +**Находки уходят дословно, вместе с оракулом**: пересказ теряет как раз оракул, +агент чинит то, что понял, гейт зеленеет, а в отчёт уезжает «исправлено». + +**Р269. Возврат — не длиннее экрана, и диффа в нём нет.** Что сделано, адресами +тронутого; исход гейта и чем он прогнан; что не удалось; вопросы, если по заданию +их не разрешить. Возврат с диффом отменяет экономию в момент возврата — то есть +делает вынос бессмысленным. + +**Р270. Возврату на слово не верят, и дифф за агентом для этого не перечитывают.** +Верят независимым артефактам: зелёному гейту, отчёту триажа, ревью следующего +шага. Основание то же, по которому конвейер не верит прозе прохода, — её написал +тот, кто мог и пропустить. + +**Р271. Артефакты, написанные для человека, оркестратор читает сам.** +`proposal.md` и `design.md` нужны ему на чекпоинте, и это его работа, а не +переполнение контекста: они и написаны для того, кто спек не читал. + +**Р272. Разведка в перечень не попадает вовсе.** Её письмо — записка в документы +канона и записи задач, то есть тот самый текст, из которого собираются чекпоинт +вариантов и доклад. Отданный агенту, он вернулся бы пересказом — и пересказ +пришлось бы держать в контексте вместо оригинала. + +**Р273. Правило про контекст, а не про полномочия.** Агент упал, вернул не то или +не понял задания — задание повторяется с дописанным; не вышло и во второй раз, +оркестратор делает сам и **говорит это строкой доклада**. Стопом это не является: +прогон стоил дороже, чем должен, и это факт для человека. + +## Следствия + +**С250. Доклад получил обязательную строку** — шаг письма, сделанный не агентом, +с причиной. Иначе нарушение правила неотличимо от его соблюдения, а дороже всего +здесь стоит именно молчаливый возврат к старому порядку. + +**С251. Нарезка — по шагу, а не по файлу.** Нарезка по файлам разводит одну правку +по разным контекстам, и сходиться она будет в гейте, то есть после. Повторный +проход того же шага — новое задание: агент прежнего не помнит. + +**С252. Состав гейта в обслуживании снимает оркестратор, и снимает до правки.** +Сверка «до и после» уезжает в его доклад, а снятое тем же, кто правил, сверкой не +является: агент вернёт получившийся состав и назовёт его исходным. + +**С253. Раскладка не повышалась.** Правило живёт в прозе плагина — в скилле +`code-resolve` и его справочниках — и в скелеты, уезжающие в репозитории проектов, +не попадает. Признак тот же, что у снятого «интейка» +([тема 71](71-language-model-popular-science.md)): версия нужна тогда, когда +меняется то, что уезжает в проект. diff --git a/decisions/README.md b/decisions/README.md index 4457a78..63cf15b 100644 --- a/decisions/README.md +++ b/decisions/README.md @@ -123,3 +123,4 @@ | 69 | [Счёт корпуса в прозе не пишется](69-corpus-count-not-written.md) | 2026-08-13 | | 70 | [«Провенанс» снят из словаря: одного синонима мало для проверки](70-provenance-word-removed.md) | 2026-08-13 | | 71 | [Образец языка назван прямо; «интейк» снят вслед за «провенансом»](71-language-model-popular-science.md) | 2026-08-13 | +| 72 | [Письмо уходит агентам: оркестратор ставит задание и читает возврат](72-writing-delegated-to-agents.md) | 2026-08-22 |