User Tools

Site Tools


provenance:practices:notifying_websites

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
provenance:practices:notifying_websites [2026/08/13 19:47] – New provenance page for practices:notifying_websites: queries with denominators, report script output, folds and residue, quote spot-checks, external verification and rejections. Authored by Claude karel.kubicek.claudeprovenance:practices:notifying_websites [2026/08/13 20:16] (current) – Record the stale-page-cache bug that made most citations render as raw keys, and the purge that fixed it. Authored by Claude karel.kubicek.claude
Line 4: Line 4:
  
 Not prose. Read it if you are checking a number. Not prose. Read it if you are checking a number.
 +
 +<wrap todo>House convention on ''provenance:'' pages is mixed and this page picked the more traceable end of it. ''provenance:privacy:fingerprinting'' and ''provenance:design:ip_classification'' use no inline citation markers at all and name papers by slug; ''provenance:privacy:requests'' uses citekeys and a bibliography block, as this page does. Two of the four carry a footer back-link, so this one does too. **No ''~~DISCUSSION~~'' block**, matching all four: comments belong on the content page.</wrap>
  
 ===== The run ===== ===== The run =====
Line 18: Line 20:
 ===== Scope decision ===== ===== Scope decision =====
  
-The item as specified pointed at ''ethics.notifiedAffectedParties'' and ''ethics.harmMitigation'' and asked for "how to reach an operator at scale, response rates reported in the literature, and the disclosure-timeline conventions"Two judgement calls:+The item as specified pointed at ''ethics.notifiedAffectedParties'' and ''ethics.harmMitigation'' and asked for "how to reach an operator at scale, response rates reported in the literature, and the disclosure-timeline conventions"Three judgement calls:
  
   * **Scope excludes one-off coordinated disclosure to a named vendor.** That is a queue with an SLA and nothing on this page would help. The page says so in its second paragraph. The consequence is that a large share of the 1,636 ''notifiedAffectedParties == yes'' papers are out of scope for the //how-to// part while remaining in scope for the //how often// part; the page keeps those two questions in separate sections rather than pooling them.   * **Scope excludes one-off coordinated disclosure to a named vendor.** That is a queue with an SLA and nothing on this page would help. The page says so in its second paragraph. The consequence is that a large share of the 1,636 ''notifiedAffectedParties == yes'' papers are out of scope for the //how-to// part while remaining in scope for the //how often// part; the page keeps those two questions in separate sections rather than pooling them.
Line 35: Line 37:
 | network scan ∧ ethics | ''studyTypes ∋ network-scan-or-probe ∧ ethics != null'' | 858 | | network scan ∧ ethics | ''studyTypes ∋ network-scan-or-probe ∧ ethics != null'' | 858 |
 | legal ∧ ethics | ''empirical ∧ legal.length > 0 ∧ ethics != null'' | 376 | | legal ∧ ethics | ''empirical ∧ legal.length > 0 ∧ ethics != null'' | 376 |
 +| **crawled ∧ legal ∧ ethics** | ''crawled ∧ legal.length > 0 ∧ ethics != null'' | **123** |
 | human subjects ∧ ethics | ''empirical ∧ participants.length > 0 ∧ ethics != null'' | 1,283 | | human subjects ∧ ethics | ''empirical ∧ participants.length > 0 ∧ ethics != null'' | 1,283 |
  
Line 46: Line 49:
  
 Run as ''node scripts/report_notifying_websites.mjs''. Flags: ''--wiki'' for DokuWiki tables, ''--list'' for the hand-classified campaigns, ''--quotes'' for ethics evidence quotes, ''--residue'' for every unmapped fold entry and every unreviewed candidate. Run as ''node scripts/report_notifying_websites.mjs''. Flags: ''--wiki'' for DokuWiki tables, ''--list'' for the hand-classified campaigns, ''--quotes'' for ethics evidence quotes, ''--residue'' for every unmapped fold entry and every unreviewed candidate.
 +
 +<wrap todo>''out/notifying_websites-output.txt'' in the workdir is **two concatenated runs**: the plain run followed by the ''--list'' run, which repeats the plain output before adding the campaign list. A ''diff'' against a single fresh invocation therefore shows a few hundred spurious extra lines, and this misled one reviewer. Do not hard-code the split point — it moves whenever a table row is added. Derive it: ''BASE=$(node scripts/report_notifying_websites.mjs | wc -l)'', then ''head -$BASE'' and ''tail -n +$((BASE+1))'' each match a fresh run byte-for-byte. As of this revision ''BASE'' is 161. The script itself is deterministic — verified.</wrap>
  
 Sections of the script, so a figure on the content page can be traced to the block that produced it: Sections of the script, so a figure on the content page can be traced to the block that produced it:
Line 75: Line 80:
  
 -- the same field, per population -- -- the same field, per population --
-Population (all ∧ has an ethics record)  N     yes    partial  no    not-applicable  not-stated +Population (all ∧ has an ethics record)  N     yes    partial  no     not-applicable  not-stated 
----------------------------------------  ----  -----  -------  ----  --------------  ---------- +---------------------------------------  ----  -----  -------  -----  --------------  ---------- 
-empirical                                4472  36.6%  11.7%    4.3%  22.4%           25.0% +empirical                                4472  36.6%  11.7%    4.3%   22.4%           25.0% 
-empirical ∧ measured the web platform    1362  33.2%  11.7%    7.0%  19.5%           28.6% +empirical ∧ measured the web platform    1362  33.2%  11.7%    7.0%   19.5%           28.6% 
-ran an automated web crawl               992   29.8%  13.7%    9.4%  15.9%           31.1% +ran an automated web crawl               992   29.8%  13.7%    9.4%   15.9%           31.1% 
-ran a network scan or probe              858   37.6%  23.4%    4.2%  10.7%           24.0% +ran a network scan or probe              858   37.6%  23.4%    4.2%   10.7%           24.0% 
-assessed compliance with a law           376   42.0%  14.6%    9.8%  21.5%           12.0% +assessed compliance with a law           376   42.0%  14.6%    9.8%   21.5%           12.0
-recruited human participants             1283  39.7%  7.6%     1.9%  35.3%           15.4%+crawled ∧ assessed a law                 123   35.0%  14.6%    14.6%  15.4%           20.3
 +recruited human participants             1283  39.7%  7.6%     1.9%   35.3%           15.4%
  
 ========================================================================== ==========================================================================
