660901269653afea26ba9a60eac60b8179d9e8c5
4
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
6609012696
|
вычитка разделена на два прохода: task-form и doc-wording
В уставе стоял заголовок «Форма записи — только для docs/tasks/items/»: условная половина, которая на документе канона молчит, а на задаче включается. Условное правило агент применяет по своему усмотрению, а усмотрение и есть то, чего от него не ждут. Два коротких устава без условий надёжнее одного длинного с ними. Разделены не по охвату — по глубине. Язык проверяется по словам и фразам, поштучно: залог, оценки, стоп-слова, англицизмы, жаргон. Форма записи требует понять, что задача делает, и открыть файл цели, на которую она ссылается, чтобы сверить, какую строку «Завершения» задача двигает. Слитый проход одну половину делает дорогой, а вторую — поверхностной. Отсюда и разные модели: doc-wording на sonnet, task-form на opus. Первый подметает, второй судит смысл, и ровно на суждении обкатка показала провал. Каждый устав отказывается от чужой половины прямо: увиденное не по своей части идёт строкой в границах покрытия, а не находкой. Две проверки одного места расходятся и начинают спорить. Исключение ровно одно и названо: неудачное слово в заголовке судит task-form, потому что заголовок целиком его. У task-form появилось шестое правило, которого не было ни у кого: связь задачи со строкой «Завершения» её цели. Оно единственное читает больше одного файла и единственное смотрит набор, а не запись — строка «Завершения», к которой не относится ни одна поданная задача, докладывается отдельным блоком. Это граница между вычиткой и разбором, проведённая внутри правила. Порог правки переехал в language.md помеченным домом «порог-правки» и копируется в оба устава: правка без нарушенного правила не делается, систематичность нарушения — не довод в его пользу. Дублировать его руками значило бы получить два разных порога через месяц. Копий стало шесть при пяти домах. Порядок вызова — сперва task-form: его находки меняют решение «брать или не брать», а язык меняет только цену чтения. DECISIONS тема 23 (ССС–ФФФ, следствия 91–93). 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> |