diff --git a/.github/GIT-CONTRACT.md b/.github/GIT-CONTRACT.md index 562a6468..65546d5c 100644 --- a/.github/GIT-CONTRACT.md +++ b/.github/GIT-CONTRACT.md @@ -463,6 +463,43 @@ plan не даёт настоящей branch protection (403 везде, см. origin/develop`) — предупреждение реагирует на КАЖДЫЙ отдельный PR, проверка предков — на накопленное состояние; полагаться на одно вместо другого нельзя. +### 1.13 Связь коммит↔задача Linear — `gitBranchName`, не изобретённый заново трейлер (добавлено 08.09.2026) + +Решение владельца в рамках пересборки системы отчётности (единая система +Linear → лог работ → менеджерский экспорт). Найдено живым разбором +08.09.2026: Linear уже сам генерирует предлагаемое имя ветки для каждой +задачи (поле `gitBranchName`, вида `/tml--`), но живой +git-лог по нескольким репозиториям показал, что реальные ветки его +систематически не используют (пример: `feature/prototype-3-evidence-pipeline` +вместо `.../tml-73-...`) — механизм уже встроен, просто не применяется. + +**Правило.** Если работа над коммитом/PR связана с конкретной задачей +Linear — имя ветки ДОЛЖНО содержать её идентификатор в форме `tml-` +(регистр неважен), в идеале — буквально скопированное поле `gitBranchName` +из карточки задачи, не придуманное заново. + +**Запасной путь.** Если отдельной ветки на задачу нет (мелкий фикс прямо в +существующей ветке, хотфикс, коммит без предварительно созданной задачи) — +идентификатор задачи можно указать git-трейлером в теле коммита: +`Linear: TML-` отдельной строкой, тем же местом, где уже стоит +`Co-Authored-By:` для агентских коммитов (§1.9/§1.10) — не смешивать в +одну строку. + +**Что это НЕ означает.** Не каждый коммит обязан быть привязан к задаче — +служебные/синхронизирующие коммиты (`docs: sync GIT-CONTRACT.md from +techcon_hub [automated]` и подобные) не несут содержательной работы, которую +имеет смысл трекать отдельной карточкой. Привязка обязательна для коммитов, +закрывающих или продвигающих содержательную задачу — то, что имело бы смысл +показать в «Логе работ» отчёта для менеджмента. + +**Почему не повторяем прежнюю ошибку.** Старая редакция `linear-task-governance.md` +(снята 05.08.2026) требовала обратного — commit-specific permalink ВНУТРИ +описания задачи Linear — и конфликтовала со стандартом самодостаточности +задачи («один комментарий, три строки», без ссылок, которые читатель не +может открыть). Новая связь идёт в обратную сторону: идентификатор задачи — +в git (ветка/трейлер), не git-пермалинк — в задаче. Задача остаётся +человекочитаемой сама по себе. + --- ## 2. Распространение контракта: расширение `knowledge-sync.yml`