| Next revision | Previous revision |
| provenance:design:platforms:ad_archives [2026/09/08 11:46] – New provenance page for design:platforms:ad_archives: every query with its denominator, the 29-candidate hand-audit with its full residue, the 44-paper lowercase screen, the rejected probes and sources, 83 quote checks, 22 external sources with fetch date karel.kubicek.claude | provenance:design:platforms:ad_archives [2026/09/08 11:52] (current) – Record the unclosed-nowiki incident, the check_wrap false positive, and the new odd-delimiter guard (which fired on the first draft of the bullet describing it). Stop the red-link row matching itself. Authored by Claude karel.kubicek.claude |
|---|
| * **A verification script silently checked less.** Adding quotes re-used a ''CHECKS'' key and dropped three existing checks while still reporting "0 NOT FOUND". A guard now aborts on duplicate keys. | * **A verification script silently checked less.** Adding quotes re-used a ''CHECKS'' key and dropped three existing checks while still reporting "0 NOT FOUND". A guard now aborts on duplicate keys. |
| * **"Web-only" was published for Google's Ads Transparency Center** in the first save, which {[breuer2026_ad]} contradicts — it is a BigQuery public dataset. Caught by re-reading the paper, not by a reviewer. | * **"Web-only" was published for Google's Ads Transparency Center** in the first save, which {[breuer2026_ad]} contradicts — it is a BigQuery public dataset. Caught by re-reading the paper, not by a reviewer. |
| | * **An unclosed nowiki span silently broke this page after publication.** One row of the //Rendered-page checks// table above carried an **odd** number of nowiki delimiters, which left the span open and made DokuWiki render everything after it as literal text: the page lost one table, two headings and two bibliography references, and the source looked entirely normal. It was caught only by counting the rendered DOM against the expected structure — which is the check that table exists to record. ''scripts/adarchives_gen_provenance.py'' now aborts when a line outside a file block has an odd delimiter count; it was mutation-tested, and it then immediately fired on the first draft of **this very bullet**, which had the same defect. |
| | * **''scripts/check_wrap.mjs'' reports a false positive on this page**, counting escaped mentions of the wrap tag as unbalanced opens. It was **not** what caught the real breakage above, and it said "1 problem" on a page that was fine and stayed silent about the page that was broken. |
| |
| No credential or token was printed, logged or exposed during the run. | No credential or token was printed, logged or exposed during the run. |
| |
| ^ Decision ^ Alternative a reasonable person would have taken ^ Why this way ^ | ^ Decision ^ Alternative a reasonable person would have taken ^ Why this way ^ |
| | **A new page rather than a section on [[design:platforms]].** | Add an "ad archives" section to the parent, which already has five paragraphs on them. | The parent is organised by //route into a platform//; the archive needs to be organised by //archive//, because the thirteen repositories differ on scope, retention and bulk access in ways that decide feasibility. That comparison is a table the parent cannot carry, and the page id was already fixed on [[roadmap]] and gated by ''scripts/sitemap.mjs''. | | | **A new page rather than a section on [[design:platforms]].** | Add an "ad archives" section to the parent, which already has five paragraphs on them. | The parent is organised by //route into a platform//; the archive needs to be organised by //archive//, because the thirteen repositories differ on scope, retention and bulk access in ways that decide feasibility. That comparison is a table the parent cannot carry, and the page id was already fixed on [[:roadmap]] and gated by ''scripts/sitemap.mjs''. | |
| | **Kept the id ''design:platforms:ad_archives''.** | ''privacy:advertising'' or ''design:ad_archives''. | The id was decided on [[roadmap]] on 2026-09-07 and ''sitemap.mjs'' gates on it. Changing it would have required editing the roadmap row in the same sitting; there was no reason to. | | | **Kept the id ''design:platforms:ad_archives''.** | ''privacy:advertising'' or ''design:ad_archives''. | The id was decided on [[:roadmap]] on 2026-09-07 and ''sitemap.mjs'' gates on it. Changing it would have required editing the roadmap row in the same sitting; there was no reason to. | |
| | **Reported 11 papers, not 69.** | Publish the parent's 69 for consistency between sibling pages. | 69 is a probe artefact: the probe cannot separate Meta's Ad Library from an Android advertising SDK, and 44 of the 69 are the SDK sense. Publishing a number known to be wrong for consistency's sake is the worst option available. The parent page has been corrected in the same sitting. | | | **Reported 11 papers, not 69.** | Publish the parent's 69 for consistency between sibling pages. | 69 is a probe artefact: the probe cannot separate Meta's Ad Library from an Android advertising SDK, and 44 of the 69 are the SDK sense. Publishing a number known to be wrong for consistency's sake is the worst option available. The parent page has been corrected in the same sitting. | |
| | **Counted "the archive is the object of study" as use of the archive.** | Count only papers that treated the archive as a data source. | {[edelson2020_security]}, {[lepochat2022_audit]} and {[benzaamia2026_year]} all query the archive at scale //and// measure it; excluding them would drop the four most method-bearing papers on the page. {[gkiouzepi2023_collaborative]} is the marginal call: it critiques ad libraries and proposes an alternative rather than querying one, and it is counted. Excluding it gives 10 rather than 11. | | | **Counted "the archive is the object of study" as use of the archive.** | Count only papers that treated the archive as a data source. | {[edelson2020_security]}, {[lepochat2022_audit]} and {[benzaamia2026_year]} all query the archive at scale //and// measure it; excluding them would drop the four most method-bearing papers on the page. {[gkiouzepi2023_collaborative]} is the marginal call: it critiques ad libraries and proposes an alternative rather than querying one, and it is counted. Excluding it gives 10 rather than 11. | |
| | **Cut the per-year series at 2026 with a provisional label rather than at 2024.** | Cut at 2024, as [[literature:corpus]] recommends for trends. | The counts are 1–3 papers a year: this is a list of eleven papers, not a trend, and dropping 2025–2026 would drop the only two papers that measure a non-Meta archive. The provisional label is stated wherever the years appear. | | | **Cut the per-year series at 2026 with a provisional label rather than at 2024.** | Cut at 2024, as [[literature:corpus]] recommends for trends. | The counts are 1–3 papers a year: this is a list of eleven papers, not a trend, and dropping 2025–2026 would drop the only two papers that measure a non-Meta archive. The provisional label is stated wherever the years appear. | |
| | **Published the ''google-ads-transparency-center'' dataset on a paper's authority.** | Leave it out, since the vendor's own docs do not mention it. | {[breuer2026_ad]} queried it, names two of its fields and gives a retrieval date, and the alternative was to publish "web-only", which is what the first draft said and is wrong. The uncertainty is stated in the footnote on the page, not only here. | | | **Published the ''google-ads-transparency-center'' dataset on a paper's authority.** | Leave it out, since the vendor's own docs do not mention it. | {[breuer2026_ad]} queried it, names two of its fields and gives a retrieval date, and the alternative was to publish "web-only", which is what the first draft said and is wrong. The uncertainty is stated in the footnote on the page, not only here. | |
| | **Linked [[statistics:interrater_agreement]] rather than the queued ''statistics:annotation''.** | Link the queued id, which is legal because it is declared on [[roadmap]]. | No content page on this wiki currently links a queued page, and a red link on a brand-new page reads as a defect to a reader who has not read the roadmap. | | | **Linked [[statistics:interrater_agreement]] rather than the queued ''statistics:annotation''.** | Link the queued id, which is legal because it is declared on [[:roadmap]]. | No content page on this wiki currently links a queued page, and a red link on a brand-new page reads as a defect to a reader who has not read the roadmap. | |
| |
| ===== Queries, with populations and denominators ===== | ===== Queries, with populations and denominators ===== |
| ^ Page ^ Change ^ | ^ Page ^ Change ^ |
| | [[literature:bibliography]] | 10 entries added before ''%%</bibtex>%%''; rev 1788543026 → 1788865485. Duplicate-key scan case-insensitive over all 860 entries: none. DOI and title scan against the existing file for all 10: none. Cache purged with ''?purge=true'' before publishing the citing page. | | | [[literature:bibliography]] | 10 entries added before ''%%</bibtex>%%''; rev 1788543026 → 1788865485. Duplicate-key scan case-insensitive over all 860 entries: none. DOI and title scan against the existing file for all 10: none. Cache purged with ''?purge=true'' before publishing the citing page. | |
| | [[design:platforms]] | the "**69** papers name an Ad Library or ad archive" figure corrected in three places to the audited **11**, with the homonym named in a %%<WRAP tip>%%; the new page linked from //The Ways In//, //Which Methods Are Current//, //Should There Be Facebook, Twitter, TikTok and Amazon Pages?//, //Open Questions// and //Related Pages// — that page had deliberately named it without linking so as not to create a fresh red link. **Only the ad-archive figure was re-derived**; the rest of that page's numbers were not re-run, and the edit says so on the page. | | | [[design:platforms]] | the "**69** papers name an Ad Library or ad archive" figure corrected in **four** places to the audited **11** (the //Ways In// route table, the //Which Methods Are Current// row, the researcher-routes paragraph and the per-company-pages section), with the homonym named in a %%<WRAP tip>%%; the new page linked from //The Ways In//, //Which Methods Are Current//, //Should There Be Facebook, Twitter, TikTok and Amazon Pages?//, //Open Questions// and //Related Pages// — that page had deliberately named it without linking so as not to create a fresh red link. **Only the ad-archive figure was re-derived**; the rest of that page's numbers were not re-run, and the edit says so on the page. | |
| | [[roadmap]] | the ''design:platforms:ad_archives'' row removed from //Queued// — required, not cosmetic: ''scripts/sitemap.mjs'' reports a written-but-still-queued row as a failure and exits non-zero. A disposition row with the corrected count was added to //Assessed//. | | | [[:roadmap]] | the ''design:platforms:ad_archives'' row removed from //Queued// — required, not cosmetic: ''scripts/sitemap.mjs'' reports a written-but-still-queued row as a failure and exits non-zero. A disposition row with the corrected count was added to //Assessed//. | |
| | [[provenance:roadmap]] | a new section 3b recording the dequeue and the count correction, and the general lesson that a candidate-set count can over-count by a factor of six when the probe term is a homonym. | | | [[provenance:roadmap]] | a new section 3b recording the dequeue and the count correction, and the general lesson that a candidate-set count can over-count by a factor of six when the probe term is a homonym. | |
| | [[:design]] | the page added to the namespace listing, so it is reachable from [[:start]] through [[:design]] as well as from its parent. [[:start]] itself lists namespaces rather than pages and needed no edit. | | | [[:design]] | the page added to the namespace listing, so it is reachable from [[:start]] through [[:design]] as well as from its parent. [[:start]] itself lists namespaces rather than pages and needed no edit. | |
| | |
| | ===== Rendered-page checks ===== |
| | |
| | Run with ''?purge=true'' after each save, against the rendered DOM rather than the source. |
| | |
| | ^ Check ^ Content page ^ This page ^ |
| | | ''bibtex_citekey'' spans | 202 (= 2 per marker × 101 markers; the plugin emits two) | 121 | |
| | | distinct ''%%{[key]}%%'' markers in source | 15 | 13, plus one deliberately escaped literal marker, which correctly did **not** become a citation | |
| | | entries in the rendered ''bibtex_references'' list | **15** | **13** | |
| | | tables | 10 | 18 | |
| | | WRAP boxes rendered | 5 | 2 — the page mentions the tag three more times as escaped text, and those did not become boxes or truncate the tables they sit in | |
| | | ''%%<pre>%%'' blocks | 0 | 8 (4 ''%%<file>%%'' + 4 ''%%<code>%%'') | |
| | | footnote open/close/rendered | 25 / 25 / 25 | — | |
| | | red links | **0** | **0** (a naive grep for the plugin's red-link CSS class returns 1 on this page — it matches this very row, so check the anchor tags, not the raw HTML) | |
| | | dangling in-page anchors | 0 | 0 | |
| | |
| | Two things that check out only if you look at the right thing: |
| | |
| | * **A pipe inside a table cell survives if it sits inside a nowiki span.** Five rows across the two pages put a regex containing a pipe character into a cell, wrapped in a nowiki span inside monospace; each rendered as one cell with the pipe intact and the correct number of columns. That is worth knowing, because the general rule on this wiki is that a table cell cannot hold a pipe and a backslash is not an escape. |
| | * **Escaping a plugin tag needs the nowiki span, not just monospace.** Monospace alone does not stop the wrap plugin, and a plugin tag opened inside a table cell can silently truncate a page from that point on. Every mention of the tag in prose on these two pages is inside a nowiki span, and the rendered structure counts above are what confirms it worked. Note that ''scripts/check_wrap.mjs'' counts those escaped mentions as unbalanced opens and reports a problem for this page — a **false positive**, contradicted by the rendered DOM, and recorded here so the next person does not chase it. |
| | * **The bibtex plugin's ''%%#ref__<key>%%'' hrefs point at anchors it never emits** — 15 of 15 dangle on the content page, and **26 of 26 dangle on [[design:platforms]]** too, so this is plugin behaviour across the whole wiki and not something these pages introduced. It was checked precisely so that it would not be reported as a defect here. |
| |
| ===== Review log ===== | ===== Review log ===== |