fix(ingest): address review round 2 (Literal reason + exhaustive branch + test)
- escalation: EscalationDecision.reason is now Literal["empty_text", "low_confidence"] (parity with kind; ty catches a bad label at call sites). - processor: nest the decision handling so the hop branch is reached via an explicit else under `if decision is not None` — exhaustive over the Literal kind, no None-attribute risk. - tests: add the "OCR processor unregistered (not just disabled) → None" quadrant, locking in absent != suppressed. Deck #324. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
f8e8645fc2
commit
c0fd7dd67b
@@ -49,7 +49,7 @@ class EscalationDecision:
|
||||
|
||||
kind: Literal["hop", "suppressed"]
|
||||
to_tier: str
|
||||
reason: str # empty_text | low_confidence
|
||||
reason: Literal["empty_text", "low_confidence"]
|
||||
|
||||
|
||||
def next_tier(current: str) -> str | None:
|
||||
|
||||
Reference in New Issue
Block a user