Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

spec: Move over the config/IG code changes from Private Aggregation spec. #1297

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

morlovich
Copy link
Collaborator

@morlovich morlovich commented Oct 9, 2024

Right now Private Aggregation monkey patches us a lot to implement our integration. This moves over the most mundane of the changes --- parsing of new IG and AuctionConfig fields --- to reduce the size of the monkeypatch and to practive how the process works.

It's moved basically unchanged (except different indent/wrapping); I think the only substantative change is using our origin parser.

https://github.com/morlovich/private-aggregation-api/tree/move-stuff-to-pa has the other half, it likely needs something with imports (I hope adding export to auction config/interest group on our end will help).


Preview | Diff

Maks Orlovich added 2 commits October 9, 2024 10:51
Right now Private Aggregation monkey patches us a lot to implement
our integration. This moves over the most mundane of the changes ---
parsing of new IG and AuctionConfig fields --- to reduce the size of
the monkeypatch and to practive how the process works.

It's moved basically unchanged (except different indent/wrapping);
I think the only substantative change is using our origin parser.

https://github.com/morlovich/private-aggregation-api/tree/move-stuff-to-pa
has the other half, it likely needs something with imports (I hope
adding export to auction config/interest group on our end will help).
@morlovich morlovich added the spec Relates to the spec label Oct 9, 2024
@morlovich
Copy link
Collaborator Author

@alexmturner this will likely need your involvement as well.

Copy link
Contributor

@alexmturner alexmturner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for putting this together! LGTM w two nits.

spec.bs Outdated
@@ -82,6 +82,11 @@ spec: Fenced Frame; urlPrefix: https://wicg.github.io/fenced-frame/
spec: Private Aggregation API; urlPrefix: https://patcg-individual-drafts.github.io/private-aggregation-api
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: I wonder if this should have spec: private-aggregation-api so that it isn't duplicated at the bottom in Terms defined by reference

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That helps a bit, though there is still kinda silly debug-details-enabled

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not really too important, but I think you can avoid this by doing [=debug details/enabled=] instead of [=debug-details-enabled|enabled=] inline and then

text: debug details
for: debug details
    text: enabled
    text: key

in the header. We do something similar in the Shared Storage spec here.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm. So this is kinda a sideways move. It needs ;url still --- that's actually broken in shared storage, too, e.g. it tries to take you to: https://patcg-individual-drafts.github.io/private-aggregation-api/#get-batching-scope-steps
rather than to #scoping-details-get-batching-scope-steps
... and the index ends up with entries for 'enabled' and 'key' inside the private aggregation section, which is probably worse than debug-details-enabled. Like the right thing would be to import the entire type (but I guess it may not know it because it's not exported, and it's kinda a generic name so maybe shouldn't be exported?)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah oof, yeah that's not ideal. Maybe the answer here is to rename it then export it? What you have seems like a pretty reasonable option at least for now, though.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

probalby not related, but better to put the definition of "debug details" to the struct, instead of the section header. I.e., "A <dfn>debug details</dfn> is a [=struct=] ..." and rename the header's id to something different like "debug details header". (it actually applies to many of the type definitions in PAgg spec).

Also, bikeshed has the concept of namespace, like there's [=origin=] and [=url/origin=]. If we want, we can probably do data-dfn-for="pagg" when exporting a generic name.

spec.bs Outdated Show resolved Hide resolved
Copy link
Collaborator

@qingxinwu qingxinwu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

some initial comments.

</div>

<div algorithm>
To <dfn lt="obtain the Private Aggregation coordinator from a string">obtain the
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@alexmturner Can we export this algorithm in PAgg spec so that we don't need to redefine it in this spec? There is a way to link to un-exported algorithms, but shared storage spec also needs it (and redefined it), so maybe easist to just export it. It'll be unfortunate to keep three copies of this algorithm in three different specs.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's only used by us, so my follow up change removes it from PAgg.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shared storage spec also uses it

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's its own implementation, using its own (different!) types?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

they seem to be the same (starting from step 3 of shared storage one). If the shared storage one moves the first two steps out and pass in a url, then it's the same with ours.
I'm not sure what the implementation does, but I guess it's the PAgg service handling obtaining the coordinator, and PA and SS just call the same function? If so, I feel this feature belongs to PAgg, not PA or SS.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ack -- put out a PR to export the string input version: patcg-individual-drafts/private-aggregation-api#163

spec.bs Outdated Show resolved Hide resolved
spec.bs Outdated
Comment on lines 6662 to 6663
:: An [=aggregation coordinator=]. Defaults to the [=default aggregation
coordinator=].
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit

Suggested change
:: An [=aggregation coordinator=]. Defaults to the [=default aggregation
coordinator=].
:: An [=aggregation coordinator=]. Defaults to the [=default aggregation coordinator=].

spec.bs Outdated Show resolved Hide resolved
spec.bs Outdated Show resolved Hide resolved
spec.bs Outdated
1. If |index| is equal to or greater than |interestGroupBuyers|' [=list/size=],
[=iteration/continue=].

Note: [=iteration/Continue=] is used (instead of [=iteration/break=]) to match validation
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure if I understand this sentence correctly. Does it mean "to validate all given buyer keys"?

Note: No error is thrown to allow forward compatibility if
additional report types are added later.

Issue: Should these strings be dash delimited?
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we know the answer?

Copy link
Collaborator

@qingxinwu qingxinwu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

last few comments.

spec.bs Outdated Show resolved Hide resolved
spec.bs Outdated Show resolved Hide resolved
spec.bs Outdated
@@ -82,6 +82,11 @@ spec: Fenced Frame; urlPrefix: https://wicg.github.io/fenced-frame/
spec: Private Aggregation API; urlPrefix: https://patcg-individual-drafts.github.io/private-aggregation-api
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

probalby not related, but better to put the definition of "debug details" to the struct, instead of the section header. I.e., "A <dfn>debug details</dfn> is a [=struct=] ..." and rename the header's id to something different like "debug details header". (it actually applies to many of the type definitions in PAgg spec).

Also, bikeshed has the concept of namespace, like there's [=origin=] and [=url/origin=]. If we want, we can probably do data-dfn-for="pagg" when exporting a generic name.

spec.bs Outdated
: <dfn>required seller capabilities</dfn>
:: A [=set=] of [=seller capabilities=].
The [=seller capabilities=] that each [=interest group=] must declare to participate in the
auction. Interest groups that don't declare all these capabilities will not participate in the
auction.
: <dfn>auction report buyer keys</dfn>
:: A [=map=] from buyer [=origins=] to {{bigint}}s.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we add a sentence describing what each of the new fields are about?
The explainer has some descriptions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
spec Relates to the spec
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants