provenance:design:algorithm_audits
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| provenance:design:algorithm_audits [2026/09/11 11:02] – Reviewer findings from four passes; correct the probe-2 residue (146->158) and the probe-7 narrative; add the recall-repair sweeps and the shared-denominator judgement call. Authored by Claude karel.kubicek.claude | provenance:design:algorithm_audits [2026/09/17 07:23] (current) – Markup rendering sweep: wrap escapes, CLI flag typography, and heading quotes. Authored by Claude. karel.kubicek.claude | ||
|---|---|---|---|
| Line 11: | Line 11: | ||
| ^ Question ^ Answer ^ | ^ Question ^ Answer ^ | ||
| | Does the wiki already cover it? | No. [[Programming: | | Does the wiki already cover it? | No. [[Programming: | ||
| - | | How large is the in-corpus population? | **32** papers under a written inclusion rule (below), of 5, | + | | How large is the in-corpus population? | **34** papers under a written inclusion rule (below), of 5, |
| - | | Is it growing or historical? | Growing: 11 papers in 2020–2023 | + | | Is it growing or historical? | Not historical. Per year: 1.00 (2010–2015), |
| | Could it be a section instead? | It could have been ~3 KB on [[Design: | | Could it be a section instead? | It could have been ~3 KB on [[Design: | ||
| | The counter-argument | The 32 is a **lower bound with a known bias** (see //The screening loss// below), so a reader could reasonably say the page is built on a population the corpus cannot see properly. That is stated on the page itself, in its own box, rather than buried here. | | | The counter-argument | The 32 is a **lower bound with a known bias** (see //The screening loss// below), so a reader could reasonably say the page is built on a population the corpus cannot see properly. That is stated on the page itself, in its own box, rather than buried here. | | ||
| Line 23: | Line 23: | ||
| - **(T) Treatment.** It deliberately varies a property of the measuring identity or request — profile history, declared attribute, location, device, opt-out setting, ad creative — and holds the rest fixed. | - **(T) Treatment.** It deliberately varies a property of the measuring identity or request — profile history, declared attribute, location, device, opt-out setting, ad creative — and holds the rest fixed. | ||
| - | - **(O) Outcome.** What it measures is the platform' | + | - **(O) Outcome.** What it measures is the platform' |
| - **(C) Contrast.** The result is a difference (or a bounded absence of difference) **between arms**, not a prevalence over a crawl of many sites. | - **(C) Contrast.** The result is a difference (or a bounded absence of difference) **between arms**, not a prevalence over a crawl of many sites. | ||
| Line 57: | Line 57: | ||
| ===== The adjudication ===== | ===== The adjudication ===== | ||
| - | 108 candidates scored ≥3 across the probes were shortlisted with their abstracts ('' | + | 108 candidates scored ≥3 across the probes were shortlisted with their abstracts ('' |
| - | **Every verdict, with the sentence that settled it, is in the script output below** ('' | + | **A generic review pass found the weak point here.** 26 of the 58 had been read and dropped with no written verdict, and one of them — // |
| + | |||
| + | **Every verdict, with the sentence that settled it, is in the script output below** ('' | ||
| ===== The screening loss ===== | ===== The screening loss ===== | ||
| Line 89: | Line 91: | ||
| | Khattak et al., NDSS 2016, //Do You See What I See?// | no label record — NDSS 2016 has none | | | Khattak et al., NDSS 2016, //Do You See What I See?// | no label record — NDSS 2016 has none | | ||
| - | The full list of 48 is in the '' | + | The full list of 48 is in the '' |
| ===== Folding ===== | ===== Folding ===== | ||
| Line 96: | Line 98: | ||
| * **'' | * **'' | ||
| - | * **The eight noise-baseline phrasings** are not a fold but a deliberately widened probe ('' | + | * **The eight noise-baseline phrasings** are not a fold but a deliberately widened probe ('' |
| - | **Residue of the candidate probes.** Probe 2 returned **190** candidates. **27** of the final 32 audits and **5** of the 12 rejections lie inside it — the other 5 and 7 were caught by probes 4–7 — leaving a residue of **158** papers dropped at title-and-abstract level without an individual note. The union across all seven probes is **461**, of which **44** were adjudicated in depth, so **417** rest on a title-level read. That is the honest residue of this page. | + | **Residue of the candidate probes.** Probe 2 returned **190** candidates. **28** of the final 34 audits and **5** of the 36 rejections lie inside it — the rest were caught by probes 4–7 — leaving a residue of **157** papers dropped at title-and-abstract level without an individual note. The union across all seven probes is **461**, of which **70** were adjudicated in depth, so **391** rest on a title-level read. That is the honest residue of this page. |
| + | |||
| + | ===== The null: why it is adjudicated and not counted ===== | ||
| + | |||
| + | The page's central claim is that establishing a null is the skipped step. The first version of this log said that claim rested on //"a term count plus an eight-way concept probe, never as ' | ||
| + | |||
| + | It was right, and the probe is wrong **in both directions**: | ||
| + | |||
| + | ^ Paper ^ Term that matched ^ What the sentence actually says ^ | ||
| + | | {[robertson2018_auditing]} | '' | ||
| + | | {[iqbal2022_left]} | '' | ||
| + | | {[oh2022_cartology]} | **none of the eight** | four unused baseline profiles //" | ||
| + | |||
| + | So the question was put to all 34 papers by hand, the same way the population was, with a stated definition and an evidence sentence per verdict, in '' | ||
| + | |||
| + | Result: **10 of 34 (29.4%)**, against 11 of 32 from the probe. The two numbers are close and that is a coincidence, | ||
| + | |||
| + | What this is not: | ||
| + | * **Not mechanical.** It is a judgement per paper. {[mai2025_more]} is counted in on //repeats// — six runs of each condition a week apart, with outliers cut on the country-specific standard deviation — and a second reader could reasonably say that is replication rather than a null. {[roongta2025_sheep]} is counted **out**, because its fresh control browser establishes a baseline set of ad exchanges for a **mediation** analysis rather than a same-treatment outcome spread. Both are arguable. The evidence sentence is published for each so the disagreement can be about a specific paper. | ||
| + | * **Not a quality verdict.** Several of the 24 report effects far larger than any plausible noise floor. What they cannot do is show the reader that. | ||
| + | * **Not re-measured after the population grew.** '' | ||
| ===== Recall repair ===== | ===== Recall repair ===== | ||
| Line 104: | Line 126: | ||
| Two sweeps were run //after// the population was settled, because the probe-7 result above showed the scoring had silently discarded 9.4% of it. | Two sweeps were run //after// the population was settled, because the probe-7 result above showed the scoring had silently discarded 9.4% of it. | ||
| - | **1. The dropped tail of probe 2.** '' | + | **1. The dropped tail of probe 2.** '' |
| **2. The five zero-years.** The audit set has no papers in 2011, 2012, 2013, 2017 or 2021. '' | **2. The five zero-years.** The audit set has no papers in 2011, 2012, 2013, 2017 or 2021. '' | ||
| Line 136: | Line 158: | ||
| * **The size of this literature.** The corpus cannot give it; see //The screening loss//. Closing it needs a pass over FAccT, EuroS&P and the IR venues, which is out of scope for a corpus-backed page. | * **The size of this literature.** The corpus cannot give it; see //The screening loss//. Closing it needs a pass over FAccT, EuroS&P and the IR venues, which is out of scope for a corpus-backed page. | ||
| - | * **Whether the 146 dropped | + | * **Whether the papers |
| * **Whether papers build a null without naming it.** The eight-term probe is a lower bound. Establishing the real rate needs 32 methods sections read for the // | * **Whether papers build a null without naming it.** The eight-term probe is a lower bound. Establishing the real rate needs 32 methods sections read for the // | ||
| * **Effect sizes.** Every audit measures a different outcome on a different platform with a different metric. Nothing is poolable, and the page publishes no cross-paper effect size deliberately. | * **Effect sizes.** Every audit measures a different outcome on a different platform with a different metric. Nothing is poolable, and the page publishes no cross-paper effect size deliberately. | ||
| Line 157: | Line 179: | ||
| Four reviewers, all told explicitly that the author' | Four reviewers, all told explicitly that the author' | ||
| - | ==== Figures vs script ('' | + | ==== Figures vs script (sonnet) ==== |
| Re-ran all four scripts (outputs byte-identical to the committed ones), re-derived every candidate count from the five probe scripts, and mutation-tested the contracts. | Re-ran all four scripts (outputs byte-identical to the committed ones), re-derived every candidate count from the five probe scripts, and mutation-tested the contracts. | ||
| Line 167: | Line 189: | ||
| | Everything else — every table cell, year bucket, venue row, the 8-term noise table and its 11-paper list, the vocabulary table, the statistics ranking, the hand-folded Bonferroni families, the 11-paper no-test list, and all six probe candidate counts | **no defect** | — | | | Everything else — every table cell, year bucket, venue row, the 8-term noise table and its 11-paper list, the vocabulary table, the statistics ranking, the hand-folded Bonferroni families, the 11-paper no-test list, and all six probe candidate counts | **no defect** | — | | ||
| - | ==== Citations and quotes ('' | + | ==== Citations and quotes (sonnet) ==== |
| Checked all 12 new keys against '' | Checked all 12 new keys against '' | ||
| Line 178: | Line 200: | ||
| | **Accidental exposure caught by the reviewer.** Mid-review it observed '' | | **Accidental exposure caught by the reviewer.** Mid-review it observed '' | ||
| - | ==== External currency ('' | + | ==== External currency (sonnet) ==== |
| Fetched rather than recalled, as of 2026-09-11. | Fetched rather than recalled, as of 2026-09-11. | ||
| Line 190: | Line 212: | ||
| | The AI Act contains no researcher-access provision bearing on sock-puppet methodology, | | The AI Act contains no researcher-access provision bearing on sock-puppet methodology, | ||
| - | ==== Generic ('' | + | ==== Generic (fable) ==== |
| + | |||
| + | Handed the corrected text after the three focused passes. No checklist; asked for whatever they were not looking for. It returned nine findings, ranked. **All nine accepted**; the first three changed the page materially. | ||
| + | |||
| + | ^ # ^ Finding ^ Verdict and what changed ^ | ||
| + | | 1 | The central claim states a **practice** ("only 11 of 32 establish a same-treatment baseline", | ||
| + | | 2 | The adjudication dropped candidates silently: **26 of the 58** score-≥4 shortlist papers had no verdict, //" | ||
| + | | 3 | **Nothing links to the page** except the two routing pages, and [[Design: | ||
| + | | 4 | //" | ||
| + | | 5 | //" | ||
| + | | 6 | {[sun2026_suitability]} is in neither '' | ||
| + | | 7 | **" | ||
| + | | 8 | //" | ||
| + | | 9 | Smaller: **146** survived in one place after being corrected to 158 elsewhere; //"the two papers most cited"// | ||
| + | |||
| + | **What it found fine, and said so:** length (33 KB against 50–70 KB neighbours), | ||
| - | GENERICREVIEW | + | **One thing it flagged that was not a defect:** the literal token '' |
| ===== The report script ===== | ===== The report script ===== | ||
| Line 208: | Line 245: | ||
| // -- profile history, declared attribute, location, device, opt-out | // -- profile history, declared attribute, location, device, opt-out | ||
| // | // | ||
| - | // (O) the outcome it measures is the platform' | + | // (O) the outcome it measures is the platform' |
| - | // | + | // the identity it has built: ads served, |
| - | // access/labelling decision; | + | // or recommendation contents, or the profile the platform reports back. |
| + | // NOT reachability. A study whose outcome is whether you can reach the site | ||
| + | // at all -- geoblocking, | ||
| + | // point rather than an identity and belongs to design: | ||
| + | // This clause was tightened on 2026-09-11; it excludes no paper already in | ||
| + | // the set, and it is what keeps "403 Forbidden: A Global View of CDN | ||
| + | // | ||
| // (C) the result is a difference (or a bounded absence of difference) | // (C) the result is a difference (or a bounded absence of difference) | ||
| // | // | ||
| Line 242: | Line 285: | ||
| [' | [' | ||
| '" | '" | ||
| + | [' | ||
| + | 'five profiles -- two blank baselines, two account baselines, one entangled attack profile: "All profiles are created and mechanistically measured in the same way, with separation between attacker, victim, and baselines on different machines with different IPs"' | ||
| [' | [' | ||
| '" | '" | ||
| Line 262: | Line 307: | ||
| [' | [' | ||
| '" | '" | ||
| + | [' | ||
| + | 'four bot arms differing only in the video-selection strategy: "The bot selected a video having (a) the minimum JCC, (b) JCC larger than the minimum (random selection), (c) JCC larger than the mean, and (d) JCC larger than WCC"; outcome is the recommended feed' | ||
| [' | [' | ||
| '" | '" | ||
| Line 291: | Line 338: | ||
| [' | [' | ||
| [' | [' | ||
| - | [' | ||
| [' | [' | ||
| [' | [' | ||
| Line 297: | Line 343: | ||
| [' | [' | ||
| [' | [' | ||
| + | // The rest of the score-> | ||
| + | // and dropped without a written verdict, and that one of the papers so dropped | ||
| + | // (Cart-ology) in fact satisfied the rule. Every shortlisted paper now has a verdict. | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| + | [' | ||
| ]; | ]; | ||
| + | |||
| + | // Does the paper measure outcome variation under the SAME treatment? That is the | ||
| + | // step the page argues is skipped, and a term probe cannot answer it: the eight | ||
| + | // phrasings in _aa_noise.mjs let in a "noise floor" that describes someone else's | ||
| + | // paper, and miss Cart-ology' | ||
| + | // match none of them. So it is hand-adjudicated here, like the population, with | ||
| + | // the sentence that settled it. Three routes count: | ||
| + | // (a) A/A -- two or more arms that differ in nothing; | ||
| + | // (b) repeats -- the same condition run several times, with the spread reported; | ||
| + | // (c) generated -- a null distribution built from the paper' | ||
| + | // | ||
| + | // Anything not listed here was read and found to state a difference without ever | ||
| + | // measuring what a non-difference looks like. | ||
| + | export const NULLS = { | ||
| + | ' | ||
| + | [' | ||
| + | ' | ||
| + | [' | ||
| + | ' | ||
| + | [' | ||
| + | ' | ||
| + | [' | ||
| + | ' | ||
| + | [' | ||
| + | ' | ||
| + | [' | ||
| + | ' | ||
| + | [' | ||
| + | ' | ||
| + | [' | ||
| + | ' | ||
| + | ['A/A + generated', | ||
| + | ' | ||
| + | ['A/A + generated', | ||
| + | }; | ||
| </ | </ | ||
| Line 325: | Line 434: | ||
| const byKey = new Map(papers.map((p) => [`${p.venue}/ | const byKey = new Map(papers.map((p) => [`${p.venue}/ | ||
| - | import { AUDITS, REJECTED } from ' | + | import { AUDITS, REJECTED, NULLS } from ' |
| // --------------------------------------------------------------------------- | // --------------------------------------------------------------------------- | ||
| Line 352: | Line 461: | ||
| // Pin them here so an accidental edit to the set fails the run instead of | // Pin them here so an accidental edit to the set fails the run instead of | ||
| // silently moving every figure on the page. | // silently moving every figure on the page. | ||
| - | if (audit.length !== 32) die(`audit population is ${audit.length}, | + | if (audit.length !== 34) die(`audit population is ${audit.length}, |
| - | if (REJECTED.length !== 12) die(`rejected set is ${REJECTED.length}, | + | if (REJECTED.length !== 36) die(`rejected set is ${REJECTED.length}, |
| if (AUDITS.some(([k]) => REJECTED.some(([r]) => r === k))) die('a key is in both AUDITS and REJECTED' | if (AUDITS.some(([k]) => REJECTED.some(([r]) => r === k))) die('a key is in both AUDITS and REJECTED' | ||
| for (const [key] of REJECTED) if (!byKey.get(key)) die(`rejected paper not in the extraction: ${key}`); | for (const [key] of REJECTED) if (!byKey.get(key)) die(`rejected paper not in the extraction: ${key}`); | ||
| Line 373: | Line 482: | ||
| // --- by year ----------------------------------------------------------------- | // --- by year ----------------------------------------------------------------- | ||
| - | console.log('## | + | console.log('## |
| const years = [...new Set(papers.map((p) => p.year))].sort(); | const years = [...new Set(papers.map((p) => p.year))].sort(); | ||
| let run = 0; | let run = 0; | ||
| Line 387: | Line 496: | ||
| console.log(` | console.log(` | ||
| console.log('' | console.log('' | ||
| + | let wsum = 0; | ||
| for (const [lo, hi] of [[2010, 2015], [2016, 2019], [2020, 2023], [2024, 2026]]) { | for (const [lo, hi] of [[2010, 2015], [2016, 2019], [2020, 2023], [2024, 2026]]) { | ||
| const n = audit.filter((p) => p.year >= lo && p.year <= hi).length; | const n = audit.filter((p) => p.year >= lo && p.year <= hi).length; | ||
| - | console.log(` | + | |
| + | const span = hi - lo + 1; | ||
| + | | ||
| } | } | ||
| + | if (wsum !== N) die(`window buckets sum to ${wsum}, not ${N}`); | ||
| console.log('' | console.log('' | ||
| Line 432: | Line 545: | ||
| [' | [' | ||
| ]; | ]; | ||
| - | console.log(` | + | console.log(` |
| for (const [label, aSet, aFn, bSet, bFn, bName] of rows) { | for (const [label, aSet, aFn, bSet, bFn, bName] of rows) { | ||
| const a = aSet.filter(aFn).length; | const a = aSet.filter(aFn).length; | ||
| Line 440: | Line 553: | ||
| console.log('' | console.log('' | ||
| console.log('## | console.log('## | ||
| - | console.log(" | + | console.log(` The rows above compare |
| console.log(' | console.log(' | ||
| console.log(' | console.log(' | ||
| Line 526: | Line 639: | ||
| for (const [k, [c, a]] of Object.entries(vocabCount)) | for (const [k, [c, a]] of Object.entries(vocabCount)) | ||
| console.log(` | console.log(` | ||
| + | console.log('' | ||
| + | |||
| + | // --- the null, hand-adjudicated --- | ||
| + | console.log('## | ||
| + | console.log(' | ||
| + | console.log(' | ||
| + | console.log(" | ||
| + | console.log(' | ||
| + | for (const k of Object.keys(NULLS)) if (!AUDITS.some(([a]) => a === k)) die(`NULLS key not in AUDITS: ${k}`); | ||
| + | const byRoute = {}; | ||
| + | for (const [k, [route]] of Object.entries(NULLS)) (byRoute[route] ||= []).push(k); | ||
| + | for (const [route, ks] of Object.entries(byRoute)) console.log(` | ||
| + | const nNull = Object.keys(NULLS).length; | ||
| + | console.log(` | ||
| + | console.log(` | ||
| + | for (const [k, [route, why]] of Object.entries(NULLS)) { | ||
| + | const p = byKey.get(k); | ||
| + | console.log(` | ||
| + | console.log(` | ||
| + | } | ||
| console.log('' | console.log('' | ||
| Line 611: | Line 744: | ||
| crawled | crawled | ||
| inferential (any non-descriptive statistic) | inferential (any non-descriptive statistic) | ||
| - | AUDIT (hand-adjudicated, | + | AUDIT (hand-adjudicated, |
| - | adjudicated and rejected | + | adjudicated and rejected |
| - | ## Audit papers by year (denominator: | + | ## Audit papers by year (denominator: |
| 2010 | 2010 | ||
| 2011 | 2011 | ||
| Line 627: | Line 760: | ||
| 2020 | 2020 | ||
| 2021 | 2021 | ||
| - | 2022 5 ##### | + | 2022 6 ###### |
| 2023 | 2023 | ||
| - | 2024 2 ## | + | 2024 3 ### |
| 2025 | 2025 | ||
| 2026 | 2026 | ||
| - | total 32 | + | total 34 |
| years with zero audit papers: 2011, 2012, 2013, 2017, 2021 | years with zero audit papers: 2011, 2012, 2013, 2017, 2021 | ||
| - | 2010-2015: 6 of 32 (18.8%) | + | 2010-2015 |
| - | 2016-2019: 5 of 32 (15.6%) | + | 2016-2019 |
| - | 2020-2023: | + | 2020-2023 |
| - | 2024-2026: | + | 2024-2026 |
| ## Audit papers by venue, against that venue' | ## Audit papers by venue, against that venue' | ||
| - | CCS | + | CCS |
| IEEE-SP | IEEE-SP | ||
| - | IMC | + | IMC |
| NDSS 1 of | NDSS 1 of | ||
| PETS 10 of | PETS 10 of | ||
| Line 650: | Line 783: | ||
| ## Platform measured (multi-valued; | ## Platform measured (multi-valued; | ||
| - | web | + | web |
| - | other-online-service | + | other-online-service |
| - | mobile | + | mobile |
| - | iot 3 of 32 9.4% | + | iot 3 of 34 8.8% |
| - | offline | + | offline |
| ## What audit papers report, vs the comparable corpus baseline | ## What audit papers report, vs the comparable corpus baseline | ||
| Each row states both populations. The baseline is the population named, | Each row states both populations. The baseline is the population named, | ||
| not "all papers", | not "all papers", | ||
| - | indicator | + | indicator |
| - | runs a non-descriptive statistic | + | runs a non-descriptive statistic |
| - | states an ethics-review outcome | + | states an ethics-review outcome |
| - | states artifact availability | + | states artifact availability |
| - | has a crawlConfig at all | + | has a crawlConfig at all |
| - | states crawl statefulness | + | states crawl statefulness |
| - | states interaction depth | + | states interaction depth |
| - | states a vantage location | + | states a vantage location |
| ## The crawl-config rows again, on a SHARED denominator | ## The crawl-config rows again, on a SHARED denominator | ||
| - | The rows above compare | + | The rows above compare |
| 1,120 crawled papers (40 of which have none). A field that can only be stated | 1,120 crawled papers (40 of which have none). A field that can only be stated | ||
| on a paper that HAS a config must be counted over papers that have one, or the | on a paper that HAS a config must be counted over papers that have one, or the | ||
| two cells are not comparable. Both framings are printed; the page uses this one. | two cells are not comparable. Both framings are printed; the page uses this one. | ||
| - | statefulness | + | statefulness |
| - | interactionDepth | + | interactionDepth |
| - | consentAction | + | consentAction |
| - | headless | + | headless |
| -- the 8 audit papers with no crawl config at all: | -- the 8 audit papers with no crawl config at all: | ||
| 2015 IMC Peeking Beneath the Hood of Uber. | 2015 IMC Peeking Beneath the Hood of Uber. | ||
| Line 704: | Line 837: | ||
| | | ||
| -- correction families, folded by hand (paper-counted; | -- correction families, folded by hand (paper-counted; | ||
| - | | + | |
| - | | + | |
| - | any Bonferroni-family | + | any Bonferroni-family |
| - | | + | |
| - | -- 11 of 32 audit papers report no non-descriptive statistic at all: | + | -- 13 of 34 audit papers report no non-descriptive statistic at all: |
| 2010 IMC Challenges in measuring online advertising systems. | 2010 IMC Challenges in measuring online advertising systems. | ||
| 2014 CCS Your Online Interests: Pwned! A Pollution Attack Against Targeted Advertising. | 2014 CCS Your Online Interests: Pwned! A Pollution Attack Against Targeted Advertising. | ||
| Line 715: | Line 848: | ||
| 2018 WWW AdBudgetKiller: | 2018 WWW AdBudgetKiller: | ||
| 2019 PETS Investigating sources of PII used in Facebook’s targeted advertising | 2019 PETS Investigating sources of PII used in Facebook’s targeted advertising | ||
| + | 2022 CCS Cart-ology: Intercepting Targeted Advertising via Ad Network Identity Entanglement. | ||
| 2022 NDSS HARPO: Learning to Subvert Online Behavioral Advertising | 2022 NDSS HARPO: Learning to Subvert Online Behavioral Advertising | ||
| 2023 CCS Marketing to Children Through Online Targeted Advertising: | 2023 CCS Marketing to Children Through Online Targeted Advertising: | ||
| 2023 PETS A Utility-Preserving Obfuscation Approach for YouTube Recommendations | 2023 PETS A Utility-Preserving Obfuscation Approach for YouTube Recommendations | ||
| + | 2024 IMC Poster: Identifying Filter Bubble Based on Feed-Level Embedding Similarity Analysis. | ||
| 2025 PETS Echoes of Privacy: Uncovering the Profiling Practices of Voice Assistants | 2025 PETS Echoes of Privacy: Uncovering the Profiling Practices of Voice Assistants | ||
| 2026 IEEE-SP Setting the Course, but Forgetting to Steer: Analyzing Compliance with GDPR's Right of Access to Data by Instagram, TikTok, and Youtube. | 2026 IEEE-SP Setting the Course, but Forgetting to Steer: Analyzing Compliance with GDPR's Right of Access to Data by Instagram, TikTok, and Youtube. | ||
| Line 724: | Line 859: | ||
| full text present for 5855 of 5859 papers | full text present for 5855 of 5859 papers | ||
| term corpus | term corpus | ||
| - | sock puppet | + | sock puppet |
| - | persona | + | persona |
| - | control profile/ | + | control profile/ |
| - | treatment group/ | + | treatment group/ |
| - | trained profile | + | trained profile |
| - | A/A test | + | A/A test |
| - | noise floor | + | noise floor |
| - | price discrimination/ | + | price discrimination/ |
| + | |||
| + | ## Establishing a null, HAND-ADJUDICATED (not a term count) | ||
| + | Does the paper measure outcome variation under the SAME treatment? | ||
| + | | ||
| + | | ||
| + | own data). Evidence sentence per paper in algorithm_audits_set.mjs. | ||
| + | A/A 4 | ||
| + | generated | ||
| + | repeats | ||
| + | A/A + generated | ||
| + | TOTAL 10 of 34 (29.4%) | ||
| + | no null established: | ||
| + | 2010 IMC [A/A] Challenges in measuring online advertising systems. | ||
| + | "Even queries launched simultaneously from two identically configured clients on the same subnet can produce wildly different ads"; and "In this paper we perform all analysis relative to a control experiment" | ||
| + | 2015 CCS [generated] Sunlight: Fine-grained Targeting Detection at Scale with Statistical Confidence. | ||
| + | exact/ | ||
| + | 2015 IMC [A/A] Location, Location, Location: The Impact of Geolocation on Web Search Personalization. | ||
| + | "The red line compares two treatments at the baseline location (i.e., the experimental control), and thus shows the noise floor." | ||
| + | 2015 PETS | ||
| + | permutation test over the arm labels -- "The permutation test randomly permutes ... the control and experimental treatments" | ||
| + | 2019 WWW [A/A] Measuring Political Personalization of Google News Search. | ||
| + | edit distances tested "among four identical browser profiles" | ||
| + | 2022 CCS [A/A] Cart-ology: Intercepting Targeted Advertising via Ad Network Identity Entanglement. | ||
| + | four unused baseline profiles measured identically; | ||
| + | 2024 WWW [generated] TikTok and the Art of Personalization: | ||
| + | "a randomized baseline" | ||
| + | 2025 PETS | ||
| + | each condition run six times at least a week apart ("we repeat each experiment six times" | ||
| + | 2025 IMC [A/A + generated] From Voice to Ads: Auditing Commercial Smart Speakers for Targeted Advertising based on Voice Characteristics. | ||
| + | paired puppets differing in nothing, scheduled in parallel; plus a permutation test against a random dataset | ||
| + | 2026 PETS [A/A + generated] Ad Personalization and Transparency in Mobile Ecosystems: A Comparative Analysis of Google' | ||
| + | "our baseline persona uses the same neutral persona type for control and treatment. For the baseline persona, the majority of measurement pairs produce insignificant tests" -- an A/A that behaved like one -- plus a 9, | ||
| ## Screening loss: audit-topical papers in the index but not in the extraction | ## Screening loss: audit-topical papers in the index but not in the extraction | ||
| Line 755: | Line 922: | ||
| ===== The full verdict list ===== | ===== The full verdict list ===== | ||
| - | '' | + | '' |
| <file text report_algorithm_audits-list-output.txt> | <file text report_algorithm_audits-list-output.txt> | ||
| Line 768: | Line 935: | ||
| crawled | crawled | ||
| inferential (any non-descriptive statistic) | inferential (any non-descriptive statistic) | ||
| - | AUDIT (hand-adjudicated, | + | AUDIT (hand-adjudicated, |
| - | adjudicated and rejected | + | adjudicated and rejected |
| - | ## Audit papers by year (denominator: | + | ## Audit papers by year (denominator: |
| 2010 | 2010 | ||
| 2011 | 2011 | ||
| Line 784: | Line 951: | ||
| 2020 | 2020 | ||
| 2021 | 2021 | ||
| - | 2022 5 ##### | + | 2022 6 ###### |
| 2023 | 2023 | ||
| - | 2024 2 ## | + | 2024 3 ### |
| 2025 | 2025 | ||
| 2026 | 2026 | ||
| - | total 32 | + | total 34 |
| years with zero audit papers: 2011, 2012, 2013, 2017, 2021 | years with zero audit papers: 2011, 2012, 2013, 2017, 2021 | ||
| - | 2010-2015: 6 of 32 (18.8%) | + | 2010-2015: 6 of 34 (17.6%) |
| - | 2016-2019: 5 of 32 (15.6%) | + | 2016-2019: 5 of 34 (14.7%) |
| - | 2020-2023: | + | 2020-2023: |
| - | 2024-2026: | + | 2024-2026: |
| ## Audit papers by venue, against that venue' | ## Audit papers by venue, against that venue' | ||
| - | CCS | + | CCS |
| IEEE-SP | IEEE-SP | ||
| - | IMC | + | IMC |
| NDSS 1 of | NDSS 1 of | ||
| PETS 10 of | PETS 10 of | ||
| Line 807: | Line 974: | ||
| ## Platform measured (multi-valued; | ## Platform measured (multi-valued; | ||
| - | web | + | web |
| - | other-online-service | + | other-online-service |
| - | mobile | + | mobile |
| - | iot 3 of 32 9.4% | + | iot 3 of 34 8.8% |
| - | offline | + | offline |
| ## What audit papers report, vs the comparable corpus baseline | ## What audit papers report, vs the comparable corpus baseline | ||
| Each row states both populations. The baseline is the population named, | Each row states both populations. The baseline is the population named, | ||
| not "all papers", | not "all papers", | ||
| - | indicator | + | indicator |
| - | runs a non-descriptive statistic | + | runs a non-descriptive statistic |
| - | states an ethics-review outcome | + | states an ethics-review outcome |
| - | states artifact availability | + | states artifact availability |
| - | has a crawlConfig at all | + | has a crawlConfig at all |
| - | states crawl statefulness | + | states crawl statefulness |
| - | states interaction depth | + | states interaction depth |
| - | states a vantage location | + | states a vantage location |
| ## The crawl-config rows again, on a SHARED denominator | ## The crawl-config rows again, on a SHARED denominator | ||
| - | The rows above compare | + | The rows above compare |
| 1,120 crawled papers (40 of which have none). A field that can only be stated | 1,120 crawled papers (40 of which have none). A field that can only be stated | ||
| on a paper that HAS a config must be counted over papers that have one, or the | on a paper that HAS a config must be counted over papers that have one, or the | ||
| two cells are not comparable. Both framings are printed; the page uses this one. | two cells are not comparable. Both framings are printed; the page uses this one. | ||
| - | statefulness | + | statefulness |
| - | interactionDepth | + | interactionDepth |
| - | consentAction | + | consentAction |
| - | headless | + | headless |
| -- the 8 audit papers with no crawl config at all: | -- the 8 audit papers with no crawl config at all: | ||
| 2015 IMC Peeking Beneath the Hood of Uber. | 2015 IMC Peeking Beneath the Hood of Uber. | ||
| Line 861: | Line 1028: | ||
| | | ||
| -- correction families, folded by hand (paper-counted; | -- correction families, folded by hand (paper-counted; | ||
| - | | + | |
| - | | + | |
| - | any Bonferroni-family | + | any Bonferroni-family |
| - | | + | |
| - | -- 11 of 32 audit papers report no non-descriptive statistic at all: | + | -- 13 of 34 audit papers report no non-descriptive statistic at all: |
| 2010 IMC Challenges in measuring online advertising systems. | 2010 IMC Challenges in measuring online advertising systems. | ||
| 2014 CCS Your Online Interests: Pwned! A Pollution Attack Against Targeted Advertising. | 2014 CCS Your Online Interests: Pwned! A Pollution Attack Against Targeted Advertising. | ||
| Line 872: | Line 1039: | ||
| 2018 WWW AdBudgetKiller: | 2018 WWW AdBudgetKiller: | ||
| 2019 PETS Investigating sources of PII used in Facebook’s targeted advertising | 2019 PETS Investigating sources of PII used in Facebook’s targeted advertising | ||
| + | 2022 CCS Cart-ology: Intercepting Targeted Advertising via Ad Network Identity Entanglement. | ||
| 2022 NDSS HARPO: Learning to Subvert Online Behavioral Advertising | 2022 NDSS HARPO: Learning to Subvert Online Behavioral Advertising | ||
| 2023 CCS Marketing to Children Through Online Targeted Advertising: | 2023 CCS Marketing to Children Through Online Targeted Advertising: | ||
| 2023 PETS A Utility-Preserving Obfuscation Approach for YouTube Recommendations | 2023 PETS A Utility-Preserving Obfuscation Approach for YouTube Recommendations | ||
| + | 2024 IMC Poster: Identifying Filter Bubble Based on Feed-Level Embedding Similarity Analysis. | ||
| 2025 PETS Echoes of Privacy: Uncovering the Profiling Practices of Voice Assistants | 2025 PETS Echoes of Privacy: Uncovering the Profiling Practices of Voice Assistants | ||
| 2026 IEEE-SP Setting the Course, but Forgetting to Steer: Analyzing Compliance with GDPR's Right of Access to Data by Instagram, TikTok, and Youtube. | 2026 IEEE-SP Setting the Course, but Forgetting to Steer: Analyzing Compliance with GDPR's Right of Access to Data by Instagram, TikTok, and Youtube. | ||
| Line 881: | Line 1050: | ||
| full text present for 5855 of 5859 papers | full text present for 5855 of 5859 papers | ||
| term corpus | term corpus | ||
| - | sock puppet | + | sock puppet |
| - | persona | + | persona |
| - | control profile/ | + | control profile/ |
| - | treatment group/ | + | treatment group/ |
| - | trained profile | + | trained profile |
| - | A/A test | + | A/A test |
| - | noise floor | + | noise floor |
| - | price discrimination/ | + | price discrimination/ |
| + | |||
| + | ## Establishing a null, HAND-ADJUDICATED (not a term count) | ||
| + | Does the paper measure outcome variation under the SAME treatment? | ||
| + | | ||
| + | | ||
| + | own data). Evidence sentence per paper in algorithm_audits_set.mjs. | ||
| + | A/A 4 | ||
| + | generated | ||
| + | repeats | ||
| + | A/A + generated | ||
| + | TOTAL 10 of 34 (29.4%) | ||
| + | no null established: | ||
| + | 2010 IMC [A/A] Challenges in measuring online advertising systems. | ||
| + | "Even queries launched simultaneously from two identically configured clients on the same subnet can produce wildly different ads"; and "In this paper we perform all analysis relative to a control experiment" | ||
| + | 2015 CCS [generated] Sunlight: Fine-grained Targeting Detection at Scale with Statistical Confidence. | ||
| + | exact/ | ||
| + | 2015 IMC [A/A] Location, Location, Location: The Impact of Geolocation on Web Search Personalization. | ||
| + | "The red line compares two treatments at the baseline location (i.e., the experimental control), and thus shows the noise floor." | ||
| + | 2015 PETS | ||
| + | permutation test over the arm labels -- "The permutation test randomly permutes ... the control and experimental treatments" | ||
| + | 2019 WWW [A/A] Measuring Political Personalization of Google News Search. | ||
| + | edit distances tested "among four identical browser profiles" | ||
| + | 2022 CCS [A/A] Cart-ology: Intercepting Targeted Advertising via Ad Network Identity Entanglement. | ||
| + | four unused baseline profiles measured identically; | ||
| + | 2024 WWW [generated] TikTok and the Art of Personalization: | ||
| + | "a randomized baseline" | ||
| + | 2025 PETS | ||
| + | each condition run six times at least a week apart ("we repeat each experiment six times" | ||
| + | 2025 IMC [A/A + generated] From Voice to Ads: Auditing Commercial Smart Speakers for Targeted Advertising based on Voice Characteristics. | ||
| + | paired puppets differing in nothing, scheduled in parallel; plus a permutation test against a random dataset | ||
| + | 2026 PETS [A/A + generated] Ad Personalization and Transparency in Mobile Ecosystems: A Comparative Analysis of Google' | ||
| + | "our baseline persona uses the same neutral persona type for control and treatment. For the baseline persona, the majority of measurement pairs produce insignificant tests" -- an A/A that behaved like one -- plus a 9, | ||
| ## Screening loss: audit-topical papers in the index but not in the extraction | ## Screening loss: audit-topical papers in the index but not in the extraction | ||
| Line 947: | Line 1148: | ||
| WWW/ | WWW/ | ||
| IN: "We create 9 carefully crafted personas representing different genders and age groups" | IN: "We create 9 carefully crafted personas representing different genders and age groups" | ||
| + | 2022 CCS Cart-ology: Intercepting Targeted Advertising via Ad Network Identity Entanglement. | ||
| + | CCS/ | ||
| + | IN: five profiles -- two blank baselines, two account baselines, one entangled attack profile: "All profiles are created and mechanistically measured in the same way, with separation between attacker, victim, and baselines on different machines with different IPs" | ||
| 2022 IMC Measurement and analysis of implied identity in ad delivery optimization. | 2022 IMC Measurement and analysis of implied identity in ad delivery optimization. | ||
| IMC/ | IMC/ | ||
| Line 977: | Line 1181: | ||
| PETS/ | PETS/ | ||
| IN: "We then visit the filtered websites with user interest personas" | IN: "We then visit the filtered websites with user interest personas" | ||
| + | 2024 IMC Poster: Identifying Filter Bubble Based on Feed-Level Embedding Similarity Analysis. | ||
| + | IMC/ | ||
| + | IN: four bot arms differing only in the video-selection strategy: "The bot selected a video having (a) the minimum JCC, (b) JCC larger than the minimum (random selection), (c) JCC larger than the mean, and (d) JCC larger than WCC"; outcome is the recommended feed | ||
| 2024 WWW TikTok and the Art of Personalization: | 2024 WWW TikTok and the Art of Personalization: | ||
| WWW/ | WWW/ | ||
| Line 1018: | Line 1225: | ||
| 2023 USENIX | 2023 USENIX | ||
| OUT: donated ad exposure from real users; disparity is observational | OUT: donated ad exposure from real users; disparity is observational | ||
| - | 2022 CCS Cart-ology: Intercepting Targeted Advertising via Ad Network Identity Entanglement. | ||
| - | OUT: attack on ad-network identity linking; no persona arms | ||
| 2022 CCS Privacy Limitations of Interest-based Advertising on The Web: A Post-mortem Empirical Analysis of Google' | 2022 CCS Privacy Limitations of Interest-based Advertising on The Web: A Post-mortem Empirical Analysis of Google' | ||
| OUT: randomised control is a data permutation over a browsing panel, not a live-platform arm | OUT: randomised control is a data permutation over a browsing panel, not a live-platform arm | ||
| Line 1030: | Line 1235: | ||
| 2022 IEEE-SP | 2022 IEEE-SP | ||
| OUT: an RCT, but the treatment is a notification to operators; outcome is not platform output | OUT: an RCT, but the treatment is a notification to operators; outcome is not platform output | ||
| + | 2015 NDSS Bloom Cookies: Web Search Personalization without User Tracking | ||
| + | OUT: a privacy-preserving personalisation design evaluated on search logs; no arms | ||
| + | 2018 CCS Peeling the Onion' | ||
| + | OUT: a 19-participant UX study of Tor Browser; outcome is user experience | ||
| + | 2023 USENIX | ||
| + | OUT: interviews with 19 influence-operation participants; | ||
| + | 2011 CCS Policy auditing over incomplete logs: theory, implementation and applications. | ||
| + | OUT: compliance checking over audit logs; shares the word " | ||
| + | 2013 WWW Your browsing behavior for a big mac: economics of personal information online. | ||
| + | OUT: 168 recruited participants valuing their own PII in an auction; a user study | ||
| + | 2015 IEEE-SP | ||
| + | OUT: program analysis of Android apps; " | ||
| + | 2017 USENIX | ||
| + | OUT: a survey of user perceptions; | ||
| + | 2018 IMC 403 Forbidden: A Global View of CDN Geoblocking. | ||
| + | OUT: vantage points in 177 countries, but the outcome is REACHABILITY. Excluded by the tightened (O) clause; belongs to design: | ||
| + | 2019 CCS The Art and Craft of Fraudulent App Promotion in Google Play. | ||
| + | OUT: a study of app-store fraud workers who operate sockpuppets; | ||
| + | 2022 WWW Characterizing, | ||
| + | OUT: Wikipedia' | ||
| + | 2022 WWW Fairness Audit of Machine Learning Models with Confidential Computing. | ||
| + | OUT: ML fairness auditing inside a TEE; no live platform | ||
| + | 2022 IEEE-SP | ||
| + | OUT: SSO implementation flaws; outcome is a security bug, not a discriminating response | ||
| + | 2023 NDSS | ||
| + | OUT: interviews with fact-checkers and analysts; sockpuppets are the subject, not the instrument | ||
| + | 2023 WWW Scoping Fairness Objectives and Identifying Fairness Metrics for Recommender Systems: The Practitioners' | ||
| + | OUT: practitioner interviews about fairness metrics; no measurement of a platform | ||
| + | 2023 IEEE-SP | ||
| + | OUT: a four-week field study of what people want from ad explanations; | ||
| + | 2023 USENIX | ||
| + | OUT: Android framework API access control; " | ||
| + | 2024 CCS Curator Attack: When Blackbox Differential Privacy Auditing Loses Its Power. | ||
| + | OUT: differential-privacy auditing; a different object with the same name | ||
| + | 2024 USENIX | ||
| + | OUT: membership inference against an FL model; not a platform | ||
| + | 2024 USENIX | ||
| + | OUT: DP synthetic-data auditing; not a platform | ||
| + | 2024 USENIX | ||
| + | OUT: security analysis of the FLEDGE/ | ||
| + | 2025 NDSS | ||
| + | OUT: user perceptions of smart-contract audits | ||
| + | 2025 PETS | ||
| + | OUT: an n=412 cross-country survey; outcome is attitudes | ||
| + | 2026 PETS | ||
| + | OUT: policy-compliance checking of AI agents; no arms | ||
| + | 2026 PETS | ||
| + | OUT: DP library auditing; not a platform | ||
| + | 2026 WWW Question the Questions: Auditing Representation in Online Deliberative Processes. | ||
| + | OUT: algorithm design for question selection in deliberative polls; not a measurement of a deployed platform | ||
| ## Screening loss in full | ## Screening loss in full | ||
| Line 1398: | Line 1653: | ||
| <file text _aa_noise-output.txt> | <file text _aa_noise-output.txt> | ||
| - | AUDIT keys parsed from report script: | + | AUDIT keys parsed from report script: |
| term corpus | term corpus | ||
| A/A test | A/A test | ||
| Line 1409: | Line 1664: | ||
| two arms with the same treatment | two arms with the same treatment | ||
| - | audit papers with >=1 noise-baseline term: 11 of 32 | + | audit papers with >=1 noise-baseline term: 11 of 34 |
| CCS/ | CCS/ | ||
| | | ||
| Line 1441: | Line 1696: | ||
| PETS/ | PETS/ | ||
| WWW/ | WWW/ | ||
| + | CCS/ | ||
| IMC/ | IMC/ | ||
| IMC/ | IMC/ | ||
| Line 1450: | Line 1706: | ||
| WWW/ | WWW/ | ||
| PETS/ | PETS/ | ||
| + | IMC/ | ||
| PETS/ | PETS/ | ||
| PETS/ | PETS/ | ||
| Line 1490: | Line 1747: | ||
| <file text _aa_residue-output.txt> | <file text _aa_residue-output.txt> | ||
| - | loose=190 adjudicated=32 residue=158 residue_with_apparatus_and_outcome=34 | + | loose=190 adjudicated=33 residue=157 residue_with_apparatus_and_outcome=33 |
| | | ||
| | | ||
| | | ||
| - | | ||
| 9 2022 PETS | 9 2022 PETS | ||
| 5 2019 WWW How Intention Informed Recommendations Modulate Choices: A Field Study of Spoken Word Content. | 5 2019 WWW How Intention Informed Recommendations Modulate Choices: A Field Study of Spoken Word Content. | ||
| Line 1583: | Line 1839: | ||
| <bibtex bibliography></ | <bibtex bibliography></ | ||
| + | |||
| + | ===== Markup sweep, 2026-09-17 ===== | ||
| + | |||
| + | Mechanical rendering repair only: a fresh live raw/XHTML export of 188 pages was checked with '' | ||
provenance/design/algorithm_audits.1789124524.txt.gz · Last modified: by karel.kubicek.claude
