fix(ingest): address review round 2 (stale gauge + hygiene)
- metrics: update_ingest_queue_depth now pre-zeroes every managed ingest queue before applying live counts, so a queue that drains to empty (and drops out of procrastinate's list_queues_async) reads 0 instead of sticking at its last non-zero value (ghost backlog in Grafana/alerts). Adds a regression test. - procrastinate: comment that _is_transient_infra_error treats all qdrant errors as transient deliberately (bounded same-tier retry; over-broad is acceptable). - escalation: note next_tier is the building block; production routing uses ProcessorRegistry.next_available_tier. - tests: add evaluate_escalation fast+ocr-only low-confidence -> ocr case. Deck #323. 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
35f8204a16
commit
e7c0c23486
@@ -30,10 +30,11 @@ def next_tier(current: str) -> str | None:
|
||||
"""The next tier above ``current`` in the ladder, or ``None`` if terminal.
|
||||
|
||||
Pure ordering only -- it does not consider whether the next tier is
|
||||
*available* (a processor registered / OCR enabled). Callers that need
|
||||
availability resolve it against the registry + settings (see
|
||||
``ProcessorRegistry.next_available_tier``); a tier with no escalation target
|
||||
is terminal and its result is indexed as-is.
|
||||
*available* (a processor registered / OCR enabled). **Production routing uses
|
||||
``ProcessorRegistry.next_available_tier``**, which layers availability on top
|
||||
of this ordering; ``next_tier`` itself is the underlying building block
|
||||
(referenced directly by tests). A tier with no escalation target is terminal
|
||||
and its result is indexed as-is.
|
||||
"""
|
||||
try:
|
||||
idx = TIER_LADDER.index(current)
|
||||
|
||||
Reference in New Issue
Block a user