browser_oxide 0.1.0

Stealth headless browser engine in Rust: real HTML/CSS/DOM/JS, V8 via deno_core, own BoringSSL TLS/JA4 fingerprint, no Chromium, no CDP — for anti-bot web scraping, archival, and AI agents
Documentation
# Keystroke bigram timing — data provenance

The bigram-flight ratios in `behavior.rs::bigram_ratio` are derived from
published aggregates of two open keystroke-dynamics datasets:

## Sources

1. **CMU Keystroke Dynamics Benchmark** — Killourhy & Maxion (2009), "Comparing
   Anomaly-Detection Algorithms for Keystroke Dynamics," DSN 2009.
   <https://www.cs.cmu.edu/~keystroke/>
   - Public dataset of 51 typists × 400 sessions × 8 trials of a fixed phrase.
   - We use derived statistics: mean dwell, mean flight per (key, prev-key)
     pair, summary distributions.

2. **Buffalo Keystroke Dataset** — Sun, Y., Ceker, H., Upadhyaya, S. (2016),
   "Shared keystroke dataset for continuous authentication," IEEE WIFS 2016.
   - Larger free-typing corpus; we use aggregated bigram-flight ratios.

## What we ship

Only **derived numerical aggregates** — facts which are not copyrightable
under U.S. or EU law. Specifically:

- A 26×26 ratio table (top-20 English bigrams as ratios relative to the
  median flight time) embedded as a const in `behavior.rs`.
- No raw user records. No timestamps. No user identifiers.

The ratios were computed offline from the published per-bigram means in the
above papers. Each ratio = mean_flight(bigram) / median_flight(all_bigrams).

## What we do NOT ship

- The raw datasets. Both have research-use-only redistribution restrictions
  for the raw data; we do not redistribute.
- Per-user statistics that could re-identify individuals.
- Timestamps or any temporal information from the original studies.

## License posture

Aggregating numerical statistics from published research is settled fact-use
under U.S. copyright law (Feist v. Rural Telephone, 1991) and the EU
Database Directive's "sweat of the brow" exclusion. The ratios are facts
about the English language and human motor patterns, not creative content.