{
  "schema": "clearledger.x402-door-parity.v2",
  "subject": "Coppice three-door rejection envelopes and client-fingerprint reachability",
  "provider": "clearledger",
  "commission_state": "free_independent_probe_explicitly_permitted",
  "source_permission_comment": 50020,
  "observed_at": "2026-09-09T13:14:28.760Z",
  "method": "Unauthenticated GET using five declared User-Agent strings; compare status with the Clearledger baseline. On that baseline, decode PAYMENT-REQUIRED as base64 JSON and compare canonical x402Version, resource and accepts against the JSON body.",
  "rows": [
    {
      "endpoint": "vet",
      "url": "https://coppice-ai.com/api/vet",
      "http_status": 402,
      "decoded_payment_required_json_sha256": "a3ffb3ed6d8a82a8cd2eb173dd6b426efdcaae884788dd4491e248543811157e",
      "response_body_sha256": "2d7560d7e1470edf645867629282391c8ae353a15eccb33ee08b9117e7b36ee7",
      "parity": {"x402Version": true, "resource": true, "accepts": true},
      "accepts_count": 1,
      "accepted_schemes": ["exact"],
      "accepted_networks": ["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],
      "legacy_routes_outside_accepts": 0,
      "verdict": "PASS"
    },
    {
      "endpoint": "check",
      "url": "https://coppice-ai.com/api/check",
      "http_status": 402,
      "decoded_payment_required_json_sha256": "5f134b28a8a9aa8df26996164fbdd5173d12ffb3d0ebc9ac9e737dcdf3839e12",
      "response_body_sha256": "ff9d1428a589ff9afa7d82c154791015dc3a0b8a416584618ebaba6a96a80db7",
      "parity": {"x402Version": true, "resource": true, "accepts": true},
      "accepts_count": 1,
      "accepted_schemes": ["exact"],
      "accepted_networks": ["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],
      "legacy_routes_outside_accepts": 0,
      "verdict": "PASS"
    },
    {
      "endpoint": "ask",
      "url": "https://coppice-ai.com/api/ask",
      "http_status": 402,
      "decoded_payment_required_json_sha256": "c29c649f6aed17f606976234971582e7b95f4bb5c2653002e2f43852eae422af",
      "response_body_sha256": "f8baedf70096854ede10d1e122a7e3b612d682be8e62d06bc1ea824f81a97b4a",
      "parity": {"x402Version": true, "resource": true, "accepts": true},
      "accepts_count": 1,
      "accepted_schemes": ["exact"],
      "accepted_networks": ["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],
      "legacy_routes_outside_accepts": 2,
      "verdict": "PASS"
    }
  ],
  "client_fingerprint_parity": {
    "clients": [
      {"id": "clearledger", "user_agent": "Clearledger/1.1 independent-read-only-check"},
      {"id": "python-urllib", "user_agent": "Python-urllib/3.13"},
      {"id": "libwww-perl", "user_agent": "libwww-perl/6.72"},
      {"id": "curl", "user_agent": "curl/8.10.1"},
      {"id": "go-http-client", "user_agent": "Go-http-client/2.0"}
    ],
    "rows": [
      {"endpoint": "vet", "statuses": {"clearledger": 402, "python-urllib": 403, "libwww-perl": 403, "curl": 402, "go-http-client": 402}, "verdict": "FAIL"},
      {"endpoint": "check", "statuses": {"clearledger": 402, "python-urllib": 403, "libwww-perl": 403, "curl": 402, "go-http-client": 402}, "verdict": "FAIL"},
      {"endpoint": "ask", "statuses": {"clearledger": 402, "python-urllib": 403, "libwww-perl": 403, "curl": 402, "go-http-client": 402}, "verdict": "FAIL"}
    ]
  },
  "verdict": "FAIL",
  "finding": "Envelope parity still passes on all three baseline responses. Door parity fails: Python urllib and libwww-perl receive 403 without PAYMENT-REQUIRED on all three endpoints while Clearledger, curl and Go receive the expected 402. The earlier PASS therefore described the envelope only, not general client reachability.",
  "correction_of": {
    "observed_at": "2026-09-09T11:10:54.824Z",
    "previous_verdict": "PASS",
    "scope_error": "The original report tested one User-Agent and used header_sha256 for the decoded header JSON bytes."
  },
  "limitations": [
    "This verifies rejection-envelope and selected User-Agent status parity, not payment settlement or fulfillment.",
    "Five User-Agent strings from one network vantage point do not test IP, ASN, TLS fingerprint, geography, redirects or authenticated clients.",
    "The endpoint responses are mutable live observations; hashes identify the bytes observed by this reader but the full response bytes are not embedded.",
    "The verifier performs network reads when rerun and therefore may report a later state."
  ],
  "files": ["report.json", "verify.mjs"]
}
