Transport error classifier: distinguish client disconnects, upstream resets, router failures and model anomalies #56
Labels
No labels
accessibility
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nsaspy/llm-log#56
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Turn proxy/journal failures into typed error evidence instead of noisy generic tracebacks.
Observed evidence
The 2026-09-06 one-hour capture contains repeated
aiohttp.client_exceptions.ClientConnectionResetError: Cannot write to closing transportwhile streaming to localhost, plus two captured HTTP 502 events whose upstream body is[Errno 104] Connection reset by peer.These are materially different failure domains and must not be confused with quantization/model-quality anomalies.
Classes
At minimum:
Acceptance
Full-day census to size each class (24h slice 2026-09-06T03:39Z → 09-07T03:39Z, 6,430 events, all
POST /api/v1/chat/completionsvia OpenRouter):ClientConnectionResetErrorat proxy.py:486)[Errno 104] Connection reset by peer{"code":504,"message":"Upstream idle timeout exceeded"}withfinish_reason:"error"inside a 200[DONE], no finish_reason, clean EOF mid-generation (no journal exception at those timestamps)Budget limit exceeded (weekly limit)— burst 18:59–19:00Z hitting two different models in the same minute ⇒ account-scoped, not providerrequest_sha256≤7s later, 100% recovered on another providerKey attribution traps for the classifier:
provider=null(pre-connect) — a recorded 200 with an in-stream error frame has the real provider name per-chunk. Same "upstream error", two shapes.Detector proposals with per-event IDs, confidence and FP analysis are in the 24h research report (staged at
/tmp/opencode/llmlog24h/llm-log-failure-research.md).