[rustjava-partial-clone-refusal-decision] fix(scripts): 부분 클론을 거절하지 않는다 — 모호한 것은 «호출 하나»였다 - #78
Merged
Conversation
…는다 — 모호한 것은 «호출 하나»였다 채택 제안 2026-09-18-merge-drops-no-silent-git-failure#p0. 진짜 --filter=blob:none 클론으로 쟀다(범위 e53b214^..e53b214): 완전 클론 6 dropped · rc 1 (2.5s) blobless + promisor 도달 가능 6 dropped · rc 1 ★완전히 동일 (15.7s) blobless(신선) + 도달 «불가» 0 dropped · ★rc 0 = green ⇒ 제안은 절반만 맞다: 「부분 클론이면 아무것도 없어 보인다」는 그 자체로 거짓이고 (promisor 가 닿으면 git 이 blob 을 투명하게 받아 온다) 거절은 «돌아가는 설정»을 막는 일이다. 그러나 조용한 green 은 실재한다 — 조건이 좁을 뿐(promisor 도달 불가). 처방은 환경 거절이 아니라 그 «한 호출»의 모호함 제거다: symbols() 가 실패한 git show 를 부재로 읽기 «전»에 ls-tree 로 트리 존재를 묻는다. 부분 클론도 트리는 가지므로, git 에러 문면을 대조하지 않고 갈린다(문면 대조는 preflight 회차가 이미 «판올림에 약하다»며 미뤘다). 양방향: 거짓 green 형상 rc 0 → ★rc 2 「못 쟀다」(못 읽은 blob 을 이름으로 지목) · 과차단 0(도달 가능 blobless 는 여전히 rc 1 · 6 dropped) · 완전 클론 불변 · 비용 유의차 없음(전 7.78/7.99/7.05s ↔ 후 6.39/6.72/8.06s · DoD 기본범위 0.46→0.33s). 결정을 preflight() docstring 에 못박았다 — 「이렇게 «고치지» 마라」와 그 근거 수치까지.
Jun025
pushed a commit
that referenced
this pull request
Sep 18, 2026
… 승인된 원장 2파일 합집합 형제 착지(#75 ddc6c4c · #78 97d2258)로 생긴 원장 재충돌. 게이트③ 2-c⒜ 승인 범위(원장 파일 한정). 양쪽 항목 전건 보존·시간순(최신 상단) · 한쪽 통째 채택(--ours/--theirs) 0. 보존 증명: ours추가 REPORT 18 / STATE 9 · theirs추가 37 / 15 — 소실 0/0 · 충돌 마커 0. 계약 12: 해소면 밖 변경 0 — jvm/src/jvm.rs · jvm/tests/test_exception_construction.rs · scripts/check-named-exception-classes-are-loadable.py · worklog 쌍이 핀(394184b) 대비 바이트 동일.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
채택 제안
2026-09-18-merge-drops-no-silent-git-failure#p0— "The check now refuses to run in a shallow clone, but a clone fetched without file contents can still make it look like nothing is there."결정
부분 클론을 거절하지 않는다. 대신
symbols()가 실패한git show를 «부재»로 읽기 전에git ls-tree로 그 경로가 트리에 있는지 묻는다.★결정을
preflight()docstring 에 못박았다(「이렇게 «고치지» 마라」 + 근거 수치 + 탐지 축).★추측하지 않고 «진짜» 부분 클론으로 쟀다
--filter=blob:none· 범위e53b2142^..e53b2142(알려진 사고 머지):6 dropped· rc 16 dropped· rc 1 — ★바이트 동일0 dropped· ★★rc 0 = green⇒ ★제안은 «절반» 맞다: 「부분 클론이면 아무것도 없어 보인다」는 그 자체로는 거짓이다 — promisor 가 닿으면 git 이 blob 을 투명하게 받아 온다. ★거절은 «돌아가는 설정»을 막는 일이고, shallow 와 달리 부분 클론은 없는 것을 가져올 수 있다.
⇒ ★그러나 조용한 green 은 실재한다 — 조건이 좁을 뿐(promisor 도달 불가). 그 형상에서 검사기는
✓ … (3 file(s) examined)를 찍고 rc 0 으로 끝냈다.★방법 주의(자기정정): 첫 오프라인 측정은 오염이었다 — 앞선 온라인 실행이 blob 을 캐시해 «맞는 답»이 나왔다. 위 수는 신선한 클론 + 읽기 «전» 원격 차단에서 다시 잰 값이다.
위험이 실현되나 — 실측 0, 그러나 그것이 «모호함을 남길» 근거는 아니다
.github어디에도filter:0건(merge_drops는fetch-depth: 0). ⇒ 오늘 이 거짓 green 은 «개발자 노트북 + blobless + 오프라인»에서만 난다.★그것이 거절을 고르지 않은 이유이고, 닫는 비용이 git 호출 하나로 드러났으므로 모호함은 닫았다.
대안 둘을 각각 기각한 근거
⒜거절(
remote.origin.partialclonefilter) — 탐지는 된다(실측blob:none· ★rev-parse --is-shallow-repository는 false 라 현행 preflight 가 못 잡는 이유가 이것이다). 그러나 맞는 답을 내는 경우까지 막는다.⒝에러 문면 대조 — 두 실패는 문면으로 갈린다(
fatal: path 'X' does not exist in 'REV'↔fatal: could not fetch <sha> from promisor remote)지만 ★둘 다 exit 128 이고,preflight를 만든 회차가 이미 «git 판올림에 약하다»며 미뤘다. 그 판단을 뒤집지 않았다.⒞★
ls-tree는 «트리 객체»로 답한다 — 부분 클론은 blob 이 없어도 트리는 갖는다. 두 클론에서 동작 동일 실측(있으면 1항목 · 없으면 빈 출력 · 둘 다 rc 0).축 (★양방향 · 제품 스크립트)
0 dropped· rc 0(조용한 green)cannot measure: …:jvm-bytecode/src/class_definition.rs is in that tree but its content could not be read…★비용 유의차 없음: 같은 범위 3회씩 — 전 7.78/7.99/7.05s ↔ 후 6.39/6.72/8.06s(구간 겹침) · DoD 기본 범위 0.46 → 0.33s. 추가 호출은
show가 이미 실패한 경로에서만 돈다.★재다가 발견했고 «고치지 않았다»
이 검사기의 출력 순서가 실행마다 다르다(findings 가 set 에서 나온다).
origin/main판본을PYTHONHASHSEED=random으로 5회 돌려 순서 2종(4+1). rc·집합은 동일하고 줄 순서만 움직인다 ⇒ ★선행 결함이다(내 변경과 무관). 전/후 diff 에서 잠깐 «회귀»처럼 보였기에 적어 둔다 — 후속 카드로 냈다.DoD (9명령 전건 rc=0)
fmt0 ·clippy stable0 ·clippy +beta0 ·clippy wasm320 ·cargo test --all584 passed / 0 failed / 1 ignored(.rs무접촉 ⇒ 불변) ·check-worklog-json0(65파일) ·check-dod-ci-parity0 ·check-named-exception-classes-are-loadable0 ·check-merge-dropped-symbols0