Skip to content

File Labels 33 KO

teamswyg edited this page Sep 30, 2026 · 1 revision

검색 입력과 분리한 수정 전 파일 정답

실험 28에서 고정한 두 Parquet 원천에서 instance_id와 patch만 별도 추출했다. 사전 계획에 따라 정답은 평가 전용이며, 요청·후보 생성·힌트 특징·학습에 넣지 않는다. 파일 목록 수집은 패치를 읽지 않는다.

전체 2,400개 선택 작업 결과
파싱 실패 / 미지원 블록 0 / 0
기존 파일 경로가 있는 작업 2,398
기존 파일 경로가 없는 작업 2
기존 경로 합계 / 작업당 최대 3,912 / 30
새 파일 블록 / 중복 경로 64 / 0

기존 경로가 없는 2개는 각각 새 파일 하나만 추가하는 작업이다. 이들을 다른 작업으로 교체하거나 분모에서 지우지 않는다. 실제 평가 정책에서 기존 파일 찾기의 적용 범위와 전체 2,400개 결과를 구분해야 한다. 공개 집계에는 경로·작업 식별자·패치 본문을 넣지 않았다.

Go 파서는 hunk 이전의 이전 파일 헤더, 이름 변경 메타데이터, 해석이 명확한 바이너리/모드 변경 헤더에서 경로를 읽는다. /dev/null은 새 파일로 구분한다. 본문 속 가짜 헤더는 라벨로 취급하지 않으며, 공백·따옴표·Git의 이스케이프 경로와 한글을 처리한다. 모호하거나 잘못된 경로를 추측하지 않는다. 이는 경로 메타데이터 파서이며 패치를 적용할 수 있는지 검증하는 전체 Git 문법 검사기는 아니다. 변경 파일도 정답 관련 파일의 완전한 목록이나 작업 난이도·해결 성공·분할 가능성의 정답은 아니다.

원문 패치 최대 2MiB, 상대 경로 최대 4,096바이트를 적용한다. 파일을 열거나 패치를 실행하지 않는다. 경로를 별도 복사해 짧은 문자열 때문에 전체 패치 메모리가 유지되지 않게 한다. 읽기 단계에서 projection SHA-256, 필드 허용 목록, ID 중복·행 수를 확인한다. 실패 행도 보존한다.

Parquet 변환은 기존 PyArrow를 쓰는 관리용 도구뿐이며 Go 실행 경로에는 Python이 필요 없다. 변환기는 원천 해시·행 수·열 타입을 확인하고 0600 새 파일만 생성한다. 질문이나 실행 스크립트는 이 projection에 포함하지 않는다. 원문과 labels.json은 로컬에만 보관한다.

go run ./cmd/riido-filelabels --out .cache/file-labels-new

고정된 요청 projection과 별도 패치 projection이 필요하다. 새 디렉터리에 공개 가능한 results.json과 비공개 labels.json을 구분해 쓴다. 두 출력 모두 재실행에서 바이트 일치했다. 패치 헤더/본문 분리, 새 파일·이름 변경·바이너리·한글·중복·잘못된 경로와 schema/hash 검사를 테스트했다. 관리용 변환기의 필드 격리·권한·덮어쓰기 방지 테스트도 통과했다. 이 관리용 테스트는 로컬 PyArrow 환경에서 수행하며 CI에 새 PyArrow 의존성을 추가하지 않았다.

아직 실제 파일 후보와 정답을 대조하거나 순위를 평가하지 않았다. 원천 목록은 모두 확보했으며 사전 고정한 후속 평가 규칙에 따라 비교할 예정이다. 기존 예비 평가셋과 모델은 변경하지 않았다.

Clone this wiki locally