From 39dd5de857fb91681d2a947c81551552db6562e7 Mon Sep 17 00:00:00 2001 From: Matysh Date: Thu, 13 Aug 2026 12:38:13 +0300 Subject: [PATCH] fix: restore the executable bit on commit-msg, mirror the turn limit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pushing the hook through the GitHub contents API dropped its mode to 100644. assertHookMode caught it on the next commit, which is the gate working as intended — a non-executable commit-msg would simply never run. Also brings dev in line with the turn-limit fix already on main. Issue: #116 User-Visible: no --- .githooks/commit-msg | 0 .github/workflows/process.yml | 19 ++++++++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) mode change 100644 => 100755 .githooks/commit-msg diff --git a/.githooks/commit-msg b/.githooks/commit-msg old mode 100644 new mode 100755 diff --git a/.github/workflows/process.yml b/.github/workflows/process.yml index f6694e3b..4aa0c585 100644 --- a/.github/workflows/process.yml +++ b/.github/workflows/process.yml @@ -84,7 +84,8 @@ jobs: needs: guard if: needs.guard.outputs.stage != '' runs-on: ubuntu-latest - timeout-minutes: 30 + # Время — единственный настоящий ограничитель зациклившегося прогона. + timeout-minutes: 45 steps: - uses: actions/checkout@v4 with: @@ -96,7 +97,7 @@ jobs: # Материал ревью живёт в ветке задачи: ТЗ в docs/specs/ и код коммитятся # в issue/-slug. Если ветка запушена — переключаемся на неё, иначе - # ревьюер прочитает dev и не найдёт того, что должен оценивать. + # ревьюер прочтёт dev и не найдёт того, что должен оценивать. - name: Перейти на ветку задачи env: NUM: ${{ github.event.issue.number }} @@ -149,6 +150,11 @@ jobs: в одном документе и которое не помечено как предположение, — замечание. Не бывает сложной задачи без единого открытого вопроса. + Владельцу задаются только продуктовые вопросы: что человек видит или + делает и каков объём видимых изменений в этом issue. Технический + вопрос, вынесенный владельцу, — тоже замечание: ты его снимаешь и + решаешь по существу в своём вердикте. + Для этапа code: материал — diff по issue. Ручного тестирования в цикле нет, поэтому именно ты отвечаешь на вопрос «оно вообще работает». По каждому AC: либо он доказан автотестом и ты убедился, @@ -176,9 +182,10 @@ jobs: вердикт в формате §7.2: `Вердикт: зелёный/жёлтый/красный · цикл r${{ needs.guard.outputs.cycle }}/${{ needs.guard.outputs.limit }} · High: N · Medium: N → #…` - Затем верни JSON по схеме. + Затем верни JSON по схеме. Это последнее действие и оно обязательно: + без него метка не переставится и конвейер встанет. claude_args: | - --max-turns 40 + --max-turns 150 --allowedTools Read,Grep,Glob,Bash,mcp__github__add_issue_comment,mcp__github__issue_write,mcp__github__issue_read --json-schema '{"type":"object","properties":{"verdict":{"type":"string","enum":["green","yellow","red"]},"high":{"type":"integer"},"medium":{"type":"integer"},"summary":{"type":"string"}},"required":["verdict","high","medium","summary"]}' @@ -223,4 +230,6 @@ jobs: GH_TOKEN: ${{ secrets.HP_PROCESS_TOKEN }} run: | gh issue comment "${{ github.event.issue.number }}" --repo "${{ github.repository }}" \ - --body "Автоматическое ревью не отработало: [прогон](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}). Статусная метка не менялась, задача осталась на месте." + --body "Автоматическое ревью не отработало: [прогон](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}). Статусная метка не менялась, задача осталась на месте. + +Если вердикт выше всё же опубликован — сбой произошёл после него. Перестановку метки в этом случае выполняет чат обслуживания или владелец, но не автор задачи: автор не толкует вердикт о своей же работе."