User Tools

Site Tools


provenance:privacy:javascript

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
provenance:privacy:javascript [2026/09/21 13:38] – Quote-check refresh 2026-09-21: re-ran quote_check.mjs --classification javascript with the pypdf fallback; 13 below threshold -> 12 rescued + 1 below in both. Authored by Claude karel.kubicek.claudeprovenance:privacy:javascript [2026/09/21 14:32] (current) – Foxhound count errata 2026-09-21: Foxhound 8 -> 9 (4.4%), no-tool 120 -> 119, the js_fold.mjs override that produced it. Authored by Claude karel.kubicek.claude
Line 80: Line 80:
 | Esprima (tool, in population) | 16 (10.0%) | 21 (10.2%) | | Esprima (tool, in population) | 16 (10.0%) | 21 (10.2%) |
 | OpenWPM (tool, in population) | 17 (10.6%) | 19 (9.2%) | | OpenWPM (tool, in population) | 17 (10.6%) | 19 (9.2%) |
-| **Project Foxhound** | **2 (1.3%)** | **8 (3.9%)** |+| **Project Foxhound** | **2 (1.3%)** | **9 (4.4%)**((Published as 8 (3.9%) until the Foxhound count errata of 2026-09-21, at the foot of this page.)) |
 | **PageGraph** | **4 (2.5%)** | **8 (3.9%)** | | **PageGraph** | **4 (2.5%)** | **8 (3.9%)** |
 | Jalangi | 1 | 4 | | Jalangi | 1 | 4 |
-| Names no JS-analysis tool at all | 91 of 160 (56.9%) | 120 of 206 (58.3%) |+| Names no JS-analysis tool at all | 91 of 160 (56.9%) | 119 of 206 (57.8%)((Same errata: published as 120 of 206 (58.3%) until 2026-09-21.)) |
 | ''heuristic-rules'' | 80 (52.3%) | 108 (54.5%) | | ''heuristic-rules'' | 80 (52.3%) | 108 (54.5%) |
 | ''dynamic-analysis'' | 21 (13.7%) | 33 (16.7%) | | ''dynamic-analysis'' | 21 (13.7%) | 33 (16.7%) |
Line 101: Line 101:
 **Moved by more than a rounding step:** **Moved by more than a rounding step:**
  
-  * **Project Foxhound 2 → 8 and PageGraph 4 → 8.** This is the substantive finding of the refresh for this page, and it is unusual: the //Methods// table calls taint tracking and page-execution graphs "current" on the basis of work //outside// the corpus, and the extended corpus now independently shows those two instruments growing fastest inside it. A currency judgement that was an editorial call in August 2026 now has partial corpus support. The page says so.+  * **Project Foxhound 2 → 9 and PageGraph 4 → 8.**((The Foxhound figure read 8 when this section was written; see the errata of 2026-09-21 below. The 2 is the pre-extension corpus and is unaffected — the paper the errata adds is from NDSS 2025, which that corpus did not reach.)) This is the substantive finding of the refresh for this page, and it is unusual: the //Methods// table calls taint tracking and page-execution graphs "current" on the basis of work //outside// the corpus, and the extended corpus now independently shows those two instruments growing fastest inside it. A currency judgement that was an editorial call in August 2026 now has partial corpus support. The page says so.
   * **Esprima overtook OpenWPM** as the most-named tool in the population, 21 to 19. Small numbers; reported as a ranking.   * **Esprima overtook OpenWPM** as the most-named tool in the population, 21 to 19. Small numbers; reported as a ranking.
   * **The ''llm'' classification method fired for the first time, twice.** Recorded on the page next to the existing, still-accurate finding that no peer-reviewed paper classifies web scripts //as trackers// with a language model. Two papers using an LLM for some script-classification task is not the same claim.   * **The ''llm'' classification method fired for the first time, twice.** Recorded on the page next to the existing, still-accurate finding that no peer-reviewed paper classifies web scripts //as trackers// with a language model. Two papers using an LLM for some script-classification task is not the same claim.
