Interlock · Rule checks규칙 검증
Checking Interlock's rules against git and PythonInterlock 규칙을 git과 파이썬에 대어 보기
Interlock decides two things: whether an edit would make a merge conflict, and whether a call fits a function's signature. Both have an exact reference, git's own merge and Python itself. These checks generate random cases and compare Interlock's answer with the reference. Interlock이 판정하는 것은 두 가지입니다. 편집이 병합 충돌을 만드는지, 호출이 함수 시그니처에 맞는지. 둘 다 정답이 정해져 있습니다. git 자체의 병합과 파이썬 자체입니다. 이 검증은 무작위 사례를 만들어 Interlock의 답을 정답과 비교합니다.
Run on 2026-10-19 with Interlock V3.1.0 (commit d9f3cea), git 2.43.0 and Python 3.13.16: 4 checks passed in 203 s.2026-10-19, Interlock V3.1.0(커밋 d9f3cea), git 2.43.0, Python 3.13.16으로 실행. 검증 4개 통과, 203초. Raw results (JSON)원자료 (JSON)
Method방법
- Conflict cases: random text files of 0 to 10 lines and random edits that replace a few lines. Lines come from a small set, so repeated lines make the alignment ambiguous, the hard case for a diff.충돌 사례: 0~10줄의 무작위 텍스트 파일과, 몇 줄을 바꾸는 무작위 편집. 줄을 작은 집합에서 뽑아 같은 줄이 반복되므로 정렬이 모호합니다. diff가 가장 틀리기 쉬운 경우입니다.
- Call cases: random Python signatures and calls.호출 사례: 무작위 파이썬 시그니처와 호출.
- Each check has a fixed random seed, so the same cases come out every run.검증마다 무작위 시드를 고정해 매번 같은 사례가 나옵니다.
Results결과
| Check검증 | Compared with비교 대상 | Cases사례 | Disagreements불일치 |
|---|---|---|---|
| The conflict rule predicts whether git merges two edits충돌 규칙이 git의 병합 결과를 맞히는가 | git merge (merge-ort) | 3,000 | 0 |
| An edit is refused exactly when it makes a new git conflict새 git 충돌을 만들 때만 정확히 거부하는가 | git merge (merge-ort) | 3,000 | 0 |
| Which parameter each argument of a call binds to호출의 각 인자가 어느 매개변수에 묶이는가 | Calling the function in Python파이썬에서 실제 호출 | 3,000 | 0 |
| Whether a signature change breaks calls시그니처 변경이 호출을 깨는가 | Python, 558 call shapes per pair파이썬, 쌍마다 호출 형태 558개 | 400 pairs400쌍 | 0 |
- In every case, Interlock gave the same answer as git or Python.모든 사례에서 Interlock의 답이 git·파이썬과 같았습니다.
- During E4 we found that an earlier line rule disagreed with real
git mergeon some edits. It was replaced with the histogram diff that merge-ort uses, and the first two checks compare the two directly.E4 도중 이전 줄 규칙이 일부 편집에서 실제git merge와 어긋나는 것을 발견했습니다. merge-ort가 쓰는 histogram diff로 바꿨고, 앞의 두 검증이 둘을 직접 비교합니다.
What to watch주의할 점
- Zero in 3,000 is not zero. With no disagreement in 3,000 cases, the disagreement rate is below about 0.1% at 95% confidence; it is not proven to be zero.3,000건 중 0건이 0은 아닙니다. 3,000건에서 불일치가 없으면, 불일치율은 95% 신뢰수준에서 약 0.1% 미만이라는 뜻이지 0으로 증명된 것은 아닙니다.
- Small files. The cases are files of up to 10 lines. E4 tests the same rule on 5,352 real commit pairs.작은 파일. 사례는 10줄 이하 파일입니다. 같은 규칙을 실제 커밋 쌍 5,352개로 시험한 것이 E4입니다.
- Python only. The call checks cover Python, not TypeScript.파이썬만. 호출 검증은 파이썬만 다루고 TypeScript는 다루지 않습니다.
Limits한계
- The Interlock source and these tests are not public, so others cannot rerun them yet.Interlock 소스와 이 테스트는 공개하지 않아, 아직 다른 사람이 다시 돌려 볼 수는 없습니다.