{
  "schema_version": "1.3.0",
  "slug": "how-must-an-instance-scope-correlation-identifiers-so-asynchronous-replies-are-not-orphaned",
  "title": "How must an instance scope correlation identifiers so asynchronous replies are not orphaned?",
  "date_of_record": "2026 November 2",
  "scope": "Applies to asynchronous request-reply protocols where a reply arrives after the request, correlated by an identifier the requester generates. Does not apply to synchronous transports where reply and request are coincident in a single exchange.",
  "projections": {
    "unified_markdown_uri": "https://corpusfetch.com/c/how-must-an-instance-scope-correlation-identifiers-so-asynchronous-replies-are-not-orphaned.md",
    "method_python_slice_uri": "https://corpusfetch.com/c/how-must-an-instance-scope-correlation-identifiers-so-asynchronous-replies-are-not-orphaned.py",
    "remnant_warrant_slice_uri": "https://corpusfetch.com/c/how-must-an-instance-scope-correlation-identifiers-so-asynchronous-replies-are-not-orphaned.warrant.json"
  },
  "token_profile": {
    "full_markdown_tokens": 1038,
    "python_slice_tokens": 135,
    "warrant_slice_tokens": 220
  },
  "remnant_summary": {
    "core_distinction": "A correlation identifier is a key into the requester's pending-reply table. If its scope (per process, per host, per cluster, per tenant) is narrower than the window in which replies can arrive, the reply is valid but the table cannot find the request it answers. The reply is orphaned — dropped, discarded, or delivered to a different pending request that reu...",
    "what_was_observed": "**Signature.** Reply timeouts on the requester while the responder reports successful processing. The responder's log shows \"replied\", the requester's shows \"timeout\". The gap correlates with requester restarts, deploys, or cluster rebalances, not with network conditions. **Trace.** Correlation ids scoped per process, restart on deploy every hour. Reply window 5 minutes. A request issued at t=59m, deploy at t=60m, re...",
    "condition_of_validity": "The instance must ensure at least one holds before it relies on correlation: 1. **Must scope to reply window.** Correlation ids are unique across every process, host, and cluster instance that may receive a reply within the pending-reply TTL. 2. **Must persist across restart.** The pending-reply table survives restart, so a reply arriving after a restart is ...",
    "decision_boundary": "- Scope covers reply window, table persists, unknown-correlation is an error: sound. - Scope covers reply window, table is in-memory: sound in normal operation, orphaned on restart. - Scope narrower than reply window (per process, per host): orphan is guaranteed on any failover. - Reused ids across restart: an orphan can be delivered to a *different* pending...",
    "operational_effect": "The invariant couples a key generated at the requester to a table that lives on one or more receivers. The instance's correct posture is to scope ids globally within the reply window and treat unknown-correlation as an error. **Trap.** Reset the pending table on restart to avoid stale entries. That cures the stale-entry concern and creates the orphan — the c..."
  },
  "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": "3381d2428cdca61a0e684a226a034901486d950f687b2ced127831613f407c11",
    "verified_classes": [
      "OrphanedReplyError",
      "CorrelationGate"
    ],
    "verified_functions": [
      "dispatch_correlation_mode",
      "verify"
    ],
    "verified_functions_count": 2,
    "defensive_guards_count": 3,
    "raised_exceptions": [
      "OrphanedReplyError"
    ],
    "sample_fail_closed_invariants": [
      "process-scoped correlation: replies to a restarted process are orphaned",
      "pending-reply table does not survive restart: failover orphans replies",
      "unknown correlation dropped as warning: reply loss is invisible to requester"
    ],
    "stdlib_dependencies": [
      "dataclasses"
    ],
    "observation_mode": "EMPIRICAL_BOUNDARY_CAPTURE",
    "zero_external_deps": true
  }
}
