요약
#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 |
근거 커밋: f23ab50 — feat(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-closed —
verdict=human, backend=null (:456-462)
검증해야 할 것 (이 이슈의 범위)
claude 미인증 노드에서 Codex 폴백이 실제로 판정을 내는지 실측. 코드 존재는 동작을 보장하지 않습니다.
대상 노드 (2026-08-25 실측, claude loggedIn: false):
| 노드 |
유효 큐 |
| gwakga |
237 |
| sogyo |
24 |
| bangtong |
5 |
| jingun |
2 |
통과 기준
- 대상 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 |
관련
요약
#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_codex_judge()전용 어댑터 존재 —judge-batch.py:336-361NUNCHI_JUDGE_CMD=codex로 못 바꿈NUNCHI_JUDGE_PROVIDER(auto|claude|codex) +NUNCHI_JUDGE_CMD오버라이드 지원 —judge-batch.py:64-65근거 커밋:
f23ab50—feat(nunchi): add fail-closed Codex judge fallback (#1278) (#1280)원인: 인수인계서를 쓰면서 인수인계서 작성 시점과
f23ab50머지 시점의 선후를 확인하지 않았습니다. #1264 코멘트에 정정을 남겼습니다.현재 구현 동작 (소스 기준)
auto모드는 Claude 우선, 호출/출력 실패 시에만 Codex 폴백 (judge-batch.py:264-281)human판정은 결과이지 실패가 아니므로 두 번째 모델 호출을 소비하지 않음 (:268-270)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)verdict=human,backend=null(:456-462)검증해야 할 것 (이 이슈의 범위)
claude 미인증 노드에서 Codex 폴백이 실제로 판정을 내는지 실측. 코드 존재는 동작을 보장하지 않습니다.
대상 노드 (2026-08-25 실측, claude
loggedIn: false):codex바이너리 존재 및 인증 상태 실측 (shutil.which경로 +codex login status)backend=codex로 판정이 나오는지 확인judge-audit.jsonl의backend/attempts필드 확인 —claude:*실패 후codex성공 경로가 기록되는지--output-schema스키마 검증이 실제로 통과하는지 (파싱 실패 시codex:*failure로 떨어짐)NUNCHI_JUDGE_CODEX_MODEL미설정 시 기본 모델이 무엇인지, 적절한지통과 기준
backend=codex판정이 dry-run으로 재현됨human으로 떨어지지 않음)⚠ 실행 노드 제약
yukson · nosuk에서 수행하지 마십시오. 두 노드는 08-27~28 APPLY 파일럿 관측 대상이고, 관측 변수가 유입률입니다. 세션 distill이 리뷰 큐에 fact를 새로 쓰므로 작업 자체가 측정에 섞입니다.
실측 근거: yukson 유효 큐가 2026-08-25 하루 동안 740 → 968 → 1034로 상승. 큐 적체가 아니라 작업 세션의 distill 유입입니다.
검증 대상 노드(gwakga 등)에서 직접 수행하면 이 제약과 충돌하지 않습니다.
계수 방식
큐 수치는 조건과 함께 인용하십시오:
valid_to IS NULL AND review=1nunchi.py:1073nunchi.py:940-955(#1272)AND created_at <= ?judge-batch.py:187관련
f23ab50) — Codex 폴백 구현