검증과 출시
AI가 만든 코드를 출시하기 전에 거치는 단위 테스트, 릴리스 게이트, 실기기 확인과, 그 과정에서 실제로 잡힌 결함을 정리했습니다.
글 목록
LLM 공유 캐시에 프롬프트 인젝션이 굳을 수 있었다: 문맥을 보내지 않기로 한 블라인드 A/B
LLM 응답을 공유 캐시에 둘 때 키에 없는 문맥을 모델에 넣으면 프롬프트 인젝션이 모든 사용자에게 굳을 수 있습니다. 문맥 없이 돌린 블라인드 A/B는 96.0% 대 96.6%였습니다.
AI 코딩 에이전트와 비밀값: 채팅·로그·권한 세 겹, 복사된 마스킹 정규식이 놓친 예외 2곳
AI 코딩 에이전트가 비밀값을 흘린 세 경로와 막은 방법입니다. 대화 기록에 찍힌 키, 복사된 마스킹 정규식이 놓친 예외 2곳, 권한을 더하지 않고 다시 설계한 배포 토큰, 점검 명령.
'E2E 100% 통과'의 정체: expect()가 0개인 러너 7개를 지운 날
2025년 8월부터 'E2E 100% 통과'의 근거였던 러너 7개에는 expect()가 하나도 없었고 5개는 앱 코드도 부르지 않았습니다. 지운 그날 밤 실제 E2E가 결함 7건을 적었습니다.
편집 기능을 만들고도 꺼서 출시했다: HWP 저장 검증 게이트가 잡은 누름틀 결함
HWP 편집 결과를 저장 전에 원본과 레코드 단위로 비교하는 게이트가 누름틀 채우기 결함을 잡았습니다. 편집을 플래그로 끈 채 1.1.0을 내고 9일 뒤 범위를 줄여 켰습니다.
대비 검사기는 텍스트 조각 40%를 재지 못하고도 통과를 냈다: '몇 개를 측정했나'를 출력하게 바꾸기
세 테마 대비 검사의 통과 뒤에서 텍스트 조각 9,318개 중 3,762개(40%)가 보고 없이 빠져 있었습니다. 잰 개수와 버린 이유를 출력하고, 잰 것이 선언보다 적으면 실패하게 바꿨습니다.
테스트 3,066개가 초록인데 DB를 못 여는 코드가 숨어 있었다: 가드 지워 보기
테스트 3,066개가 통과한 P2P 채팅 앱에서 SQLite 설정 한 줄이 기기의 DB 열기를 막고 있었습니다(소스 추적). 가드를 지워 테스트를 검사하는 Python 하네스와 적발 2건입니다.
AI가 '테스트 완료'라던 게임이 튜토리얼 첫 탭에서 죽었다: VIBRATE 권한과 신규 설치 몽키 테스트
AI 에이전트가 '크래시 없음'으로 보고한 퍼즐 게임이 튜토리얼 첫 탭에서 죽었습니다. 원인은 VIBRATE 권한 누락이었고, 신규 설치 상태의 adb 몽키가 15번째 이벤트에서 재현했습니다.
AI가 만든 Android 앱, 출시 전에 무엇을 검사하나: 릴리스 게이트와 R8 크래시
디버그에서 멀쩡하던 Android 앱이 R8 때문에 출시용 빌드에서 실행 직후 죽었습니다. 그 뒤로 업로드 전마다 릴리스 게이트, 축소 빌드 실행 검사, 실기기 E2E를 거칩니다.