Repository navigation
chore(ci): 죽은 stack-refresh 워크플로를 폐기한다 — 네이티브 스택 PR 은 update-branch 403 이라 성공 실적 0 #1458
Description
작업 유형
maintenance — CI·빌드·의존성·저장소 운영 유지보수
주 담당 모듈
platform — Android 앱·CI·빌드·릴리스·저장소 운영
개요
Refresh PR Stack(stack-refresh.yml)은 도입 이래 한 번도 성공한 적이 없는 죽은 경로다. 워크플로·스크립트·정책 테스트를 함께 지운다.
1. 쓰기 경로가 스택 PR 에 구조적으로 막혀 있다
refresh-pr-stack.mjs:120 이 PUT /pulls/{n}/update-branch 를 호출하는데, gh stack 으로 묶인 PR 은 이 엔드포인트가 거절한다.
403 {"message":"Updating a stacked PR's branch via this endpoint is not supported."}
root #1417 로 dispatch 한 run 33229217723 이 정확히 이 줄에서 죽었다. base 가 develop 인 스택 밑단(#1417·#1410)도 스택 멤버라는 사실만으로 막힌다.
2. 남은 수동 체인에서는 선형 가드가 막는다
현재 열린 PR 35건 중 base 가 트렁크가 아닌 것은 5건이고, 그중 네이티브 스택 미등록(stackEntry == null)은 #1055·#1197·#1316 뿐이다. 그런데 이 체인은 fix/562-weekly-grid-real-data 에서 #1197·#1316 둘로 갈라져, buildLinearStack 이 has multiple open children 으로 거절한다.
| root 후보 | 결과 |
|---|---|
| #1417 · #1410 · #1414 · #1409 · #1372 | 네이티브 스택 → update-branch 403 |
| #966 · #1055 | #1055 아래가 2갈래 → 선형 가드 거절 |
| #1197 · #1316 | 자식 없음 → 1건짜리 "스택" |
즉 이 워크플로의 유일한 존재 이유인 다단 전파는 현 저장소의 어떤 입력으로도 도달하지 못한다. 성공하는 것은 자식 없는 leaf 를 root 로 준 1건짜리 경우뿐인데, 그건 gh api -X PUT repos/.../pulls/<N>/update-branch 한 줄과 같다.
3. 애초에 늦게 태어났다
네이티브 스택 채택은 8/23(#906)인데 이 워크플로는 8/27 eb157e0 에서 처음 들어왔다. 실행 이력은 3건(8/29)이 전부고 failure 1 · cancelled 2 — 성공 0.
4. CI 로 하는 편이 손으로 하는 것보다 나쁘다
GITHUB_TOKEN push 는 pull_request 를 재발행하지 않아 필수 check 를 수동 dispatch 로 붙여야 한다. 그런데 REQUIRED_WORKFLOWS = ["pr-validation.yml", "codeql.yml", "merge-order-guard.yml"] 는 현 required 목록과 이미 어긋나 있다 — required-android-device (develop) 룰셋의 Pixel 2 API 30 androidTest·Pixel 2 API 34 accessibility smoke 와 Base Freshness 가 빠져 있어, 설령 갱신에 성공해도 PR 이 미검증 상태로 남는다. 사람이 자기 토큰으로 갱신하면 이 문제 자체가 없다(8/29 MERGEABLE 21건 실적).
대체 자동화는 만들지 않는다
- 밑단이 머지되면 GitHub 이 위 칸을 서버에서 자동 rebase·retarget 한다. "체인 전파" 라는 목적 자체가 플랫폼 기능에 흡수됐다.
- 남는 구멍은 "스택 밑단이
develop에 뒤처졌을 때" 하나뿐이고(현재 refactor(core): 활동 추적 ping(logActivity) 제거 — 로그인·재발급 서버 집계와 중복 왕복 (#1413) #1417·refactor(core): 수신자 선택 화면을 공용 컴포넌트로 추출 (#791) #1410 이 required 인Base Freshnessred), 여기에 쓸 수단은gh stack rebase+ force-push 가 유일하지 않다. 403 은 엔드포인트 한정이라, base 를 로컬에서 머지하고 평범하게 push 하면 통한다 —#1372(스택 #1411 pos2) head 에 8/29Merge branch 'refactor/791-receiver-select-common' into fix/540-editor-receiver-select2건이 그렇게 올라가 있고Base Freshness도 success 다. SHA 를 갈아치우지 않으므로 리뷰어 VIEWED 상태와 기존 CI 결과가 살아남는다. - 이 병합은 리뷰 diff 를 키우고 CI 를 다시 태운다. 언제 태울지가 곧 판단이라 자동화 대상이 아니다. 대신 이 경로를 README 브랜치 절에 한 줄로 남겨, 지워진 자동화가 같은 형태로 되살아나지 않게 한다.
완료 조건
-
.github/workflows/stack-refresh.yml삭제 -
.github/scripts/refresh-pr-stack.mjs·refresh-pr-stack.test.mjs삭제 -
remote-dev-workflows-policy.test.mjs의stack refresh only executes trusted default-branch code블록 삭제 - README 브랜치 절에 스택 PR base 갱신 경로(로컬 병합 + 일반 push, update-branch 403) 기록
- 남은 참조 0건 확인
참고
- 잔여 참조는 워크플로 1 · 스크립트 2 · 정책 테스트 1블록이 전부다.
docs/·AGENTS.md에는 언급이 없다. - 스택 운영 규약: #906
- force-push 로 스택을 건드린 실사고 전례: refactor(receiver): 도달 불가한 summary 패키지 8파일 제거 — home 이 대체한 옛 수신자 홈 (#1424) #1428
Activity