From 9ce04815d905b9c3cd212b777a9bb8fc4a46faa0 Mon Sep 17 00:00:00 2001 From: Dmitry Prikotov Date: Thu, 24 Sep 2026 21:27:06 +0700 Subject: [PATCH 1/7] =?UTF-8?q?docs(git-workflow):=20describe=20draft=20co?= =?UTF-8?q?mmits=20and=20REST=20merge=20fallback=20/=20=D0=BE=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D0=B0=D1=82=D1=8C=20=D1=87=D0=B5=D1=80=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D1=8B=D0=B5=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8=D1=82=D1=8B=20?= =?UTF-8?q?=D0=B8=20REST-=D0=BE=D0=B1=D1=85=D0=BE=D0=B4=20=D1=81=D0=BB?= =?UTF-8?q?=D0=B8=D1=8F=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/git-workflow/commits.md | 9 +++++++++ docs/git-workflow/pull-request.md | 2 ++ 2 files changed, 11 insertions(+) diff --git a/docs/git-workflow/commits.md b/docs/git-workflow/commits.md index d15ab9f..85d0d09 100644 --- a/docs/git-workflow/commits.md +++ b/docs/git-workflow/commits.md @@ -171,6 +171,15 @@ vendor/bin/validate-commit .git/COMMIT_EDITMSG vendor/bin/validate-commit <(git log -1 --format=%B) ``` +## Черновые коммиты + +Черновой коммит — промежуточная фиксация многоэтапной работы (например, при перезапусках агента-исполнителя по таймауту). Формат остаётся Conventional Commits: отдельного типа `wip` нет, черновик оформляется допустимым типом. + +- Формат: `chore(): wip <что сделано> / черновик <что сделано>`, где `<что сделано>` — короткое описание выполненного этапа. Правила subject сохраняются, кроме повелительного наклонения: его заменяет пометка `wip … / черновик …`. +- Пример: `chore(app-web): wip add buy form step / черновик шага формы покупки`. +- Не вставляй ссылки вида «PR #N:» в subject и тело — парсер трактует их как футер. +- Перед слиянием в основную ветку приведи черновые коммиты к итоговым типам (сквош или переформулировка), чтобы история и changelog остались чистыми. + ## Алгоритм создания коммита 1. Выбери ``. diff --git a/docs/git-workflow/pull-request.md b/docs/git-workflow/pull-request.md index 262a278..25b598c 100644 --- a/docs/git-workflow/pull-request.md +++ b/docs/git-workflow/pull-request.md @@ -115,6 +115,8 @@ package: prikotov/git-workflow - После approval пользователя заверши PR через GitHub (`gh pr merge`). - Запрещено выполнять локальный merge PR-ветки в целевую ветку. +- Если `gh pr merge` падает с GraphQL-ошибкой «Head branch is out of date» (бывает даже при совпадении SHA), смержи через REST API: `gh api repos///pulls//merge -X PUT -f merge_method=squash -f sha=`. +- Head-ветку удаляй только после merge: удаление ветки до слияния автоматически закрывает PR. - Слей PR подготовки обычного релиза или срочного исправления до публикации тега. - PR возврата срочного исправления из `release/x.y.z` в основную ветку слей после выпуска. Не удаляй исходную релизную ветку при слиянии. From 097526a56f3dd1579dbb1d682fd3db10d18f139a Mon Sep 17 00:00:00 2001 From: Dmitry Prikotov Date: Fri, 25 Sep 2026 06:57:41 +0700 Subject: [PATCH 2/7] =?UTF-8?q?docs(git-workflow):=20drop=20REST=20merge?= =?UTF-8?q?=20workaround=20from=20PR=20doc=20/=20=D1=83=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D1=82=D1=8C=20REST-=D0=BE=D0=B1=D1=85=D0=BE=D0=B4=20=D1=81?= =?UTF-8?q?=D0=BB=D0=B8=D1=8F=D0=BD=D0=B8=D1=8F=20=D0=B8=D0=B7=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=20PR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/git-workflow/pull-request.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/git-workflow/pull-request.md b/docs/git-workflow/pull-request.md index 25b598c..2fc62eb 100644 --- a/docs/git-workflow/pull-request.md +++ b/docs/git-workflow/pull-request.md @@ -115,7 +115,6 @@ package: prikotov/git-workflow - После approval пользователя заверши PR через GitHub (`gh pr merge`). - Запрещено выполнять локальный merge PR-ветки в целевую ветку. -- Если `gh pr merge` падает с GraphQL-ошибкой «Head branch is out of date» (бывает даже при совпадении SHA), смержи через REST API: `gh api repos///pulls//merge -X PUT -f merge_method=squash -f sha=`. - Head-ветку удаляй только после merge: удаление ветки до слияния автоматически закрывает PR. - Слей PR подготовки обычного релиза или срочного исправления до публикации тега. - PR возврата срочного исправления из `release/x.y.z` в основную ветку слей после выпуска. Не удаляй исходную релизную ветку при слиянии. From cbec9b9fc8f9c011f0d399dd8698a0678e5c29ba Mon Sep 17 00:00:00 2001 From: Dmitry Prikotov Date: Fri, 25 Sep 2026 07:03:57 +0700 Subject: [PATCH 3/7] =?UTF-8?q?docs(git-workflow):=20drop=20draft=20commit?= =?UTF-8?q?=20cleanup=20rule=20/=20=D1=83=D0=B1=D1=80=D0=B0=D1=82=D1=8C=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D0=BE=20=D1=87=D0=B8=D1=81?= =?UTF-8?q?=D1=82=D0=BA=D0=B8=20=D1=87=D0=B5=D1=80=D0=BD=D0=BE=D0=B2=D1=8B?= =?UTF-8?q?=D1=85=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/git-workflow/commits.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/git-workflow/commits.md b/docs/git-workflow/commits.md index 85d0d09..a893d5e 100644 --- a/docs/git-workflow/commits.md +++ b/docs/git-workflow/commits.md @@ -178,7 +178,6 @@ vendor/bin/validate-commit <(git log -1 --format=%B) - Формат: `chore(): wip <что сделано> / черновик <что сделано>`, где `<что сделано>` — короткое описание выполненного этапа. Правила subject сохраняются, кроме повелительного наклонения: его заменяет пометка `wip … / черновик …`. - Пример: `chore(app-web): wip add buy form step / черновик шага формы покупки`. - Не вставляй ссылки вида «PR #N:» в subject и тело — парсер трактует их как футер. -- Перед слиянием в основную ветку приведи черновые коммиты к итоговым типам (сквош или переформулировка), чтобы история и changelog остались чистыми. ## Алгоритм создания коммита From 5a0beed2b9b983271eb1e8b468f02c96201a5e15 Mon Sep 17 00:00:00 2001 From: Dmitry Prikotov Date: Fri, 25 Sep 2026 07:05:45 +0700 Subject: [PATCH 4/7] =?UTF-8?q?docs(git-workflow):=20drop=20PR=20link=20ru?= =?UTF-8?q?le=20from=20draft=20commits=20/=20=D1=83=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D1=82=D1=8C=20=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D0=BE=20PR-?= =?UTF-8?q?=D1=81=D1=81=D1=8B=D0=BB=D0=BE=D0=BA=20=D0=B8=D0=B7=20=D1=87?= =?UTF-8?q?=D0=B5=D1=80=D0=BD=D0=BE=D0=B2=D1=8B=D1=85=20=D0=BA=D0=BE=D0=BC?= =?UTF-8?q?=D0=BC=D0=B8=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/git-workflow/commits.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/git-workflow/commits.md b/docs/git-workflow/commits.md index a893d5e..34ac3e8 100644 --- a/docs/git-workflow/commits.md +++ b/docs/git-workflow/commits.md @@ -177,7 +177,6 @@ vendor/bin/validate-commit <(git log -1 --format=%B) - Формат: `chore(): wip <что сделано> / черновик <что сделано>`, где `<что сделано>` — короткое описание выполненного этапа. Правила subject сохраняются, кроме повелительного наклонения: его заменяет пометка `wip … / черновик …`. - Пример: `chore(app-web): wip add buy form step / черновик шага формы покупки`. -- Не вставляй ссылки вида «PR #N:» в subject и тело — парсер трактует их как футер. ## Алгоритм создания коммита From 5c9361a422ebb25d8d8b94b9bb2d4c247fe32ebf Mon Sep 17 00:00:00 2001 From: Dmitry Prikotov Date: Fri, 25 Sep 2026 07:24:34 +0700 Subject: [PATCH 5/7] =?UTF-8?q?docs(git-workflow):=20name=20draft=20commit?= =?UTF-8?q?=20actors=20and=20split=20format=20from=20example=20/=20=D0=BD?= =?UTF-8?q?=D0=B0=D0=B7=D0=B2=D0=B0=D1=82=D1=8C=20=D1=81=D1=83=D0=B1=D1=8A?= =?UTF-8?q?=D0=B5=D0=BA=D1=82=D0=BE=D0=B2=20=D1=87=D0=B5=D1=80=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=D0=BE=D0=B3=D0=BE=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8=D1=82?= =?UTF-8?q?=D0=B0=20=D0=B8=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82=20=D0=BE=D1=82=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/git-workflow/commits.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/docs/git-workflow/commits.md b/docs/git-workflow/commits.md index 34ac3e8..0e5a7da 100644 --- a/docs/git-workflow/commits.md +++ b/docs/git-workflow/commits.md @@ -173,10 +173,21 @@ vendor/bin/validate-commit <(git log -1 --format=%B) ## Черновые коммиты -Черновой коммит — промежуточная фиксация многоэтапной работы (например, при перезапусках агента-исполнителя по таймауту). Формат остаётся Conventional Commits: отдельного типа `wip` нет, черновик оформляется допустимым типом. +Черновой коммит — промежуточная фиксация многоэтапной работы, например для сохранения прогресса между рабочими сессиями агента. Коммит делает сам агент-исполнитель после завершённого этапа; если сессия прервалась, сохраняет прогресс тот, кто её перезапускает, — пользователь или внешняя система оркестрации, а не Git. Формат остаётся Conventional Commits: отдельного типа `wip` нет, черновик оформляется допустимым типом. -- Формат: `chore(): wip <что сделано> / черновик <что сделано>`, где `<что сделано>` — короткое описание выполненного этапа. Правила subject сохраняются, кроме повелительного наклонения: его заменяет пометка `wip … / черновик …`. -- Пример: `chore(app-web): wip add buy form step / черновик шага формы покупки`. +### Формат чернового коммита + +```text +chore(): wip <что сделано> / черновик <что сделано> +``` + +`<что сделано>` — короткое описание выполненного этапа. Правила subject сохраняются, кроме повелительного наклонения: его заменяет пометка `wip … / черновик …`. + +### Пример чернового коммита + +```text +chore(app-web): wip add buy form step / черновик шага формы покупки +``` ## Алгоритм создания коммита From f8945c8b643e4d05ad45b020ca9d060f38253137 Mon Sep 17 00:00:00 2001 From: Dmitry Prikotov Date: Fri, 25 Sep 2026 07:38:25 +0700 Subject: [PATCH 6/7] =?UTF-8?q?docs(git-workflow):=20draft=20commits=20are?= =?UTF-8?q?=20author-made=20and=20atomic=20only=20/=20=D1=87=D0=B5=D1=80?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D1=8B=D0=B5=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8?= =?UTF-8?q?=D1=82=D1=8B=20=D1=82=D0=BE=D0=BB=D1=8C=D0=BA=D0=BE=20=D0=B0?= =?UTF-8?q?=D0=B2=D1=82=D0=BE=D1=80=D1=81=D0=BA=D0=B8=D0=B5=20=D0=B8=20?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D0=BC=D0=B0=D1=80=D0=BD=D1=8B=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/git-workflow/commits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/git-workflow/commits.md b/docs/git-workflow/commits.md index 0e5a7da..1956430 100644 --- a/docs/git-workflow/commits.md +++ b/docs/git-workflow/commits.md @@ -173,7 +173,7 @@ vendor/bin/validate-commit <(git log -1 --format=%B) ## Черновые коммиты -Черновой коммит — промежуточная фиксация многоэтапной работы, например для сохранения прогресса между рабочими сессиями агента. Коммит делает сам агент-исполнитель после завершённого этапа; если сессия прервалась, сохраняет прогресс тот, кто её перезапускает, — пользователь или внешняя система оркестрации, а не Git. Формат остаётся Conventional Commits: отдельного типа `wip` нет, черновик оформляется допустимым типом. +Черновой коммит — промежуточная фиксация многоэтапной работы. Его делает сам исполнитель: целенаправленно, на атомарном и логически завершённом этапе. Прерванная сессия (сбой, таймаут) — не повод для чернового коммита чужой рукой: незакоммиченный diff — это состояние, на котором остановилась работа. Формат остаётся Conventional Commits: отдельного типа `wip` нет, черновик оформляется допустимым типом. ### Формат чернового коммита From e2d124fcd99486f072621852033d6d57f9ce3241 Mon Sep 17 00:00:00 2001 From: Dmitry Prikotov Date: Fri, 25 Sep 2026 07:40:35 +0700 Subject: [PATCH 7/7] =?UTF-8?q?docs(git-workflow):=20drop=20interrupted=20?= =?UTF-8?q?session=20note=20from=20draft=20commits=20/=20=D1=83=D0=B1?= =?UTF-8?q?=D1=80=D0=B0=D1=82=D1=8C=20=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D1=87?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BE=20=D0=BF=D1=80=D0=B5=D1=80?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=BD=D0=BE=D0=B9=20=D1=81=D0=B5=D1=81=D1=81?= =?UTF-8?q?=D0=B8=D0=B8=20=D0=B8=D0=B7=20=D1=87=D0=B5=D1=80=D0=BD=D0=BE?= =?UTF-8?q?=D0=B2=D1=8B=D1=85=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8=D1=82=D0=BE?= =?UTF-8?q?=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/git-workflow/commits.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/git-workflow/commits.md b/docs/git-workflow/commits.md index 1956430..dc5e5f3 100644 --- a/docs/git-workflow/commits.md +++ b/docs/git-workflow/commits.md @@ -173,7 +173,7 @@ vendor/bin/validate-commit <(git log -1 --format=%B) ## Черновые коммиты -Черновой коммит — промежуточная фиксация многоэтапной работы. Его делает сам исполнитель: целенаправленно, на атомарном и логически завершённом этапе. Прерванная сессия (сбой, таймаут) — не повод для чернового коммита чужой рукой: незакоммиченный diff — это состояние, на котором остановилась работа. Формат остаётся Conventional Commits: отдельного типа `wip` нет, черновик оформляется допустимым типом. +Черновой коммит — промежуточная фиксация многоэтапной работы. Его делает сам исполнитель: целенаправленно, на атомарном и логически завершённом этапе. Формат остаётся Conventional Commits: отдельного типа `wip` нет, черновик оформляется допустимым типом. ### Формат чернового коммита