## Parent epic #532 ## Description Inject EC identity data into outbound OpenRTB bid requests for publishers with `bidstream_enabled = true` partners. **Scope:** Auction handler (Mode B path in existing auction code) ## Acceptance criteria - `user.id` set to `ec_context.ec_value` when EC present and consent granted. No fallback — when no EC, `user.id` is omitted. - `user.eids` populated with one entry per `bidstream_enabled` partner with a synced UID, using `partner.source_domain` and `partner.openrtb_atype`. - `user.consent` set to `ec_context.consent.raw_tc_string` when present. - No EID entry for partners with no synced UID. - KV read failure → `user.eids` omitted (empty); `user.id` still set from EC; auction proceeds (no 5xx). - No EC present → `user.id` omitted; `user.eids` empty. Auction still runs. - `X-Synthetic-*` headers not present (removed in PR #479). Only `X-ts-ec` set. - Schema changes: `UserInfo.ec_value`, `Eid`/`EidUid` types, `user.eids`, `user.consent` in OpenRTB, remove synthetic fields. - Unit tests cover EID structure, consent string threading, KV-degraded path, no-EC path. ## Spec ref `docs/internal/ssc_technical_spec.md` §12
Activity