process: a rereview sets S7-code-review again instead of stripping it (#706)

The label step after integration ran one gh call
`--add-label "$TO" --remove-label "$FROM"`. For the rereview outcome
TO == FROM == S7-code-review, and gh added and removed the same label:
#699 was left without a status and no new round started (run
36491087708).

- scripts/status-label.mjs: the same label is removed and set again
  through relabel from process-reconcile (#555), so the labeled event
  starts the next round and a failed restore fails the step; a
  different label is still one call.
- _process.yml: the step calls the script.
- PROCESS.md: the exact-candidate rule names the relabel.
- test/status-label.test.mjs; mutants rereview-relabel-in-one-call and
  process-label-step-combined-again.

Issue: #706
User-Visible: no
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018qZfe7YS4rqEMKoVeS3GKd
This commit is contained in:
Claude
2026-09-29 07:19:05 +03:00
parent e7fca7b955
commit ae0e516af1
5 changed files with 137 additions and 4 deletions
+6 -3
View File
@@ -1768,10 +1768,13 @@ jobs:
# когда кандидат не слит (конфликт, красный Validate, изменившийся
# patch-id, ушедший dev). Без исхода от скрипта — как раньше: S6.
TO: ${{ (needs.guard.outputs.stage == 'code' && steps.decide.outputs.green == 'true' && steps.merge.outputs.to != '') && steps.merge.outputs.to || ((needs.guard.outputs.stage == 'code' && steps.decide.outputs.green == 'true' && steps.merge.outputs.merged != 'true') && 'S6-in-progress' || steps.decide.outputs.to) }}
# #706: исход `rereview` возвращает задачу в ту же метку. Одним вызовом
# `gh` она добавлялась и тут же снималась — задача оставалась без
# статуса. Скрипт снимает и ставит её заново, чтобы событие `labeled`
# запустило новый заход.
run: |
gh issue edit "$NUM" --repo "${{ github.repository }}" \
--add-label "$TO" --remove-label "$FROM"
echo "$FROM -> $TO"
node scripts/status-label.mjs --repo="${{ github.repository }}" \
--issue="$NUM" --from="$FROM" --to="$TO"
- name: Сводка длительности стадий
if: always()