86e22d932c2e4e78f94025e44c5fa4a199b0707b
4
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
86e22d932c
|
вычитка раздвоилась: doc-wording для документов, task-wording для записей
Решение ППП говорило: агент называется doc-wording, а не task-wording, потому что правила языка относятся ко всем проектным текстам, а не к одним задачам. Утверждение верно и сегодня — оно и есть причина, по которой правила уехали в shared/. Но из общности правила не следует общность прохода: docs и tasks расходятся самодостаточными плагинами, а самодостаточный плагин не может зависеть от агента соседа. ППП отменено, и отменено не по своей оси. Проходов теперь два, и разведены они по охвату — впервые в этом репозитории. И task-form против вычитки, и doc-consistency против doc-code-drift разведены по глубине; здесь глубина одна, а входы разные. doc-wording читает документы канона, конвенции, ADR, записки разведки и CLAUDE.md; task-wording — items/ и строки индексов, а документы проекта открывает только как словарь, чтобы отличить неизвестный термин от известного. Разрез по охвату дублирует устав, и потому весь общий текст стал домом. Оба судят по одним и тем же девяти правилам; отличаются входом, соседями по границе, машинной проверкой, о которой молчат (docs.py против tasks.py), и способом подстановки — команда edit у задач, редактор у документов. Копий в каждом уставе 151 строка, своего непустого текста 61 и 75. Домом стал и формат доклада — блок вычитка-доклад: форма находки, границы покрытия, пустой доклад. Это контракт прохода, а не правило языка, но лежит он в shared/language.md отдельным разделом: заводить под пятнадцать строк отдельный файл дороже, чем назвать раздел честно. Признак дома здесь не тема, а число потребителей больше одного при обязательной дословности — разойдись два прохода формой доклада, зовущий скилл разбирал бы два формата вместо одного. Ссылки разведены в семи местах: tasks/SKILL.md (таблица двух проходов), task-form (описание и обе границы), doc-code-drift, canon.md (сравнение разрезов), canon/SKILL.md, README дважды. doc-consistency и таблицы канона оставлены на doc-wording — они про документы. Гейт зелёный: копии 13 при 7 домах, фронтматтеров 24, диаграммы. Решение — 50. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
ca71838037
|
агент вычитки переименован в doc-wording и расширен на все документы
Имя пришло из задач, но правила языка относятся ко всем проектным текстам: документам канона, решениям ADR, запискам разведки. Форма записи — вторая половина устава — верна только для файлов docs/tasks/items/, и теперь это сказано заголовком раздела, а не подразумевается. Вход расширен: список файлов или каталог, вперемешку тоже. Обкатка на тестовом наборе из 13 записей показала дыру в пороге вмешательства. Агент нашёл, что раздел «Затрагивает» в нескольких записях называет не только границу, но и её будущее состояние, — и промолчал, объяснив это принятым стилем каталога. Записи писал один агент за один заход: систематичность здесь значит ровно обратное — правило не применялось вовсе. В устав добавлено: одна и та же ошибка в пяти файлах даёт одну находку на весь набор с перечнем, но не даёт права промолчать. Принятым стилем считается только то, что назвал зовущий или что записано в конвенциях проекта. Единственная находка агента попала в слово из собственного скилла. «Цель про станок, а не про игру» — метафора, перенесённая в тестовую запись из tasks/SKILL.md. Проверка показала худшее: «станок» в каноне уже занят, «общий станок» это красная проверка, врывающаяся в замороженный спринт (canon.md, session/SKILL.md). Одно слово в двух смыслах, тот же класс, что и «окружение» в теме 19. Заменено на «работа над инструментом и процессом» — как названа и секция роадмапа. DECISIONS тема 22 (ППП, РРР, следствия 89–90). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
2d69ab691e
|
язык проектных текстов — один дом и информационный стиль
Языковые правила лежали внутри скилла tasks: англицизмы, неизвестные термины, «сложность формулировки — не признак сложности работы». Три пункта из практики, без общей опоры и без ответа на «а что ещё сюда относится». Дом у языка теперь один — canon/references/language.md. Не в tasks, хотя пришли правила оттуда: они относятся к документам канона, решениям ADR, запискам разведки и сообщениям коммитов в той же мере, что к задачам, а каталог задач и сам часть docs/. Раскладка отвечает, где текст лежит, — этот файл отвечает, каким он должен быть словами. Основа — информационный стиль Ильяхова, взятый не целиком. Взято: полезное действие, глагол вместо отглагольного существительного, активный залог, факт вместо оценки, стоп-слова, одна мысль — одно предложение, параллельность, работающий заголовок. Отброшенное названо вслух, и это отдельный раздел. Инфостиль написан для текстов, где читателя надо удержать, а проектный текст читают потому, что надо. Парцелляция ломает причинную связь, а в решении ценность именно в ней. Запрет вводных целиком режет «если» и «в отличие от» — условия, то есть сведения. Скобки в технической записи несут уточнение: имя команды, единицы, слаг. Без этого раздела правило читается как «пиши короче», и первый же агент начинает резать «поэтому» и «иначе». «Снять корону с себя и надеть на клиента» переведено на здешнего читателя: клиент — ты сам через квартал и тот, кто возьмёт задачу. Таблицы англицизмов и жаргона взяты из скилла prepare-jira-text и дополнены; в устав агента они уехали помеченной копией. Устав обязан быть самодостаточным — он не разрешает пути плагина и не ходит по ссылкам, — а два дома у одного правила здесь уже трижды расходились. scripts/copies.py считает теперь 4 копии при 4 домах. У агента вычитки правил стало двенадцать, разделены на форму записи (только для задач) и язык (для любого проектного текста). Находки докладываются в этом порядке: форма меняет решение «брать или не брать», язык — только цену чтения. DECISIONS тема 21 (ЛЛЛ–ООО, следствия 86–88), changelog канона v3 — пункт 6 и шаг переезда «прочитать и ничего не переписывать задним числом». Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
0c8390d774
|
форма записи: заголовок отвечает на вопрос своего типа
Обкатка скилла tasks на выдуманном проекте — консольные крестики-нолики на JavaScript, каталог заведён с нуля тем же скриптом. Форма вылезла раньше содержания, и правки все про неё. Заголовок отвечает на вопрос типа записи, и форм три: цель — утверждение о возможности, задача — глагол в неопределённой форме (допускается «не» перед ним), идея — назывное, без обещания. Причина не стилистическая: описательный заголовок называет состояние, а из состояния не видно, чего от работы ждут — «Ничья объявляется, пока клетки есть» одинаково читается как жалоба и как задание. Отсюда же разница индексов: роадмап — список возможностей, беклог — список работ, и перепутанные формы делают каждый похожим на другой. Механизировано ровно то, что механизируется: check считает заголовки, где первое слово не на -ть/-ти/-чь, и печатает число в блоке здоровья. Замечанием на файл нельзя — эвристика грубая, а на 97 записях двух живых проектов это поток одинаковых строк, после которого пропускают весь блок. Годность формулировки судит отдельный агент task-wording, а не чек-лист в скилле: сейчас формулировку пишет и проверяет один агент в одном контексте, а самопроверка текста слабее всего там, где формулировка казалась удачной при написании. Он ничего не правит — возвращает готовые формулировки, и заголовок с «зачем» показываются человеку, потому что по ним задачу выбирают. Ничего из того, что ловит tasks.py check, он не трогает намеренно: это был бы второй дом для правила. Заголовки секций — с прописной, после заголовка пустая строка, во всех индексах. Канонические имена стали Готово | Запланировано | Направления | Разработка (англ. Done | Planned | Directions | Tooling), сверка везде по нижнему регистру, так что старые индексы читаются по-прежнему. Отбивка живёт на записи, а не на вставке: через Plan.index проходит каждая правка индекса, а мест вставки три. Имя секции принадлежит заголовку индекса, файл на неё только ссылается. Это разрешает единственную неоднозначность починки — расхождение в одном регистре правится в пользу заголовка. Без него переезд на канон оставил бы «Готово» в роадмапе и «готово» в каждом файле цели, и свести это было бы некому. Регистр правится только у канонических секций: имена секций беклога выбирает проект. Обкатка нашла два дефекта, которых не находили ни линтеры, ни свои проверки. Вставка в пустую секцию съедала отбивку перед следующим заголовком — пропуск пустых строк теперь идёт только до первой непустой. Мета, разорванная пустой строкой, теряла поля молча: check видел лишь следствие («без рода работы») и советовал edit --kind, который дописывал второе такое же поле. Поле меты в теле стало ошибкой с названной причиной, и --fix её намеренно не чинит — какое из двух значений верное, знает человек. DECISIONS тема 20 (ЕЕЕ–ККК, следствия 82–85), changelog канона v3 пополнен двумя пунктами и двумя шагами переезда, TODO — два шага для healthlog и jellybit. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |