Skip to content

The organization is not in the update. The content and the codebase are.

Qualified within the hour. This entry reads the classification operating point, where organization is indeed not attributable. A targeted detector, which is what an attacker has, does find it: AUC 0.736 for AOSP within C++, beating random relabelings of the same nine projects at p = 0.012. See "The organization is there, at the operating point an attacker actually has".

datasets/results/client-attribution-cpp-early.json. The design the earlier runs could not support: 77 clients over 18 projects and three organizations, with a content type carried by two organizations at several projects each, C++ in AOSP (3 projects, 13 clients) and in Qt (6 projects, 30 clients). Same protocol as before: one initialization, 64 examples a client, disjoint by change, attribution by mean cosine leaving each client out.

attributing classes accuracy majority p
content: C++, Python, documentation 3 0.909 0.558 0.0002
project 18 0.442 0.078 0.0002
organization 3 0.416 0.506 0.22
organization within C++ (AOSP against Qt) 2 0.395 0.698 0.67
organization beyond project, within C++ 2 0.395 - 0.75, exact over 84 relabelings
relation between two clients mean cosine pairs
same project 0.270 146
same organization and content, other project 0.262 571
other organization, same content 0.253 483
other organization and content 0.240 1324
same organization, other content 0.222 402

An update betrays what kind of code it was trained on, and which codebase; it does not betray who owns the codebase. Organization is attributed below its own majority baseline, and within C++, where both organizations bring several projects, it is at 0.395 against a 0.698 baseline, with the project as the exchangeable unit giving p = 0.75. The relation table says the same: two clients of one organization writing different kinds of content are the least aligned pairs in the corpus, below two clients that share nothing.

This overturns the earlier reading, and the earlier number was composition. The 0.912 organization accuracy of job 148513 came from a corpus where OpenStack was mostly Python and documentation and Qt mostly C++: the classifier read the content mix and the label followed. Adding a third organization that writes C++ like Qt, and enough projects to hold content fixed, removes the confound and the effect with it. The correction was available only because the design was built to make it: content was labelled separately from organization from the first run, and the test that would break the claim was named before the data existed.

What survives. Every leak this log has measured is real; what changes is its name. A client update identifies its codebase family, a family being a project or a set of projects sharing conventions and a language, and through secure aggregation a round's aggregate identifies one too. An organization is legible only through the codebases it happens to own, which for a federation means barely at all. For RQ2's framing this is sharper than the original claim, not weaker: a governance boundary drawn around an organization does not match the boundary the leak respects.