Skip to content

Implement config-first generic OpenRTB auction providers #1026

Description

@ChristianPavilonis

Context

PR #1016 defines the approved config-first auction-provider architecture. This issue tracks the follow-up implementation and production rollout work described by that design.

Scope

  • Replace singleton PBS/APS auction wiring with a shared, compiled auction plan.
  • Support map-shaped [auction.providers.<id>] and [auction.bidders.<id>] configuration.
  • Add generic OpenRTB execution with typed Standard, Prebid Server, and APS profiles.
  • Preserve PBS/APS request, response, signing, routing, mediation, telemetry, and browser behavior parity.
  • Validate provider endpoints, backend names, target capabilities, collisions, signing, mediation, and profile configuration at startup.
  • Keep adserver_mock mediation static and preserve provider ID, returned seat, and browser delivery bidder identity as separate concepts.
  • Update adapters, CLI overlays, examples, fixtures, documentation, and integration tests.

Acceptance criteria

  • Public configuration is map-shaped; the former providers: Vec<String> shape is rejected.
  • All adapters compile and share one validated Arc<AuctionPlan>.
  • Disabled, zero-provider, and all-skipped auctions complete safely without provider I/O.
  • PBS and APS parity tests and OpenRTB golden tests pass.
  • Browser Prebid demand is restricted to authoritative configured server bidders.
  • Logical auction budgets remain distinct from adapter transport timeout canonicalization.
  • Redirects are refused and no second request is sent.
  • Rust, adapter, CLI, integration, JS, formatting, docs, and clippy verification gates pass.
  • Target-aware config-push validation runs before remote config I/O once the EdgeZero callback dependency is published and pinned.

Dependency / blocker

The target-aware pre-write config-push callback is implemented locally in EdgeZero at commit e3259483636969f6f17a2a55daaf2cf8059b7978, but that commit is not currently resolvable from a remote branch. Keep EdgeZero dependencies on the v0.0.4 lineage until the callback can be pinned atomically.

Related

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions