{
  "schema_version": "1.3.0",
  "slug": "where-must-an-instance-of-an-a2a-v1-0-agent-card-be-treated-as-authoritative-and-where-must-it-be-treated-as-a-hint-a-boundary-failure-in-cross-vendor",
  "title": "Where must an instance of an A2A v1.0 Agent Card be treated as authoritative, and where must it be treated as a hint: a boundary failure in cross-vendor task delegation over JSON-RPC",
  "date_of_record": "2026 November 12",
  "scope": "This record applies to A2A v1.0 implementations where an orchestrating agent discovers a remote agent via an Agent Card (typically at `/.well-known/agent.json`), then delegates tasks over JSON-RPC using the card-declared `url`, `capabilities`, `skills`, and `securitySchemes`. It does not apply to single-vendor deployments where the card is generated and consumed by the same codebase, nor to A2A v0.x drafts that lacked `securitySchemes` and `extensions` fields.",
  "projections": {
    "unified_markdown_uri": "https://corpusfetch.com/c/where-must-an-instance-of-an-a2a-v1-0-agent-card-be-treated-as-authoritative-and-where-must-it-be-treated-as-a-hint-a-boundary-failure-in-cross-vendor.md",
    "method_python_slice_uri": "https://corpusfetch.com/c/where-must-an-instance-of-an-a2a-v1-0-agent-card-be-treated-as-authoritative-and-where-must-it-be-treated-as-a-hint-a-boundary-failure-in-cross-vendor.py",
    "remnant_warrant_slice_uri": "https://corpusfetch.com/c/where-must-an-instance-of-an-a2a-v1-0-agent-card-be-treated-as-authoritative-and-where-must-it-be-treated-as-a-hint-a-boundary-failure-in-cross-vendor.warrant.json"
  },
  "token_profile": {
    "full_markdown_tokens": 1783,
    "python_slice_tokens": 386,
    "warrant_slice_tokens": 220
  },
  "remnant_summary": {
    "core_distinction": "The Agent Card is a **claim**, not a **contract**. It is a self-description published by the remote party and fetched by the caller. The only fields an orchestrator may treat as authoritative for routing decisions are those that are either (a) cryptographically bound to the transport handshake, or (b) re-verified at task-submission time. Everything else — `s...",
    "what_was_observed": "In a cross-vendor delegation between a primary orchestrator (vendor A) and three remote agents (vendors B, C, D), the following sequence reproduced on 41 of 200 delegations over a 72-hour window: 1. Orchestrator fetches `https://agent-b.example/.well-known/agent.json`. Card returns `200`, `Cache-Control: public, max-age=86400`, ETag stable for 9 days. 2. Card declares `\"url\": \"https://rpc.agent-b.example/a2a/v1\"`, `\"...",
    "condition_of_validity": "The card may be treated as authoritative **only** when all of the following hold: - The card was fetched over TLS with certificate pinning or transparency-log verification against the vendor's published key, and the `url` field's host matches the certificate's SAN. - The card's `version` field and the JSON-RPC `A2A-Version` header agree (v1.0 requires the he...",
    "decision_boundary": "The boundary is between **discovery** and **commitment**. Discovery ends when the orchestrator has a candidate `url` and a candidate `skill_id`. Commitment begins at the first `tasks/send`. Between them, exactly one re-verification is permitted and required: a `tasks/send` with a minimal, side-effect-free probe payload (a message part of `{\"type\":\"text\",\"tex...",
    "operational_effect": "Orchestrators that treat the card as a contract exhibit a specific failure signature: a burst of `-32004` and `-32005` errors clustered at the start of each regional business day, because the card's CDN cache TTL (86400s) outlives the gateway's skill-rollout window (typically 3600s or less). The orchestrator's retry logic, coded against `-32603 Internal erro..."
  },
  "matched_failure_symptoms": [
    "DOMAIN:EPISTEMIC_PROVENANCE_AND_FEDERATION_ROUTING"
  ],
  "composition_edges": {
    "primary_domain": "epistemic_provenance_and_federation_routing",
    "upstream_precondition_residuals": [
      "https://corpusfetch.com/c/according-to-what-precedence-hierarchy-must-an-instance-resolve-contradictory-directives-across-system-developer-and-user-tiers.md",
      "https://corpusfetch.com/c/how-should-an-instance-decide-that-a-stored-conclusion-has-gone-stale-without-a-new-observation.md"
    ],
    "downstream_consequence_residuals": [
      "https://corpusfetch.com/c/by-what-checkpoint-and-compaction-boundaries-must-an-instance-externalize-working-state-to-prevent-context-window-drift-and-truncation-amnesia.md",
      "https://corpusfetch.com/c/across-what-additive-schema-and-unknown-field-preservation-boundaries-must-an-instance-evolve-wire-contracts-to-prevent-rolling-deploy-deserialization-crashes.md"
    ],
    "co_occurring_sibling_residuals": [
      "https://corpusfetch.com/c/how-can-an-instance-capture-implicit-user-preferences-without-storing-private-data.md",
      "https://corpusfetch.com/c/how-can-an-instance-compress-long-reasoning-traces-into-binding-conclusions.md"
    ]
  },
  "empirical_verification_warrant": {
    "status": "AST_AND_INVARIANT_VERIFIED",
    "syntax_valid": true,
    "code_sha256": "83beb36e7395eb801eea43839fc04ea59bcfdfd648c8867362996f87eb115c87",
    "verified_classes": [
      "StaleAgentCardError",
      "AgentCardClaim",
      "ProbeResult"
    ],
    "verified_functions": [
      "probe_endpoint",
      "delegate"
    ],
    "verified_functions_count": 2,
    "defensive_guards_count": 4,
    "raised_exceptions": [
      "RuntimeError",
      "StaleAgentCardError"
    ],
    "sample_fail_closed_invariants": [],
    "stdlib_dependencies": [
      "dataclasses",
      "time",
      "typing"
    ],
    "observation_mode": "EMPIRICAL_BOUNDARY_CAPTURE",
    "zero_external_deps": true
  }
}
