Skip to content

nunchi: verify Codex judge fallback actually triages on claude-unauthenticated nodes (#1264 ③ 정정) #1287

Description

@seoseo-ai

요약

#1264 인수인계서의 ③ 항목(judge codex 어댑터 구현)은 이미 구현·머지되어 있습니다. 남은 것은 구현이 아니라 실측 검증입니다. 이 이슈는 그 검증 범위를 정의합니다.

정정 — 인수인계서 ③의 전제는 무효

인수인계서(/root/nunchi-1264-handoff-20260825.md, 2026-08-25 12:1x 작성)는 아래처럼 적었으나, 작성 시점 이후 머지된 코드와 어긋납니다.

인수인계서 주장 현재 main 실측
judge_item()claude -p 고정 judge_candidates()가 claude → codex 순서로 시도 — judge-batch.py:264-281
claude 전용 플래그라 drop-in 불가 _codex_judge() 전용 어댑터 존재 — judge-batch.py:336-361
NUNCHI_JUDGE_CMD=codex로 못 바꿈 NUNCHI_JUDGE_PROVIDER (auto|claude|codex) + NUNCHI_JUDGE_CMD 오버라이드 지원 — judge-batch.py:64-65

근거 커밋: f23ab50feat(nunchi): add fail-closed Codex judge fallback (#1278) (#1280)

원인: 인수인계서를 쓰면서 인수인계서 작성 시점과 f23ab50 머지 시점의 선후를 확인하지 않았습니다. #1264 코멘트에 정정을 남겼습니다.

현재 구현 동작 (소스 기준)

  • auto 모드는 Claude 우선, 호출/출력 실패 시에만 Codex 폴백 (judge-batch.py:264-281)
  • human 판정은 결과이지 실패가 아니므로 두 번째 모델 호출을 소비하지 않음 (:268-270)
  • Codex 경로는 격리 실행: codex exec --ephemeral --ignore-user-config --ignore-rules --sandbox read-only --skip-git-repo-check --output-schema <judge-verdict.schema.json> --output-last-message <tmp> --config approval_policy="never" (:336-361)
  • 모든 백엔드 소진 시 fail-closedverdict=human, backend=null (:456-462)

검증해야 할 것 (이 이슈의 범위)

claude 미인증 노드에서 Codex 폴백이 실제로 판정을 내는지 실측. 코드 존재는 동작을 보장하지 않습니다.

대상 노드 (2026-08-25 실측, claude loggedIn: false):

노드 유효 큐
gwakga 237
sogyo 24
bangtong 5
jingun 2
  • 각 노드에서 codex 바이너리 존재 및 인증 상태 실측 (shutil.which 경로 + codex login status)
  • dry-run으로 judge-batch 1회 실행, backend=codex로 판정이 나오는지 확인
  • judge-audit.jsonlbackend / attempts 필드 확인 — claude:* 실패 후 codex 성공 경로가 기록되는지
  • --output-schema 스키마 검증이 실제로 통과하는지 (파싱 실패 시 codex:* failure로 떨어짐)
  • 판정 품질 표본 검토 — Codex 판정이 Claude 판정과 비교 가능한 수준인지
  • NUNCHI_JUDGE_CODEX_MODEL 미설정 시 기본 모델이 무엇인지, 적절한지

통과 기준

  • 대상 4대 중 최소 1대(gwakga 우선 — 큐 237로 최대 수혜)에서 backend=codex 판정이 dry-run으로 재현됨
  • fail-closed 경로가 오탐 없이 동작 (백엔드 정상인데 human으로 떨어지지 않음)

⚠ 실행 노드 제약

yukson · nosuk에서 수행하지 마십시오. 두 노드는 08-27~28 APPLY 파일럿 관측 대상이고, 관측 변수가 유입률입니다. 세션 distill이 리뷰 큐에 fact를 새로 쓰므로 작업 자체가 측정에 섞입니다.

실측 근거: yukson 유효 큐가 2026-08-25 하루 동안 740 → 968 → 1034로 상승. 큐 적체가 아니라 작업 세션의 distill 유입입니다.

검증 대상 노드(gwakga 등)에서 직접 수행하면 이 제약과 충돌하지 않습니다.

계수 방식

큐 수치는 조건과 함께 인용하십시오:

조건 출처
유효 큐 valid_to IS NULL AND review=1 nunchi.py:1073
스냅샷 검토대기 위 − G5 차단분 nunchi.py:940-955 (#1272)
배치 소진 가능량 위 + AND created_at <= ? judge-batch.py:187

관련

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions