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,0000
An edit is refused exactly when it makes a new git conflict새 git 충돌을 만들 때만 정확히 거부하는가git merge (merge-ort)3,0000
Which parameter each argument of a call binds to호출의 각 인자가 어느 매개변수에 묶이는가Calling the function in Python파이썬에서 실제 호출3,0000
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 merge on 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 소스와 이 테스트는 공개하지 않아, 아직 다른 사람이 다시 돌려 볼 수는 없습니다.