fix(runners): 러너 연결 오류 전수 수정 — codex 신규기기 회귀·grok 거짓 연결·자가치유 누락 - #301
Merged
Conversation
C1(CRITICAL 회귀): withCodexLock가 락 부모(~/.argo/tools)를 락 안에서 만들어, gemini/npx를 먼저 안 써본 신규 기기에서 mkdir ENOENT→'다른 프로세스 진행 중' 거짓 문구로 120초 후 영구 실패. 부모를 락 밖에서 선생성 + mkdir 실패 코드 분기(EEXIST만 대기). 실측 120,151ms→3ms. D1(CRITICAL): grok verify가 xAI 400(Incorrect API key)을 통과로 판정 → 'not even a key'도 초록불. gemini(400)·glm(200바디)와 같은 계열의 세 번째 구멍(불변식 전수 수색 누락). 400 바디 판정 추가. D2(HIGH): grok 400 문구가 AUTH_ERR_RE 미매치 → 채팅 자가치유(러너 교체) 미발동. incorrect api key ·bad credentials 추가(상태코드 전체는 금지 — 모델 오류 오분류 방지). D5(보안): claude runnerCredEnv에 ANTHROPIC_BASE_URL 고정 — 호스트 env 상속으로 회사 키가 제3자로 나가던 표면 차단(타 4러너와 대칭). D9: grok 모델 존재 실측 확정 주석. 회귀 테스트: codex 신규기기(120초 헛돎)·grok verify 400·AUTH_ERR_RE 문구/오분류 방지.
…laude verify base 정렬
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.
배경(곰대장 제보 2026-08-26)
"클로드·그록·제미나이 다 연결됨인데 크루 영입 실패." 화면 오류는 Grok 400이 Claude 상표로 오표기된 것(#299에서 표기 수정). 유건 지시로 러너 연결 오류를 적대적 전수조사(두 검수 에이전트 + 직접 요청 캡처). 결과: 우리 코드 결함이 겹친 것, 사용자 환경 탓 아님.
확정 원인(제보 = C1 + D1/D2 겹침)
withCodexLock가 락 부모~/.argo/tools를 락 안에서 생성 → gemini/npx를 먼저 안 써본 신규 기기에서mkdirENOENT를 "락 보유자 있음"으로 오해 → 120초 헛돌다 "codex 조달이 다른 프로세스에서 진행 중" 거짓 문구로 영구 실패. 개발 PC엔~/.argo/tools가 있어 재현 불가 → 신규 사용자에게만 발현(제보 형태와 정확히 일치). 실측: main 120,151ms → 수정 3ms."not even a key"도 "연결됨" 초록불. gemini(400)·glm(200바디)를 이미 닫은 같은 구멍의 세 번째(불변식 전수 수색 누락 — 제 규칙 위반).수정
mkdir실패 코드 분기(EEXIST만 대기, EACCES/EPERM은 원인 즉시 표면화).incorrect api key·bad credentials(문구 기준만 — 상태코드 전체 금지).runnerCredEnv에 ANTHROPIC_BASE_URL 고정(타 4러너와 대칭 — 회사 키가 호스트 env의 프록시로 새던 표면). D9: grok 모델 존재 실측 확정 주석.검증
npm test948/943·0 fail,next build통과.후속(같은 전수조사에서 나온 백로그, 별도 PR)
검수가 실측·정적으로 확인한 나머지: C2(codex OAuth 저장 무검증), C3(OAuth scope 벤더 불일치), C4(codex 갱신본 미회수), C5(셸 잡음→CLI 미발견 오분류), D3(기기코드 verify 없음), D4(verify=/v1/models vs turn=/v1/messages 통일), D6(kimi/openrouter base 변수 불일치), D7(antigravity 바이너리만으로 초록), D8(저장 후 재검증 없음), D11(온보딩 시드 무검증). 백로그 문서로 정리 예정.