Line 109: Line 115:
  
 of the 376 that assessed a law: yes 27 (7.2%) of the 376 that assessed a law: yes 27 (7.2%)
 +
 +of the 2160 that notified an affected party, 135 also contacted a regulator or CERT (6.3%)
 +of the 147 that contacted a regulator or CERT, 135 ALSO notified the affected party directly (91.8%) — the intermediary is an addition, not a substitute
  
 -- ethics.harmMitigation: 3186 of 4472 (71.2%) name at least one step -- -- ethics.harmMitigation: 3186 of 4472 (71.2%) name at least one step --
Line 125: Line 134:
 ethics board or legal review                                                    25      0.8% ethics board or legal review                                                    25      0.8%
 unmapped residue: 1069 of 3186 (33.6%) unmapped residue: 1069 of 3186 (33.6%)
 +  (run with --residue to print all of it)
  
 ========================================================================== ==========================================================================
Line 132: Line 142:
 the notable thing. These are rankings of an under-reported field, not adoption rates. the notable thing. These are rankings of an under-reported field, not adoption rates.
  
--- channel named in disclosureDetail, of 2870 papers that gave any --+-- channel named in disclosureDetail, of 2870 papers that gave any disclosure detail --
 Channel family                                                                 Papers  Share of 2870 Channel family                                                                 Papers  Share of 2870
 -----------------------------------------------------------------------------  ------  ------------- -----------------------------------------------------------------------------  ------  -------------
-a named large platform or app store (Google, Apple, Meta, Microsoft, Amazon…)   335     11.7%+a named large platform or app store (Google, Apple, Meta, Microsoft, Amazon…)  335     11.7%
 direct email to the operator or developer                                      113     3.9% direct email to the operator or developer                                      113     3.9%
 CERT / CSIRT / national coordinator                                            39      1.4% CERT / CSIRT / national coordinator                                            39      1.4%
 hosting provider / ISP / upstream                                              38      1.3% hosting provider / ISP / upstream                                              38      1.3%
-bug bounty / vulnerability reward programme                                     36      1.3%+bug bounty / vulnerability reward programme                                    36      1.3%
 WHOIS / registry contact                                                       18      0.6% WHOIS / registry contact                                                       18      0.6%
 data protection authority / regulator                                          17      0.6% data protection authority / regulator                                          17      0.6%
 standards body / working group                                                 13      0.5% standards body / working group                                                 13      0.5%
 generic contact form or phone                                                  10      0.3% generic contact form or phone                                                  10      0.3%
-no channel named at all: 2303 of 2870 (80.2%) — the single largest groupand the finding+no channel named at all: 2303 of 2870 (80.2%) 
 + 
 +-- channel named in disclosureDetail, of 2160 papers that notified (yes|partial) AND gave a detail — the population where "which channel?" is a fair question -- 
 +Channel family                                                                 Papers  Share of 2160 
 +-----------------------------------------------------------------------------  ------  ------------- 
 +a named large platform or app store (GoogleApple, Meta, Microsoft, Amazon…)  318     14.7% 
 +direct email to the operator or developer                                      99      4.6% 
 +CERT / CSIRT / national coordinator                                            39      1.8% 
 +bug bounty / vulnerability reward programme                                    35      1.6% 
 +hosting provider / ISP / upstream                                              35      1.6% 
 +WHOIS / registry contact                                                       15      0.7% 
 +data protection authority / regulator                                          14      0.6% 
 +standards body / working group                                                 13      0.6% 
 +generic contact form or phone                                                  9       0.4% 
 +no channel named at all: 1633 of 2160 (75.6%)
  
 -- outcome named in disclosureDetail, of 2870 -- -- outcome named in disclosureDetail, of 2870 --
Line 194: Line 218:
 2022–2024   8 2022–2024   8
 2025–2026*  5 2025–2026*  5
- 
 What was notified about  Campaigns What was notified about  Campaigns
 -----------------------  --------- -----------------------  ---------
Line 212: Line 235:
 Nine regex families, **not mutually exclusive** (a paper that told a CERT and the vendor belongs in both; papers counted once per family). Published on the content page as a ranking, never as adoption rates. Nine regex families, **not mutually exclusive** (a paper that told a CERT and the vendor belongs in both; papers counted once per family). Published on the content page as a ranking, never as adoption rates.
  
-  * The residue is the headline: **2,303 of 2,870 (80.2%) match no channel family.** That is not a fold failure, it is the field's content — a 20-word summary of "we disclosed responsibly" names no channel. Published on the content page as the finding.+  * **Scoped to the right population, after a post-review check.** The first version reported the channel fold over all 2,870 papers with a ''disclosureDetail'', giving 80.2% with no channel named. Reading a sample of that residue showed the problem: ''disclosureDetail'' serves two purposes in the schema, notifying an operator //and// debriefing a participant, so the residue included entries like "Participants provided written or verbal consent; screen recordings were deleted after data collection" — papers that were never notifying an operator, for which "which channel?" is not a question. The script now prints both populations, and the page quotes the scoped one: **1,633 of the 2,160 papers that said they notified (75.6%) name no channel.** All 2,160 ''yes''/''partial'' papers turn out to carry a detail, so that subset needs no separate silence figure. 
 +  * The residue is still the headline: three quarters of the papers that say they notified do not say through what. That is not a fold failure, it is the field's content — a 20-word summary of "we disclosed responsibly" names no channel. 
 +  * **Two claims on the content page about this fold were checked directly against the JSONL rather than taken from the script.** (a) "all 2,160 that said they notified are among them": of the 2,160 ''yes''/''partial'' papers, **0** lack a ''disclosureDetail''. (b) The scoping footnote's 38.5%: of the 710 papers that gave a detail without saying they notified, 273 match a participant/consent/debrief/interview/survey/recruit/volunteer term. That second figure exists because a reviewer challenged an earlier, stronger claim that the excluded group //was// participant-debriefing notes — it is not, and the page now says only that the channel question is ill-posed for that group.
   * The largest matched family, "a named large platform or app store", is a **deliberately loose** rule matching the strings ''google play, app store, play store, apple, google, amazon, facebook, meta, microsoft, marketplace, mozilla, chrome, android''. It over-matches: a paper that used Google Play as a //population source// and disclosed elsewhere lands here. The label on the content page says "a named large platform", not "notified a platform", for that reason. **Do not read 11.7% as "11.7% notified a platform".**   * The largest matched family, "a named large platform or app store", is a **deliberately loose** rule matching the strings ''google play, app store, play store, apple, google, amazon, facebook, meta, microsoft, marketplace, mozilla, chrome, android''. It over-matches: a paper that used Google Play as a //population source// and disclosed elsewhere lands here. The label on the content page says "a named large platform", not "notified a platform", for that reason. **Do not read 11.7% as "11.7% notified a platform".**
   * ''hosting provider / ISP / upstream'' also matches the bare token ''registrar'', which overlaps the WHOIS family. Both are under 1.5% and reported as a ranking, so the overlap is stated rather than resolved.   * ''hosting provider / ISP / upstream'' also matches the bare token ''registrar'', which overlaps the WHOIS family. Both are under 1.5% and reported as a ranking, so the overlap is stated rather than resolved.
