{
  "schema": 1,
  "license": "CC BY 4.0",
  "page": "https://crawlpriceindex.com/futures",
  "edition": "2026-09-23",
  "registered": "2026-09-05",
  "register_commit": "89828c7",
  "register_sha256": "abde3c2309d2d8da11d82b691e377694025ae1de1ecf77ec39cc8946034b85f5",
  "amendments_sha256": "6bf147001ded2ae157d70172b76d19375b6386d406a0206a4dd2bff4cb803831",
  "rescored_from_feed": {
    "fields": 2,
    "sample": [
      "dashboard.reachability.states.bot_walled 5038 → 5094",
      "dashboard.reachability.states.alive 43978 → 44127"
    ]
  },
  "unarchived_editions": [],
  "baseline_edition": "2026-09-02",
  "first_scored_edition": "2026-09-06",
  "statuses": {
    "bets": {},
    "rungs": {
      "D/D1": {
        "status": "at registration",
        "cls": "floor"
      },
      "D/D2": {
        "status": "open",
        "cls": "scored",
        "run": 0,
        "need": 3,
        "met_now": false
      },
      "D/D3": {
        "status": "open",
        "cls": "scored",
        "run": 0,
        "need": 3,
        "met_now": false
      },
      "D/D4": {
        "status": "open",
        "cls": "scored",
        "run": 0,
        "need": 3,
        "met_now": false
      },
      "D/D5": {
        "status": "open",
        "cls": "scored",
        "run": 0,
        "need": 3,
        "met_now": false
      },
      "D/D6": {
        "status": "open",
        "cls": "scored",
        "run": 0,
        "need": 1,
        "met_now": false
      },
      "D/D7": {
        "status": "witness",
        "cls": "witness",
        "witnesses": "Cloudflare pay-per-crawl disclosures, the x402 facilitator, TollBit"
      },
      "D/D8": {
        "status": "witness",
        "cls": "witness",
        "witnesses": "CMA, EU Commission, US Copyright Office, a collecting society"
      },
      "A/A1": {
        "status": "at registration",
        "cls": "floor"
      },
      "A/A2": {
        "status": "open",
        "cls": "scored",
        "run": 0,
        "need": 3,
        "met_now": false
      },
      "A/A3": {
        "status": "open",
        "cls": "scored",
        "run": 0,
        "need": 3,
        "met_now": false
      },
      "A/A4": {
        "status": "open",
        "cls": "scored",
        "run": 0,
        "need": 3,
        "met_now": false
      },
      "A/A5": {
        "status": "witness",
        "cls": "witness",
        "witnesses": "Cloudflare Radar, Thales/Imperva Bad Bot Report, Fastly"
      },
      "A/A6": {
        "status": "witness",
        "cls": "witness",
        "witnesses": "Similarweb, Chartbeat, Chrome UX Report"
      },
      "A/A7": {
        "status": "unscorable",
        "cls": "waiting",
        "waits_for": [
          "held: amended 2026-09-10"
        ]
      },
      "A/A8": {
        "status": "witness",
        "cls": "witness",
        "witnesses": "Common Crawl"
      },
      "C/C1": {
        "status": "at registration",
        "cls": "floor"
      },
      "C/C2": {
        "status": "open",
        "cls": "scored",
        "run": 0,
        "need": 3,
        "met_now": false
      },
      "C/C3": {
        "status": "open",
        "cls": "scored",
        "run": 0,
        "need": 3,
        "met_now": false
      },
      "C/C4": {
        "status": "open",
        "cls": "scored",
        "run": 0,
        "need": 3,
        "met_now": false
      },
      "C/C5": {
        "status": "open",
        "cls": "scored",
        "run": 0,
        "need": 3,
        "met_now": false
      },
      "C/C6": {
        "status": "witness",
        "cls": "witness",
        "witnesses": "Common Crawl index statistics, the Internet Archive"
      },
      "C/C7": {
        "status": "witness",
        "cls": "witness",
        "witnesses": "Cloudflare Radar, Cloudflare product notices"
      },
      "C/C8": {
        "status": "open",
        "cls": "scored",
        "run": 0,
        "need": 3,
        "met_now": false
      }
    },
    "ladders": {
      "D": {
        "status": "standing",
        "reached": 0,
        "scorable": 5,
        "registered": 5,
        "unscorable": 0
      },
      "A": {
        "status": "standing",
        "reached": 0,
        "scorable": 3,
        "registered": 4,
        "unscorable": 1
      },
      "C": {
        "status": "standing",
        "reached": 0,
        "scorable": 5,
        "registered": 5,
        "unscorable": 0
      },
      "B": {
        "status": "withheld",
        "why": "registered and withheld until the registry capture carries index.bazaar_headline.distinct_domains in the feed"
      }
    }
  },
  "register": {
    "schema": 1,
    "page": "/futures",
    "baseline_edition": "2026-09-02",
    "registered": "2026-09-05",
    "first_scored_edition": "2026-09-06",
    "disclaimer": "These are scenarios, not forecasts. Four ways the crawl economy could go, each written down in advance with the readings that would prove or disprove it. Every number here comes from our published feed with its denominator; nothing written on this page changes a measurement. Some rungs read the same field, so they move together. Registered {{registered}}; {{scoring}}.",
    "label": "OUR BET · registered {{registered}} · scored by script against the feed · not a measurement",
    "header": {
      "title": "Futures",
      "strap": "Four ways this could go.",
      "lede": "Where the crawl economy ends up by 2030-2033, written down in advance, with the readings from our own census that would prove or disprove each one."
    },
    "shared_fields": [
      {
        "field": "index.price_headline.any_payment_header ÷ index.price_headline.p402_total",
        "entries": [
          "D/D2",
          "D/D3",
          "D/collapse"
        ],
        "note": "One reading lights every entry here at once; the page announces one result."
      },
      {
        "field": "dashboard.reachability.states.bot_walled ÷ .alive",
        "entries": [
          "C/C2b",
          "C/C3"
        ]
      },
      {
        "field": "dashboard.tail.buckets.refused_crawler.domains",
        "entries": [
          "C/C1",
          "C/C2a"
        ]
      },
      {
        "field": "dashboard.wire_join.control.crawler_specific and .control_also_refused ÷ .refusals_total",
        "entries": [
          "A/A4",
          "C/C4"
        ],
        "note": "Complements on one base; all three wait for control_no_status as an emitted field."
      }
    ],
    "ladders": [
      {
        "id": "D",
        "order": 1,
        "name": "The Toll Web",
        "status": "standing",
        "scene": "/futures#ladder-D",
        "destination": {
          "scored": "By the first edition on or after 1 Sep 2030, 402 Payment Required will outnumber 403 Forbidden at the doors of the ranked web, and a majority of 402s will carry a protocol-confirmed price.",
          "witness": "A regulator will have published a per-crawl price schedule."
        },
        "arrival_date": "2030-09-01",
        "collapse": {
          "date": "2027-08-18",
          "expression": "20 * index.price_headline.any_payment_header < index.price_headline.p402_total",
          "text": "at 18 Aug 2027 fewer than 5% of 402s carry a payment header — a year after the switch shipped, 402 is still a politer 403",
          "shared": "toll-booth/early_kill"
        },
        "rungs": [
          {
            "id": "D1",
            "name": "402 is in use",
            "floor": true,
            "field": "dashboard.wire_join.status_mix.402",
            "denominator": {
              "field": "dashboard.wire_join.cohort.reachable",
              "population": "reached domains"
            },
            "unit": "402 answers"
          },
          {
            "id": "D2",
            "name": "The 402 starts naming a price",
            "date": "2026-11-18",
            "condition": "≥ 5% of 402s carry a payment header, three consecutive editions",
            "expression": "20 * index.price_headline.any_payment_header >= index.price_headline.p402_total",
            "consecutive": 3,
            "field": "index.price_headline.any_payment_header",
            "denominator": {
              "field": "index.price_headline.p402_total",
              "population": "402 responses on the wire"
            },
            "unit": "402s with a payment header",
            "shared": "toll-booth/3b",
            "note": "The first rung on any ladder with a near-term date, and the only one the 15 September event acts on directly."
          },
          {
            "id": "D3",
            "name": "A quarter of the tills are open",
            "date": "2027-08-18",
            "condition": "≥ 25% of 402s carry a payment header",
            "expression": "4 * index.price_headline.any_payment_header >= index.price_headline.p402_total",
            "field": "index.price_headline.any_payment_header",
            "denominator": {
              "field": "index.price_headline.p402_total",
              "population": "402 responses on the wire"
            },
            "unit": "402s with a payment header",
            "consecutive": 3
          },
          {
            "id": "D4",
            "name": "402 ≥ 403",
            "date": "2028-09-01",
            "condition": "402 answers at least equal 403 answers on the wire",
            "expression": "dashboard.wire_join.status_mix.402 >= dashboard.wire_join.status_mix.403",
            "field": "dashboard.wire_join.status_mix.402",
            "second_field": "dashboard.wire_join.status_mix.403",
            "denominator": {
              "field": "dashboard.wire_join.cohort.reachable",
              "population": "reached domains (one base for both counts)"
            },
            "unit": "402 : 403 answers",
            "consecutive": 3
          },
          {
            "id": "D5",
            "name": "The price is in the protocol",
            "date": "2029-09-01",
            "condition": "≥ 50% of 402s carry a protocol-confirmed price",
            "expression": "2 * index.price_headline.protocol_confirmed >= index.price_headline.p402_total",
            "field": "index.price_headline.protocol_confirmed",
            "denominator": {
              "field": "index.price_headline.p402_total",
              "population": "402 responses on the wire"
            },
            "unit": "402s with a protocol-confirmed price",
            "count_only": true,
            "consecutive": 3
          },
          {
            "id": "D6",
            "name": "A top-100 domain quotes a machine price",
            "date": "2029-09-01",
            "requires": [
              "index.price_headline.confirmed_top_rank"
            ],
            "reason": "waits for index.price_headline.confirmed_top_rank",
            "condition": "a domain ranked ≤ 100 has a protocol-confirmed price on the wire",
            "expression": "index.price_headline.confirmed_top_rank <= 100",
            "field": "index.price_headline.confirmed_top_rank",
            "unit": "rank of the highest-ranked confirmed price",
            "count_only": true,
            "consecutive": 1
          },
          {
            "id": "D7",
            "name": "Money moves",
            "date": "2030-06-30",
            "witness": true,
            "condition": "a facilitator or CDN discloses ≥ 1 billion settled per-crawl payments in twelve months",
            "witnesses": "Cloudflare pay-per-crawl disclosures, the x402 facilitator, TollBit"
          },
          {
            "id": "D8",
            "name": "The rate card",
            "date": "2031-03-31",
            "witness": true,
            "condition": "a national or EU regulator publishes or endorses a per-crawl price schedule or collective tariff for machine access",
            "witnesses": "CMA, EU Commission, US Copyright Office, a collecting society"
          }
        ],
        "quote": "Of 7,491 ranked domains that answered a request presenting GPTBot in the 2 Sep 2026 edition, 2,652 replied 403 Forbidden and 321 replied 402 Payment Required; 4 of the 321 said what to pay. — The Crawl Price Index",
        "baseline_edition": "2026-09-02",
        "text_sha256": "8e7a57b13ab36b393750a80971ffa64d4d4da969c350c3888c62a8569fdc6415"
      },
      {
        "id": "A",
        "order": 2,
        "name": "The End of the Internet of Humans",
        "status": "standing",
        "scene": "/futures#ladder-A",
        "destination": {
          "scored": "By the first edition on or after 1 Sep 2033, the ranked web will treat the visitor that trains a model and the visitor that stands in for a reader as different things at the door, and a top-100 domain will answer a plain browser with a machine price rather than a page.",
          "witness": "A majority of requests to the top 1,000 will be machines acting for people."
        },
        "arrival_date": "2033-09-01",
        "collapse": {
          "date": "2027-08-18",
          "expression": "((dashboard.crawlers[name=ChatGPT-User].blocked_pct - base(dashboard.crawlers[name=ChatGPT-User].blocked_pct) >= dashboard.crawlers[name=GPTBot].blocked_pct - base(dashboard.crawlers[name=GPTBot].blocked_pct) and dashboard.crawlers[name=Claude-Web].blocked_pct - base(dashboard.crawlers[name=Claude-Web].blocked_pct) >= dashboard.crawlers[name=GPTBot].blocked_pct - base(dashboard.crawlers[name=GPTBot].blocked_pct)) or (dashboard.crawlers[name=ChatGPT-User].blocked_pct - base(dashboard.crawlers[name=ChatGPT-User].blocked_pct) >= dashboard.crawlers[name=GPTBot].blocked_pct - base(dashboard.crawlers[name=GPTBot].blocked_pct) and dashboard.crawlers[name=Perplexity-User].blocked_pct - base(dashboard.crawlers[name=Perplexity-User].blocked_pct) >= dashboard.crawlers[name=GPTBot].blocked_pct - base(dashboard.crawlers[name=GPTBot].blocked_pct)) or (dashboard.crawlers[name=Claude-Web].blocked_pct - base(dashboard.crawlers[name=Claude-Web].blocked_pct) >= dashboard.crawlers[name=GPTBot].blocked_pct - base(dashboard.crawlers[name=GPTBot].blocked_pct) and dashboard.crawlers[name=Perplexity-User].blocked_pct - base(dashboard.crawlers[name=Perplexity-User].blocked_pct) >= dashboard.crawlers[name=GPTBot].blocked_pct - base(dashboard.crawlers[name=GPTBot].blocked_pct))) and dashboard.crawlers[name=GPTBot].blocked_pct - base(dashboard.crawlers[name=GPTBot].blocked_pct) > 0 or dashboard.selective.pct <= base(dashboard.selective.pct)",
          "consecutive": 3,
          "text": "at 18 Aug 2027 two of the three user-initiated fetchers have risen by as many points as GPTBot (GPTBot having risen at all), or the selective share is at or below its 2 Sep 2026 reading — the ranked web has decided a bot is a bot"
        },
        "rungs": [
          {
            "id": "A1",
            "name": "The line exists",
            "floor": true,
            "field": "dashboard.roles.asymmetry.vs_nontraining.a",
            "second_field": "dashboard.roles.asymmetry.vs_nontraining.b",
            "denominator": {
              "field": "dashboard.panel.robots_parsed",
              "population": "domains with a readable robots.txt"
            },
            "unit": "block training only : block search-or-user only",
            "grouping": "vs_nontraining",
            "note": "This grouping counts search AND user-initiated crawlers on the second side; the home page prints the training-vs-search split and the Briefing the Cloudflare grouping."
          },
          {
            "id": "A2",
            "name": "The reader's agent is spared",
            "date": "2027-08-18",
            "condition": "each of ChatGPT-User, Claude-Web and Perplexity-User at most 1.0pp above its 2 Sep 2026 reading while GPTBot is at least 3.0pp above its own",
            "expression": "dashboard.crawlers[name=ChatGPT-User].blocked_pct <= base(dashboard.crawlers[name=ChatGPT-User].blocked_pct) + 1 and dashboard.crawlers[name=Claude-Web].blocked_pct <= base(dashboard.crawlers[name=Claude-Web].blocked_pct) + 1 and dashboard.crawlers[name=Perplexity-User].blocked_pct <= base(dashboard.crawlers[name=Perplexity-User].blocked_pct) + 1 and dashboard.crawlers[name=GPTBot].blocked_pct >= base(dashboard.crawlers[name=GPTBot].blocked_pct) + 3",
            "field": "dashboard.crawlers[name=GPTBot].blocked_pct",
            "fields": [
              "dashboard.crawlers[name=ChatGPT-User].blocked_pct",
              "dashboard.crawlers[name=Claude-Web].blocked_pct",
              "dashboard.crawlers[name=Perplexity-User].blocked_pct",
              "dashboard.crawlers[name=GPTBot].blocked_pct"
            ],
            "denominator": {
              "field": "dashboard.panel.robots_parsed",
              "population": "domains with a readable robots.txt"
            },
            "unit": "% blocked",
            "series": "block_rates",
            "consecutive": 3
          },
          {
            "id": "A3",
            "name": "Discrimination goes mainstream",
            "date": "2028-09-01",
            "condition": "≥ 8% of parsed domains treat at least one crawler differently from another",
            "expression": "dashboard.selective.pct >= 8",
            "field": "dashboard.selective.pct",
            "denominator": {
              "field": "dashboard.selective.denominator",
              "population": "domains with a readable robots.txt"
            },
            "unit": "%",
            "shared": "front-page/1d",
            "consecutive": 3
          },
          {
            "id": "A4",
            "name": "The door knows who you are",
            "date": "2028-09-01",
            "requires": [
              "dashboard.wire_join.control.control_no_status"
            ],
            "reason": "waits for dashboard.wire_join.control.control_no_status as an emitted field; scored as crawler_specific ÷ refusals_total ≥ 65% once served + refused-too + no-status is an identity on emitted bytes",
            "condition": "crawler-specific refusals ≥ 65% of all refusals on the wire",
            "expression": "100 * dashboard.wire_join.control.crawler_specific >= 65 * dashboard.wire_join.control.refusals_total",
            "field": "dashboard.wire_join.control.crawler_specific",
            "denominator": {
              "field": "dashboard.wire_join.control.refusals_total",
              "population": "refusals on the wire"
            },
            "shared": "C/C4",
            "consecutive": 3
          },
          {
            "id": "A5",
            "name": "Machines are the majority",
            "date": "2029-12-31",
            "witness": true,
            "condition": "automated share of requests ≥ 70% on at least two of three bot-mitigation networks",
            "witnesses": "Cloudflare Radar, Thales/Imperva Bad Bot Report, Fastly"
          },
          {
            "id": "A6",
            "name": "The click dies",
            "date": "2030-12-31",
            "witness": true,
            "condition": "AI-referred visits exceed search-referred visits for the top 100 news domains, or Chrome UX Report page views for the top 1,000 fall ≥ 30% from 2026",
            "witnesses": "Similarweb, Chartbeat, Chrome UX Report"
          },
          {
            "id": "A7",
            "name": "The browser is the stranger",
            "date": "2031-09-01",
            "requires": [
              "dashboard.wire_join.control_status_mix.200"
            ],
            "reason": "waits for dashboard.wire_join.control_status_mix",
            "condition": "≥ 10% of reached wire domains answer the browser control with something other than 200",
            "expression": "10 * (dashboard.wire_join.cohort.reachable - dashboard.wire_join.control_status_mix.200) >= dashboard.wire_join.cohort.reachable",
            "field": "dashboard.wire_join.control_status_mix.200",
            "denominator": {
              "field": "dashboard.wire_join.cohort.reachable",
              "population": "reached wire domains"
            },
            "consecutive": 3,
            "amendments": [
              {
                "date": "2026-09-10",
                "text": "registered as “the browser control”; the field it reads is the identified-crawler control, which is not published; which control the rung means is unresolved — unscorable under either reading until re-registered",
                "hold": true
              }
            ]
          },
          {
            "id": "A8",
            "name": "The front page is a price list",
            "date": "2033-09-01",
            "witness": true,
            "condition": "a top-100 domain answers the browser control with 402 and carries a protocol-confirmed price (feed half, waits for index.price_headline.confirmed_top_rank); Common Crawl records fewer than half of top-1,000 homepages with a rendered HTML body (witness half)",
            "witnesses": "Common Crawl",
            "amendments": [
              {
                "date": "2026-09-10",
                "text": "registered as “the browser control”; which control the rung means is unresolved (see A7); its feed half waits for index.price_headline.confirmed_top_rank, its witness half is not scored by us; unscorable until re-registered",
                "hold": true
              }
            ]
          }
        ],
        "quote": "In the 2 Sep 2026 edition, 1,474 of 31,488 ranked domains with a readable robots.txt block a training crawler while blocking no search or user-initiated one; 108 do the reverse. — The Crawl Price Index",
        "baseline_edition": "2026-09-02",
        "text_sha256": "ca61647e9d1e3864d50917e3c996b5a909988b9e0d530b5603d4ef4df1c537dc"
      },
      {
        "id": "C",
        "order": 3,
        "name": "The Great Lockout",
        "status": "standing",
        "scene": "/futures#ladder-C",
        "destination": {
          "scored": "By the first edition on or after 1 Sep 2031, more than half of the 50,000-domain frame will refuse or wall an identified, signed measurement crawler — the census will be unable to read a majority of the ranked web — while at least 40,000 of those hosts are still alive.",
          "witness": "The public archives will record the same shrinkage."
        },
        "arrival_date": "2031-09-01",
        "collapse": {
          "date": "2027-08-18",
          "expression": "dashboard.tail.buckets.refused_crawler.domains <= 3000 and 10 * dashboard.reachability.states.bot_walled <= dashboard.reachability.states.alive",
          "text": "at 18 Aug 2027 at most 3,000 frame domains refuse the identified crawler and bot-walled hosts are at most 10% of live hosts, with the method unchanged — the walls are not growing",
          "method_bound": "index.methodology_version"
        },
        "rungs": [
          {
            "id": "C1",
            "name": "The wall exists",
            "floor": true,
            "field": "dashboard.tail.buckets.refused_crawler.domains",
            "denominator": {
              "field": "dashboard.panel.domains",
              "population": "domains in the ranked frame"
            },
            "unit": "domains refusing an identified crawler asking for robots.txt (403 or 429)"
          },
          {
            "id": "C2",
            "name": "The wall grows",
            "date": "2027-08-18",
            "bases": 2,
            "condition": "refused-crawler domains ≥ 10% of the 50,000-domain frame (5,000), OR bot-walled hosts ≥ 15% of live hosts, with the method unchanged",
            "expression": "10 * dashboard.tail.buckets.refused_crawler.domains >= dashboard.panel.domains or 20 * dashboard.reachability.states.bot_walled >= 3 * dashboard.reachability.states.alive",
            "clauses": [
              {
                "field": "dashboard.tail.buckets.refused_crawler.domains",
                "denominator": {
                  "field": "dashboard.panel.domains",
                  "population": "domains in the ranked frame"
                },
                "unit": "refusing domains"
              },
              {
                "field": "dashboard.reachability.states.bot_walled",
                "denominator": {
                  "field": "dashboard.reachability.states.alive",
                  "population": "live hosts"
                },
                "unit": "bot-walled hosts"
              }
            ],
            "method_bound": "index.methodology_version",
            "shared": "velvet-rope/2b, velvet-rope/2c",
            "consecutive": 3
          },
          {
            "id": "C3",
            "name": "One in four",
            "date": "2028-09-01",
            "condition": "bot-walled hosts ≥ 25% of live hosts",
            "expression": "4 * dashboard.reachability.states.bot_walled >= dashboard.reachability.states.alive",
            "field": "dashboard.reachability.states.bot_walled",
            "denominator": {
              "field": "dashboard.reachability.states.alive",
              "population": "live hosts"
            },
            "unit": "bot-walled hosts",
            "series": "reachability.bot_walled_of_alive",
            "consecutive": 3
          },
          {
            "id": "C4",
            "name": "The door refuses everyone",
            "date": "2028-09-01",
            "requires": [
              "dashboard.wire_join.control.control_no_status"
            ],
            "reason": "waits for dashboard.wire_join.control.control_no_status as an emitted field; scored as control_also_refused ÷ refusals_total ≥ 60% once the three-term identity holds on emitted bytes",
            "condition": "refusals that also refuse the honest control ≥ 60% of all refusals on the wire",
            "expression": "100 * dashboard.wire_join.control.control_also_refused >= 60 * dashboard.wire_join.control.refusals_total",
            "field": "dashboard.wire_join.control.control_also_refused",
            "denominator": {
              "field": "dashboard.wire_join.control.refusals_total",
              "population": "refusals on the wire"
            },
            "shared": "A/A4",
            "consecutive": 3
          },
          {
            "id": "C5",
            "name": "Alive but unreadable",
            "date": "2029-09-01",
            "condition": "readable robots.txt ≤ 50% of the frame while alive hosts ≥ 85% of it",
            "expression": "2 * dashboard.policy_layer.ladder.parsed <= dashboard.panel.domains and 20 * dashboard.reachability.states.alive >= 17 * dashboard.panel.domains",
            "field": "dashboard.policy_layer.ladder.parsed",
            "second_field": "dashboard.reachability.states.alive",
            "denominator": {
              "field": "dashboard.panel.domains",
              "population": "domains in the ranked frame"
            },
            "unit": "parsed · alive",
            "consecutive": 3
          },
          {
            "id": "C6",
            "name": "The archives shrink",
            "date": "2029-12-31",
            "witness": true,
            "condition": "Common Crawl's monthly fetched-page count or the Internet Archive's yearly captures for the top 10,000 fall ≥ 30% from 2026, or Common Crawl reports ≥ 25% of fetches refused",
            "witnesses": "Common Crawl index statistics, the Internet Archive"
          },
          {
            "id": "C7",
            "name": "The default flips for everyone",
            "date": "2030-12-31",
            "witness": true,
            "condition": "a CDN applies block-by-default to existing zones, not only newly onboarding ones, and its own radar shows verified-bot requests blocked ≥ 50%",
            "witnesses": "Cloudflare Radar, Cloudflare product notices"
          },
          {
            "id": "C8",
            "name": "The census cannot read half the frame",
            "date": "2031-09-01",
            "condition": "domains refusing an identified crawler ≥ 25,000 of 50,000, or bot-walled hosts ≥ half of alive hosts, while alive hosts ≥ 40,000 — the unresolved and no-file buckets do not count",
            "expression": "(dashboard.tail.buckets.refused_crawler.domains >= 25000 or 2 * dashboard.reachability.states.bot_walled >= dashboard.reachability.states.alive) and dashboard.reachability.states.alive >= 40000",
            "field": "dashboard.tail.buckets.refused_crawler.domains",
            "second_field": "dashboard.reachability.states.alive",
            "denominator": {
              "field": "dashboard.panel.domains",
              "population": "domains in the ranked frame"
            },
            "unit": "refusing · alive",
            "note": "The only rung on any ladder that CPI can score entirely alone: the lockout is measured by the thing it locks out.",
            "consecutive": 3
          }
        ],
        "quote": "In the 2 Sep 2026 edition, 3,760 of the 18,512 ranked domains that yielded no robots.txt reading did so by refusing an identified, cryptographically signed measurement crawler with a 403 or 429; a further 4,993 of 44,298 live hosts serve robots.txt and then wall the homepage. — The Crawl Price Index",
        "baseline_edition": "2026-09-02",
        "text_sha256": "d21ded4db17c5e186d635a15d8417a2bfd92df66ee73cf7b9760c548e7b6e164"
      },
      {
        "id": "B",
        "order": 4,
        "name": "The Machine-Only Web",
        "status": "withheld",
        "scene": "/futures#ladder-B",
        "withheld_reason": "registered and withheld until the registry capture carries index.bazaar_headline.distinct_domains in the feed",
        "destination": {
          "scored": "",
          "witness": ""
        },
        "arrival_date": "2032-09-01",
        "rungs": [],
        "baseline_edition": "2026-09-02",
        "text_sha256": "fd289bf1d9b4efa05f0d73d741071708fb38f23e63d14efb683e529e4e51a8e4"
      }
    ],
    "event": {
      "id": "cloudflare-2026-09-15",
      "name": "Cloudflare's 15 September default",
      "date": "2026-09-15",
      "text": "From 15 September 2026 Cloudflare blocks bots it classifies as Training or Agent on ad-displaying pages for newly onboarding domains, while Search remains allowed.",
      "expectation_field": "dashboard.roles.asymmetry.cloudflare_aligned.scope_note",
      "window": {
        "before": [
          "2026-09-06",
          "2026-09-09",
          "2026-09-13"
        ],
        "after": [
          "2026-09-16",
          "2026-09-20",
          "2026-09-23",
          "2026-09-27",
          "2026-09-30",
          "2026-10-04"
        ]
      },
      "fields": [
        "index.price_headline.any_payment_header ÷ index.price_headline.p402_total",
        "dashboard.roles.asymmetry.cloudflare_aligned.blocks_machine_consumption_only_pct",
        "dashboard.declared_use.content_signal.inherited_default"
      ],
      "independence": "The Crawl Price Index has no commercial relationship with Cloudflare, TollBit, or any facilitator or vendor named on this page.",
      "unscored": "No threshold is registered on this card."
    },
    "witnesses": {
      "text": "External series this page cites and does not score: bot share of requests (Cloudflare Radar, Thales/Imperva, Fastly), referral traffic (Similarweb, Chartbeat, Chrome UX Report), archive coverage (Common Crawl, the Internet Archive). They witness what the census cannot see; nothing on this page is scored against them."
    },
    "odds_rule": "Odds: none registered; may be set once per claim, on or before the 2026-11-08 edition (the last before the C1 window opens); Brier-scored at each resolution.",
    "rules": [
      "Registration. A claim is a record in futures.json with a claim sentence, a resolution date, indicators with expressions over feed fields, checkpoints, an early-kill rule where one exists, and an odds slot. The goalposts are hashed at registration and the hash is checked on every build.",
      "Scoring. Every edition the builder evaluates each scored expression against the published feed and appends the reading and the verdict to the history. Status is derived from the registered rules and nothing else.",
      "Statuses. Bets: undecided, leaning support, leaning refute, supported so far, refuted so far, won, lost, retired. Rungs: at registration, open, reached, missed, witness, unscorable. Ladders: standing, collapsed, arrived, retired, withheld.",
      "Early kill. A bet may be refuted before C3 only by an early-kill rule written on its card at registration.",
      "Retirement. A claim is retired, never deleted, when it resolves, when the frame version changes, or when a methodology change removes or redefines a scored field; the register says which and when.",
      "Adding. New claims may be registered at any edition; a claim registered after an event cannot claim that event, and the registration date is printed.",
      "Contradiction. Theatre is incompatible with the other three bets and says which indicator decides; Toll Booth and Front Page are compatible with each other."
    ],
    "baseline_readings": {
      "dashboard.wire_join.buckets.declared_block_served": 2251,
      "dashboard.wire_join.buckets.declared_block_refused": 2549,
      "dashboard.changes.total_changes": 719,
      "dashboard.panel.robots_parsed": 31488,
      "dashboard.significance.*.latest": [
        0.054,
        0.041,
        0.066,
        0.053,
        0.024,
        0.058,
        0.055,
        0.048,
        0.025,
        0.005,
        0.037,
        0.018,
        0.021,
        0.015,
        0.014,
        0.026,
        0.01,
        0.007
      ],
      "dashboard.any_ai.pct": 20.13,
      "dashboard.any_ai.denominator": 31488,
      "dashboard.archetypes.dominant.pct_of_all_blocked_cells": 26.2,
      "dashboard.archetypes.total_blocked_cells": 48866,
      "index.price_headline.any_payment_header": 4,
      "index.price_headline.p402_total": 321,
      "dashboard.wire_join.cohort.reachable": 7491,
      "index.price_headline.protocol_confirmed": 2,
      "index.bazaar_headline.endpoints_real_priced": 14658,
      "index.bazaar_headline.in_frame_domains": 24,
      "dashboard.wire_join.status_mix.402": 321,
      "dashboard.wire_join.status_mix.403": 2652,
      "index.bazaar_headline.frame_size": 49156,
      "index.price_headline.cloudflare_overall": 94,
      "dashboard.roles.vendors[vendor=OpenAI].splits_by_role.training_only": 2940,
      "dashboard.roles.vendors[vendor=OpenAI].splits_by_role.nontraining_only": 70,
      "dashboard.roles.vendors[vendor=Anthropic].splits_by_role.training_only": 2686,
      "dashboard.roles.vendors[vendor=Anthropic].splits_by_role.nontraining_only": 3,
      "dashboard.selective.pct": 2.61,
      "dashboard.roles.vendors[vendor=OpenAI].splits_by_role.training_only_pct": 9.34,
      "dashboard.roles.vendors[vendor=OpenAI].splits_by_role.nontraining_only_pct": 0.22,
      "dashboard.roles.asymmetry.vs_nontraining.a": 1474,
      "dashboard.roles.asymmetry.vs_nontraining.a_pct": 4.68,
      "dashboard.roles.asymmetry.vs_nontraining.both_pct": 15.1,
      "dashboard.crawlers[name=ChatGPT-User].blocked_pct": 6.38,
      "dashboard.crawlers[name=Claude-Web].blocked_pct": 5.6,
      "dashboard.crawlers[name=Perplexity-User].blocked_pct": 2.39,
      "dashboard.crawlers[name=GPTBot].blocked_pct": 15.91,
      "dashboard.selective.denominator": 31488,
      "dashboard.wire_join.control.crawler_specific": 1650,
      "dashboard.wire_join.control.refusals_total": 3227,
      "dashboard.archetypes.dominant.n": 1599,
      "dashboard.archetypes.dominant.median_rank": 27121,
      "dashboard.tail.buckets.refused_crawler.domains": 3760,
      "dashboard.tail.tail_total": 18512,
      "dashboard.archetypes.dominant.pct_of_aware": 19.95,
      "dashboard.reachability.states.bot_walled": 4993,
      "dashboard.reachability.states.alive": 44298,
      "dashboard.policy_layer.ladder.ai_aware": 8015,
      "dashboard.panel.domains": 50000,
      "dashboard.any_ai.by_band[band=25001-50000].pct": 19.23,
      "dashboard.archetypes.dominant.by_band[band=1-100].n": 0,
      "dashboard.archetypes.dominant.by_band[band=1-100].parsed_n": 66,
      "dashboard.archetypes.dominant.by_band[band=1-100].pct": 0,
      "dashboard.archetypes.dominant.by_band[band=25001-50000].pct": 5.92,
      "dashboard.roles.asymmetry.vs_nontraining.b": 108,
      "dashboard.wire_join.control.control_also_refused": 1577,
      "dashboard.policy_layer.ladder.parsed": 31488
    }
  },
  "history": [
    {
      "edition": "2026-09-06",
      "scored_at": "2026-09-07T18:32:55.575Z",
      "register_sha256": "abde3c2309d2d8da11d82b691e377694025ae1de1ecf77ec39cc8946034b85f5",
      "readings": {
        "dashboard.wire_join.status_mix.402": 319,
        "dashboard.wire_join.cohort.reachable": 7496,
        "index.price_headline.any_payment_header": 4,
        "index.price_headline.p402_total": 319,
        "dashboard.wire_join.status_mix.403": 2659,
        "index.price_headline.protocol_confirmed": 2,
        "index.price_headline.confirmed_top_rank": 1327,
        "dashboard.roles.asymmetry.vs_nontraining.a": 1474,
        "dashboard.roles.asymmetry.vs_nontraining.b": 105,
        "dashboard.panel.robots_parsed": 31441,
        "dashboard.crawlers[name=GPTBot].blocked_pct": 15.93,
        "dashboard.crawlers[name=ChatGPT-User].blocked_pct": 6.38,
        "dashboard.crawlers[name=Claude-Web].blocked_pct": 5.59,
        "dashboard.crawlers[name=Perplexity-User].blocked_pct": 2.38,
        "dashboard.selective.pct": 2.61,
        "dashboard.selective.denominator": 31441,
        "dashboard.wire_join.control.crawler_specific": 1649,
        "dashboard.wire_join.control.refusals_total": 3216,
        "dashboard.tail.buckets.refused_crawler.domains": 3775,
        "dashboard.panel.domains": 50000,
        "dashboard.reachability.states.bot_walled": 4915,
        "dashboard.reachability.states.alive": 44111,
        "dashboard.wire_join.control.control_also_refused": 1567,
        "dashboard.policy_layer.ladder.parsed": 31441,
        "dashboard.roles.asymmetry.cloudflare_aligned.blocks_machine_consumption_only_pct": 6.53,
        "dashboard.declared_use.content_signal.inherited_default": 1680
      },
      "indicators": {},
      "rungs": {
        "D/D1": {
          "met": null
        },
        "D/D2": {
          "met": false
        },
        "D/D3": {
          "met": false
        },
        "D/D4": {
          "met": false
        },
        "D/D5": {
          "met": false
        },
        "D/D6": {
          "met": false
        },
        "D/D7": {
          "met": null
        },
        "D/D8": {
          "met": null
        },
        "A/A1": {
          "met": null
        },
        "A/A2": {
          "met": false
        },
        "A/A3": {
          "met": false
        },
        "A/A4": {
          "met": false
        },
        "A/A5": {
          "met": null
        },
        "A/A6": {
          "met": null
        },
        "A/A7": {
          "met": null,
          "waits_for": [
            "dashboard.wire_join.control_status_mix.200"
          ]
        },
        "A/A8": {
          "met": null
        },
        "C/C1": {
          "met": null
        },
        "C/C2": {
          "met": false
        },
        "C/C3": {
          "met": false
        },
        "C/C4": {
          "met": false
        },
        "C/C5": {
          "met": false
        },
        "C/C6": {
          "met": null
        },
        "C/C7": {
          "met": null
        },
        "C/C8": {
          "met": false
        }
      },
      "collapse": {
        "D": true,
        "A": true,
        "C": false
      },
      "early_lean": {},
      "early_kill": {}
    },
    {
      "edition": "2026-09-09",
      "scored_at": "2026-09-09T03:07:45.367Z",
      "register_sha256": "abde3c2309d2d8da11d82b691e377694025ae1de1ecf77ec39cc8946034b85f5",
      "readings": {
        "dashboard.wire_join.status_mix.402": 318,
        "dashboard.wire_join.cohort.reachable": 7520,
        "index.price_headline.any_payment_header": 4,
        "index.price_headline.p402_total": 318,
        "dashboard.wire_join.status_mix.403": 2664,
        "index.price_headline.protocol_confirmed": 2,
        "index.price_headline.confirmed_top_rank": 1327,
        "dashboard.roles.asymmetry.vs_nontraining.a": 1479,
        "dashboard.roles.asymmetry.vs_nontraining.b": 107,
        "dashboard.panel.robots_parsed": 31469,
        "dashboard.crawlers[name=GPTBot].blocked_pct": 15.99,
        "dashboard.crawlers[name=ChatGPT-User].blocked_pct": 6.4,
        "dashboard.crawlers[name=Claude-Web].blocked_pct": 5.6,
        "dashboard.crawlers[name=Perplexity-User].blocked_pct": 2.41,
        "dashboard.selective.pct": 2.64,
        "dashboard.selective.denominator": 31469,
        "dashboard.wire_join.control.crawler_specific": 1669,
        "dashboard.wire_join.control.refusals_total": 3223,
        "dashboard.tail.buckets.refused_crawler.domains": 3755,
        "dashboard.panel.domains": 50000,
        "dashboard.reachability.states.bot_walled": 4915,
        "dashboard.reachability.states.alive": 44111,
        "dashboard.wire_join.control.control_also_refused": 1554,
        "dashboard.policy_layer.ladder.parsed": 31469,
        "dashboard.roles.asymmetry.cloudflare_aligned.blocks_machine_consumption_only_pct": 6.56,
        "dashboard.declared_use.content_signal.inherited_default": 1692
      },
      "indicators": {},
      "rungs": {
        "D/D1": {
          "met": null
        },
        "D/D2": {
          "met": false
        },
        "D/D3": {
          "met": false
        },
        "D/D4": {
          "met": false
        },
        "D/D5": {
          "met": false
        },
        "D/D6": {
          "met": false
        },
        "D/D7": {
          "met": null
        },
        "D/D8": {
          "met": null
        },
        "A/A1": {
          "met": null
        },
        "A/A2": {
          "met": false
        },
        "A/A3": {
          "met": false
        },
        "A/A4": {
          "met": false
        },
        "A/A5": {
          "met": null
        },
        "A/A6": {
          "met": null
        },
        "A/A7": {
          "met": null,
          "waits_for": [
            "dashboard.wire_join.control_status_mix.200"
          ]
        },
        "A/A8": {
          "met": null
        },
        "C/C1": {
          "met": null
        },
        "C/C2": {
          "met": false
        },
        "C/C3": {
          "met": false
        },
        "C/C4": {
          "met": false
        },
        "C/C5": {
          "met": false
        },
        "C/C6": {
          "met": null
        },
        "C/C7": {
          "met": null
        },
        "C/C8": {
          "met": false
        }
      },
      "collapse": {
        "D": true,
        "A": false,
        "C": false
      },
      "early_lean": {},
      "early_kill": {}
    },
    {
      "edition": "2026-09-13",
      "scored_at": "2026-09-13T16:29:30.745Z",
      "register_sha256": "abde3c2309d2d8da11d82b691e377694025ae1de1ecf77ec39cc8946034b85f5",
      "readings": {
        "dashboard.wire_join.status_mix.402": 321,
        "dashboard.wire_join.cohort.reachable": 7538,
        "index.price_headline.any_payment_header": 4,
        "index.price_headline.p402_total": 321,
        "dashboard.wire_join.status_mix.403": 2670,
        "index.price_headline.protocol_confirmed": 2,
        "index.price_headline.confirmed_top_rank": 1327,
        "dashboard.roles.asymmetry.vs_nontraining.a": 1488,
        "dashboard.roles.asymmetry.vs_nontraining.b": 105,
        "dashboard.panel.robots_parsed": 31364,
        "dashboard.crawlers[name=GPTBot].blocked_pct": 16.07,
        "dashboard.crawlers[name=ChatGPT-User].blocked_pct": 6.41,
        "dashboard.crawlers[name=Claude-Web].blocked_pct": 5.62,
        "dashboard.crawlers[name=Perplexity-User].blocked_pct": 2.43,
        "dashboard.selective.pct": 2.72,
        "dashboard.selective.denominator": 31364,
        "dashboard.wire_join.control.crawler_specific": 1660,
        "dashboard.wire_join.control.refusals_total": 3238,
        "dashboard.tail.buckets.refused_crawler.domains": 3768,
        "dashboard.panel.domains": 50000,
        "dashboard.reachability.states.bot_walled": 4934,
        "dashboard.reachability.states.alive": 44073,
        "dashboard.wire_join.control.control_also_refused": 1578,
        "dashboard.policy_layer.ladder.parsed": 31364,
        "dashboard.roles.asymmetry.cloudflare_aligned.blocks_machine_consumption_only_pct": 6.58,
        "dashboard.declared_use.content_signal.inherited_default": 1703
      },
      "indicators": {},
      "rungs": {
        "D/D1": {
          "met": null
        },
        "D/D2": {
          "met": false
        },
        "D/D3": {
          "met": false
        },
        "D/D4": {
          "met": false
        },
        "D/D5": {
          "met": false
        },
        "D/D6": {
          "met": false
        },
        "D/D7": {
          "met": null
        },
        "D/D8": {
          "met": null
        },
        "A/A1": {
          "met": null
        },
        "A/A2": {
          "met": false
        },
        "A/A3": {
          "met": false
        },
        "A/A4": {
          "met": false
        },
        "A/A5": {
          "met": null
        },
        "A/A6": {
          "met": null
        },
        "A/A7": {
          "met": null,
          "waits_for": [
            "held: amended 2026-09-10"
          ]
        },
        "A/A8": {
          "met": null,
          "waits_for": [
            "held: amended 2026-09-10"
          ]
        },
        "C/C1": {
          "met": null
        },
        "C/C2": {
          "met": false
        },
        "C/C3": {
          "met": false
        },
        "C/C4": {
          "met": false
        },
        "C/C5": {
          "met": false
        },
        "C/C6": {
          "met": null
        },
        "C/C7": {
          "met": null
        },
        "C/C8": {
          "met": false
        }
      },
      "collapse": {
        "D": true,
        "A": false,
        "C": false
      },
      "early_lean": {},
      "early_kill": {}
    },
    {
      "edition": "2026-09-16",
      "scored_at": "2026-09-16T14:01:27.818Z",
      "register_sha256": "abde3c2309d2d8da11d82b691e377694025ae1de1ecf77ec39cc8946034b85f5",
      "readings": {
        "dashboard.wire_join.status_mix.402": 310,
        "dashboard.wire_join.cohort.reachable": 6116,
        "index.price_headline.any_payment_header": 4,
        "index.price_headline.p402_total": 310,
        "dashboard.wire_join.status_mix.403": 1594,
        "index.price_headline.protocol_confirmed": 2,
        "index.price_headline.confirmed_top_rank": 1327,
        "dashboard.roles.asymmetry.vs_nontraining.a": 1548,
        "dashboard.roles.asymmetry.vs_nontraining.b": 113,
        "dashboard.panel.robots_parsed": 30702,
        "dashboard.crawlers[name=GPTBot].blocked_pct": 11.42,
        "dashboard.crawlers[name=ChatGPT-User].blocked_pct": 6.6,
        "dashboard.crawlers[name=Claude-Web].blocked_pct": 5.81,
        "dashboard.crawlers[name=Perplexity-User].blocked_pct": 2.49,
        "dashboard.selective.pct": 2.8,
        "dashboard.selective.denominator": 30702,
        "dashboard.wire_join.control.crawler_specific": 1123,
        "dashboard.wire_join.control.refusals_total": 2136,
        "dashboard.tail.buckets.refused_crawler.domains": 4112,
        "dashboard.panel.domains": 50000,
        "dashboard.reachability.states.bot_walled": 4988,
        "dashboard.reachability.states.alive": 44060,
        "dashboard.wire_join.control.control_also_refused": 1013,
        "dashboard.policy_layer.ladder.parsed": 30702,
        "dashboard.roles.asymmetry.cloudflare_aligned.blocks_machine_consumption_only_pct": 6.96,
        "dashboard.declared_use.content_signal.inherited_default": 57
      },
      "indicators": {},
      "rungs": {
        "D/D1": {
          "met": null
        },
        "D/D2": {
          "met": false
        },
        "D/D3": {
          "met": false
        },
        "D/D4": {
          "met": false
        },
        "D/D5": {
          "met": false
        },
        "D/D6": {
          "met": false
        },
        "D/D7": {
          "met": null
        },
        "D/D8": {
          "met": null
        },
        "A/A1": {
          "met": null
        },
        "A/A2": {
          "met": false
        },
        "A/A3": {
          "met": false
        },
        "A/A4": {
          "met": false
        },
        "A/A5": {
          "met": null
        },
        "A/A6": {
          "met": null
        },
        "A/A7": {
          "met": null,
          "waits_for": [
            "held: amended 2026-09-10"
          ]
        },
        "A/A8": {
          "met": null,
          "waits_for": [
            "held: amended 2026-09-10"
          ]
        },
        "C/C1": {
          "met": null
        },
        "C/C2": {
          "met": false
        },
        "C/C3": {
          "met": false
        },
        "C/C4": {
          "met": false
        },
        "C/C5": {
          "met": false
        },
        "C/C6": {
          "met": null
        },
        "C/C7": {
          "met": null
        },
        "C/C8": {
          "met": false
        }
      },
      "collapse": {
        "D": true,
        "A": false,
        "C": false
      },
      "early_lean": {},
      "early_kill": {}
    },
    {
      "edition": "2026-09-20",
      "scored_at": "2026-09-20T03:08:25.279Z",
      "register_sha256": "abde3c2309d2d8da11d82b691e377694025ae1de1ecf77ec39cc8946034b85f5",
      "readings": {
        "dashboard.wire_join.status_mix.402": 311,
        "dashboard.wire_join.cohort.reachable": 6181,
        "index.price_headline.any_payment_header": 4,
        "index.price_headline.p402_total": 311,
        "dashboard.wire_join.status_mix.403": 1651,
        "index.price_headline.protocol_confirmed": 2,
        "index.price_headline.confirmed_top_rank": 1327,
        "dashboard.roles.asymmetry.vs_nontraining.a": 1547,
        "dashboard.roles.asymmetry.vs_nontraining.b": 110,
        "dashboard.panel.robots_parsed": 30742,
        "dashboard.crawlers[name=GPTBot].blocked_pct": 11.57,
        "dashboard.crawlers[name=ChatGPT-User].blocked_pct": 6.56,
        "dashboard.crawlers[name=Claude-Web].blocked_pct": 6,
        "dashboard.crawlers[name=Perplexity-User].blocked_pct": 2.53,
        "dashboard.selective.pct": 2.77,
        "dashboard.selective.denominator": 30742,
        "dashboard.wire_join.control.crawler_specific": 1141,
        "dashboard.wire_join.control.refusals_total": 2198,
        "dashboard.tail.buckets.refused_crawler.domains": 4085,
        "dashboard.panel.domains": 50000,
        "dashboard.reachability.states.bot_walled": 4988,
        "dashboard.reachability.states.alive": 44060,
        "dashboard.wire_join.control.control_also_refused": 1057,
        "dashboard.policy_layer.ladder.parsed": 30742,
        "dashboard.roles.asymmetry.cloudflare_aligned.blocks_machine_consumption_only_pct": 6.95,
        "dashboard.declared_use.content_signal.inherited_default": 110
      },
      "indicators": {},
      "rungs": {
        "D/D1": {
          "met": null
        },
        "D/D2": {
          "met": false
        },
        "D/D3": {
          "met": false
        },
        "D/D4": {
          "met": false
        },
        "D/D5": {
          "met": false
        },
        "D/D6": {
          "met": false
        },
        "D/D7": {
          "met": null
        },
        "D/D8": {
          "met": null
        },
        "A/A1": {
          "met": null
        },
        "A/A2": {
          "met": false
        },
        "A/A3": {
          "met": false
        },
        "A/A4": {
          "met": false
        },
        "A/A5": {
          "met": null
        },
        "A/A6": {
          "met": null
        },
        "A/A7": {
          "met": null,
          "waits_for": [
            "held: amended 2026-09-10"
          ]
        },
        "A/A8": {
          "met": null,
          "waits_for": [
            "held: amended 2026-09-10"
          ]
        },
        "C/C1": {
          "met": null
        },
        "C/C2": {
          "met": false
        },
        "C/C3": {
          "met": false
        },
        "C/C4": {
          "met": false
        },
        "C/C5": {
          "met": false
        },
        "C/C6": {
          "met": null
        },
        "C/C7": {
          "met": null
        },
        "C/C8": {
          "met": false
        }
      },
      "collapse": {
        "D": true,
        "A": false,
        "C": false
      },
      "early_lean": {},
      "early_kill": {}
    },
    {
      "edition": "2026-09-23",
      "scored_at": "2026-09-23T17:56:33.432Z",
      "register_sha256": "abde3c2309d2d8da11d82b691e377694025ae1de1ecf77ec39cc8946034b85f5",
      "readings": {
        "dashboard.wire_join.status_mix.402": 312,
        "dashboard.wire_join.cohort.reachable": 6174,
        "index.price_headline.any_payment_header": 4,
        "index.price_headline.p402_total": 312,
        "dashboard.wire_join.status_mix.403": 1672,
        "index.price_headline.protocol_confirmed": 2,
        "index.price_headline.confirmed_top_rank": 1327,
        "dashboard.roles.asymmetry.vs_nontraining.a": 1537,
        "dashboard.roles.asymmetry.vs_nontraining.b": 110,
        "dashboard.panel.robots_parsed": 30712,
        "dashboard.crawlers[name=GPTBot].blocked_pct": 11.57,
        "dashboard.crawlers[name=ChatGPT-User].blocked_pct": 6.56,
        "dashboard.crawlers[name=Claude-Web].blocked_pct": 6.03,
        "dashboard.crawlers[name=Perplexity-User].blocked_pct": 2.54,
        "dashboard.selective.pct": 2.75,
        "dashboard.selective.denominator": 30712,
        "dashboard.wire_join.control.crawler_specific": 1143,
        "dashboard.wire_join.control.refusals_total": 2219,
        "dashboard.tail.buckets.refused_crawler.domains": 4092,
        "dashboard.panel.domains": 50000,
        "dashboard.reachability.states.bot_walled": 5094,
        "dashboard.reachability.states.alive": 44127,
        "dashboard.wire_join.control.control_also_refused": 1076,
        "dashboard.policy_layer.ladder.parsed": 30712,
        "dashboard.roles.asymmetry.cloudflare_aligned.blocks_machine_consumption_only_pct": 6.94,
        "dashboard.declared_use.content_signal.inherited_default": 122
      },
      "indicators": {},
      "rungs": {
        "D/D1": {
          "met": null
        },
        "D/D2": {
          "met": false
        },
        "D/D3": {
          "met": false
        },
        "D/D4": {
          "met": false
        },
        "D/D5": {
          "met": false
        },
        "D/D6": {
          "met": false
        },
        "D/D7": {
          "met": null
        },
        "D/D8": {
          "met": null
        },
        "A/A1": {
          "met": null
        },
        "A/A2": {
          "met": false
        },
        "A/A3": {
          "met": false
        },
        "A/A4": {
          "met": false
        },
        "A/A5": {
          "met": null
        },
        "A/A6": {
          "met": null
        },
        "A/A7": {
          "met": null,
          "waits_for": [
            "held: amended 2026-09-10"
          ]
        },
        "A/A8": {
          "met": null,
          "waits_for": [
            "held: amended 2026-09-10"
          ]
        },
        "C/C1": {
          "met": null
        },
        "C/C2": {
          "met": false
        },
        "C/C3": {
          "met": false
        },
        "C/C4": {
          "met": false
        },
        "C/C5": {
          "met": false
        },
        "C/C6": {
          "met": null
        },
        "C/C7": {
          "met": null
        },
        "C/C8": {
          "met": false
        }
      },
      "collapse": {
        "D": true,
        "A": false,
        "C": false
      },
      "early_lean": {},
      "early_kill": {}
    }
  ]
}
