# Known Issues & Lessons Learned > **이 파일은 SSOT(Single Source of Truth)입니다.** > 디버깅이나 구현 전에 **반드시** 이 파일을 확인하세요. > 세션 종료 시 새로 발견된 이슈를 이 파일에 추가합니다. --- ## 포맷 각 항목은 아래 형식을 따릅니다: ```markdown ### [날짜] [키워드] — 한줄 요약 - **증상**: 무엇이 잘못되었는가 - **원인**: 근본 원인 - **해결**: 올바른 해결 방법 - **주의**: 재발 방지를 위한 교훈 ``` --- ## 공통 이슈 ### [2026-03-08] PowerShell curl — Invoke-WebRequest 충돌 - **증상**: `curl` 명령이 예상과 다른 응답 형식을 반환 - **원인**: PowerShell에서 `curl`은 `Invoke-WebRequest`의 별칭 - **해결**: **`curl.exe`**를 명시적으로 사용 - **주의**: HTTP 관련 모든 명령에서 `curl.exe` 사용 필수 ### [2026-03-08] PowerShell npm — 실행 정책 오류 - **증상**: `npm run` 명령이 `실행 정책` 관련 오류로 실패 - **원인**: PowerShell 스크립트 실행 정책이 제한적으로 설정됨 - **해결**: `cmd /c npm run dev` 형식으로 cmd를 통해 실행 - **주의**: npm 관련 명령은 항상 `cmd /c` 접두어 사용 권장 --- ## 프로젝트별 이슈 > 아래에 프로젝트 특화 이슈를 추가하세요. ### [2026-03-08] Antigravity Renderer Injection — Electron 캐시 차단 - **증상**: workbench.html, workbench-jetski-agent.html에 ``** 방식으로 HTML에 직접 삽입 - **주의**: `ag-bridge-ports.json`도 같은 이유로 XHR 로딩 불가. 모든 렌더러 스크립트/데이터는 HTML 인라인으로 전달해야 함 ### [2026-03-08] Renderer 포트 디스커버리 — ag-bridge-ports.json XHR 실패 - **증상**: `[GB Observer] Port discovery timeout after 2min` — 렌더러가 bridge 포트를 찾지 못함 - **원인**: 렌더러 스크립트가 `./ag-bridge-ports.json`을 동기 XHR로 읽으려 하나, `vscode-file://` 프로토콜이 `.json` 파일 서빙 거부 - **해결**: (1) 프로젝트명 해시 기반 **결정론적 포트** 사용 (`gravity_control→34332`), (2) 스크립트 생성 시 포트를 `HARDCODED_PORT=${port}`로 직접 삽입 - **주의**: `server.listen(0)` 랜덤 포트 → 매 재시작마다 변경되어 렌더러와 불일치. 결정론적 포트는 `EADDRINUSE` 시 랜덤 폴백 필요 ### [2026-03-08] Extension 컴파일 경로 != 설치 경로 - **증상**: `npm run compile` 후 Extension 동작이 변하지 않음 - **원인**: `npm run compile`은 `extension/out/extension.js`에만 빌드. Antigravity는 `~/.antigravity/extensions/variet.gravity-bridge-X.X.X/out/extension.js`에서 로드 - **해결**: 컴파일 후 반드시 설치 경로로 수동 복사하거나, `vsce package` → VSIX 재설치 - **주의**: `extension/out/` ≠ 실행 경로. 항상 설치 경로 확인 필요 ### [2026-03-08] Electron 메인 프로세스 체크섬 캐시 — Reload Window 불충분 - **증상**: product.json 체크섬 업데이트 + HTML 패치 후 `Reload Window` → 패치 미적용 - **원인**: Electron 메인 프로세스가 시작 시 product.json 체크섬을 메모리에 캐시. `Reload Window`는 렌더러만 재시작하므로 캐시된 구 체크섬 사용 - **해결**: Antigravity를 **완전 종료 후 재시작** 필요 (File → Exit 후 재실행) - **주의**: `Reload Window` ≠ 앱 재시작. 체크섬 변경 시 항상 풀 재시작 필요 ### [2026-03-08] Renderer 동기 XHR — Electron 보안 정책 차단 - **증상**: `tryPing()` 함수가 동기 `XMLHttpRequest`로 HTTP bridge에 연결 시도 → 타임아웃 - **원인**: Electron 렌더러 프로세스에서 동기 XHR이 보안 정책에 의해 차단됨 - **해결**: `fetch()` + `AbortSignal.timeout(2000)` 비동기 방식으로 교체 (`tryPingAsync`) - **주의**: `async/await` 사용 불가 (ES5 환경). `.then()` 체이닝으로 구현