mirror of
https://github.com/lukaszraczylo/traefik-llmgateway.git
synced 2026-10-13 04:58:50 +00:00
exerciseTargetHealth's traffic-sourced assertion (mcpProbeServerName must read healthy/traffic, F5 review) raced its own trigger: GET /admin/api/targets was the first-ever sweep-capable route this harness hit, so the background sweep it started could beat the response encode and overwrite source from traffic to probe under Yaegi's interpreter overhead. exerciseTargetHealthProbeWarmup now runs first, before exerciseHandler, against a dedicated, never- proxied MCP target — its health can only ever be written by the probe, so polling it to healthy/probe both proves the interpreted active-probe path end to end and spends this gateway's one probeInterval-bounded sweep before any traffic runs, making every later target-health assertion in this harness deterministic. probeInterval moves from 10s to 60s so no later exercise can trigger a second sweep mid-run. TARGETHEALTH-1's expected state also updates to unknown, reflecting F4 (a2d152b1): mcpProbeServerName's only observation is a failed tools/call, so it has never once succeeded. mcp_a2a_test.go's ClientCanceled_RecordsNothing test replaces its 30ms-cancel-vs-200ms-sleep timing margin with a channel handshake (cancel only once the handler is genuinely reached, then release it), removing any wall-clock dependence. Claude-Session: https://claude.ai/code/session_01EebV5jyWvYocByNQ3oss1w