[rustjava-count-symbols-dropped-from-second-parent-on-resolution] test(ci): 충돌 해소가 떨어뜨린 정의를 센다 [rustjava-count-symbols-dropped-from-second-parent-on-resolution-fix] [rustjava-count-symbols-dropped-from-second-parent-on-resolution-fix2] [rustjava-count-symbols-dropped-from-second-parent-on-resolution-fix3] - #71
Merged
Merged
Conversation
added 2 commits
September 18, 2026 08:48
…t(ci): 충돌 해소가 떨어뜨린 정의를 센다 채택 제안 2026-09-17-union-restores-silently-dropped-makeconcat#p0. 제품 코드 0줄 — 검사기 1개 + 의도 규약 + 기존 rust.yml 에 잡 하나(새 워크플로 파일 0). ⓑ 를 먼저 쟀다(이 게이트가 티켓을 끝낼 수 있었다): origin/main 에 손실을 재구성해 기존 축을 전부 돌렸더니 생성기 rc=0 · 단일결함 감사 rc=0(23) · test_class_format 21 · test_fixture_pins 3 · 파리티 rc=0 · git status 0줄 · 충돌 마커 0 ⇒ 아무것도 못 잡는다. ★왜 조용한지를 정확히 알아냈다: 손실은 떨어진 이름들이 서로 자기완결일 때만 조용하고, 충돌의 한쪽을 통째로 택하는 것이 바로 그 자기완결 슬라이스를 떨어뜨리는 것이다. ⓐ 제안의 「3건」을 다시 세니 4건이다(LINKED · MAKECONCAT_DESCRIPTOR · make_concat_call_site · method fieldref). ⓒ 넷째가 클래스 «안»의 메서드라 「최상위」만 보면 4 중 3만 잡는다 ⇒ 한 단계 중첩까지 본다. ⓓ 이 repo 는 --merge 착지지만 겨냥하는 것은 브랜치 내부 base 당김이라 착지 방식과 무관하다(부모 1개 범위 → 0 merge(s), rc=0). 의도/사고 분리는 커밋 trailer 다: Dropped-from-theirs: <name> -- <why>. 자기 커밋 하나만 면제하므로 「영구 목록이 검사기를 무력화한다」가 구조적으로 불가능하다. ★설계를 한 번 갈아엎었다: 초판의 「트리 == 부모1 이면 -s ours 로 보고 건너뛴다」 구조 면제가 개악 시험에서 theirs 를 통째로 버린 머지까지 삼켜 rc=0 이 됐다 — 그게 이 검사기의 존재 이유인 실패다. 면제를 선언(* 와일드카드)으로 교체했다. 양방향 전건: 개악 rc=1 + 이름을 말한다 · 정상 rc=0 · trailer rc=0, 지우면 rc=1 · 스쿼시 rc=0 · 실사고에서 손으로 찾은 것과 같은 분할(생성기 4 사고 + .rs 2 의도)을 기계가 낸다. 오탐을 세었다: 최근 200커밋·머지 83건 소급 → 8건 red · 정의 19개(9.6%) · 4.4초/머지. CI 는 origin/main..HEAD 만 보므로 과거 8건이 main 을 red 로 만들지 않는다. 잃는 것: 이름은 남고 본문이 비어진 경우는 못 잡는다 · 리네임·이동을 소실과 구별 못 한다 · trailer 는 우회로다 · DoD 블록에도 들어가 로컬 실행에도 시간이 붙는다. CI 잡을 늘렸으므로 CLAUDE.md DoD 블록도 같이 고쳤다 — 파리티 락이 명령 7개로 둘 다 일치를 답한다. cargo test --all 583/0/1(불변).
… test(ci): 필터를 넓히고 면제 예시를 «작동하는» 형식으로 고친다 게이트② 반려 2건. 제품 코드 0행. ① 필터가 좁아 «둘째 사고»를 삼켰다. 초판은 theirs 가 건드린 파일만 봤고 그 근거로 「only files the merged-in branch actually changed can have lost its work」라 적었는데, 이 repo 자신의 둘째 사고가 그 문장을 반증한다 — 514d5b0 은 e53b214 와 같은 넷을 떨어뜨렸는데 초판은 「0 file(s) examined」 rc=0 으로 통과시켰다. 해소가 «상대가 건드리지도 않은» 파일을 되돌리는 것이야말로 이 검사기의 존재 이유인데 그것을 못 봤다. ⇒ 술어를 「theirs 가 바꾼 파일 ∪ 머지가 바꾼 파일」로 넓혔다. 이제 두 사고 둘 다 rc=1 · 6정의다. ★좁힌 채 두지 않은 이유: 좁은 필터를 정당화하던 문장이 거짓이므로 그대로 두면 「없는 보장을 있다고 적는」 형태가 된다 — 이 리니지가 #67 의 F1 에서 정확히 그것으로 반려됐다. 대가는 숨기지 않았다: 83머지 소급 8건/19정의 → 10건/45정의(게이트② 실측 · 다시 재지 않았다). 늘어난 것에 진짜 사고 1건이 들어 있지만 읽을 것과 trailer 도 는다. Scope 문단에 그대로 적었다. ② docstring 의 유일한 작동 예시가 작동하지 않았다. `Pool.fieldref` 라 적혀 있는데 검사기는 `method fieldref` 를 내보내고 «글자 그대로» 대조한다 ⇒ 예시대로 적은 사람은 면제에 실패한다. 합성 머지로 양방향 확인했다: 출력에서 복사한 이름은 rc=0, 예쁜 형식은 rc=1. 예시를 출력 형식으로 고치고 ★「이름은 검사기 출력에서 글자 그대로 복사해야 한다」를 계약에 박았다 — 예시만 고치면 다음 형식이 또 갈린다. 전 이력 1,286커밋에 trailer 0건이라 깨진 기존 등재는 없다. 재확인: 스쿼시(부모 1개) rc=0 · 정상 머지 rc=0 · 이 PR 범위 rc=0 · DoD 문서축 전건 rc=0.
added 2 commits
September 18, 2026 15:22
…] merge origin/main — 원장 2파일 합집합(theirs 원문 보존 · ours 최신이라 맨 위)
…] docs: 45 를 내 구현에서 다시 재 26 으로 고치고 늘어난 7정의를 하나씩 판정한다
…] docs: 「0 file(s) examined」를 실측 4 로 고치고 「느리지 않았다」를 노이즈 서술로 바꾼다
…] merge origin/main — 승인된 3파일 합집합(DoD 두 줄 · 원장 상단)
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-17-union-restores-silently-dropped-makeconcat#p0. ★제품 코드 0줄 — 검사기 1개 + 의도 규약 + 기존rust.yml에 잡 하나(새 워크플로 파일 0).ⓑ 먼저 — 이미 덮는 축이 «없다»는 것을 실행으로 확인했다
origin/main에 손실을 재구성하고 기존 축을 전부 돌렸다:audit-fixture-single-defect.pytest_class_format/test_fixture_pinscheck-dod-ci-parity·git status· 충돌 마커⇒ 아무것도 잡지 못한다. ★왜 조용한지도 알아냈다: 손실은 떨어진 이름들이 자기완결일 때만 조용하고(아니면
AttributeError로 시끄럽게 죽는다), 충돌의 한쪽을 통째로 택하는 것이 정확히 그 자기완결 슬라이스를 떨어뜨리는 것이다.ⓐ「3건」→ ★4건 · ⓒ 정의 범위는 실제 4건에서 거꾸로
LINKED·MAKECONCAT_DESCRIPTOR·def make_concat_call_site· ★method fieldref.★넷째가
class Pool안의 메서드라 「최상위」만 보면 4 중 3만 잡는다 ⇒ 한 단계 중첩까지 본다.ⓓ 스쿼시
이 repo 는 등재 repo 라
--merge착지지만, 겨냥하는 것은 브랜치 내부 base 당김 머지(사고 둘 다 그것)라 착지 방식과 무관하다. 부모 1개 범위 →0 merge(s)· rc=0.의도와 사고를 가르는 것 — 커밋 trailer
★자기 커밋 하나만 면제하므로 「영구 목록이 검사기를 무력화한다」가 구조적으로 불가능하다.
★설계를 한 번 갈아엎었다 — 개악 시험이 내 검사기의 구멍을 잡았다
초판의 구조적 면제(「트리 == 부모1 이면
-s ours」)가 ★theirs 를 통째로 버린 머지까지 삼켜 rc=0 이 됐다. 그게 이 검사기의 존재 이유인 실패다 ⇒ 면제를 선언(*)으로 교체. 양방향을 안 돌렸으면 끈 채로 착지했다.합격선 — 양방향 전건
.rs2 의도)⒟ 오탐 — 세었다
최근 200커밋·머지 83건 → 8건 red · 정의 19개(9.6%) · 4.4초/머지 ⇒ PR 당 0~9초. CI 는
origin/main..HEAD만 보므로 과거 8건이 main 을 red 로 만들지 않는다.잃는 것
이름은 남고 본문이 비어진 경우는 못 잡는다 · 리네임·이동을 소실과 구별 못 한다 · trailer 는 우회로다(더 조이지 않은 것이 판단이다) · DoD 블록에도 들어가 로컬에도 시간이 붙는다.
cargo test --all583/0/1(불변) ·check-dod-ci-parity명령 7개 일치(CI 잡을 늘렸으므로 DoD 블록도 같이 고쳤다).