Repository navigation
Description
A dialog request failed after repeated attempts. The available evidence shows overload responses from primary routes and response-format failures from another route. The observed attempts did not reach the fallback tail expected by the configured routing design.
Observed behavior
- Eleven failed attempts were recorded across repeated runs over approximately 75 seconds.
- The attempted routes returned overload or response-format errors.
- Each observed run reached at most three started attempts; the documented routing design allows five to reach the complete fallback chain.
- Some attempt records did not resolve the selected model, limiting reliable attribution.
- The sampled runtime and database metrics did not show a restart, memory kill, or lock/pool exhaustion. This does not by itself rule out every resource-related cause.
Questions to resolve
- Was the fallback tail absent from the loaded configuration, filtered by capabilities, or skipped by routing logic?
- Are response-format errors caused by an external endpoint or by our decoder?
- Is incomplete model attribution a telemetry defect or inconsistent routing data?
External failures and a possible code/configuration defect must be assessed independently. A code change is not yet justified solely by these observations.
Relevant code and prior work
Review the route-selection policy, retry walker, capability filtering, loaded hop/time budgets, and attempt attribution. PR #98 describes the intended fallback reachability; PR #30 is relevant to response parsing.
Acceptance
- Establish which candidates were eligible and why the remaining fallback routes were not attempted.
- If a code defect is confirmed, reproduce it with synthetic route fixtures and verify fallback reachability within the configured budgets.
- Verify attempt attribution with synthetic provider/model records.
- Preserve existing retry, task persistence, and user delivery behavior.
Exact deployment, routing, provider, model, and infrastructure details are retained in the private incident context supplied to the assigned agent. They are intentionally absent from this public issue, including its hidden markup.
Activity
[-]Dialog turn on dialog-aifarm exhausted all attempts: vram-cloud overloaded plus aifarm-vllm-gpu0 protocol errors, with the documented GPU2/Gemini fallbacks never attempted[/-][+]Dialog retries exhaust before the configured fallback chain is reached[/+]iamwavecut commentedon Sep 9, 2026
Problem
A dialog task on the dialog queue failed with terminal all_attempts_exhausted whose reason is provider_protocol_error, the 49th occurrence of this signature since it first appeared three weeks ago. The newest occurrence is later than the merge that split validator rejections from endpoint protocol faults, and the routing-classification files are unchanged from that merge to the current deployed head, so the recurrence ran under the split classifier and shows the split did not eliminate the signature. Verified in the deployed tree: two session-engine sites still hard-code the protocol-error class for outcomes where the provider answered and our own validation rejected or emptied the answer (sanitized-to-empty final answer, and outbound deliverability validation), and that misclassified reason is what the job-retry path writes into the terminal event. A second, external funnel remains possible: the self-hosted hop genuinely returning empty or non-JSON bodies, which the same classifier legitimately types as protocol errors. No retained attempt rows, error strings, or raw bodies exist for the newest occurrence, so which funnel produced it is unresolved.
External cause: possible. Code defect: possible.
Observations
Hypotheses
Supporting
Contradicting
Related changes
Missing
Acceptance
Impact
49 captured terminal events.
Exact infrastructure identities and operational evidence remain in the private incident context available to the repair worker.
iamwavecut commentedon Sep 9, 2026
Problem
A recurring dialog-workflow exhaustion: three retry rounds each start four distinct targets spanning the whole chain; the weighted primary tier rejects with overload while the remaining primary target and the self-hosted fallback tier fail at the protocol level. Host/runtime health and majority dialog success point to external capacity stress, and the fallback tail is demonstrably reachable, contradicting the unreachable-tail premise of the closed prior issues. Unresolved code-side question for the deep stage: the deployed design declares five hops, but chain selection deduplicates by provider+model identity and the terminal fallback never appears in any round, so the four-of-five hop pattern could be a genuine chain-construction defect, a legitimately smaller eligible set, or stored-budget drift; live routing-table data is required to decide.
External cause: confirmed. Code defect: possible.
Observations
Hypotheses
Supporting
Contradicting
Related changes
Missing
Acceptance
Impact
179 captured terminal events.
Exact infrastructure identities and operational evidence remain in the private incident context available to the repair worker.
iamwavecut commentedon Sep 13, 2026
Problem
A dialog task on the dialog queue failed terminally with all-attempts-exhausted surfaced under the overload reason class. The scoped capture shows twelve attempt-failure rows forming four retry rounds seconds apart; every round starts exactly three attempts (both weighted models of the primary external route fail with the overload class, then the first self-hosted fallback hop fails with a protocol-class error) and stops, although the converged configuration documents a five-hop dialog fallback chain. The rounds match the job-level requeue layer, so the truncation sits inside each routed walk. Primary-route overload is directly observed and independently sufficient for terminal failure of those attempts, so the external cause is confirmed. However, verified code mechanisms can silently truncate a walk to three hops (an admin partial update that defaults omitted retry fields to three hops / sixty seconds, a pre-walk capability filter that silently drops chain candidates on image-bearing turns, and a live routing table that may lack the tail assignments), so a code defect remains possible pending live configuration evidence.
External cause: confirmed. Code defect: possible.
Observations
Hypotheses
Supporting
Contradicting
Related changes
Missing
Acceptance
Impact
246 captured terminal events.
Exact infrastructure identities and operational evidence remain in the private incident context available to the repair worker.
iamwavecut commentedon Sep 17, 2026
Problem
A dialog task on the dialog worker queue terminated with the terminal all-attempts-exhausted event after retry rounds that each started only the same three routes of the designed five-hop chain; the fallback-tail routes were never started. External failures are directly observed on three independent provider infrastructures, but no captured attempt record carries a failure reason, so external contribution is possible yet unattributed. A concrete code-level truncation vector is verified at the pinned revision (also the deployed and running revision): the admin update_workflow handler substitutes hardcoded defaults of 3 hops and a 60000 ms wall whenever those optional fields are absent from the request body, the storage-layer UPDATE overwrites both columns unconditionally, and the admin UI coerces empty inputs to the same defaults, so any partial admin update would silently revert the migrated 5-hop / 180000 ms dialog budget. Whether such an update occurred in the incident window is not in evidence.
External cause: possible. Code defect: possible.
Observations
Hypotheses
Supporting
Contradicting
Related changes
Missing
Acceptance
Impact
42 captured terminal events.
Exact infrastructure identities and operational evidence remain in the private incident context available to the repair worker.