The container smoke check can hit Docker's published port before Tasker starts listening. On Spindle this returns curl error 56 (connection reset), which the previous connection-refused retry setting did not handle.
Retry startup errors with the existing retry count and a 60-second retry budget. Write metrics through curl's output option so failed partial responses are discarded before retrying. Add regression tests using real curl against a local HTTP server that resets a connection or truncates a response.
Validation: reproduced the original failure in Spindle's debug VM and confirmed the fixed smoke check passes there. Local Docker smoke check and all 19 Python tests passed. The two regression tests failed before the fix.