Line 262: Line 287:
 | ''revisiting-identification-issues-in-gdpr-right-of-access-policies-a-technical-an'' | PETS 2022 — 40 organisations re-tested after disclosure. Under the ≥100-party floor; quoted in prose only. | | ''revisiting-identification-issues-in-gdpr-right-of-access-policies-a-technical-an'' | PETS 2022 — 40 organisations re-tested after disclosure. Under the ≥100-party floor; quoted in prose only. |
  
-**The seven campaigns not on the content page's rates table**, because they report a volume sent but no response or remediation figure: ''freely-given-consent…'' (CCS 2022, 1,127 developers), ''extended-hell-o…'' (USENIX Sec 2023), ''dancer-in-the-dark…'' (USENIX Sec 2024, 19% response — this one //is// quoted in prose), ''beyond-exploit-scanning…'' (USENIX Sec 2025, 4,983 emails), ''hey-your-secrets-leaked…'' (IEEE S&P 2025, 3,906 emails), ''beyond-the-horizon…'' (IEEE S&P 2025, 15,837 ASes), and ''catch-22…'' (USENIX Sec 2025, on the table for its channel not its rate).+**The six campaigns not on the content page's rates table**, because they report a volume sent but no response or remediation figure: ''freely-given-consent…'' (CCS 2022, 1,127 developers), ''extended-hell-o…'' (USENIX Sec 2023), ''dancer-in-the-dark…'' (USENIX Sec 2024, 19% response — this one //is// quoted in prose), ''beyond-exploit-scanning…'' (USENIX Sec 2025, 4,983 emails), ''hey-your-secrets-leaked…'' (IEEE S&P 2025, 3,906 emails), and ''beyond-the-horizon…'' (IEEE S&P 2025, 15,837 ASes)
 + 
 +So the rates table has **17 rows: 16 of the 22 hand-classified campaignsplus {[stock2018_didnt]}**, which is not in ''CAMPAIGNS'' because its full text is not in the corpus (see below) and the fold only classifies papers the scan could read. ''catch-22…'' is on the table for its channelnot for a rate.
  
 ==== The 144 unreviewed candidates, in full ==== ==== The 144 unreviewed candidates, in full ====
Line 275: Line 302:
 USENIX 2013 an-empirical-study-of-vulnerability-rewards-programs USENIX 2013 an-empirical-study-of-vulnerability-rewards-programs
 WWW 2013 two-years-of-short-urls-internet-measurement-security-threats-and-countermeasure WWW 2013 two-years-of-short-urls-internet-measurement-security-threats-and-countermeasure
-CCS 2013 rethinking-ssl-development-in-an-appified-world (also in REJECTED) 
 USENIX 2014 a-look-at-targeted-attacks-through-the-lense-of-an-ngo USENIX 2014 a-look-at-targeted-attacks-through-the-lense-of-an-ngo
 USENIX 2014 brahmastra-driving-apps-to-test-the-security-of-third-party-components USENIX 2014 brahmastra-driving-apps-to-test-the-security-of-third-party-components
-CCS 2015 an-empirical-study-of-web-vulnerability-discovery-ecosystems (also in REJECTED) 
 IEEE-SP 2015 the-attack-of-the-clones-a-study-of-the-impact-of-shared-code-on-vulnerability-p IEEE-SP 2015 the-attack-of-the-clones-a-study-of-the-impact-of-shared-code-on-vulnerability-p
 NDSS 2015 checking-more-and-alerting-less-detecting-privacy-leakages-via-enhanced-data-flo NDSS 2015 checking-more-and-alerting-less-detecting-privacy-leakages-via-enhanced-data-flo
Line 286: Line 311:
 IMC 2016 weak-keys-remain-widespread-in-network-devices IMC 2016 weak-keys-remain-widespread-in-network-devices
 PETS 2016 towards-mining-latent-client-identifiers-from-network-traffic PETS 2016 towards-mining-latent-client-identifiers-from-network-traffic
-CCS 2017 a-large-scale-empirical-study-of-security-patches (also in REJECTED) 
 IMC 2017 if-you-are-not-paying-for-it-you-are-the-product-how-much-do-advertisers-pay-to IMC 2017 if-you-are-not-paying-for-it-you-are-the-product-how-much-do-advertisers-pay-to
 NDSS 2017 are-we-there-yet-on-rpki-s-deployment-and-security NDSS 2017 are-we-there-yet-on-rpki-s-deployment-and-security
Line 293: Line 317:
 USENIX 2018 wpse-fortifying-web-protocols-via-browser-side-security-monitoring USENIX 2018 wpse-fortifying-web-protocols-via-browser-side-security-monitoring
 CCS 2019 a-usability-evaluation-of-lets-encrypt-and-certbot-usable-security-done-right CCS 2019 a-usability-evaluation-of-lets-encrypt-and-certbot-usable-security-done-right
-CCS 2019 network-hygiene-incentives-and-regulation-deployment-of-source-address-validatio (also in REJECTED) 
 NDSS 2019 automating-patching-of-vulnerable-open-source-software-versions-in-application-binaries NDSS 2019 automating-patching-of-vulnerable-open-source-software-versions-in-application-binaries
 NDSS 2019 digital-healthcare-associated-infection-a-case-study-on-the-security-of-a-major-multi-campus-hospital-system NDSS 2019 digital-healthcare-associated-infection-a-case-study-on-the-security-of-a-major-multi-campus-hospital-system
Line 303: Line 326:
 WWW 2019 studying-preferences-and-concerns-about-information-disclosure-in-email-notifica WWW 2019 studying-preferences-and-concerns-about-information-disclosure-in-email-notifica
 CCS 2020 dangerous-skills-got-certified-measuring-the-trustworthiness-of-skill-certificat CCS 2020 dangerous-skills-got-certified-measuring-the-trustworthiness-of-skill-certificat
-CCS 2020 the-cookie-hunter-automated-black-box-auditing-for-web-authentication-and-author (also in REJECTED) 
 IEEE-SP 2020 a-security-analysis-of-the-facebook-ad-library IEEE-SP 2020 a-security-analysis-of-the-facebook-ad-library
 IEEE-SP 2020 the-many-kinds-of-creepware-used-for-interpersonal-attacks IEEE-SP 2020 the-many-kinds-of-creepware-used-for-interpersonal-attacks
Line 315: Line 337:
 WWW 2020 an-empirical-study-of-the-use-of-integrity-verification-mechanisms-for-web-subre WWW 2020 an-empirical-study-of-the-use-of-integrity-verification-mechanisms-for-web-subre
 CCS 2021 i-need-a-better-description-an-investigation-into-user-expectations-for-differen CCS 2021 i-need-a-better-description-an-investigation-into-user-expectations-for-differen
-CCS 2021 out-of-sight-out-of-mind-detecting-orphaned-web-pages-at-internet-scale (also in REJECTED) 
 IEEE-SP 2021 sok-quantifying-cyber-risk IEEE-SP 2021 sok-quantifying-cyber-risk
-IMC 2021 who-you-gonna-call-an-empirical-evaluation-of-website-security-txt-deployment (also in REJECTED) 
 NDSS 2021 all-the-numbers-are-us-large-scale-abuse-of-contact-discovery-in-mobile-messengers NDSS 2021 all-the-numbers-are-us-large-scale-abuse-of-contact-discovery-in-mobile-messengers
 NDSS 2021 shadow-attacks-hiding-and-replacing-content-in-signed-pdfs NDSS 2021 shadow-attacks-hiding-and-replacing-content-in-signed-pdfs
Line 326: Line 346:
 USENIX 2021 now-im-a-bit-angry-individuals-awareness-perception-and-responses-to-data-breach USENIX 2021 now-im-a-bit-angry-individuals-awareness-perception-and-responses-to-data-breach
 CCS 2022 clues-in-tweets-twitter-guided-discovery-and-analysis-of-sms-spam CCS 2022 clues-in-tweets-twitter-guided-discovery-and-analysis-of-sms-spam
-IEEE-SP 2022 the-state-of-the-samesite-studying-the-usage-effectiveness-and-adequacy-of-sames (also in REJECTED) 
 IEEE-SP 2022 timing-based-browsing-privacy-vulnerabilities-via-site-isolation IEEE-SP 2022 timing-based-browsing-privacy-vulnerabilities-via-site-isolation
 IMC 2022 characterizing-permanently-dead-links-on-wikipedia IMC 2022 characterizing-permanently-dead-links-on-wikipedia
Line 333: Line 352:
 PETS 2022 developers-say-the-darnedest-things-privacy-compliance-processes-followed-by-dev PETS 2022 developers-say-the-darnedest-things-privacy-compliance-processes-followed-by-dev
 PETS 2022 exploring-the-privacy-concerns-of-bystanders-in-smart-homes-from-the-perspective PETS 2022 exploring-the-privacy-concerns-of-bystanders-in-smart-homes-from-the-perspective
-PETS 2022 revisiting-identification-issues-in-gdpr-right-of-access-policies-a-technical-an (also in REJECTED) 
 PETS 2022 we-may-share-the-number-of-diaper-changes-a-privacy-and-security-analysis-of-mob PETS 2022 we-may-share-the-number-of-diaper-changes-a-privacy-and-security-analysis-of-mob
 USENIX 2022 movery-a-precise-approach-for-modified-vulnerable-code-clone-discovery-from-modi USENIX 2022 movery-a-precise-approach-for-modified-vulnerable-code-clone-discovery-from-modi
Line 346: Line 364:
 IMC 2023 a-longitudinal-study-of-vulnerable-client-side-resources-and-web-developers-upda IMC 2023 a-longitudinal-study-of-vulnerable-client-side-resources-and-web-developers-upda
 IMC 2023 rovista-measuring-and-analyzing-the-route-origin-validation-rov-in-rpki IMC 2023 rovista-measuring-and-analyzing-the-route-origin-validation-rov-in-rpki
-IMC 2023 the-cve-wayback-machine-measuring-coordinated-disclosure-from-exploits-against-t (also in REJECTED) 
 IMC 2023 wolf-in-sheeps-clothing-evaluating-security-risks-of-the-undelegated-record-on-d IMC 2023 wolf-in-sheeps-clothing-evaluating-security-risks-of-the-undelegated-record-on-d
 PETS 2023 investigating-how-users-imagine-their-personal-privacy-assistant PETS 2023 investigating-how-users-imagine-their-personal-privacy-assistant
Line 371: Line 388:
 IEEE-SP 2024 sok-sgx-fail-how-stuff-gets-exposed IEEE-SP 2024 sok-sgx-fail-how-stuff-gets-exposed
 IEEE-SP 2024 tabbed-out-subverting-the-android-custom-tab-security-model IEEE-SP 2024 tabbed-out-subverting-the-android-custom-tab-security-model
-IEEE-SP 2024 where-are-the-red-lines-towards-ethical-server-side-scans-in-security-and-privac (also in REJECTED) 
 NDSS 2024 dont-interrupt-me-a-large-scale-study-of-on-device-permission-prompt-quieting-in-chrome NDSS 2024 dont-interrupt-me-a-large-scale-study-of-on-device-permission-prompt-quieting-in-chrome
 NDSS 2024 understanding-the-implementation-and-security-implications-of-protective-dns-services NDSS 2024 understanding-the-implementation-and-security-implications-of-protective-dns-services
Line 388: Line 404:
 CCS 2025 a-decade-long-landscape-of-advanced-persistent-threats-longitudinal-analysis-and CCS 2025 a-decade-long-landscape-of-advanced-persistent-threats-longitudinal-analysis-and
 CCS 2025 is-this-a-scam-the-nature-and-quality-of-reddit-discussion-about-scams CCS 2025 is-this-a-scam-the-nature-and-quality-of-reddit-discussion-about-scams
-IEEE-SP 2025 beyond-the-horizon-uncovering-hosts-and-services-behind-misconfigured-firewalls (in CAMPAIGNS) 
 IEEE-SP 2025 gptracker-a-large-scale-measurement-of-misused-gpts IEEE-SP 2025 gptracker-a-large-scale-measurement-of-misused-gpts
 IEEE-SP 2025 sniffing-location-privacy-of-video-conference-users-using-free-audio-channels IEEE-SP 2025 sniffing-location-privacy-of-video-conference-users-using-free-audio-channels
Line 404: Line 419:
 USENIX 2025 gpuhammer-rowhammer-attacks-on-gpu-memories-are-practical USENIX 2025 gpuhammer-rowhammer-attacks-on-gpu-memories-are-practical
 USENIX 2025 malicious-llm-based-conversational-ai-makes-users-reveal-personal-information USENIX 2025 malicious-llm-based-conversational-ai-makes-users-reveal-personal-information
 +USENIX 2025 misty-registry-an-empirical-study-of-flawed-domain-registry-operation
 +USENIX 2025 privacy-law-enforcement-under-centralized-governance-a-qualitative-analysis-of-f
 +USENIX 2025 regulating-smart-device-support-periods-user-expectations-and-the-european-cyber
 +USENIX 2025 your-shield-is-my-sword-a-persistent-denial-of-service-attack-via-the-reuse-of-u
 +IEEE-SP 2026 consumer-beware-exploring-data-brokers-ccpa-compliance
 +NDSS 2026 chameleoscan-demystifying-and-detecting-ios-chameleon-apps-via-llm-powered-ui-exploration
 +NDSS 2026 cross-boundary-mobile-tracking-exploring-java-to-javascript-information-diffusion-in-webviews
 +NDSS 2026 demystifying-the-access-control-mechanism-of-esxi-vmkernel
 +NDSS 2026 tickets-to-hide-an-inside-look-into-the-anti-abuse-ecosystem-through-internal-abuse-data
 +NDSS 2026 time-and-time-again-leveraging-tcp-timestamps-to-improve-remote-timing-attacks
 +NDSS 2026 unveiling-byovd-threats-malwares-use-and-abuse-of-kernel-drivers
 +PETS 2026 more-space-less-privacy-measuring-the-effectiveness-of-ip-based-website-fingerpr
 +PETS 2026 personal-data-flows-and-privacy-policy-traceability-in-third-party-llm-apps-in-t
 +PETS 2026 precision-leads-recalling-you-improved-location-privacy-for-shared-mobility-serv
 +PETS 2026 the-role-of-online-forums-in-developer-understanding-of-privacy-law-a-reddit-cas
 +USENIX 2026 abuse-risks-are-often-inherent-to-product-features-exploring-ai-vendors-bug-boun
 +USENIX 2026 inconsistent-incomplete-and-insecure-a-survey-of-account-security-interfaces
 +USENIX 2026 the-art-of-hide-and-seek-making-pickle-based-model-supply-chain-poisoning-stealt
 +WWW 2026 bowling-with-chatgpt-on-the-evolving-user-interactions-with-conversational-ai-sy
 +WWW 2026 falconscope-effective-and-efficient-detection-of-hidden-web-interfaces-in-iot-de
 +WWW 2026 unveiling-the-resilience-of-llm-enhanced-search-engines-against-black-hat-seo-ma
 </code> </code>
  
-<wrap todo>The list above is the honest coverage boundary of this page. The highest-value follow-up is reading the ~15 of these that look like real campaigns — ''NDSS 2017 are-we-there-yet-on-rpki-s-deployment-and-security'' (a "19% success rate" for ROAlert notifications), ''IMC 2016 weak-keys-remain-widespread-in-network-devices'', ''IMC 2020 behind-closed-doors…'', ''NDSS 2020 complex-security-policy…'', ''WWW 2024 unfiltered…'' ("over 80% of the domains contacted were unresponsive"), ''IEEE-SP 2025 gptracker…'' — and adding them to ''CAMPAIGNS''.</wrap>+<wrap todo>**Filed as deferred work**, not left as a TODO on a wiki page: ''DRAIN_DB=/workspace/drain/work.db python3 /workspace/drain/sync.py add-item --task wiki-measuretheweb --key 'notifying_websites: read the 144 unreviewed campaign candidates''', with the shortlist above and the two open ''security.txt'' questions attached. 
 + 
 +**The first published version of that list had 135 of the 144 entries**, because it was built through a shell pipeline that dropped nine rows rather than copied from the script. It is now generated directly from ''report_notifying_websites.mjs --residue'' and asserted to be exactly 144 long. A residue list that is itself truncated is worse than no residue list, and this one was, for three revisions. 
 + 
 +The list above is the honest coverage boundary of this page. The highest-value follow-up is reading the ~15 of these that look like real campaigns — ''NDSS 2017 are-we-there-yet-on-rpki-s-deployment-and-security'' (a "19% success rate" for ROAlert notifications), ''IMC 2016 weak-keys-remain-widespread-in-network-devices'', ''IMC 2020 behind-closed-doors…'', ''NDSS 2020 complex-security-policy…'', ''WWW 2024 unfiltered…'' ("over 80% of the domains contacted were unresponsive"), ''IEEE-SP 2025 gptracker…'' — and adding them to ''CAMPAIGNS''.</wrap>
  
 ===== Quotes spot-checked ===== ===== Quotes spot-checked =====
Line 453: Line 493:
 | {[stock2016_hey]} 5.8% received / 74.5% still exploitable / Table 1 fix rates / Abusix / RFC 2142 aliases / legal threat on day two / 5 opt-outs covering 187 domains | read directly by the orchestrator from ''paper.cols.txt''; no sub-agent involved | | {[stock2016_hey]} 5.8% received / 74.5% still exploitable / Table 1 fix rates / Abusix / RFC 2142 aliases / legal threat on day two / 5 opt-outs covering 187 domains | read directly by the orchestrator from ''paper.cols.txt''; no sub-agent involved |
 | {[lone2022_sav]} PeeringDB-before-WHOIS contact cascade | read directly by the orchestrator | | {[lone2022_sav]} PeeringDB-before-WHOIS contact cascade | read directly by the orchestrator |
 +
 +**Two errors in the first published version, caught by the orchestrator's own re-check after publication and fixed in revision 2:**
 +
 +  * The {[sasaki2022_ics]} row said "93 (58%) responded — 'higher than most previous notification experiments'". Wrong on three counts. The channel is **manual telephone calls**, not email — the paper explicitly contrasts itself with prior studies that used IP-WHOIS abuse contacts and claims to be "the first study to directly contact the organization operating the device". The ''93 (58%)'' is a spliced Table VI cell, not a response rate. And "higher than most previous notification experiments" is about the paper's **remediation** rate, not its response rate. The corrected row uses the paper's own funnel: 160 operators notified about 317 devices, the person in charge reached for 212, "50% of the persons in charge … stated that they mitigated or will mitigate", devices "reduced by 58% when we were able to contact the persons in charge" against 13% for un-notified devices, χ² p<0.0001. **This came from a sub-agent report that the orchestrator did not re-verify before first publication — the one place on the page where the verification discipline recorded above was not actually followed.**
 +  * The {[cetin2019_cleaning]} control column said "74% natural remediation in the control". The paper says "surprisingly high natural remediation rates of 58[–]74% for this control group **and for two reference networks**" — a range across three groups, not a single control figure. Also added: "Email-only notifications have no observable impact compared to a control group", which is the more important half of that paper for this page.
 +
 +Discovering the first of these prompted a new subsection on the content page: **phone calls and hand-read imprints are the channels with the highest measured rates in this literature**, and the page's earlier flat statement that telephone "does not scale" was true only at {[stock2016_hey]}'s N of 44,790. That claim is now qualified rather than repeated.
  
 **One internal inconsistency, not resolved:** {[stock2016_hey]} states a 2.4% control fix rate for client-side XSS in prose and 2.2% (4/185) in Table 1. The page quotes the table. **One internal inconsistency, not resolved:** {[stock2016_hey]} states a 2.4% control fix rate for client-side XSS in prose and 2.2% (4/185) in Table 1. The page quotes the table.
Line 502: Line 549:
 ===== The embedded code ===== ===== The embedded code =====
  
-''notes/find_contacts.py'' on the page is the real file, and the ''<code>'' block under it is its real, unedited output from a run on 2026-08-13 against ''google.com ethz.ch cispa.de bbc.co.uk wikipedia.org''.+''notes/find_contacts.py'' on the page is the real file, and the code block under it is its real, unedited output from a run on 2026-08-13 against ''google.com ethz.ch cispa.de bbc.co.uk wikipedia.org''.
  
-Two things about that output are worth recording rather than tidying away:+Three things about that output are worth recording rather than tidying away:
  
-  * The ''RIPEstat: TimeoutError'' line for ''google.com'' is genuineAn earlier run in the same session returned ''network-abuse@google.com'' for it, so RIR-abuse coverage read 100% then and 80% in the saved run. **The output on the page is the saved run, timeout included**, because that transient is exactly the failure a reader needs to see distinguished from an absent contact+  * **The same script on the same five domains gave 80% RIR-abuse coverage in one run and 100% in another**, purely because ''stat.ripe.net'' timed out once for ''google.com''The published block is the 100% run (it matches the current code); the 80% run is recorded here, and the content page states the discrepancy explicitly rather than presenting either number as a coverage measurement. Five domains and a transient — this is why the page says the sample is hand-picked and not representative
-  * ''.ch'' and ''.de'' having no RDAP service in the IANA bootstrap is a real finding, not a script bug — confirmed by reading ''dns.json''.+  * ''.ch'' and ''.de'' having no RDAP service in the IANA bootstrap is a real finding, not a script bug — confirmed by reading ''dns.json'' directly. 
 +  * **A reviewer found a real bug and it was fixed.** ''_rdap_base()'' fetched the IANA bootstrap registry with no error handling, so a single transient failure there raised an uncaught ''URLError'' and killed the whole batch — contradicting the script's own promise that failures are printed rather than swallowed. It now raises a ''RuntimeError'' naming the URL and the reason, and refuses to continue, on the grounds that the alternative (a column of dashes) would silently understate RDAP coverage for every domain at once. Verified both paths: the happy path prints the table above, and pointing ''BOOTSTRAP'' at an unreachable host raises with full context. **This is the second defect on this page that only surfaced because someone re-ran the code rather than reading it.**
  
 Design decisions in that script, all of them arguable: Design decisions in that script, all of them arguable:
Line 518: Line 566:
 ===== Bibliography ===== ===== Bibliography =====
  
-21 new entries added to [[Literature:Bibliography]] before its closing ''</bibtex>''. Generated with ''node scripts/bibgen.mjs'', i.e. from ''data/corpus2/.meta'' publisher metadata rather than from recall. Checked before saving: 22 distinct citation keys used on the content page, **0 unresolved, 0 colliding with the 239 keys already in the file**.+21 new entries added to [[Literature:Bibliography]] before its closing ''</bibtex>''. Generated with ''node scripts/bibgen.mjs'', i.e. from ''data/corpus2/.meta'' publisher metadata rather than from recall. Checked before saving: 23 distinct citation keys used on the content page, **0 unresolved, 0 colliding with the 239 keys already in the file**.
  
 Two entries already existed and were reused rather than duplicated: ''maass2021_effective'' and ''hantke2024_redlines''. Two entries already existed and were reused rather than duplicated: ''maass2021_effective'' and ''hantke2024_redlines''.
Line 539: Line 587:
 ===== Reviewer findings ===== ===== Reviewer findings =====
  
-Four reviewers, all told the context might not be exhaustive, all given the page text, the report script, its output, and these notes.+Four reviewers, all told the context might not be exhaustive, all given the page text, the report script, its output, and these notes. Three focused passes ran in parallel first; the generic pass ran after their findings were applied.
  
-<wrap todo>To be filled in as each reviewer reports; rejections recorded alongside fixes.</wrap>+==== Sonnet — figures against the script ==== 
 + 
 +^ Finding ^ Action ^ 
 +| ''_rdap_base()'' in ''find_contacts.py'' fetches the IANA bootstrap registry with no error handling, so one transient failure raises an uncaught ''URLError'' and kills the whole batch — contradicting both the script's docstring and the page's claim that failures are printed. Reviewer reproduced it. | **ACCEPTED and fixed.** Now raises a ''RuntimeError'' naming the URL and the reason, and refuses to continue. Both paths re-tested. | 
 +| ''out/notifying_websites-output.txt'' is two concatenated runs, so a naive ''diff'' against one fresh invocation shows ~305 spurious lines. | **ACCEPTED as a documentation gap**, not a figure error: ''head -143'' and ''tail -n +144'' each match a fresh run byte-for-byte. Now stated in the //Report script// section above so the next reviewer is not misled the same way. | 
 +| Provenance said "the seven campaigns not on the table" and listed ''catch-22…'', which **is** on the table. | Already fixed before the reviewer read the file; the count is six. Recorded here because the reviewer independently derived the same arithmetic. | 
 +| Every number, percentage and denominator named in the brief — 4,472; 48.3%; 61.0% vs 43.5%; 3.3%; 7.2%; 2,303/2,870; 7/2,870; 2,155/2,870; all nine channel shares; 22/16/144/179 — matches the live script output, cross-checked against ''extractions.jsonl''. | No action. | 
 + 
 +==== Sonnet — citations and quotes ==== 
 + 
 +^ Finding ^ Action ^ 
 +| {[sasaki2022_ics]}: the page conflated **two different 58% figures** — 93 of 160 operators reached (58%) and 58% of devices remediated once reached — and attached the "higher than most previous notification experiments" quote to the wrong one. | Already caught and fixed by the orchestrator before the reviewer reported (see the correction note above); the reviewer confirms the diagnosis independently, which is the strongest evidence the fix is right. | 
 +| {[stivala2026_behind]}: "reports the same thing a decade later" reads as an independent 2026 re-measurement, but the sentence is a related-work summary carrying citations to four earlier papers. | **ACCEPTED.** The content page now says so in the sentence itself, not only here. | 
 +| {[lone2022_sav]}: "found PeeringDB better maintained" is that paper relaying prior work — "we preferred peeringDB because it has been used in previous studies and **they** found the database up-to-date". | **ACCEPTED**, reworded with the paper's own sentence. | 
 +| This provenance page said "22 distinct citation keys"it is 23. | **ACCEPTED**, corrected. | 
 +| All 23 keys resolve uniquely against the live bibliography (262 entries), no duplicates, no collisions. All 21 new entries have correct author/citekey match, correct titles against ''data/corpus2/.meta'', and DOIs that resolve at doi.org — including ''stock2018_didnt''. Every load-bearing quote across 18 papers confirmed verbatim or as a faithful cross-column splice, including the whole of {[stock2018_didnt]} re-fetched fresh from ndss-symposium.org. | No action. | 
 +| {[cetin2019_cleaning]}: 74% is specifically the control group's own cleanup rate, not merely the top of the abstract's 58–74% range. | **ACCEPTED — this reverted an over-correction.** An earlier fix had replaced "74% in the control" with the range across three groups; the reviewer's check of the body text shows "The control group achieved the lowest cleanup rate (74%)". The page now quotes that, and keeps the "email-only had no observable impact" finding that the same pass surfaced. | 
 + 
 +==== Sonnet — external currency ==== 
 + 
 +^ Finding ^ Action ^ 
 +| The content page quotes 2021 ''security.txt'' adoption by **Alexa** rank with no signal that Alexa is defunct; the caveat existed only here, in //What could not be established//. | **ACCEPTED.** The caveat is now inline on the page that makes the claim: 2021 measurement, defunct ranking frame, predates RFC 9116, and nothing in the corpus re-measures it. | 
 +| "annually validated by RIPE and ARIN" — ARIN's annual POC verification is in NRPM §3.6 and was fetched; **no RIPE primary source states a cadence**. | **ACCEPTED.** Split: ARIN's annual verification is quoted with its source, RIPE's is reduced to "keeps abuse contacts valid" with an explicit note that the cadence could not be verified. | 
 +| The footnote saying ''usenix.org'' "rejects automated fetches" is too broad — ''curl'' with a browser User-Agent returns 200. The reviewer fetched the CFP and confirmed both quoted sentences verbatim. | **ACCEPTED, and it upgrades the page**: the USENIX claim is no longer cache-based. Re-fetched independently by the orchestrator, quotes confirmed, footnote rewritten to cite the page directly and to note that only ''WebFetch'' gets 403. | 
 +| The footnote's "Registration Data Policy took effect … in August 2025" could not be pinned to a primary source. | **ACCEPTED.** Reduced to what the ICANN site does say ("Now In Effect for Contracted Parties") with the date removed. | 
 +| ''g.co/vulnz'' — the address in Google's own ''security.txt'', visible in the script output — now 302-redirects to ''bughunters.google.com''. | **NOTED, no change.** The published block is a dated run and is accurate as of that run; changing it would falsify the audit trail. Recorded here for anyone re-running the script. | 
 +| RFC 9910 (RDAP RIR Search, January 2026) exists, plus several active REGEXT drafts, but **none obsoletes or updates RFC 9082/9083/9224**. | **NOTED, no change** — the page's "current, not superseded" claim holds, and 9910 is a search extension the page has no reason to cite. | 
 +| RFC 9116, RFC 2142, RFC 9082/9083/9224, the ICANN sunset quote, CERT/CC's 45 days, Project Zero's 90+30/7-day policy and the Reporting Transparency trial, NIS2 Article 12(1), HackerOne Disclosure Assistance, Shadowserver, the FIRST directory, the IANA bootstrap, the RIPEstat API, and all four fetchable venue CFP quotes: verified verbatim against primary sources. No dead links on either page. | No action. | 
 +| ISO/IEC 29147 / 30111: ''iso.org'' 403s for the reviewer too. Because the page makes no edition or revision-status claim, this is a safe non-claim rather than an error. | No action — confirms the earlier decision to cut those claims. | 
 + 
 +==== Caught after the review passes, by the orchestrator ==== 
 + 
 +  * **A table rendered with every figure in the wrong column, and no reviewer caught it.** The trend table's first row labelled its indicator with a backslash-escaped pipe — %%| Notified (''yes''\|''partial'') |%% — but a backslash is **not** a DokuWiki escape for a literal pipe. The renderer treated it as a cell separator, splitting the label in two and shifting all six percentages one column left, so the 2010–2013 figure appeared under //Denominator// and the last bucket rendered empty. Caught by parsing the live page's HTML, where that row came back as %%['Notified (yes\', 'partial)', 'empirical ∧ ethics', '21.3%', …]%% against a seven-column header. Fixed by writing the label as "''yes'' or ''partial''" and avoiding the pipe entirely. **The figures reviewer checked every number against the script and passed the page; every number was right and the table was still wrong.** Checking a wiki page means parsing the rendered HTML, not only the source — the table-cell counts of both pages are now asserted from the live HTML. 
 +  * **The downloadable code was verified end to end.** ''curl'' on ''/_export/code/practices/notifying_websites?codeblock=0'' → ''python3 -m py_compile'' → an actual run against ''ethz.ch''. What a reader downloads from the page compiles and works. Worth doing because the code block on the page is a transcribed copy with em-dashes substituted for ASCII, and a substitution inside a string literal would have broken it silently. 
 +  * **A stale page cache made most citations render as raw keys, and it survived four reviewers and every verification pass above.** After the bibliography was extended and the pages saved, ''https://measuretheweb.org/practices/notifying_websites'' rendered ''[lone2022_sav]'', ''[utz2023_comparing]'', ''[stock2018_didnt]'' and most others as literal bracketed keys, while the two pre-existing keys resolved normally. Nothing was wrong with the source, the bibliography or the keys — DokuWiki was serving a cached render made before the bibliography grew. Fixed by requesting each page once with ''&purge=true''; both then rendered 218 and 98 resolved citations with zero raw keys left. **Add a purge to the end of any run that touches ''literature:bibliography'', and re-check the rendered page after purging rather than before.** The earlier checks in this section counted ''bibtex_citekey'' markers and found 38 on a page with ~60 citations, which should have been the tell and was not. 
 +  * All eight internal links (''Artifacts'', ''Design:Website selection'', ''Literature:Corpus'', ''Practices:Ethics'', ''Practices:Legal enforcement'', ''Practices:Public relations'', ''Statistics:Hypothesis testing'', ''Statistics:Pvalue corrections'') fetched 200 with real content — no red links. ''?do=sitemap'' is cached and still listed the new page as missing, as expected. 
 + 
 +==== Added after the review passes ==== 
 + 
 +The ''crawled ∧ assessed a law'' cross-tab (N=123) was **not** a reviewer finding — it was added afterwards because none of the existing rows described the reader the page is written for, someone who crawled the web and found a legal-compliance violation. It is the one cell where ''no'' (14.6%) is as common as ''partial'', more than three times the corpus-wide 4.3%. The script row and the page row were added together and the pasted output above was regenerated. **This means the reviewers did not see this figure**; it is the newest and least-checked number on the page, though it comes from the same enum and the same script as the rows above it. 
 + 
 +==== Fable — generic, no checklist, run after the three focused passes ==== 
 + 
 +The most productive of the four. Eleven findings, **all accepted**; five were wrong or self-contradicting claims on the content page. 
 + 
 +^ Finding ^ Action ^ 
 +| The lead box said "both of the **properly randomised**, control-arm experiments … found no significant effect", which implies {[maass2021_effective]} was not properly randomised. It is: "a covert randomized controlled notification experiment", "full factorial design", with a control group — and it is the strongest positive result on the page. The real distinction is population, not rigour. | **ACCEPTED**, verified against the paper, rewritten to "both randomised, control-arm experiments **on network operators**", and the Maass sentence now names it as a randomised controlled experiment rather than "which also had a control group". This was the single most prominent sentence on the page. | 
 +| The rescoping justification claimed the excluded group "is participant-debriefing notes". Reviewer checked: only 273 of 710. | **ACCEPTED**, verified, and the reason replaced with the correct one — the channel question is ill-posed for a paper that did not notify — with the 38.5% in a footnote. | 
 +| "scanning papers … are **less than half as likely** to leave the question unanswered" is contradicted by the page's own table: 24.0% vs 31.1%. The column that //is// less than half is ''no'' (4.2% vs 9.4%). | **ACCEPTED**, both comparisons now stated with their figures. | 
 +| The opening said "you **have to tell** those 8,000 operators, and **every venue** … expects you to say so" — contradicting the page's own PoPETs bullet, and its own paragraph saying that deciding not to notify is defensible. The footnote also covered only four of the seven corpus venues. | **ACCEPTED**: "decide what to do about", "the major venues", and the footnote now names PoPETs' absence of a requirement and says NDSS and TheWebConf are not addressed. | 
 +| {[stock2018_didnt]}'s 74.4% / 33.3% was labelled "among those who **opened** the report" in two places. It is among those who **viewed** it — and the page's own funnel insists opened and viewed are distinct stages. | **ACCEPTED**, both corrected to //viewed//. | 
 +| 22 + 16 + 144 = 182 ≠ 179 on the content page, with the explanation only here. | **ACCEPTED**: the page now says 13 reasoned rejections inside the regex plus three carried over from the wider first-pass scan, totalling 16The 5,859-records 5,869-files gap is also now explained in the same sentence. | 
 +| The rates table's intro says it shows campaigns "that reported a quotable outcome", but the {[munteanu2025_catch22]} row has no figure — the stated exclusion criterion. | **ACCEPTED**, the exception is now stated on the content page, not only here. | 
 +| "**Three** of those channels are machine-queryable" is wrong twice: RDAP is not one of the channels in the table, and PeeringDB is machine-queryable but is not in the script. | **ACCEPTED**, rewritten to two per-domain channels plus RDAP, with PeeringDB noted as per-AS. | 
 +| The provenance itself conceded that neither the script docstring nor the page says why RIPEstat was chosen over Abusix, and left it unfixed. | **ACCEPTED**, the docstring now says so — Abusix is better at scale, RIPEstat is what runs with only the standard library and is therefore testable here. | 
 +| This provenance page said "Four reviewers … logged below" with three logged, and "**Two** judgement calls" followed by three bullets. The ''head -143'' / ''tail -n +144'' instruction had gone stale when the script grew. | **ACCEPTED**, all three fixed; the split point is now derived rather than hard-coded, since it moves every time a table row is added. | 
 +| Voice: the only first-person singular on the site ("no cadence **I** could verify"); //survival// used without saying lower is better; "That is not negligence" asserts a motive the data does not show; "The one flat line" for a series that rose tenfold then declined. | **ACCEPTED**, all four reworded. | 
 + 
 +Also confirmed by this pass and not changed: the page answers its own question and the top-to-bottom ordering works; no dead-weight sections; all DokuWiki constructs well-formed in the current revision; the rates table's 17 rows reconcile with this page's accounting; every corpus figure matches a fresh script run; the embedded script runs as documented; and the voice, while denser in bolding and aphorism than the older hand-written pages, sits inside the range of the site's newer corpus-backed pages. 
 + 
 +==== Nothing was rejected outright ==== 
 + 
 +Every substantive finding across all four passes was accepted. Two are worth separating from the rest because they say something about the process rather than the page: 
 + 
 +  * The **figures** pass found no figure error at all — every corpus number checked out — but found the one real **code** defect. Re-running beats re-reading. 
 +  * The **quotes** pass independently reproduced the {[sasaki2022_ics]} diagnosis the orchestrator had already made, and **caught an over-correction** on {[cetin2019_cleaning]} that the orchestrator's own fix had introduced. A correction is as capable of being wrong as the thing it corrects.
  
 ====== References ====== ====== References ======
 <bibtex bibliography></bibtex> <bibtex bibliography></bibtex>
 +
 +[[practices:notifying_websites|← back to the content page]] · [[literature:corpus|corpus-level provenance]]
  
provenance/practices/notifying_websites.1786650466.txt.gz · Last modified: by karel.kubicek.claude

Except where otherwise noted, content on this wiki is licensed under the following license: CC BY-NC-SA 4.0
CC BY-NC-SA 4.0 Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki