Skip to content

[fix] remote score 라벨 점수가 한국어 이슈에서 라벨을 고르게 한다 - #562

Merged
m16khb merged 4 commits into
mainfrom
561-korean-label-score
Oct 16, 2026
Merged

m16khb merged 4 commits into
mainfrom
561-korean-label-score

Conversation

@m16khb

@m16khb m16khb commented Oct 15, 2026

Copy link
Copy Markdown
Collaborator

요약

issueops remote score --judge none은 한국어 이슈에서 bug·enhancement·documentation 라벨을 거의 고르지 못했습니다. 키워드가 맞아도 점수가 최대 0.35라 기본 threshold 0.70에 닿지 않았고, 조사가 붙은 "오류가" 같은 낱말은 키워드 "오류"와 같지 않았기 때문입니다. 이 PR은 세 라벨의 점수를 "이슈에서 찾은 유형 근거 중 그 라벨이 차지하는 비율"로 바꿔, 근거가 충분하고 한쪽으로 쏠릴 때만 라벨을 고르게 합니다. 변경 전에는 단일 라벨 이슈 229개 중 정답 라벨을 고른 경우가 4개였고, 지금은 개발·검증 두 구간을 합친 230개에서 99개를 골라 90개가 정답입니다.

Closes #561

변경 내용

  • 세 라벨의 점수는 (그 라벨의 근거 토큰 수) / (전체 근거 토큰 수)입니다. 한글 키워드는 토큰의 앞부분이 같으면, 영어 키워드는 토큰 전체가 같을 때 근거로 셉니다. 그래서 "오류가"와 "재현되지"는 근거가 되지만 add는 address에 맞지 않습니다.
  • 전체 근거가 2개 미만이면 세 라벨 모두 점수 0으로 기권합니다. 근거 하나로 고른 경우는 정답률이 낮았기 때문입니다. 이 라벨들의 evidence는 type_evidence=<라벨 근거>/<전체 근거>와 matched_tokens=<맞은 토큰> 두 줄입니다.
  • 키워드 목록을 한국어·영어 결함, 기능, 문서 어휘로 보강했습니다. 이 세 라벨은 설명과 별칭의 단어 겹침을 더 이상 점수에 쓰지 않습니다.
  • 실제 이슈 발췌 7건(번호 232 미만)으로 선택 4건과 기권 3건을 고정하는 품질 표 테스트, 키워드 일치와 근거 집계·기권 경계 테스트를 추가했습니다.
  • scripts/autoresearch/label_score_eval.py는 저장소의 단일 라벨 이슈를 읽어 remote score의 선택 수와 정답 비율을 잽니다. gh로 이 저장소를 읽기만 하며 CI에는 연결하지 않았습니다.

바뀌지 않는 것은 question처럼 키워드 규칙이 없는 라벨의 점수와 evidence 문자열, 명시한 score 입력, 관련 이슈 점수, CLI·MCP 응답 필드, threshold 기본값입니다.

확인한 것

확인한 동작 방법 결과
새 점수 규칙이 실제 이슈에서 선택과 기권을 가른다 품질 표 테스트를 구현 전과 후에 실행 구현 전에는 선택해야 할 4건이 모두 실패했고, 구현 후 통과합니다
개발 구간(번호 231 이하, 단일 라벨 114개) label_score_eval.py 선택 43개, 정답 36개(83.7%)
검증 구간(번호 232~560, 단일 라벨 116개) label_score_eval.py --check 선택 56개, 정답 54개(96.4%)
기존 동작 유지 issueopsremote, remotecmd, issueopscli 패키지 테스트 통과
저장소 전체 self-verify(go test -race ./..., go vet ./..., gofmt 포함) 27개 단계 모두 통과

self-verify는 처음에 이 머신의 python에 pydantic이 없어 skills/slack-delegate Python 테스트에서 실패했습니다. 이번 변경과 무관한 환경 문제여서 저장소 밖 임시 환경에 pydantic과 typer를 설치해 같은 명령을 다시 실행했습니다. 구현은 독립 리뷰어가 검토해 통과시켰습니다.

