android / privacy-sandbox-samples

Apache License 2.0
130 stars 52 forks source link

Bidding logic always interpreted as v0 #106

Open typerat opened 5 months ago

typerat commented 5 months ago

Hi 👋

We're using bidding logic v3 and adding the header x_fledge_buyer_bidding_logic_version 3 following the mock server specification. This has been working for some months now, until recently the API stopped respecting that header. The logs always show adservices.fledge: Got buyer bidding logic version 0.

Any idea why?

galarragas commented 4 months ago

Would you be able to check the value of this flag fledge_ad_selection_bidding_logic_js_version using

device_config get adservices fledge_ad_selection_bidding_logic_js_version

If the version is left to the default value of 2 we are not reading the response version header. It is possible that the server flag controlling the version has been changed so you are now seeing the different in behavior .

If this is the case you can enable V3 support by using

device_config put adservices fledge_ad_selection_bidding_logic_js_version 3
typerat commented 4 months ago

Hi @galarragas, thanks for your response! Running adb shell device_config get adservices fledge_ad_selection_bidding_logic_js_version returns null.

If the version is left to the default value of 2 we are not reading the response version header.

Why isn't the default behavior the same as in the documentation? This is confusing... I'd expect the header to be read always. How is this supposed to work on user devices where we can't set flags?

galarragas commented 1 month ago

Sorry it took so long to answer.

Running adb shell device_config get adservices fledge_ad_selection_bidding_logic_js_version returns null.

Thanks for confirming, so the fact that V2 is not supported is an expected behavior and can be overridden as I described earlier.

Why isn't the default behavior the same as in the documentation? This is confusing... I'd expect the header to be read always. How is this supposed to work on user devices where we can't set flags?

We haven't ramped up the feature yet. We haven't been investing in the on-device auction recently because of our focus to B&A auctions so this has been left dragging. I agree that the documentation is confusing since it is described the final state while we are still in the old one. I don't have a date for when the behaviour will be made consistent but I will update the documentation

galarragas commented 1 month ago

Why isn't the default behavior the same as in the documentation? This is confusing... I'd expect the header to be read always.

I agree with you, we have features that are documented and not ramped up yet so there is a disconnect.

How is this supposed to work on user devices where we can't set flags?

On user device we are currently only supporting the old logic. Once the feature will be ramped up your server will receive an header X_FLEDGE_1_VERSION declaring what is the version of JS logic supported by the client.

We are going to improve the documentation, sorry for the confusion.