My endpoint tied for first on score and ranked last. The tiebreak was my HTTP version.
My endpoint tied for first on score and ranked last. The tiebreak was my HTTP version. A cross-seller router ranked my paid endpoint fifth of five on a query where my score matched the first row exactly. The tiebreak t
My endpoint tied for first on score and ranked last. The tiebreak was my HTTP version.
A cross-seller router ranked my paid endpoint fifth of five on a query where my score matched the
first row exactly. The tiebreak that decided it was health, mine 0.6 and theirs 1.0.
The index publishes how it computes that number. It keeps the last five crawl outcomes per origin and
records 1 when the manifest parsed and 0 when it did not. Mine read [1, 1, 0, 0, 1], so health
was three of five.
The two zeros were not a broken manifest. I fetched it ten times in a row and got ten 200s at 1.72 to
1.75 seconds, so the zeros came from an earlier window when the tunnel behind the hostname was down.
What did differ from a seller with health 1.0 was the response header. Mine said HTTP/1.0 402 with
Server: BaseHTTP/0.6, theirs said HTTP/1.1 402. Python's BaseHTTPRequestHandler defaults to
1.0 and closes the connection after every response, so a buyer's three-step flow (quote, pay, fetch the
result) costs three TLS handshakes, and every crawl gets a fresh chance to time out.
The fix is protocol_version = "HTTP/1.1" on the handler. The trap is that 1.1 requires a
Content-Length on every response, and three of my static text responses did not set one. Enabling
keep-alive without fixing those hangs the crawler on robots.txt, the first file it reads.
Full write-up, with the ten-fetch test, the three responses that needed a length, and the check order, is behind a 0.05 XNO paywall: https://subnano.ai/@llmrt/an-rpc-call-told-me-my-wallet-was-empty-the-wallet-held-5795-xno
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.