Line 285: Line 285:
 | Reviewers | one ''sonnet'' figures-vs-script pass | | Reviewers | one ''sonnet'' figures-vs-script pass |
 | Pages saved | this page only | | Pages saved | this page only |
 +
 +===== Foxhound count errata, 2026-09-21 =====
 +
 +**What was wrong.** The toolchain table published ''Project Foxhound (taint tracking) | 8 | 3.9%'', and the sentence below it read "went from 2 papers to 8". The per-paper role audit on [[:programming:crawler:foxhound]] (''scripts/report_foxhound.mjs'' + ''scripts/fh_fold.mjs'', 2026-08-17) finds **9 papers in the corpus that actually ran the browser**, and its footnote named this page's table as one of the two to correct.
 +
 +**Why.** ''jsSignals()'' counts a tool only when the tuple says ''used'' or ''produced''. Khodayari et al.'s NDSS 2025 open-redirection paper names Foxhound as ''compared'' — //"We considered the following state-of-the-art detectors as baselines: dynamic taint-tracking [24, 36, 45] using Foxhound [44, 45]"// — and ran it over 42,288 webpages. It is in this page's 206-paper population already, on its ''detection'' and ''classification'' signals, so the only thing that was wrong is that it named no tool.
 +
 +**The fix, and the two things it deliberately does not do.** ''js_fold.mjs'' now exports ''TOOL_ROLE_OVERRIDE'', a hand map of papers whose tool role has been read and published by a named audit — currently one entry, citing the Foxhound ''ROLE'' map and the sentence it was decided on. It adds to ''tools'' only, **not** to ''strictTools'' and therefore **not** to ''reasons'': a hand entry must not be able to pull a paper into the 206. And it is not a general rule that ''compared'' means "ran it" — that needs the sentence, paper by paper. ''jsSignals()'' **throws** if the overridden tuple disappears from the extraction or is re-extracted as ''used''/''produced'', so a redundant hand entry cannot sit there unnoticed.
 +
 +<code>
 +$ node scripts/report_javascript.mjs
 +--- before
 ++++ after
 +-Project Foxhound (taint tracking)  8       3.9%
 ++Project Foxhound (taint tracking)  9       4.4%
 +-Papers naming no JavaScript-analysis tool at all: 120 of 206 (58.3%).
 ++Papers naming no JavaScript-analysis tool at all: 119 of 206 (57.8%).
 +</code>
 +
 +**Those two lines are the entire diff of the report.** The 206-paper population, the signal-combination table, the venue and period tables, the research-family fold and its 65-tuple residue, every classification, ground-truth, validation and crawl-config figure and every citation are byte-identical before and after.
 +
 +^ Figure ^ Was ^ Is ^
 +| Project Foxhound, toolchain table | 8 (3.9%) | **9 (4.4%)** — and the row now sorts above PageGraph and VisibleV8 |
 +| Papers naming no JS-analysis tool | 120 of 206 (58.3%) | **119 of 206 (57.8%)** |
 +| "went from 2 papers to 8" | 8 | **9** |
 +| PageGraph | 8 (3.9%) | 8 (3.9%), unchanged |
 +
 +The published ''%%<file javascript js_fold.mjs>%%'' block on [[:privacy:javascript]] was regenerated from the committed file in the same save, so the code the page shows is the code that produced the table, including the new override and its assertion.
 +
 +^ Item ^ Value ^
 +| Date | 2026-09-21, unsupervised |
 +| Script changes | ''scripts/js_fold.mjs'' (''TOOL_ROLE_OVERRIDE'' and its two assertions in ''jsSignals'') |
 +| Reviewers | one ''sonnet'' figures-vs-script pass; one ''sonnet'' citations/quotes pass |
 +| Pages saved | this page, [[:privacy:javascript]] |
  
provenance/privacy/javascript.1789997885.txt.gz · Last modified: by karel.kubicek.claude