{
  "project": "aziel-corpus",
  "views": 447398,
  "downloads": 18807,
  "total": 18807,
  "by_repo": {
    "AzielEliab/aziel-corpus": 18951
  },
  "by_branch": {
    "main": 18951
  },
  "by_fork": {
    "0": 18951,
    "1": 0
  },
  "breakdown": [
    {
      "project": "aziel-corpus",
      "owner": "AzielEliab",
      "repo": "aziel-corpus",
      "branch": "main",
      "fork": "0",
      "count": 18951
    }
  ],
  "github": {
    "stars": 2,
    "forks": 0,
    "watchers": 0,
    "release_download_count": 0,
    "fetched_at": 1792276250492
  },
  "index_sha256": "30c30bdc62557aa137f9cddfab2101617051238b2bce0ad174834bc98d91c32e",
  "index_ts": "2026-10-17T23:00:53.163Z",
  "kv_list_hot_path": false,
  "records_packed": 429,
  "records_aziel": 422,
  "records_corpus": 7,
  "count_source": "library:index:v1",
  "counts_as_of": "2026-10-17T23:00:53.163Z",
  "counts_refresh_s": 1800,
  "counts_note": "Views and Downloads are exact counts (legacy KV history + D1 hit_counters + the HitCounters Durable Object, which takes new hits), published as of counts_as_of. They refresh every 30 minutes, so they can lag live traffic by up to counts_refresh_s seconds. Not sampled.",
  "note": "Forks identified by GitHub owner/repo. Packed key library:index:v1. Views are separate from downloads. records_packed is the stored library file count (Aziel Library + Corpus). /v1 does not increment. Hot path does not KV.list().",
  "views_human": 26870,
  "downloads_human": 5375,
  "views_bot": 420528,
  "downloads_bot": 13432,
  "human": {
    "views": 26870,
    "downloads": 5375
  },
  "bot": {
    "views": 420528,
    "downloads": 13432
  },
  "classification": {
    "method": "ua_denylist + healthcheck_ua",
    "bot_score_threshold": 30,
    "note": "views = views_human + views_bot; same for downloads. Verified bots and score<=threshold → bot. Health-check UAs → bot (counted, not skipped). Legacy: pre-split totals remain in views/downloads; human/bot keys start at 0 until new classified traffic (do NOT reset existing counters; do NOT invent scores). Display strategy (b): views_bot = views - views_human and downloads_bot = downloads - downloads_human so the invariant holds without rewriting KV history. Pre-split remainder is shown as bot until proven human. Never inflate. Never sample.",
    "legacy": "display remainder: views_bot = views - views_human; downloads_bot = downloads - downloads_human. Pre-split totals shown as bot until proven. KV history not rewritten."
  },
  "bot_counting": {
    "counted": false,
    "since": "2026-10-09",
    "note": "Bot and crawler views/downloads are no longer counted (since the Oct 9, 2026 quota change) to stay inside Cloudflare's free tier. views_bot and downloads_bot are the frozen remainder from before that date. Human counts are exact."
  }
}