{
 "events": [],
 "held_value": {
  "active": false,
  "main_answer": false,
  "questions": [],
  "rule": "If a check does not record a value, the page keeps the last confirmed value for a short time, marked with its date; after that the value is shown as unknown."
 },
 "history": [
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-09-28",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-09-28T14:15:13.585Z",
   "measurement_id": "9c62adca6e55f69e"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-09-28",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-09-28T14:45:04.459Z",
   "measurement_id": "54561d0b0cae5c85"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-09-28",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-09-28T17:59:18.972Z",
   "measurement_id": "4f604d4975dd3135"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-09-28",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-09-28T18:41:54.684Z",
   "measurement_id": "452881f1dc9746e3"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-09-29",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-09-29T01:24:04.861Z",
   "measurement_id": "c2894d4b17883b9c"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-09-30",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-09-30T01:24:06.336Z",
   "measurement_id": "2d6772847077cbea"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-10-01",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-10-01T01:20:41.090Z",
   "measurement_id": "019734a3e60928e1"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-10-02",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-10-02T01:20:45.324Z",
   "measurement_id": "f05c825cf2f3847c"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-10-03",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-10-03T01:22:22.451Z",
   "measurement_id": "e9621342e7b6393a"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-10-04",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-10-04T01:19:33.108Z",
   "measurement_id": "37dde37a67f03d83"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-10-05",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-10-05T01:21:01.869Z",
   "measurement_id": "6a34954ac78c86f0"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-10-06",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-10-06T01:19:52.894Z",
   "measurement_id": "a15b7b93987211a9"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-10-07",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-10-07T01:23:42.256Z",
   "measurement_id": "940d8459c420d6dc"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-10-08",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-10-08T01:20:12.405Z",
   "measurement_id": "08ad04e90c9e2312"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-10-09",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-10-09T01:22:47.272Z",
   "measurement_id": "740c1764298c740b"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-10-10",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-10-10T01:22:00.068Z",
   "measurement_id": "ba0f8a4080459983"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-10-11",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-10-11T01:22:15.080Z",
   "measurement_id": "a43a7ef4d23c36ab"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-10-12",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-10-12T01:24:01.766Z",
   "measurement_id": "fb7cc9c94f45fd17"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-10-13",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-10-13T01:21:44.403Z",
   "measurement_id": "43279a3fc1b34df4"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-10-14",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-10-14T01:23:01.106Z",
   "measurement_id": "3956062f095c2e33"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-10-15",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-10-15T01:25:49.328Z",
   "measurement_id": "049bde0f064e37c6"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-10-16",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-10-16T01:22:19.260Z",
   "measurement_id": "56cb61e8ee8b8833"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-10-17",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-10-17T01:27:05.749Z",
   "measurement_id": "e8d93d08ec687430"
  },
  {
   "evidence": {
    "bytes": 325,
    "http_status": 200,
    "url": "https://pypi.org/robots.txt"
   },
   "extra": {},
   "measured": {
    "unit": "fraction",
    "value": "0"
   },
   "data_class": "public",
   "method_version": "1",
   "object_id": "ai-bot-policy:pypi.org",
   "claim": {
    "date": "2026-10-18",
    "unit": "fraction",
    "source": {
     "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
     "url": "https://pypi.org/robots.txt"
    },
    "text": "Declared robots.txt policy; evaluated for path /.",
    "value": null
   },
   "section": "ai-bot-policy",
   "section_version": "1",
   "repeats": 1,
   "reason": null,
   "region": "CH",
   "region_name": "Switzerland",
   "schema": "measurement",
   "schema_version": "1",
   "data_status": "measured",
   "question": "Which AI bots does PyPI block in robots.txt?",
   "time": "2026-10-18T01:27:19.544Z",
   "measurement_id": "089ba99dff390c5f"
  }
 ],
 "object": {
  "extra": {},
  "name": "PyPI",
  "category": "service",
  "object_id": "ai-bot-policy:pypi.org",
  "affiliate": null,
  "section": "ai-bot-policy",
  "schema": "object",
  "schema_version": "1",
  "url": "https://pypi.org/"
 },
 "description": {
  "unit": "fraction",
  "name": "ai-bot-policy",
  "index": "Caliper Press AI Bot Policy Watch",
  "title_en": "AI bot access policies",
  "version": "1"
 },
 "section": "ai-bot-policy",
 "indicators": [
  {
   "unit": "days",
   "code": "days_observed",
   "n": 24,
   "window": "30d",
   "description_en": "Distinct dates with usable observations within this window",
   "reason": null,
   "data_status": "calculated",
   "value": "21"
  },
  {
   "unit": "fraction",
   "code": "share_measured",
   "n": 24,
   "window": "30d",
   "description_en": "Share of checks in this window that recorded a value",
   "reason": null,
   "data_status": "calculated",
   "value": "1"
  },
  {
   "unit": "percent",
   "code": "drift_percent",
   "n": 24,
   "window": "30d",
   "description_en": "Percentage change from the first usable value to the last within this window",
   "reason": "The first value in the window is zero, so a percentage change is undefined.",
   "data_status": "unknown",
   "value": null
  },
  {
   "unit": "count",
   "code": "changes_in_window",
   "n": 24,
   "window": "30d",
   "description_en": "Detected fact changes whose later observation falls within this window",
   "reason": null,
   "data_status": "calculated",
   "value": "0"
  },
  {
   "unit": "fraction",
   "code": "latest_value",
   "n": 24,
   "window": "30d",
   "description_en": "Latest usable measured value in this window",
   "reason": null,
   "data_status": "measured",
   "value": "0"
  },
  {
   "unit": "fraction",
   "code": "stability",
   "n": 24,
   "window": "30d",
   "description_en": "Fraction of adjacent usable observation pairs with unchanged values within this window",
   "reason": null,
   "data_status": "calculated",
   "value": "1"
  },
  {
   "unit": "days",
   "code": "days_observed",
   "n": 7,
   "window": "7d",
   "description_en": "Distinct dates with usable observations within this window",
   "reason": null,
   "data_status": "calculated",
   "value": "7"
  },
  {
   "unit": "fraction",
   "code": "share_measured",
   "n": 7,
   "window": "7d",
   "description_en": "Share of checks in this window that recorded a value",
   "reason": null,
   "data_status": "calculated",
   "value": "1"
  },
  {
   "unit": "percent",
   "code": "drift_percent",
   "n": 7,
   "window": "7d",
   "description_en": "Percentage change from the first usable value to the last within this window",
   "reason": "The first value in the window is zero, so a percentage change is undefined.",
   "data_status": "unknown",
   "value": null
  },
  {
   "unit": "count",
   "code": "changes_in_window",
   "n": 7,
   "window": "7d",
   "description_en": "Detected fact changes whose later observation falls within this window",
   "reason": null,
   "data_status": "calculated",
   "value": "0"
  },
  {
   "unit": "fraction",
   "code": "latest_value",
   "n": 7,
   "window": "7d",
   "description_en": "Latest usable measured value in this window",
   "reason": null,
   "data_status": "measured",
   "value": "0"
  },
  {
   "unit": "fraction",
   "code": "stability",
   "n": 7,
   "window": "7d",
   "description_en": "Fraction of adjacent usable observation pairs with unchanged values within this window",
   "reason": null,
   "data_status": "calculated",
   "value": "1"
  },
  {
   "unit": "days",
   "code": "days_observed",
   "n": 24,
   "window": "90d",
   "description_en": "Distinct dates with usable observations within this window",
   "reason": null,
   "data_status": "calculated",
   "value": "21"
  },
  {
   "unit": "fraction",
   "code": "share_measured",
   "n": 24,
   "window": "90d",
   "description_en": "Share of checks in this window that recorded a value",
   "reason": null,
   "data_status": "calculated",
   "value": "1"
  },
  {
   "unit": "percent",
   "code": "drift_percent",
   "n": 24,
   "window": "90d",
   "description_en": "Percentage change from the first usable value to the last within this window",
   "reason": "The first value in the window is zero, so a percentage change is undefined.",
   "data_status": "unknown",
   "value": null
  },
  {
   "unit": "count",
   "code": "changes_in_window",
   "n": 24,
   "window": "90d",
   "description_en": "Detected fact changes whose later observation falls within this window",
   "reason": null,
   "data_status": "calculated",
   "value": "0"
  },
  {
   "unit": "fraction",
   "code": "latest_value",
   "n": 24,
   "window": "90d",
   "description_en": "Latest usable measured value in this window",
   "reason": null,
   "data_status": "measured",
   "value": "0"
  },
  {
   "unit": "fraction",
   "code": "stability",
   "n": 24,
   "window": "90d",
   "description_en": "Fraction of adjacent usable observation pairs with unchanged values within this window",
   "reason": null,
   "data_status": "calculated",
   "value": "1"
  },
  {
   "unit": "days",
   "code": "days_observed",
   "n": 24,
   "window": "all",
   "description_en": "Distinct dates with usable observations within this window",
   "reason": null,
   "data_status": "calculated",
   "value": "21"
  },
  {
   "unit": "fraction",
   "code": "share_measured",
   "n": 24,
   "window": "all",
   "description_en": "Share of checks in this window that recorded a value",
   "reason": null,
   "data_status": "calculated",
   "value": "1"
  },
  {
   "unit": "percent",
   "code": "drift_percent",
   "n": 24,
   "window": "all",
   "description_en": "Percentage change from the first usable value to the last within this window",
   "reason": "The first value in the window is zero, so a percentage change is undefined.",
   "data_status": "unknown",
   "value": null
  },
  {
   "unit": "count",
   "code": "changes_in_window",
   "n": 24,
   "window": "all",
   "description_en": "Detected fact changes whose later observation falls within this window",
   "reason": null,
   "data_status": "calculated",
   "value": "0"
  },
  {
   "unit": "fraction",
   "code": "latest_value",
   "n": 24,
   "window": "all",
   "description_en": "Latest usable measured value in this window",
   "reason": null,
   "data_status": "measured",
   "value": "0"
  },
  {
   "unit": "fraction",
   "code": "stability",
   "n": 24,
   "window": "all",
   "description_en": "Fraction of adjacent usable observation pairs with unchanged values within this window",
   "reason": null,
   "data_status": "calculated",
   "value": "1"
  }
 ],
 "latest": {
  "evidence": {
   "bytes": 325,
   "http_status": 200,
   "url": "https://pypi.org/robots.txt"
  },
  "extra": {},
  "measured": {
   "unit": "fraction",
   "value": "0"
  },
  "data_class": "public",
  "method_version": "1",
  "object_id": "ai-bot-policy:pypi.org",
  "claim": {
   "date": "2026-10-18",
   "unit": "fraction",
   "source": {
    "quote": "User-agent: *\nDisallow: /simple/\nDisallow: /packages/\nDisallow: /_includes/authed/\nDisallow: /project/*/submit-malware-report/\nDisallow: /pypi/*/json\nDisallow: /pypi/*/*/json\nDisallow: /pypi*?\n…",
    "url": "https://pypi.org/robots.txt"
   },
   "text": "Declared robots.txt policy; evaluated for path /.",
   "value": null
  },
  "section": "ai-bot-policy",
  "section_version": "1",
  "repeats": 1,
  "reason": null,
  "region": "CH",
  "region_name": "Switzerland",
  "schema": "measurement",
  "schema_version": "1",
  "data_status": "measured",
  "question": "Which AI bots does PyPI block in robots.txt?",
  "time": "2026-10-18T01:27:19.544Z",
  "measurement_id": "089ba99dff390c5f"
 },
 "quarantine": {
  "active": false,
  "held": [],
  "main_answer": false,
  "rule": "A very large price move is shown only after checks on two different dates return the same price; until then the page shows the previous value."
 },
 "raw_journal": [],
 "generated_at": "2026-10-18T12:07:44.880Z",
 "schema": "object_slice",
 "schema_version": "1"
}