diff --git a/DECISIONS.md b/DECISIONS.md index 1eff8fd..7347dd0 100644 --- a/DECISIONS.md +++ b/DECISIONS.md @@ -1687,3 +1687,44 @@ ADR, запискам разведки и сообщениям коммитов впервые используется не для скелетов канона, а чтобы удержать одно правило в двух уставах подрядчиков. Случай тот же: текст обязан быть на месте, потому что подрядчик по ссылкам не ходит. + +## 24. Обкатка двух проходов: два дефекта в собственных правилах (2026-08-04) + +### Что было + +Оба прохода запущены на тестовом наборе из 13 записей. `task-form` дал три +находки и блок «строки Завершения», `doc-wording` — пять находок. Разделение +окупилось сразу: `task-form` поймал ровно тот класс, на котором слитый агент +промолчал (границы, названные будущим состоянием, — тема 22, РРР). + +Но два его правила разошлись с остальным каноном. + +### Решено + +**ХХХ. «Одна мысль — одно предложение» не распространяется на поля меты.** +`doc-wording` предложил разбить «зачем» надвое — а `task-format.md` требует от +«зачем» **одного предложения**: оно повторяется строкой индекса, и второму там не +поместиться. Агент честно выполнил тот документ, который читал; виноват не он, а +правило без оговорки. Оговорка записана и в доме (`language.md`), и в уставе: +тесно — сокращай, но не дели. + +**ЦЦЦ. «Не своё» бывает двух родов, и поступают с ними по-разному.** Чужому +подрядчику — строкой в границах покрытия, чтобы находка не пропала. **Машинной +проверке — вообще ничего, даже строкой**: это не потерянная находка, а уже +проверенное. `doc-wording` отправил в «замечено не по моей части» открытый +вопрос в задаче — а его ловит `tasks.py check`, и строка получилась шумом, +который выглядит как работа. + +### Что из этого следует + +94. **Шестое правило нашло то, чего не искали.** Три строки «Завершения» + оказались **закрыты критериями задач, но не заявлены** самими задачами, а + одна строка цели (`checks-one-command`, «названа в README и в описании + работы над проектом») — закрыта наполовину. Агент назвал оба толкования и + выбирать не стал, как и велено. Выбрано сужение цели: описания работы над + проектом у выдуманной игры нет вовсе, и строка обещала то, чего негде + исполнить. +95. **Спорные находки полезны тем, что показывают спор правил, а не вкуса.** + Из пяти языковых находок три приняты сразу, две отклонены — и обе отклонённые + указывали на одно и то же место канона (правило 4 без оговорки). Вкусовых + находок не было ни одной: порог держится. diff --git a/av-dev-pm/agents/doc-wording.md b/av-dev-pm/agents/doc-wording.md index 2afe578..2154287 100644 --- a/av-dev-pm/agents/doc-wording.md +++ b/av-dev-pm/agents/doc-wording.md @@ -66,6 +66,10 @@ color: green утверждениями делится. **Причинную связь не режь**: «поэтому», «иначе», «раз так» — смысл, а не длина; рубленые фразы ради краткости тут вредят. + **Поля меты не делятся.** «Зачем» в мете задачи по формату — одно + предложение: оно повторяется строкой индекса, и второму там не поместиться. + Тесно — сокращай, но не дели. То же с любым полем вида `- **Имя:** …`. + 5. **Англицизм, у которого есть живое русское слово, заменяется.** @@ -120,15 +124,21 @@ color: green ## Чего ты не проверяешь -**Форму записи задачи** — она у `task-form`, см. выше. +Не своё бывает двух разных родов, и поступают с ними по-разному. -Всё, что ловит `tasks.py check` и `docs.py check`: состав и написание секций, -наличие разделов, число критериев, теги, согласованность индексов, битые ссылки. -Повторять машинную проверку словами — заводить второй дом для одного правила; -если видишь такое, просто не пиши. +**Чужому подрядчику — строкой в границах покрытия.** Форма записи задачи у +`task-form`; увидел — назови в конце одной строкой, чтобы находка не пропала, но +находкой не оформляй. + +**Машинной проверке — вообще ничего.** Всё, что ловят `tasks.py check` и +`docs.py check` (состав и написание секций, наличие разделов, число критериев, +теги, тег `question` при непустом разделе «Вопросы», согласованность индексов, +битые ссылки), **не пиши даже строкой**: это не потерянная находка, а уже +проверенное. Повторять машинную проверку словами — заводить второй дом для +одного правила. **Содержание**: верно ли решение, нужна ли задача, полна ли архитектура. Это -разбор, а не вычитка. +разбор, а не вычитка, — и о нём тоже молчи. ## Порог вмешательства @@ -169,7 +179,7 @@ color: green смотрел и почему, и по чему проверялись термины (документы проекта названы или нет). Отчёт без этой строки читается как «всё вычитано», не сообщая, какая часть осталась нетронутой. Туда же — строка «замечено не по моей части», если бросилась -в глаза форма записи. +в глаза форма записи; машинно проверяемое в неё **не идёт**. Ничего не нашёл — так и скажи одной строкой. Пустой доклад с границами покрытия полезнее выдуманной находки. diff --git a/av-dev-pm/agents/task-form.md b/av-dev-pm/agents/task-form.md index d553e66..86875e5 100644 --- a/av-dev-pm/agents/task-form.md +++ b/av-dev-pm/agents/task-form.md @@ -99,16 +99,22 @@ color: yellow ## Чего ты не проверяешь -**Язык** — он у `doc-wording`, см. выше. +Не своё бывает двух разных родов, и поступают с ними по-разному. -Всё, что ловит `tasks.py check`: наличие разделов, число критериев, состав и -написание секций, теги, согласованность индексов, битые ссылки, форма заголовка -как строки. Повторять машинную проверку словами — заводить второй дом для одного -правила; если видишь такое, просто не пиши. +**Чужому подрядчику — строкой в границах покрытия.** Язык у `doc-wording`; +увидел — назови в конце одной строкой, чтобы находка не пропала, но находкой не +оформляй. + +**Машинной проверке — вообще ничего.** Всё, что ловит `tasks.py check` (наличие +разделов, число критериев, состав и написание секций, теги, тег `question` при +непустом разделе «Вопросы», согласованность индексов, битые ссылки, форма +заголовка как строки), **не пиши даже строкой**: это не потерянная находка, а +уже проверенное. Повторять машинную проверку словами — заводить второй дом для +одного правила. **Содержание работы**: нужна ли задача, верно ли выбрана цель, не крупна ли она, достаточна ли декомпозиция. Шестое правило подходит к этому близко и -останавливается там, где кончается сверка с текстом цели. +останавливается там, где кончается сверка с текстом цели. Об этом молчи. ## Порог вмешательства @@ -151,7 +157,8 @@ color: yellow В конце — **границы покрытия**: сколько записей просмотрено из скольких, какие цели открыты, какие не смотрел и почему. Отчёт без этой строки читается как «беклог проверен», не сообщая, какая его часть осталась нетронутой. Туда же — -строка «замечено не по моей части», если бросился в глаза язык. +строка «замечено не по моей части», если бросился в глаза язык; машинно +проверяемое в неё **не идёт**. Ничего не нашёл — так и скажи одной строкой. Пустой доклад с границами покрытия полезнее выдуманной находки. diff --git a/av-dev-pm/skills/canon/references/language.md b/av-dev-pm/skills/canon/references/language.md index 8ab438b..a35de1d 100644 --- a/av-dev-pm/skills/canon/references/language.md +++ b/av-dev-pm/skills/canon/references/language.md @@ -59,6 +59,11 @@ утверждения, делится. Придаточное, которое можно вынести в отдельную фразу, выносится. +Исключение — **поля, которым формат отвёл одно предложение**. «Зачем» в мете +задачи именно такое: оно повторяется строкой индекса, и второе предложение там +просто не поместится. Такое поле либо укладывается в одну фразу, либо +сокращается, но не делится. + **Параллельность.** Однородное пишется одинаково: пункты списка — одной грамматической формой, разделы одного вида — одним порядком, заголовки одного уровня — одним типом фразы. Разнобой читатель принимает за разницу по существу и