Description
The synchronous auction path loses per-provider attribution when every configured provider fails to launch.
AuctionOrchestrator::run_providers_parallel accumulates provider_launch_failed_response entries, but when there are no pending or immediate responses it returns Report<TrustedServerError>. The synchronous callers then emit AuctionTerminalOutcome::ExecutionFailed with provider_responses: &[] because the structured launch-failure responses are no longer available.
The split-phase dispatch path already preserves the same information through DispatchAuctionOutcome::DispatchFailed { provider_responses, ... }, so equivalent failures currently produce different telemetry depending on the auction path.
This was identified as a non-blocking interaction while reviewing #918. It is telemetry-only; the existing terminal error and HTTP behavior should remain unchanged.
Acceptance criteria
- Preserve structured provider launch-failure responses when synchronous orchestration returns a terminal error.
- Emit attributable provider-call telemetry for all-provider-launch-failure outcomes on
/auction and synchronous page-bids paths.
- Retain the existing terminal
execution_failed behavior, error response, and mediation bypass; do not convert the failure into a successful no-bid response.
- Keep the split-phase
DispatchFailed behavior consistent with the synchronous path.
- Add regression coverage for synchronous all-provider launch failures and their emitted provider rows.
Description
The synchronous auction path loses per-provider attribution when every configured provider fails to launch.
AuctionOrchestrator::run_providers_parallelaccumulatesprovider_launch_failed_responseentries, but when there are no pending or immediate responses it returnsReport<TrustedServerError>. The synchronous callers then emitAuctionTerminalOutcome::ExecutionFailedwithprovider_responses: &[]because the structured launch-failure responses are no longer available.The split-phase dispatch path already preserves the same information through
DispatchAuctionOutcome::DispatchFailed { provider_responses, ... }, so equivalent failures currently produce different telemetry depending on the auction path.This was identified as a non-blocking interaction while reviewing #918. It is telemetry-only; the existing terminal error and HTTP behavior should remain unchanged.
Acceptance criteria
/auctionand synchronous page-bids paths.execution_failedbehavior, error response, and mediation bypass; do not convert the failure into a successful no-bid response.DispatchFailedbehavior consistent with the synchronous path.