--- id: kind: QUESTION slug: commit-ambiguity-lane-not-rerun-at-head title: 커밋 모호성 레인이 HEAD 에서도 통과하는지는 실행이 아니라 드리프트 0 으로 답했다 topic: commit-ambiguity-as-a-result topicName: 커밋 모호성 — 「모른다」를 결과로 유지하기 project: clean-architecture-backend-template status: 게시 전 studio: "" questionStatus: OPEN source: - final/document.md#6-2 - final/document.md#11 - final/document.md#13 sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 evidence: - ../../../final/evidence/raw/115-integration-lane-original-verification.txt --- # 커밋 모호성 레인이 HEAD 에서도 통과하는지는 실행이 아니라 드리프트 0 으로 답했다 레인은 실제로 돌았다. 다만 돌린 리비전이 a24ece9c 이고 이 분석이 정본으로 삼은 HEAD 가 아니다. 그 사이를 메우는 것은 재실행이 아니라 변경 파일 수 측정이다. ## 관계 - **pg_terminate_backend 가 57P01 로 도착하고 커밋 레코드는 이미 WAL 에 있었다** 이 레인이 고정하는 규칙을 만든 사례다. ## 사실 다섯 태그 레인을 --rerun-tasks 로 실행해 51 클래스 244 tests 가 0 skipped · 0 failures 로 끝났다. BUILD SUCCESSFUL in 3m 10s 였고 실행 전후의 git status 가 모두 clean 이었다. 그중 jpaPlatformFailureTest 는 2 클래스 6 tests 다. CommitAmbiguityContractTest 가 그 레인에 속한다. 실행 리비전은 a24ece9cf797f7ea647e33bf846b115208ed1ba5 이고 실행 시각은 2026-08-29T14:46:23+00:00 이다. a24ece9c 와 HEAD 21234e38 사이는 커밋 하나인데, 그 커밋이 건드린 것은 grpc 블록과 공통 파일 둘이다. persistence-jpa 를 포함한 18 개 리프 경로의 변경 파일 수는 0 이다. ## 가정 변경 파일 수가 0 이면 레인 결과도 같으리라고 전제하고 있다. 이 전제는 빌드 설정과 의존성 해석이 두 리비전에서 같다는 것까지 포함한다. 57P01 관측이 PostgreSQL 의 여러 major 버전에서 같게 재현되리라고도 전제하고 있다. ## 미지수 HEAD 에서 jpaPlatformFailureTest 를 돌리면 무엇이 나오는가. 57P01 이 PostgreSQL 16 과 17 과 18 전부에서 같은 SQLSTATE 로 도착하는가. ## 제약 매트릭스는 실행 한 번에 major 하나만 고른다. 다중 선택은 start 단계에서 거부된다. 이 분석은 애플리케이션 소스를 수정하지 않는다. ## 선택지 ### 1. HEAD 에서 한 major 로 한 번 돌린다 가장 싸다. 드리프트 0 이라는 간접 근거가 실행 결과로 바뀌는데 버전 간 차이는 여전히 모른다. ### 2. HEAD 에서 major 세 번 돌린다 버전 간 차이까지 확인하는데 비용은 컨테이너 기동 세 번이다. ## 다음 검증 1. HEAD 를 체크아웃하고 Docker 가 있는 환경에서 다음을 돌린다. ./gradlew :adapter:outbound:persistence-jpa:jpaPlatformFailureTest --rerun-tasks --console=plain 2. major 를 바꿔 반복하려면 -Pjpa.matrix.versions 로 하나씩 지정한다. 닫는 조건 : 0 failures 가 나오면 이 질문을 닫고 관련 Case 의 확인하지 못한 것에서 재실행 항목을 지운다. 실패가 나오면 드리프트 0 을 근거로 삼은 §6.2 정정을 철회하고 그 실패를 새 Case 로 연다.