[2026-09-19-partial-clone-blob-vs-absence-p0] fix(scripts): 머지 드롭 검사기의 출력 순서를 고정한다 — 두 회차를 diff 할 수 있게 - #83
Merged
Conversation
…의 출력 순서를 고정한다 — 두 회차를 diff 할 수 있게
채택 제안 `2026-09-19-partial-clone-blob-vs-absence#p0`
("Sort the checker's findings so two runs can be compared").
문제: 같은 결과를 회차마다 다른 순서로 찍어, 두 회차를 diff 하면 ★없는 차이가 보였다.
재현(origin/main 판본 · e53b214^..e53b214 · 8머지 6드롭 rc1 · PYTHONHASHSEED=random 10회):
서로 다른 순서 2종(6회/4회) — 차이는 경로 블록의 선후 하나뿐이다.
★제안의 «진단»은 부정확했고, 그래서 고치는 자리가 달라진다:
제안은 「findings 가 set 에 모인다」고 했으나 findings 는 list 이고, 한 경로 «안»의 이름은
이미 sorted() 였다. 파일의 set 4개를 전수로 보면 출력 순서에 닿는 것은 changed(경로 집합)
하나뿐이다. ⇒ 「print site 에서 정렬」은 우연히 맞는 처방이었다.
★그래서 «출처»에서 정렬한다 — findings 는 check() 가 반환도 하므로, main() 에서 정렬하면
찍는 것만 결정적이고 반환값은 여전히 해시 순서다.
양방향(제품 호출부 · 사본 아님): 전 2종 ↔ 후 1종 ↔ 되돌리면 2종 ↔ 복원 1종.
★찾은 것은 그대로다: 출력 15줄 동일 · 집합으로 정렬하면 완전 일치 · rc 1 불변.
★대가를 숨기지 않는다: ⒜순회 순서라는 성질을 없앴다(읽는 곳은 없다)
⒝★아무도 잠그지 않는다 — scripts/ 테스트 하네스 0(test*.py 0개)이고, 비결정성을
되돌려 놓고 재니 파이썬 검사기 4종 전건 rc 0 · cargo fmt rc 0 ⇒ 이 계급의 그물은 «0»이다.
하네스는 1줄보다 큰 결정이라 후속 제안으로 남겼다.
DoD 9명령 전건 rc=0 (cargo test 585 passed / 0 failed / 28 targets ·
clippy-beta 는 91크레이트 콜드 컴파일 16m14s).
This was referenced Sep 25, 2026
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-19-partial-clone-blob-vs-absence#p0— "Sort the checker's findings so two runs can be compared".문제 — 재현했다
scripts/check-merge-dropped-symbols.py가 같은 결과를 회차마다 다른 순서로 찍어, 두 회차를 diff 하면 ★없는 차이가 보였다.origin/main판본 · 범위e53b2142^..e53b2142(8머지 · 6드롭 · rc 1) ·PYTHONHASHSEED=random10회:origin/main(전)차이는 ★경로 블록의 선후 하나뿐이다.
★제안의 «진단»은 정확하지 않았다 — 그래서 고치는 «자리»가 달라진다
제안은 「findings 가 set 에 모인다」고 했으나 ⑴
findings는 list 이고 ⑵한 경로 «안»의 이름은 이미sorted()였다.파일의 set 4개를 전수로 보면 출력 순서에 닿는 것은 ★**
changed(경로 집합) 하나뿐**이다.symbols()의foundsorted()가 소비excused()의namestheirs_symbols - …sorted()check()의changed**⇒ 「print site 에서 정렬」은 우연히 맞는 처방이었다. ★출처에서 정렬했다 —
findings는check()가 반환도 하므로,main()에서 정렬하면 찍는 것만 결정적이고 반환값은 여전히 해시 순서다.바꾼 것 — 수로
5파일 +136/−1 · 그중 코드는 1파일 +9/−1(★동작 1줄 + 주석 8줄) ·
.rs0줄.★찾은 것은 그대로다: 출력 15줄 동일 · 집합으로 정렬하면 완전 일치 · rc 1 불변.
★대가 — 「잃는 것이 없다」로 적지 않는다
scripts/용 테스트 하네스가 없다(test*.py0개). 비결정성을 되돌려 놓고 재니 파이썬 검사기 4종 전건 rc 0 ·cargo fmt --checkrc 0 ⇒ ★이 계급에 대한 그물은 «0»이고, 이 수정은 규칙이 아니라 습관이다. 하네스는 1줄보다 큰 결정이라 후속 제안으로 남겼다.DoD — 9명령 전건 rc=0
fmt 0·clippy 0·+beta clippy 0(★91크레이트 콜드 컴파일 · 16m14s — 캐시만이 아니다) ·wasm32 0·cargo test 0(★585 passed / 0 failed / 28 targets) ·worklog_json 0·dod_parity 0(명령 8 · toolchain 2 둘 다 일치) ·named_exception 0·merge_drops 0.※
clippy(stable)는 0크레이트 컴파일(전부 캐시) — 이 회차는 Rust 0줄이라 그것이 정합이고, toolchain 축은 beta 콜드 컴파일이 실제로 검증했다.worklog 쌍
docs/worklog/2026-09-19-merge-drops-deterministic-order.{md,json}·adoptedProposals에2026-09-19-partial-clone-blob-vs-absence#p0기록.