Detector Comparison Protocol

July 29, 2026 · View on GitHub

This report is generated offline from the checked-in suspect-zone fixtures. It is a comparison protocol, not a vendor ranking claim.

Current run

  • Generated at: 2026-07-29T08:50:08.370Z
  • Fixture source: tests/fixtures/suspect-zones/**
  • Fixture count: 49
  • Manual third-party input: none
  • Reproduce built-in comparison: npm run benchmark:compare
  • Merge manual scores: node scripts/detector-comparison.mjs --input tests/quality/detectors.manual.example.json

Summary

detectornamekindcoveredcoverageaccuracyprecisionrecallTPFPFNTN
patina-deterministicPatina deterministic suspect-zone analyzerin-tree49/49100.0%100.0%100.0%100.0%260023

Fixture-level rows

fixturelangclassdetectorexpectedpredictedokscoresource
en-ai-01enaipatina-deterministichothot1tests/quality/benchmark.mjs
en-ai-02enaipatina-deterministichothot1tests/quality/benchmark.mjs
en-ai-03enaipatina-deterministichothot1tests/quality/benchmark.mjs
en-ai-04enaipatina-deterministichothot1tests/quality/benchmark.mjs
en-ai-05enaipatina-deterministichothot1tests/quality/benchmark.mjs
en-ai-06-chat-registerenaipatina-deterministichothot1tests/quality/benchmark.mjs
en-ai-07-discourse-candorenaipatina-deterministichothot1tests/quality/benchmark.mjs
en-nat-01ennaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
en-nat-02ennaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
en-nat-03ennaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
en-nat-04ennaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
en-nat-05ennaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
en-nat-06-single-openerennaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
ja-ai-01jaaipatina-deterministichothot1tests/quality/benchmark.mjs
ja-ai-02jaaipatina-deterministichothot1tests/quality/benchmark.mjs
ja-ai-03jaaipatina-deterministichothot1tests/quality/benchmark.mjs
ja-ai-04-lexiconjaaipatina-deterministichothot1tests/quality/benchmark.mjs
ja-ai-05-formulaic-summaryjaaipatina-deterministichothot1tests/quality/benchmark.mjs
ja-ai-06-broad-techjaaipatina-deterministichothot1tests/quality/benchmark.mjs
ja-nat-01janaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
ja-nat-02janaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
ja-nat-03janaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
ja-nat-04-lexicon-coldjanaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
ja-nat-05-station-notejanaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
ja-nat-06-maintenance-logjanaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
ko-ai-01koaipatina-deterministichothot1tests/quality/benchmark.mjs
ko-ai-02koaipatina-deterministichothot1tests/quality/benchmark.mjs
ko-ai-03koaipatina-deterministichothot1tests/quality/benchmark.mjs
ko-ai-04koaipatina-deterministichothot1tests/quality/benchmark.mjs
ko-ai-05koaipatina-deterministichothot1tests/quality/benchmark.mjs
ko-ai-06-chat-registerkoaipatina-deterministichothot1tests/quality/benchmark.mjs
ko-ai-07-ko-diagnostickoaipatina-deterministichothot1tests/quality/benchmark.mjs
ko-nat-01konaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
ko-nat-02konaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
ko-nat-03konaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
ko-nat-04konaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
ko-nat-05konaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
zh-ai-01zhaipatina-deterministichothot1tests/quality/benchmark.mjs
zh-ai-02zhaipatina-deterministichothot1tests/quality/benchmark.mjs
zh-ai-03zhaipatina-deterministichothot1tests/quality/benchmark.mjs
zh-ai-04-lexiconzhaipatina-deterministichothot1tests/quality/benchmark.mjs
zh-ai-05-formulaic-summaryzhaipatina-deterministichothot1tests/quality/benchmark.mjs
zh-ai-06-broad-techzhaipatina-deterministichothot1tests/quality/benchmark.mjs
zh-nat-01zhnaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
zh-nat-02zhnaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
zh-nat-03zhnaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
zh-nat-04-lexicon-coldzhnaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
zh-nat-05-market-notezhnaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs
zh-nat-06-maintenance-logzhnaturalpatina-deterministiccoldcold0tests/quality/benchmark.mjs

Manual third-party protocol

  1. Use only redistributable fixture text from tests/fixtures/suspect-zones/**.
  2. Paste text into a third-party detector manually, respecting that service's terms.
  3. Record only fixture id, detector id, date/version, score, and hot/cold label. Do not check private text into the repo.
  4. Run this script with --input <json>. The script does not scrape sites or call external APIs.
  5. Treat results as time-stamped evidence, not a universal claim about authorship detection.