Skip to content

fix(platform): 스택 안내 코멘트가 pull-requests 쓰기 권한 부족으로 403 에 막힌다 #2068

Closed

Description

@OnlyReadOneBook

작업 유형

bug — 버그·오동작

주 담당 모듈

platform — Android 앱·CI·빌드·릴리스·저장소 운영

개요

stack-integrity-notify.yml 의 notify-affected-pull-requests job 이 스택 상위 PR 에 조치 안내를 남기려다 403 으로 죽는다. 스택 멤버가 미병합으로 닫혔을 때 상위 PR 에 무엇을 해야 하는지 알려 주는 경로가 통째로 막혀 있다.

실측 근거는 job 103442105482 이다. CLOSED_PR: 1763 으로 돌았고 gh: Resource not accessible by integration (HTTP 403) 뒤 exit 1 로 끝났다. 6초 실패지만 로그에 실제 판정 문구가 있으니 installation 토큰 rate limit 이 아니다. 이 run 의 대상은 #1626, #1839, #1837, #1838 로 전부 PR 이다.

원인은 job 권한이다. stack-integrity-notify.yml 의 job permissions 는 contents: read · issues: write · pull-requests: read 인데, 워크플로가 쓰는 엔드포인트는 다음 둘이다.

  • POST /repos/{owner}/{repo}/issues/{n}/comments
  • PATCH /repos/{owner}/{repo}/issues/comments/{id}

GitHub 은 이 엔드포인트의 필요 스코프를 대상 타입으로 가른다. {n} 이 이슈면 issues: write, 풀 리퀘스트면 pull-requests: write 다. 이 job 은 언제나 PR 에 쓰므로 목록 조회(GET)는 통과하고 첫 쓰기에서 403 이 난다.

저장소 안 대조군이 이를 확정한다.

  • screenshot.yml 은 issues 스코프 없이 pull-requests: write 만으로 PR 에 코멘트를 성공시킨다
  • conflict-label.yml 과 형제 narrow bridge 인 merge-queue-dequeue.yml 은 둘 다 issues: write + pull-requests: write 를 갖는다
  • issues: write + pull-requests: read 조합은 auto-close-issue.yml 뿐인데, 그쪽은 if (issue.pull_request) { continue; } 로 PR 을 명시적으로 건너뛰고 진짜 이슈에만 쓴다

재실행으로는 풀리지 않는다. 쓰기에 도달하는 모든 run 에서 결정적으로 재현된다.

완료 조건

  • notify-affected-pull-requests job 의 pull-requests 스코프를 write 로 올린다. 워크플로 최상단 permissions: {} 와 job 의 issues: write 는 그대로 둔다
  • merge-order-guard-policy.test.mjs 의 stack-integrity 권한 단언에 pull-requests: write 를 더해 같은 칸이 다시 read 로 머물지 못하게 한다
  • 수정 뒤 스택 멤버가 닫힐 때 상위 PR 에 안내 코멘트가 실제로 남는 것을 확인한다

자식 이슈

참고

최상단 permissions: {} 는 narrow bridge 불변식이라 create-ci-config.test.mjs 가 행 첫머리 앵커로 잠그고 있다. 들여쓴 job 레벨 permissions 는 그 단언 대상이 아니므로 이 변경은 해당 테스트를 깨지 않는다. 스크래치패드 사본에 같은 한 줄을 적용해 node --test .github/scripts/merge-order-guard-policy.test.mjs .github/scripts/create-ci-config.test.mjs 를 돌린 결과 패치 전후 모두 34/34 통과였다.

merge-order-guard-policy.test.mjs 는 issues: write 를 이미 계약으로 박아 두면서 pull-requests 쪽만 비워 뒀고, 그 빈칸이 read 로 머문 채 머지된 경로다.

Activity

  1. added
    bugSomething isn't working
    area:platformCI·빌드·릴리스·저장소 운영 영역
    on Sep 13, 2026
  2. github-actions commented on Sep 13, 2026

    @github-actions
    Contributor

    bug 이슈는 사이드바 Fields > Priority 로 심각도를 지정해야 합니다. 판정 기준:

    • Urgent: 치명 — 크래시·데이터 소실·보안 무력화·핵심 경로 차단·가짜 성공
    • High: 심각 — 실패·틀린 값의 정상 위장, 핵심 기능 무동작
    • Medium: 불편 — 우회로가 있는 오동작·틀린 표시, 핵심 흐름은 유지
    • Low: 경미 — 문구·정렬·마감 품질 흠, 기능 영향 없음

    값이 비어 있어도 이슈를 닫지는 않습니다. 이 안내는 이슈당 한 번만 답니다.

  3. added
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 13, 2026
  4. removed
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area:platformCI·빌드·릴리스·저장소 운영 영역bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions