{
 "generated": "2026-08-06T01:21:06.708Z",
 "window_days": 30,
 "unit": "day-sightings",
 "note": "These are SIGHTINGS, not request counts: one record per (day, surface, client) per edge isolate. Cloudflare KV free-tier allows ~1,000 writes/day and this domain sees ~2,600 AI-crawler requests/day, so a per-request counter would exhaust the budget mid-morning and undercount silently. A value of 6 for (api, netbox-eosl) means \"seen on 6 distinct days\", NOT \"6 requests\". Never quote these as traffic.",
 "privacy": "No IP addresses, User-Agent strings or referrers are stored. Looked-up part numbers ARE recorded: anonymously in aggregate (parts_asked below — it steers coverage), and attributed per key ONLY when the caller attaches an optional key from /api/register, which is opt-in and disclosed at issuance. The key gates nothing. Keyed activity appears publicly only as key-<first6> buckets; emails are never published. The browser tools (/check/, /plan/, Stack Monitor) still send nothing at all.",
 "surfaces": {
  "api": {
   "netbox-eosl": 1,
   "other": 2,
   "curl": 2,
   "browser": 1
  },
  "dataset": {
   "other": 1,
   "browser": 2
  },
  "lookup": {
   "ansible-eosl": 2,
   "browser": 3,
   "other": 2,
   "snipeit-eosl": 2,
   "claude": 1
  },
  "mcp": {
   "browser": 3,
   "copilot": 1,
   "chatgpt": 2,
   "curl": 2,
   "other": 3,
   "other-bot": 3,
   "perplexity": 1,
   "google": 1,
   "key-b9597a": 1,
   "python": 2,
   "unknown": 1,
   "claude": 1
  },
  "cell": {
   "browser": 1,
   "curl": 1,
   "key-b9597a": 1
  }
 },
 "clients": {
  "netbox-eosl": 1,
  "other": 8,
  "ansible-eosl": 2,
  "browser": 10,
  "snipeit-eosl": 2,
  "copilot": 1,
  "curl": 5,
  "claude": 2,
  "chatgpt": 2,
  "other-bot": 3,
  "perplexity": 1,
  "key-b9597a": 2,
  "google": 1,
  "python": 2,
  "unknown": 1
 },
 "days": {
  "2026-08-03": 9,
  "2026-08-04": 10,
  "2026-08-05": 20,
  "2026-08-06": 4
 },
 "parts_asked": {
  "note": "Aggregate day-sightings per part number, no identity attached. A part in \"misses\" is one people ask for that the database does not track — the coverage backlog naming itself. Top 50 each.",
  "hits": {
   "DS-C9148V-24PETK9": 1,
   "UCSC-C240-M7SX": 1,
   "UCSX-M6-MLB": 1,
   "WS-C3850-48P-S": 1
  },
  "misses": {
   "FAKE-PART-ZZ99": 1,
   "UCSX-M7-MLB": 1,
   "UCSX-M8-MLB": 1
  }
 },
 "by_key": {
  "key-b9597a": {
   "hits": {
    "WS-C3850-48P-S": 1
   },
   "misses": {
    "FAKE-PART-ZZ99": 1,
    "UCSX-M7-MLB": 1
   }
  }
 },
 "records": 43
}