fix(ai): B-1 R2 risk_flag_requires_26b 를 hard escalate 로 승격

실측 발견 (safety 8건 재분류):
- 10574 KRAS (safety_operational) → escalate=true (guard 전 pass)
- 10568 JSA (safety_operational) → escalate=false suppressed=True
- 10570 PPE (safety_operational) → escalate=false suppressed=True
- 동일 도메인인데 4건 중 1건만 26B 처리. 같은 질의 종류 문서가
  누구는 깊이 있고 누구는 짧음 → 사용자 관점 일관성 붕괴.

원인: risk_flag_requires_26b 가 soft escalate 분류 → R2 backlog guard
의 ratio 임계치(0.3) 에 걸림. 방금 classify 8건 enqueue 중 앞선 건들이
deep_summary 큐 채우자 뒤 건들이 전부 suppress.

수정: HARD_ESCALATE_REASONS 에 risk_flag_requires_26b 추가. safety/
health/chemical 등 도메인 정책 기반 escalate 는 절대 억제하지 않음.
soft 영역은 여전히 남아있음: self_declare (4B 자가선언), deep_requested
(recommend_deep_summary). 이 둘만 backlog guard 가 억제 대상.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Hyungi Ahn
2026-04-24 12:33:12 +09:00
parent 93a687a51d
commit e2b32fe9b7
+8 -2
View File
@@ -56,8 +56,14 @@ LIBRARY_SUGGESTION_DOCTYPES = {"발주서", "세금계산서", "명세표"}
# PR-B prompt_version task 이름
SUMMARY_TRIAGE_TASK = "p3a_short_summary"
# R2 — hard escalate 사유 (suppress 되지 않는 critical reason)
HARD_ESCALATE_REASONS = {"long_context", "triage_json_invalid", "low_confidence"}
# R2 — hard escalate 사유 (suppress 되지 않는 critical reason).
# 'risk_flag_requires_26b' 는 PR-A domain_policy 가 "이 문서 유형은 26B 필수" 로 지정한
# 신호 (safety_legal_interpretation / chemical_hazard / incident_causation 등). backlog
# 가 많아도 억제하지 말 것 — safety 도메인 전수 coverage 보장.
HARD_ESCALATE_REASONS = {
"long_context", "triage_json_invalid", "low_confidence",
"risk_flag_requires_26b",
}
# ───────────────────────── TriageOutput (R1) ─────────────────────────