{
  "contract_version": "agentreceipts.agent-interaction-spine.v1",
  "projection_type": "public_interoperability_projection",
  "stages": [
    {
      "stage_id": "discover",
      "contract_version": "agentreceipts.discovery.v1",
      "required_inputs": ["well_known_base_url"],
      "produced_outputs": ["public_route_projection", "interaction_spine"],
      "authoritative_owner": "public_discovery",
      "required_identity_references": ["base_url"],
      "valid_statuses": ["discovered", "fail_closed"],
      "stable_failure_categories": ["manifest_missing", "contract_incompatible"],
      "next_permitted_stages": ["qualify"],
      "implementation_mode": "implemented",
      "human_intervention": "never",
      "evidence_obligation": "Retain manifest identities and content hashes.",
      "classification": "public"
    },
    {
      "stage_id": "qualify",
      "contract_version": "agentreceipts.capability-qualification.v1",
      "required_inputs": ["counterparty_descriptor", "capability_request"],
      "produced_outputs": ["qualification_result"],
      "authoritative_owner": "gateway_qualification",
      "required_identity_references": ["tenant_id", "capability_id"],
      "valid_statuses": ["qualified", "held", "rejected"],
      "stable_failure_categories": ["unknown_capability", "contract_incompatible", "mandate_incompatible", "policy_incompatible"],
      "next_permitted_stages": ["match", "mandate"],
      "implementation_mode": "implemented",
      "human_intervention": "may_be_required",
      "evidence_obligation": "Retain transparent qualification dimensions and reason codes.",
      "classification": "private"
    },
    {
      "stage_id": "match",
      "contract_version": "agentreceipts.shadow-selection.v1",
      "required_inputs": ["qualified_candidates", "selection_context"],
      "produced_outputs": ["shadow_selection_decision"],
      "authoritative_owner": "gateway_shadow_selection",
      "required_identity_references": ["tenant_id", "interaction_id"],
      "valid_statuses": ["shadow_selected", "no_selection", "human_review"],
      "stable_failure_categories": ["no_qualified_candidate", "deterministic_tie", "insufficient_evidence"],
      "next_permitted_stages": ["negotiate", "mandate"],
      "implementation_mode": "shadow",
      "human_intervention": "may_be_required",
      "evidence_obligation": "Retain candidates considered, dimensions, freshness, and deterministic tie result.",
      "classification": "private"
    },
    {
      "stage_id": "negotiate",
      "contract_version": "agentreceipts.mock-negotiation.v1",
      "required_inputs": ["quote_request", "mock_counterparty"],
      "produced_outputs": ["mock_quote_or_offer"],
      "authoritative_owner": "gateway_mock_negotiation",
      "required_identity_references": ["tenant_id", "interaction_id", "counterparty_id"],
      "valid_statuses": ["mock_quoted", "mock_accepted", "rejected", "withdrawn", "expired"],
      "stable_failure_categories": ["quote_expired", "currency_incompatible", "unit_incompatible", "identity_conflict"],
      "next_permitted_stages": ["mandate"],
      "implementation_mode": "mock",
      "human_intervention": "may_be_required",
      "evidence_obligation": "Retain non-binding mock quote status and provenance.",
      "classification": "private"
    },
    {
      "stage_id": "mandate",
      "contract_version": "agentreceipts.agent-mandate.v1",
      "required_inputs": ["principal", "agent", "allowed_action", "constraints"],
      "produced_outputs": ["bounded_mandate"],
      "authoritative_owner": "mandate_authority",
      "required_identity_references": ["mandate_id", "principal", "agent"],
      "valid_statuses": ["valid", "invalid", "expired", "revoked"],
      "stable_failure_categories": ["missing_mandate", "invalid_mandate", "expired_mandate", "revoked_mandate"],
      "next_permitted_stages": ["preflight"],
      "implementation_mode": "implemented",
      "human_intervention": "may_be_required",
      "evidence_obligation": "Retain bounded authority and expiry evidence.",
      "classification": "private"
    },
    {
      "stage_id": "preflight",
      "contract_version": "agentreceipts.economic-preflight-decision.v1",
      "required_inputs": ["admitted_signal", "valid_mandate", "economic_request"],
      "produced_outputs": ["economic_preflight_decision", "optional_reservation"],
      "authoritative_owner": "economic_preflight_authority",
      "required_identity_references": ["tenant_id", "admission_decision_id", "preflight_decision_id"],
      "valid_statuses": ["allow", "hold", "deny"],
      "stable_failure_categories": ["not_admitted", "budget_exceeded", "reservation_unavailable", "policy_hold"],
      "next_permitted_stages": ["execute"],
      "implementation_mode": "implemented",
      "human_intervention": "may_be_required",
      "evidence_obligation": "Retain decision, reason codes, bounds, and reservation identity.",
      "classification": "private"
    },
    {
      "stage_id": "execute",
      "contract_version": "agentreceipts.bounded-mock-execution.v1",
      "required_inputs": ["allowed_preflight", "valid_reservation"],
      "produced_outputs": ["execution_fact"],
      "authoritative_owner": "bounded_execution_gateway",
      "required_identity_references": ["tenant_id", "execution_attempt_id", "preflight_decision_id"],
      "valid_statuses": ["completed", "partial", "failed", "declined"],
      "stable_failure_categories": ["reservation_expired", "replay", "execution_failed", "identity_conflict"],
      "next_permitted_stages": ["receipt"],
      "implementation_mode": "implemented",
      "human_intervention": "may_be_required",
      "evidence_obligation": "Retain factual execution result without claiming external truth.",
      "classification": "private"
    },
    {
      "stage_id": "receipt",
      "contract_version": "agentreceipts.mcp-gateway-receipt.v0.1",
      "required_inputs": ["execution_fact", "mandate_reference"],
      "produced_outputs": ["action_receipt"],
      "authoritative_owner": "receipt_authority",
      "required_identity_references": ["receipt_id", "mandate_id", "execution_attempt_id"],
      "valid_statuses": ["generated", "failed"],
      "stable_failure_categories": ["receipt_generation_failed", "identity_conflict"],
      "next_permitted_stages": ["verify"],
      "implementation_mode": "implemented",
      "human_intervention": "never",
      "evidence_obligation": "Retain immutable receipt and evidence hash.",
      "classification": "public"
    },
    {
      "stage_id": "verify",
      "contract_version": "agentreceipts.receipt-verification.v1",
      "required_inputs": ["action_receipt"],
      "produced_outputs": ["bounded_verification_result"],
      "authoritative_owner": "verification_service",
      "required_identity_references": ["receipt_id", "evidence_hash"],
      "valid_statuses": ["verified", "unverifiable", "failed"],
      "stable_failure_categories": ["receipt_not_found", "receipt_invalid", "hash_mismatch"],
      "next_permitted_stages": ["reconcile", "signal"],
      "implementation_mode": "implemented",
      "human_intervention": "may_be_required",
      "evidence_obligation": "Retain checks performed and explicit proof limits.",
      "classification": "public"
    },
    {
      "stage_id": "reconcile",
      "contract_version": "agentreceipts.execution-cost-reconciliation-observation.v1",
      "required_inputs": ["execution_fact", "receipt", "verification_result"],
      "produced_outputs": ["reconciliation_observation"],
      "authoritative_owner": "reconciliation_authority",
      "required_identity_references": ["tenant_id", "execution_attempt_id", "receipt_id"],
      "valid_statuses": ["reconciled", "hold", "unreconciled", "disputed"],
      "stable_failure_categories": ["fact_missing", "receipt_unverifiable", "identity_conflict", "reconciliation_hold"],
      "next_permitted_stages": ["signal"],
      "implementation_mode": "implemented",
      "human_intervention": "may_be_required",
      "evidence_obligation": "Retain factual reconciliation result separately from settlement.",
      "classification": "private"
    },
    {
      "stage_id": "signal",
      "contract_version": "agentreceipts.signal-envelope.v1",
      "required_inputs": ["metadata_only_observation"],
      "produced_outputs": ["bounded_signal_projection"],
      "authoritative_owner": "signal_projection_service",
      "required_identity_references": ["signal_id", "delivery_id", "receipt_id"],
      "valid_statuses": ["accepted", "replay", "conflict", "missing"],
      "stable_failure_categories": ["projection_missing", "delivery_conflict", "contract_incompatible"],
      "next_permitted_stages": [],
      "implementation_mode": "implemented",
      "human_intervention": "may_be_required",
      "evidence_obligation": "Retain metadata-only projection and delivery identity.",
      "classification": "bounded_projection"
    }
  ],
  "feature_modes": {
    "directory": "static",
    "matching": "shadow",
    "routing": "disabled",
    "negotiation": "mock",
    "outcome_learning": "observe"
  },
  "boundary": "This is a descriptive public interoperability projection. It grants no authority, performs no routing, and exposes no private policy or selection weights.",
  "public_safe": true,
  "metadata_only": true
}
