{
  "schema_version": "1.3.0",
  "slug": "what-happens-when-an-instance-advertises-a-taskstate-transition-it-cannot-durably-commit-the-a2a-v1-0-agent-card-task-lifecycle-artifact-negotiation-s",
  "title": "What happens when an instance advertises a TaskState transition it cannot durably commit: the A2A v1.0 Agent Card / task-lifecycle / artifact-negotiation seam",
  "date_of_record": "2026 November 7",
  "scope": "Applies to A2A v1.0 multi-agent deployments where an agent's Agent Card is used as the authoritative source of task-lifecycle capability and artifact-format negotiation. Does not apply to single-process local tool invocation, nor to A2A v0.x where `TaskState` enumeration was not required to be closed and capability advertisement was advisory.",
  "projections": {
    "unified_markdown_uri": "https://corpusfetch.com/c/what-happens-when-an-instance-advertises-a-taskstate-transition-it-cannot-durably-commit-the-a2a-v1-0-agent-card-task-lifecycle-artifact-negotiation-s.md",
    "method_python_slice_uri": "https://corpusfetch.com/c/what-happens-when-an-instance-advertises-a-taskstate-transition-it-cannot-durably-commit-the-a2a-v1-0-agent-card-task-lifecycle-artifact-negotiation-s.py",
    "remnant_warrant_slice_uri": "https://corpusfetch.com/c/what-happens-when-an-instance-advertises-a-taskstate-transition-it-cannot-durably-commit-the-a2a-v1-0-agent-card-task-lifecycle-artifact-negotiation-s.warrant.json"
  },
  "token_profile": {
    "full_markdown_tokens": 2015,
    "python_slice_tokens": 445,
    "warrant_slice_tokens": 220
  },
  "remnant_summary": {
    "core_distinction": "The distinction that matters is between **advertised capability** and **committed capability**. An Agent Card is a discovery document: it is fetched, cached, and trusted by remote orchestrators before any task is dispatched. The task lifecycle, by contrast, is a *durable* state machine — a `TaskState` transition (e.g. `submitted → working → completed`) is on...",
    "what_was_observed": "In a three-vendor mesh (orchestrator O, worker W1 advertising `input-required` + `completed` with `application/json` output, worker W2 advertising only `completed` with `text/plain`), the following sequence reproduced deterministically: 1. O fetches W1's card, caches it for the card's `cacheControl` TTL (observed 300s in the field). 2. O dispatches a task; W1 returns `working`, then `input-required` with a follow-up ...",
    "condition_of_validity": "The card-as-contract model is valid **only** under all of the following: - The worker persists task state (state + task ID + artifact manifest) in storage that outlives the process, and `tasks/get` reads from that store, not from memory. - Task IDs are stable across restarts for a given logical task (i.e. the client-supplied correlation ID, if any, is the du...",
    "decision_boundary": "The boundary is: **does the orchestrator trust the card, or does it verify the card?** - If the mesh is homogeneous, single-vendor, and the worker is known to persist state → trust the card; treat `TaskNotFound` as terminal. - If the mesh is cross-vendor, or the worker's persistence model is unknown → **verify**. Specifically: - On first contact with a worke...",
    "operational_effect": "The practical consequence is that **`TaskNotFound` must be modeled as a distinct error class from `TaskFailed`**, and the orchestrator's state machine must have a `indeterminate` state that is neither terminal nor resumable until a reconciliation pass completes. Without this, a single worker restart during a multi-turn `input-required` exchange converts a re..."
  },
  "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": "853e1445589e28e42a1f2cd09503df661a998e77c8e3703added9821cc072114",
    "verified_classes": [
      "TaskState",
      "CapabilityContractError",
      "AgentCard",
      "VerifiedCapabilities",
      "TaskRecord"
    ],
    "verified_functions": [
      "emit_artifact",
      "transition",
      "handle_task_not_found"
    ],
    "verified_functions_count": 3,
    "defensive_guards_count": 5,
    "raised_exceptions": [
      "CapabilityContractError"
    ],
    "sample_fail_closed_invariants": [],
    "stdlib_dependencies": [
      "__future__",
      "dataclasses",
      "enum"
    ],
    "observation_mode": "EMPIRICAL_BOUNDARY_CAPTURE",
    "zero_external_deps": true
  }
}
