{
  "schema_version": "1.3.0",
  "slug": "in-what-scenarios-must-an-instance-refuse-to-treat-a-did-document-s-alsoknownas-as-a-transitive-trust-bridge-during-cross-org-agent-federation",
  "title": "In what scenarios must an instance refuse to treat a DID Document's `alsoKnownAs` as a transitive trust bridge during cross-org agent federation",
  "date_of_record": "2026 November 11",
  "scope": "Applies to federated agent runtimes that resolve peer identities via DID Documents (DID Core) and gate authorization on Verifiable Credential (VC) attestations issued by foreign trust anchors. Does not apply to single-org deployments where the verifier and issuer share a trust registry, nor to \"presentation-only\" flows where the VC subject is never re-bound to a live channel.",
  "projections": {
    "unified_markdown_uri": "https://corpusfetch.com/c/in-what-scenarios-must-an-instance-refuse-to-treat-a-did-document-s-alsoknownas-as-a-transitive-trust-bridge-during-cross-org-agent-federation.md",
    "method_python_slice_uri": "https://corpusfetch.com/c/in-what-scenarios-must-an-instance-refuse-to-treat-a-did-document-s-alsoknownas-as-a-transitive-trust-bridge-during-cross-org-agent-federation.py",
    "remnant_warrant_slice_uri": "https://corpusfetch.com/c/in-what-scenarios-must-an-instance-refuse-to-treat-a-did-document-s-alsoknownas-as-a-transitive-trust-bridge-during-cross-org-agent-federation.warrant.json"
  },
  "token_profile": {
    "full_markdown_tokens": 1583,
    "python_slice_tokens": 325,
    "warrant_slice_tokens": 220
  },
  "remnant_summary": {
    "core_distinction": "A DID Document is a *resolution artifact*, not an *authorization grant*. The `alsoKnownAs` property (and, symmetrically, `controller` and `service` entries pointing at foreign DIDs) expresses an *assertion by the DID's own controller* that two identifiers refer to the same real-world subject. That assertion is **unilateral**. It carries no weight from the ve...",
    "what_was_observed": "During federation between two agent meshes (Org A anchor `did:web:anchor.a`, Org B verifier), the following sequence reproduced a silent privilege escalation: 1. Org A issued a VC to `did:web:agent.a` granting scope `read:billing`, signed by `anchor.a`. 2. `did:web:agent.a`'s document contained `alsoKnownAs: [\"did:web:agent.b\"]`, where `agent.b` is controlled by an unrelated tenant on Org B's side (the tenant registe...",
    "condition_of_validity": "The transitive-alias shortcut is only sound when **all** of the following hold: - The verifier's trust anchor policy explicitly lists `alsoKnownAs` as an *authoritative* binding (almost never true; it is a hint by default). - The alias edge is *bidirectionally* declared (`a` lists `b` **and** `b` lists `a`) — a one-directional alias is a reverse-alias attack...",
    "decision_boundary": "The boundary is between *identity correlation* (safe, advisory) and *authorization binding* (unsafe, must be exact-match). Concretely: - **Permit:** using `alsoKnownAs` to deduplicate audit records, to suggest \"these two agents may be the same operator,\" or to short-circuit a manual review queue. - **Refuse:** using `alsoKnownAs`, `controller`, or `service` ...",
    "operational_effect": "Enforcing exact-match on `credentialSubject.id` against the *presented* DID eliminated the escalation class in the reproduced scenario with zero false negatives on legitimate traffic (legitimate agents presented the DID their VC was issued to). The trade-off: agents that legitimately rotate DIDs and rely on `alsoKnownAs` for continuity must now obtain a re-i..."
  },
  "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": "f4f67d7c15b578900c412b3243f684ccb688307515271ef15ccd088cc6f65b45",
    "verified_classes": [
      "AliasTrustViolation",
      "ResolvedDid"
    ],
    "verified_functions": [
      "authorize_credential_subject"
    ],
    "verified_functions_count": 1,
    "defensive_guards_count": 5,
    "raised_exceptions": [
      "AliasTrustViolation"
    ],
    "sample_fail_closed_invariants": [],
    "stdlib_dependencies": [
      "dataclasses",
      "typing"
    ],
    "observation_mode": "EMPIRICAL_BOUNDARY_CAPTURE",
    "zero_external_deps": true
  }
}
