You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
fix(platform): 골든 봇 커밋에 guard check 가 붙지 않는다 — merge-order-guard 디스패치 ref 가 PR 브랜치 #2069
골든 봇 커밋 SHA 에 guard 체크가 끝내 붙지 않아 스크린샷 baseline 이 바뀐 PR 이 Expected / waiting for status 로 굳는다.
screenshot-baseline-apply.yml 의 Dispatch required checks on the resulting SHA 스텝은 세 워크플로를 하나의 common 객체로 묶어 전부 ref: TARGET_BRANCH(= PR head 브랜치)로 dispatch 한다.
그런데 merge-order-guard.yml 의 publish-dispatch-result job 은 github.ref_name == github.event.repository.default_branch 조건이라 PR 브랜치 ref 로 돌면 항상 skip 된다. guard job 자체는 default branch 사본으로 정확히 판정하지만, 그 판정을 check-run 으로 게시하는 job 이 건너뛰어져 결과가 SHA 에 안 붙는다. guard 는 required check 라 PR 이 그대로 멈춘다.
실측이다. 아래 네 run 은 모두 actor 가 github-actions[bot], head_branch 가 PR 브랜치이고, jobs 가 guard(실행) + publish-dispatch-result(skipped) 로 끝났다.
34732994968
34733096482
34733294885
34743028924
pr-validation.yml 과 codeql.yml 은 PR 사본으로 도는 것이 맞으므로 공통 ref 를 그대로 두어야 한다. ref 를 바꿔야 하는 것은 merge-order-guard 하나다.
이 구멍은 #1977 이 merge-order-guard 를 pull_request_target 으로 옮기고 #1983 이 재게시 경로를 바꾼 뒤에 생겼다. #1850 이 다룬 것은 pr-validation.yml 디스패치가 job 0개로 죽는 별개 증상이고, 이 이슈는 디스패치가 성공하는데도 결과가 게시되지 않는 쪽이다.
완료 조건
merge-order-guard 디스패치만 default branch ref 로 분리해 보낸다. pr-validation.yml 과 codeql.yml 은 지금의 PR 브랜치 ref 를 유지한다
remote-dev-workflows-policy.test.mjs 의 baseline apply 브리지 단언에 ref 단언을 더한다. 지금은 workflow_id 셋만 단언하고 ref 는 보지 않아 이 회귀를 잡지 못했다
골든이 바뀌는 PR 에서 봇 커밋 뒤 guard check 가 실제로 붙는 것을 확인한다
자식 이슈
참고
merge-order-guard-policy.test.mjs 의 ref_name == default_branch 게이트는 PR 사본이 자기를 검사하는 가드를 고쳐 통과하는 것을 막는 자리다. 이 이슈를 푼다고 그쪽을 풀면 가드가 약해지므로 건드리지 않는다. 고칠 곳은 디스패치를 보내는 쪽이다.
Actions 의 모든 job 은 자기 이름으로 check-run 을 만들고, 그 check-run 은 워크플로가 돈 ref 의 SHA 에 붙습니다. baseline apply 가 ref: TARGET_BRANCH(PR 브랜치)로 디스패치하므로 guard job 의 check-run 이 PR 브랜치 tip, 즉 봇 커밋에 그대로 붙습니다. 별도 게시가 필요 없으니 publish-dispatch-result 가 skip 되는 것이 맞습니다.
publish-dispatch-result 는 다른 경로를 위한 것입니다. merge-order-guard.yml 의 refresh job 이 선행 이슈가 닫힐 때 --ref develop 로 디스패치하는데, 그때는 job 의 check-run 이 develop SHA 에 붙어 PR 이 못 봅니다. 그래서 캡처해 둔 PR HEAD 에 명시적으로 게시하는 것입니다. github.ref_name == default_branch 조건은 두 경로를 가르는 자리이지 구멍이 아닙니다.
제안했던 수정은 오히려 해로웠습니다. merge-order-guard 를 default branch ref 로 보내면 guard job 의 check-run 이 develop SHA 에 붙고, 거기에 더해 publish-dispatch-result 가 PR HEAD 에 하나를 더 게시합니다. 무관한 워크플로 이름 아래 guard 가 두 줄로 뜨는 상태, 바로 #1977 이 없앤 그 상태로 되돌아갑니다.
PR #2071 은 머지하지 않고 닫습니다. #1850 은 pr-validation.yml 디스패치가 job 0개로 죽던 별개 건이고 그쪽은 그대로 유효합니다.
Activity
github-actions commentedon Sep 13, 2026
bug 이슈는 사이드바 Fields > Priority 로 심각도를 지정해야 합니다. 판정 기준:
값이 비어 있어도 이슈를 닫지는 않습니다. 이 안내는 이슈당 한 번만 답니다.
OnlyReadOneBook commentedon Sep 13, 2026
이 이슈는 제 오진입니다. 결함이 아니라 정상 동작이라 not planned 로 닫습니다.
무엇을 잘못 봤나
본문은
publish-dispatch-result가 skipped 로 끝난 run 네 건을 근거로 들면서, 그래서 봇 커밋 SHA 에guard가 안 붙는다고 적었습니다. skipped 는 관측이지만 그 뒤 결론은 관측이 아니라 추론이었고, 그 추론이 틀렸습니다.오늘 PR #2072 와 #2067 에
screenshot-baseline라벨을 붙여 실제로 확인했습니다. 봇 커밋에guard가 정상으로 붙었습니다.c404122a→guardsuccess (run 34750747057, event=workflow_dispatch, 10:00:53Z)10807581→guardfailure (fix(setting): 프로필 사진 변경이 통째로 미구현 — 플러스 배지 무동작·서버 이미지 미표시·profileImageUrl null 하드코딩 #1438 blocked 판정, 정확한 결과)본문이 근거로 든 네 건도 되짚어 보니 전부 붙어 있었습니다.
왜 지금 코드가 맞나
Actions 의 모든 job 은 자기 이름으로 check-run 을 만들고, 그 check-run 은 워크플로가 돈 ref 의 SHA 에 붙습니다. baseline apply 가
ref: TARGET_BRANCH(PR 브랜치)로 디스패치하므로guardjob 의 check-run 이 PR 브랜치 tip, 즉 봇 커밋에 그대로 붙습니다. 별도 게시가 필요 없으니publish-dispatch-result가 skip 되는 것이 맞습니다.publish-dispatch-result는 다른 경로를 위한 것입니다.merge-order-guard.yml의refreshjob 이 선행 이슈가 닫힐 때--ref develop로 디스패치하는데, 그때는 job 의 check-run 이 develop SHA 에 붙어 PR 이 못 봅니다. 그래서 캡처해 둔 PR HEAD 에 명시적으로 게시하는 것입니다.github.ref_name == default_branch조건은 두 경로를 가르는 자리이지 구멍이 아닙니다.제안했던 수정은 오히려 해로웠습니다. merge-order-guard 를 default branch ref 로 보내면
guardjob 의 check-run 이 develop SHA 에 붙고, 거기에 더해publish-dispatch-result가 PR HEAD 에 하나를 더 게시합니다. 무관한 워크플로 이름 아래 guard 가 두 줄로 뜨는 상태, 바로 #1977 이 없앤 그 상태로 되돌아갑니다.PR #2071 은 머지하지 않고 닫습니다. #1850 은
pr-validation.yml디스패치가 job 0개로 죽던 별개 건이고 그쪽은 그대로 유효합니다.