4.8 KiB
4.8 KiB
리뷰 리포트 — Job dbab0e07
- 리뷰 대상: 커밋
36b3910— (1)create_session.shagy 인증 사전검증을 파일 기반으로 우회해 macOS 키체인 접근 Hang 방지, (2)lib.sh provision_isolation()에 Darwin 전용~/Library/Keychains심링크 시딩 추가로 격리 모드 인증 토큰 소실 해결 - 리뷰어: claude (planner-reviewer)
- 리뷰 방식: 정적 분석(bash -n, shellcheck 기준선 대비) + 계측 스텁/가짜 HOME/uname 오버라이드 기반 실행 검증
1. 설계 타당성
- Hang 우회: agy 격리 lever가
HOME=<root>이고(lib.sh 주석의 Phase 0 실측 매트릭스), macOS에서agy models가 키체인 접근 프롬프트로 비대화식 환경에서 블로킹되는 문제를, 디스크상 토큰 파일(~/.gemini/oauth_creds.json또는~/.gemini/antigravity-cli/antigravity-oauth-token) 존재 시 CLI 호출 자체를 생략하는 방식으로 회피 — 검사 파일 경로 2개가provision_isolation()이 agy 자격증명으로 시딩하는 파일 목록과 정확히 일치함(저장소 내부 지식과 정합). - 토큰 소실 해결: 격리 시
HOME=<root>로 바뀌면 macOS 키체인 경로($HOME/Library/Keychains)가 빈 격리 홈을 가리켜 자격증명 조회가 실패하는 구조 — 실제 Keychains 디렉터리를 심링크로 시딩하는 것은 이 파일의 기존 철학("auth/config files are SYMLINKED ... never copied — token refresh must converge on the real files")과 일치하는 올바른 해법.
2. 실행 검증 (전부 실측)
- 사전검증 우회(Case A): 가짜 HOME에 토큰 파일 배치 + 호출 기록 스텁
agy를 PATH 선두에 두고create_session.sh --dry-run --agent agy실행 →agy바이너리가 단 한 번도 실행되지 않음(Hang 원인 원천 제거 확인), exit 0. - 폴백 보존(Case B): 토큰 파일 없는 빈 HOME →
agy models가 정확히 1회 호출되고 스텁 실패 시 기존 오류 메시지("agy is not authenticated")와 exit 1이 그대로 동작 — 미인증 조기 차단 시맨틱 유실 없음. - Keychains 시딩: lib.sh를 소싱한 격리 하네스에서
uname을 Darwin으로 오버라이드하고 가짜 HOME(Library/Keychains/login.keychain-db포함)으로provision_isolation agy실행 →- 심링크 정상 생성, 격리 홈 경유 read-through로 실제 키체인 데이터 접근 확인.
seeded출력에Library/Keychains가 기존 포맷대로 병합됨.- 재프로비저닝 멱등성: 2회 실행에도
ln -sfn의-n덕에 중첩 링크(Keychains/Keychains) 없이 동일 결과.
- 🔑 삭제 안전성(최중요): create rollback의
rm -rf "$ISOLATION_ROOT"시뮬레이션 → 심링크만 제거되고 실제 키체인 파일은 온전히 생존함을 실측 확인(rm -rf는 심링크를 따라 들어가지 않음).seeded목록을 순회하며 삭제하는 소비자는 코드베이스에 존재하지 않음(생성·기록 전용)도 grep으로 확인.
3. 정적 분석
bash -n양 파일 통과.shellcheck -S warning: 변경 전 기준선(fc24af4) 대비 양 파일 모두 경고 0건 → 0건, 신규 경고 없음.
4. 유실 검사
- agy 외 에이전트(claude/cline/hermes)의 provision 분기·사전검증 분기는 바이트 단위로 무변경. Darwin 가드로 Linux에서 Keychains 시딩 완전 스킵(Linux 회귀 없음).
5. 비차단(Non-blocking) 지적 사항
- 사전검증 약화 — 파일 존재가 토큰 유효성을 보증하지 않으므로, 만료/폐기된 토큰은 이제 preflight를 통과하고 TUI 기동 단계에서야 실패가 드러남. Hang 대비 합리적 트레이드오프이나 오류 표면화 시점이 늦어짐.
- Darwin 미게이팅 — 우회 분기가 OS 무관하게 적용되어, Hang이 없던 Linux에서도 엄격 검사가 생략됨(부수적으로 네트워크 호출 생략이라 빨라지는 이점은 있음). 엄격성이 중요해지면
uname게이트 추가 고려. - 자격증명 격리 부재(의도된 설계) — 격리 세션이 실제 키체인을 공유하게 되나, 시딩의 목적 자체가 인증 공유이므로 기존 심링크 시딩 철학과 일치. 기록 차원의 언급.
- macOS 실기기 미검증 — Security.framework가 심링크된
$HOME/Library/Keychains를 실제로 수용하는지는 Linux 환경에서 실측 불가. 메커니즘 수준(경로 해석·링크·멱등성·삭제 안전성)은 전부 검증 완료.
6. 결론
두 수정 모두 고장 메커니즘을 정확히 겨냥했고, 우회·폴백·시딩·멱등성·삭제 안전성이 전부 실행으로 입증되었으며 정적 분석 신규 경고와 기존 동작 유실이 없다. 비차단 4건은 후속 개선/기록 수준이다.
[VERDICT: PASS]