fix(remote): reject invalid artifact responses and settle interruptions

Merged
TH
4h ago
+53-7

Summary

Reject non-200 artifact downloads instead of saving redirect/error bodies as artifacts. Settle interrupted error responses through the existing response lifecycle so failures preserve their HTTP status.

Three files changed: transport, real-HTTP regressions and the compatible wire acknowledgement. Closes #4377; part of #4368. Supported HTTP-200 success, request/auth fields and framing are unchanged.

Validation

Current head 5914865652ccc3ed10098ecc9192eba6d46f7b2c; base 5a836c05d5abfe3daa7556af4a1906a1e1029e17.

At prior head fddac4396ae64a8ca928182bdbe69d447a7fd52c, frozen install/build, full formatting, and all nine runnable exact-head affected checks passed (exactCommit: true, checkoutChanged: false). The review follow-up stops copying once the diagnostic prefix is full; contents/status are unchanged. At current head, formatting, 48 focused tests and released-history compatibility pass. Fresh exact-head affected validation passed all nine runnable checks (exactCommit: true, checkoutChanged: false); current receipt and skip owners. Receipt, skipped-check owners and regression proof: disposable base 1 failed/5 passed for redirect acceptance; independently reordered interrupted-response case also 1 failed/5 passed. Head: six HTTP tests passed. Combined HTTP/wire/mutation checks: 48 passed. Released-history wire compatibility passed without a protocol bump.

The coordinator independently reviewed the worker diff and minimal acknowledgement. No separate model source review is claimed. No live device run is required for this host HTTP/file transport change. GitHub-owned coverage/provider/manual lanes remain obligations; skipped tests are documented. No gate selection or budget was relaxed.