Expert plane never receives responses: observe_response/observe_usage are declared in the protocol but never called by the proxy #66
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#66
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?
Summary
llm_log/expert_protocol.pydeclaresobserve_responseandobserve_usageas allowed observation operations, butproxy.pyonly ever callsobserve_request+classify_request(_expert_ingest, proxy.py:183-207, both HTTP and WS paths). The expert plane's graph (LMDBgraph/v2store) therefore accumulates request-side intent observations with zero outcome evidence — no response, no usage, no completion status, ever.Why this matters (24h corpus, 6,430 events)
5e61eb9b…) had its failing result (SBCLfatal ERROR) consumed in a request >26h later. A request-only graph cannot connect "what was asked" to "what happened".Suggested fix
recorder.record(event)in the HTTP path (and WS success path), callobserve_responsewith a safe payload mirroring_expert_base_payload+ response_status, latency_ms, response_sha256, and (when parseable) finish_reason / usage — no raw bodies by default, consistent with #60's payload contract.observe_usagewhen the final SSE chunk carriesusage(already parsed trivially from the last frame)._expert_ingest(exceptions swallowed, never block the relay), and make sure the WS path uses the fixed expert_plane threading from #66.Regression fixture
Proxy a mocked streaming upstream end-to-end with the expert subprocess stubbed; assert one
observe_request, oneclassify_request, oneobserve_response(and oneobserve_usagewhen usage is present) per request, and none on the client-abort path.