{
  "schema": "varexis-public-evidence-record/0.3",
  "generated_at_utc": "2026-10-25T20:55:19.974986+00:00",
  "record_id": "VXI-EXT-PROCUREMENT-DPOP-REFRESH-CLIENT-TYPE-KEY-BINDING-01-v1",
  "record_kind": "external_reference",
  "title": "DPoP refresh-token binding by client type",
  "system": "IETF RFC 9449",
  "evidence_family": "vendor_evidence_review",
  "index_status": "PUBLIC_SAFE_SOURCE_REVIEW",
  "evidence_state": "PRIMARY_DOCUMENTATION_REVIEW_ONLY",
  "canonical_question": "Do public and confidential OAuth clients bind refresh tokens to DPoP keys in the same way?",
  "near_questions": [
    "Must a public DPoP client refresh with the original proof key?",
    "Are confidential-client refresh tokens bound to the DPoP key?",
    "Can client authentication provide the refresh-token sender constraint?",
    "What client type determines the DPoP refresh rule?"
  ],
  "supported_claims": [
    {
      "claim": "RFC 9449 requires a refresh token issued to a public client using DPoP to be bound to that proof key, checked on later refreshes. Confidential-client refresh tokens instead use the existing client binding and authentication requirement. A reviewer must establish the client type and actual binding; the access token's DPoP status alone does not describe every refresh credential.",
      "reliance": "DOCUMENTED_CAPABILITY_ONLY"
    }
  ],
  "not_demonstrated_claims": [
    "Public-client refresh tokens bind to the proof key; confidential-client refresh tokens use the existing client authentication binding.",
    "Buyer implementation, live runtime enforcement, settled payment, physical outcome, certification or permission to act are not established.",
    "No expanded capabilities or licences for existing INDEX executables."
  ],
  "public_summary": "RFC 9449 requires a refresh token issued to a public client using DPoP to be bound to that proof key, checked on later refreshes. Confidential-client refresh tokens instead use the existing client binding and authentication requirement. A reviewer must establish the client type and actual binding; the access token's DPoP status alone does not describe every refresh credential.",
  "related_record_ids": [],
  "source_review": {
    "source_type": "official_external_documentation",
    "source_title": "IETF RFC 9449",
    "source_url": "https://www.rfc-editor.org/rfc/rfc9449.txt",
    "checked_on": "2026-10-25",
    "candidate_record_id": "VXI-EXT-PROCUREMENT-DPOP-REFRESH-CLIENT-TYPE-KEY-BINDING-01-v1",
    "candidate_record_sha256": "0b199382d060a6e8972f2cd2111f379f0be62d995ac0277904c9f9836ee90e23",
    "method": "Primary documentation reviewed for the published bounded statement.",
    "deployment_tested_by_varexis": false,
    "revalidation": "The delivered snapshot preserves the review date shown. Recheck current primary documentation and deployment context before relying on present applicability; payment does not trigger fresh research."
  },
  "answer_policy": {
    "classification": "DOCUMENTED_WITH_DEPLOYMENT_BOUNDARY",
    "bounded_answer": "RFC 9449 requires a refresh token issued to a public client using DPoP to be bound to that proof key, checked on later refreshes. Confidential-client refresh tokens instead use the existing client binding and authentication requirement. A reviewer must establish the client type and actual binding; the access token's DPoP status alone does not describe every refresh credential.",
    "required_buyer_context": "Client type and authentication policy; Refresh-token issuance binding; Proof key used on later token requests. Buyer deployment not inspected.",
    "missing_evidence": "A broader claim needs evidence matching the intended use. Payment does not upgrade the evidence state."
  },
  "private_boundary": "Raw logs, thresholds, private paths, source code, protected mechanisms and reconstruction-level details are excluded from public and paid delivery.",
  "decision_profile": {
    "schema": "varexis-vendor-evidence-review/1",
    "review_status": "documentation_review_only",
    "checked_on": "2026-10-25",
    "claim_to_check": "Do public and confidential OAuth clients bind refresh tokens to DPoP keys in the same way?",
    "documented_statement": {
      "status": "documented",
      "statement": "RFC 9449 requires a refresh token issued to a public client using DPoP to be bound to that proof key, checked on later refreshes. Confidential-client refresh tokens instead use the existing client binding and authentication requirement. A reviewer must establish the client type and actual binding; the access token's DPoP status alone does not describe every refresh credential.",
      "source_ids": [
        "rfc9449"
      ]
    },
    "review_inference": {
      "status": "review_inference",
      "statement": "Distinguish refresh-token sender constraints for public and confidential DPoP clients. This is a documentation-review judgment, not an observed deployment outcome.",
      "source_ids": [
        "rfc9449"
      ]
    },
    "buyer_evidence_required": [
      "Client type and authentication policy",
      "Refresh-token issuance binding",
      "Proof key used on later token requests"
    ],
    "review_condition": {
      "status": "varexis_review_policy",
      "statement": "Refuse buyer-specific assurance from documentation alone. Public-client refresh tokens bind to the proof key; confidential-client refresh tokens use the existing client authentication binding."
    },
    "unknowns": "The buyer implementation, effective configuration, complete evidence inventory and actual business outcome were not inspected.",
    "unknown_finding": {
      "status": "unknown",
      "statement": "The buyer implementation, effective configuration, complete evidence inventory and actual business outcome were not inspected."
    },
    "evidence_sources": [
      {
        "source_id": "rfc9449",
        "url": "https://www.rfc-editor.org/rfc/rfc9449.txt",
        "final_url": "https://www.rfc-editor.org/rfc/rfc9449.txt",
        "status": 200,
        "captured_at_utc": "2026-10-25T20:26:12.745Z",
        "sha256": "3842c58e1f6043389416023b9bb8d765048266024982fbbd90640e05943f4e13",
        "bytes": 92478,
        "title": "IETF RFC 9449",
        "hash_basis": "SHA-256 of unmodified HTTP response body bytes",
        "rights_review": "Original factual paraphrase of the cited IETF RFC; IETF Trust and contributor rights remain applicable. No RFC text, code component or modified standard is redistributed.",
        "checked_on": "2026-10-25",
        "capture_status": 200,
        "claim_review_completed": true,
        "reviewed_sections": [
          "11.11",
          "4.3",
          "11.7",
          "5",
          "8",
          "9",
          "11.1",
          "10",
          "7.2"
        ],
        "version_context": "Fixed IETF RFC 9449 publication; later applicable updates and actual implementation conformance require separate review."
      }
    ],
    "observed_deployment": false,
    "commercial_reliance_boundary": "Documentation review only; the buyer must establish applicability and actual outcomes. INDEX does not inspect or control the deployment.",
    "paid_value": {
      "decision_context": "Distinguish refresh-token sender constraints for public and confidential DPoP clients.",
      "free": "Complete review, practical questions, sources and limitations; may be saved locally.",
      "single_request": "Existing server-saved version-bound route snapshot for later authenticated retrieval.",
      "evidence_receipt": "The same snapshot plus the existing unsigned delivery receipt.",
      "excluded": [
        "Fresh vendor research",
        "Continuous monitoring or change alerts",
        "Testing the buyer configuration",
        "Private evidence or vendor certification"
      ],
      "integrity": "Hashes identify content versions; they do not prove truth or provide a signature."
    },
    "revalidation": {
      "trigger": "A saved purchase does not recheck the source or buyer configuration.",
      "specific_watch": "Recheck 5 in IETF RFC 9449 when the source, applicable version, configuration or intended reliance changes. A detected change creates a review candidate, not automatic approval."
    },
    "buyer_relevance": "Distinguish refresh-token sender constraints for public and confidential DPoP clients.",
    "refusal_conditions": [
      "Refuse buyer-specific assurance from documentation alone. Public-client refresh tokens bind to the proof key; confidential-client refresh tokens use the existing client authentication binding."
    ]
  },
  "niche": {
    "niche_id": "agent-authority-action-evidence",
    "label": "Agent Authority & Action Evidence",
    "classification_id": "governance",
    "classification_label": "Agent Governance & Policy Boundaries",
    "topic_id": "governance",
    "buyer_intent": "Distinguish refresh-token sender constraints for public and confidential DPoP clients.",
    "comparison_role": "supplementary_discovery"
  },
  "paid_access_note": "The full published answer and boundaries are free. Paid access saves the selected route and source versions, with an unsigned receipt when purchased. Preview coverage before paying. Fresh research, bespoke assessment and protected evidence are excluded.",
  "service_route": {
    "request_guide": "/varexis-index/request.html",
    "request_workflow": "/varexis-index/request-workflow.json",
    "service_id": "single_request",
    "service_routes_url": "/varexis-index/service-routes.json",
    "payment_required": true,
    "availability_endpoint": "/api/index/capabilities",
    "operational_status": "AUTOMATIC_SERVICE_CAPABILITIES_GATED",
    "checkout_url": "/index-access"
  },
  "authority_boundary": "VAREXIS-INDEX informs evidence reliance. It does not provide advice, certification, deployment authority, security assurance, production approval, or guarantee.",
  "human_page": "/varexis-index/catalog.html#dpop-refresh-client-type-key-binding",
  "machine_readable_record": "/varexis-index/records/dpop-refresh-client-type-key-binding.json"
}