확인하지 못했거나 한계가 있는 것은 다음과 같습니다.

  • 개발 구간의 정답률은 기준 85%에 못 미칩니다. 키워드와 최소 근거 2개 규칙을 개발 구간으로 정했고, 검증 구간은 규칙을 확정하기 전에 한 번 측정했습니다. 검증 구간은 완전히 독립된 평가가 아닙니다.
  • 리뷰어가 본문에 남은 라벨 판단 문장을 지우고 다시 쟀을 때 검증 구간 91.7%, 개발 구간 84.8%였습니다. 이 값은 리뷰어가 보고한 것이며 저는 재현하지 않았습니다.
  • 영어 키워드는 error가처럼 조사가 붙으면 근거가 되지 않습니다. 한글 접두 일치도 음절 단위라 거부되는 거부된다를 잡지 못합니다.

리뷰 포인트

  • 키워드 목록에서 broken, feature, support, readme, 오동작은 개발 구간에 나오지 않는 일반 어휘입니다. 과하거나 모자란 단어가 있는지 봐 주세요.
  • 근거가 하나뿐이면 점수는 0인데 evidence는 type_evidence=1/1로 보입니다. 기권이 눈에 띄도록 문구를 바꿀지는 이 PR 범위 밖이라 두었습니다.

…s select a label

Lore:
- Intent: Make `remote score --judge none` pick bug, enhancement, or documentation from Korean issue text at the default threshold.
- Why: The old score was 0.65*overlap + 0.35*heuristic, so a keyword hit alone capped at 0.35 and never reached 0.70, and whitespace tokens such as "오류가" never equalled the keyword "오류". 224 of 229 single-label issues selected no label (#561).
- Changes:
  - Rule labels score as (their evidence tokens) / (all evidence tokens); Korean keywords match a token prefix, English keywords match the whole token, and fewer than 2 evidence tokens in total abstains with score 0.
  - Labels without a keyword rule, explicit score input, related-issue scoring, CLI/MCP fields, and the 0.70 default stay as they were.
  - Add the quality table test (issues below #232), keyword/evidence boundary tests, scripts/autoresearch/label_score_eval.py, and the DDD inventory entries.
- Verify: gates G1-G4 met; label_score_eval.py on #232-560 selects 56 with 54 correct (96.43%), on #0-231 selects 43 with 36 correct (83.72%, below the 85% bar); self-verify 27/27 (go test -race, go vet, gofmt; scratch venv supplied pydantic/typer).
- Risk: Low; the keyword list was tuned on #0-231, and the #232-560 check is not fully independent. English keywords with attached particles are not matched.
@m16khb m16khb added the bug Something isn't working label Oct 15, 2026
@m16khb m16khb self-assigned this Oct 15, 2026
Lore:
- Intent: Record the publication and the intent cross-check in the verified-execution report.
- Why: execution complete needs a committed report that names the draft PR; the report is the only path allowed to change after pr_head.
- Changes:
  - Add the intent cross-check and the draft PR link with the label override.
- Verify: Not-tested: documentation-only change to the report; the code verification is unchanged since the previous commit.
- Risk: Low.
…e branch

Lore:
- Intent: Keep the verified-execution report accurate after main was merged and the cycle was reseeded to generation 3.
- Why: PR #562's first CI stopped at lint on main's debt (fixed by #564); the branch now contains that fix and the checks were re-run on the merged head.
- Changes:
  - Add the generation 3 re-verification section (focused tests, label eval, self-verify in a CI-like temporary HOME, CI results for the merge commit).
- Verify: Not-tested: report-only change; code is unchanged since the previous review.
- Risk: Low.
@m16khb
m16khb marked this pull request as ready for review October 16, 2026 00:16
@m16khb
m16khb merged commit 6f1ad90 into main Oct 16, 2026
2 checks passed
@m16khb
m16khb deleted the 561-korean-label-score branch October 16, 2026 00:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

remote score 라벨 점수가 한국어 이슈에서 라벨을 거의 고르지 못한다

1 participant