fix(ingest): address review round 1 (Literal kind + log tidy)

- escalation: EscalationDecision.kind is now Literal["hop","suppressed"] so ty
  catches a bad kind statically (and the processor branch is exhaustive).
- processor: simplify the suppressed-escalation log line (no longer repeats
  to_tier / tier).
- registry: clarify _tier_available's ignore_enabled drops the OCR-enabled gate
  specifically (a future per-tier gate would extend the condition).

Deck #324.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Chris Coutinho
2026-06-13 15:20:16 +02:00
co-authored by Claude Opus 4.8
parent a27ddb2d5a
commit f8e8645fc2
3 changed files with 9 additions and 9 deletions
@@ -22,6 +22,7 @@ mapping lives in the queue layer, which imports :class:`EscalateError` from here
from __future__ import annotations
from dataclasses import dataclass
from typing import Literal
# Cheapest-first. ``llm`` is reserved (see base.DocumentProcessor.tier) and not
# wired yet, so it is intentionally absent from the live ladder.
@@ -46,7 +47,7 @@ class EscalationDecision:
exists at all (no processor registered for it).
"""
kind: str # "hop" | "suppressed"
kind: Literal["hop", "suppressed"]
to_tier: str
reason: str # empty_text | low_confidence