Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .github/GIT-CONTRACT.md
Original file line number Diff line number Diff line change
Expand Up @@ -463,6 +463,43 @@ plan не даёт настоящей branch protection (403 везде, см.
origin/develop`) — предупреждение реагирует на КАЖДЫЙ отдельный PR, проверка
предков — на накопленное состояние; полагаться на одно вместо другого нельзя.

### 1.13 Связь коммит↔задача Linear — `gitBranchName`, не изобретённый заново трейлер (добавлено 08.09.2026)

Решение владельца в рамках пересборки системы отчётности (единая система
Linear → лог работ → менеджерский экспорт). Найдено живым разбором
08.09.2026: Linear уже сам генерирует предлагаемое имя ветки для каждой
задачи (поле `gitBranchName`, вида `<user>/tml-<id>-<slug>`), но живой
git-лог по нескольким репозиториям показал, что реальные ветки его
систематически не используют (пример: `feature/prototype-3-evidence-pipeline`
вместо `.../tml-73-...`) — механизм уже встроен, просто не применяется.

**Правило.** Если работа над коммитом/PR связана с конкретной задачей
Linear — имя ветки ДОЛЖНО содержать её идентификатор в форме `tml-<id>`
(регистр неважен), в идеале — буквально скопированное поле `gitBranchName`
из карточки задачи, не придуманное заново.

**Запасной путь.** Если отдельной ветки на задачу нет (мелкий фикс прямо в
существующей ветке, хотфикс, коммит без предварительно созданной задачи) —
идентификатор задачи можно указать git-трейлером в теле коммита:
`Linear: TML-<id>` отдельной строкой, тем же местом, где уже стоит
`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`
Expand Down
Loading