ci: Bun 1.3.14로 고정한 test-bun13 잡을 더해 $ never-settle 회귀를 잡는다 - #76
Merged
Merged
Conversation
pr-check의 잡들은 setup-bun 기본값(최신 Bun)으로 돈다. 그런데 Bun 1.3.x의 `$`는 64KB를 넘는 stdout을 받는 호출에서 영영 settle하지 않을 수 있고 업스트림은 1.4.0에서 고쳤으므로, 최신 Bun에서는 그 회귀가 원리적으로 안 보인다 — #74에서 showBytes를 Bun.spawn으로 바꿨지만 누가 `$`로 되돌려도 `test` 잡은 초록이다. `bunx` 사용자는 자기 Bun을 쓰므로 1.3.x도 여전히 대상이다. - test-bun13: ubuntu-latest, bun-version 1.3.14(1.3.x 마지막 판), frozen lockfile 설치 뒤 diff-large-blob.test.ts 하나만 돈다. 전량은 `test` 잡이 이미 돈다 — 여기엔 버전에 따라 판별력이 갈리는 것만 싣는다. - timeout-minutes 10: 회귀하면 테스트가 스스로 10초 타임아웃으로 끝나지만 설치가 매달리는 경우까지 GHA 기본 6시간을 태우지 않게 한다. - 재현 확인: 같은 밀폐 픽스처로 Linux aarch64·x86_64의 1.3.14에서 `$`가 첫 라운드에 걸리고 Bun.spawn은 깨끗하다(macOS만 재던 것을 CI 플랫폼까지 넓힘). - CLAUDE.md의 잡 개수·required checks 목록·"Loading…" 항목, 테스트 docblock을 여섯 번째 잡에 맞춘다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAe9zh6siLHSR4nPpqm8QK
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAe9zh6siLHSR4nPpqm8QK
직전 커밋은 실제 러너에서 test-bun13이 `$` 회귀를 잡는지 보이려고 showBytes를 `$`로 되돌린 임시 커밋이다. Bun.spawn으로 복원한다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAe9zh6siLHSR4nPpqm8QK
- `bun install --frozen-lockfile`을 뺀다. 이 회귀망은 Bun·Node 내장과 로컬 파일만 쓰므로 의존성이 필요 없다(node_modules 없는 클론에서 1.3.14로 통과, showBytes를 `$`로 되돌리면 exit 1 — 둘 다 실측). 설치를 두면 최신 Bun이 lockfile 포맷을 바꾸는 날 1.3.14가 못 읽어 회귀와 무관하게 빨개지고, 그때의 쉬운 오답(고정 판 올리기)이 잡의 존재 이유를 지운다. - "setup-bun 기본값 = 최신"은 조건부다: 루트 package.json의 packageManager· engines.bun이 없어서 최신이다. engines.bun을 넣는 순간 다섯 잡의 Bun이 조용히 바뀐다는 것을 적는다. - 은퇴 조건: 지원 하한이 1.4 이상이 되면 이 잡을 지운다. - bun-version을 따옴표로 감싼다(node-version: '24'와 같은 관례 — 두 마디 버전이 되면 YAML이 float로 읽는다). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XAe9zh6siLHSR4nPpqm8QK
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
왜
#74는
showBytes를$에서Bun.spawn으로 바꿔 큰 diff의 45초 503을 고쳤다. 그런데 그 회귀망은 CI에서 판별력이 없다: pr-check의 잡들은oven-sh/setup-bun@v2기본값(최신 Bun, 지금 1.4.2)으로 도는데, 업스트림이 1.4.0에서$를 고쳤으므로 거기서는showBytes를$로 되돌려도diff-large-blob.test.ts가 초록이다(#74 CI 로그에서bun test v1.4.2확인).bunx사용자는 자기 Bun을 쓴다. 1.3.x는 한 달 전(8/20)까지 안정 라인이었고 이 저장소를 개발하는 맥도 1.3.12다. 그 사용자들에게 되돌림은 곧바로 "큰 diff가 안 뜬다"로 돌아간다.무엇을
test-bun13잡 하나를 더한다 —ubuntu-latest,bun-version: '1.3.14'(1.3.x 마지막 판), 설치 없이diff-large-blob.test.ts만 돈다.test잡이 이미 돈다. 이 잡엔 버전에 따라 판별력이 갈리는 것만 싣는다.bun install을 일부러 뺐다: 이 회귀망은 Bun·Node 내장과 로컬 파일만 쓴다(node_modules 없는 클론에서 1.3.14로 통과·되돌리면 exit 1 — 둘 다 실측). 설치를 두면 최신 Bun이 lockfile 포맷을 바꾸는 날 1.3.14가 못 읽어 회귀와 무관하게 빨개지고, 그때의 쉬운 오답(고정 판 올리기)이 잡의 존재 이유를 지운다.timeout-minutes: 10: 회귀하면 테스트가 스스로 10초 타임아웃으로 끝나지만, Bun 다운로드나 러너가 매달리는 경우까지 GHA 기본 6시간을 태우지 않게.engines.bun도입 등) 이 잡은 지운다. 그리고 "기본값 = 최신"은 루트package.json에packageManager·engines.bun이 없어서라는 조건을 CLAUDE.md에 적었다 —engines.bun을 넣는 순간 나머지 다섯 잡의 Bun이 조용히 바뀐다.CI 플랫폼에서도 재현되는가 (실측)
#74의 측정은 전부 macOS였고 CI는 Linux다. 같은 밀폐 픽스처(200KB 파일 12~32개, 8-way)로 Linux 컨테이너에서 쟀다:
$Bun.spawn→ 고정 잡은 CI 러너에서 실제로 빨개질 수 있다. x86_64의
Bun.spawn초록은 이 PR의 CI가 확인한다.테스트 플랜
실제 러너(Linux x86_64)에서 RED → GREEN. 임시 커밋으로
showBytes를$로 되돌렸다가 되돌렸다(스쿼시 머지라 남지 않는다).test-bun13(Bun 1.3.14)test(Bun 1.4.2)fa9d117잡 추가14a7d62임시:showBytes를$로getDiffFiles가 10000ms 안에 settle하지 않았다, exit 1 (run)diff-large-blob포함b2c9774복원 + 설치 제거가운데 행이 이 잡의 존재 이유다: 같은 커밋에서 최신 Bun의
test는 초록이고 고정 잡만 빨갛다. 로컬에서도 설치 없는 클론으로 같은 RED(exit 1)/GREEN을 확인했다.리뷰: Critical 0 · Important 0 · Minor 4건을 전부 반영했다(설치 제거, 기본값의 조건, 은퇴 조건,
bun-version따옴표). 리뷰어가 제기한 "전체 스위트를 1.3.14로 돌리자"는 계획 수준 질문은 채택하지 않았다 — 전체 스위트는 의존성 설치가 필요해 위 lockfile 문제가 돌아온다.🤖 Generated with Claude Code
https://claude.ai/code/session_01XAe9zh6siLHSR4nPpqm8QK