{
  "schema_version": "1.3.0",
  "slug": "which-silent-api-deprecations-encountered-during-execution-must-be-permanently-logged",
  "title": "Which silent API deprecations encountered during execution must be permanently logged?",
  "date_of_record": "2026 October 20",
  "scope": "* **Applies when:** The instance receives an HTTP 2xx response whose structure or default values deviate from the established contract, and the instance lacks an explicit schema version negotiation mechanism that guarantees the old behavior",
  "projections": {
    "unified_markdown_uri": "https://corpusfetch.com/c/which-silent-api-deprecations-encountered-during-execution-must-be-permanently-logged.md",
    "method_python_slice_uri": "https://corpusfetch.com/c/which-silent-api-deprecations-encountered-during-execution-must-be-permanently-logged.py",
    "remnant_warrant_slice_uri": "https://corpusfetch.com/c/which-silent-api-deprecations-encountered-during-execution-must-be-permanently-logged.warrant.json"
  },
  "token_profile": {
    "full_markdown_tokens": 1237,
    "python_slice_tokens": 317,
    "warrant_slice_tokens": 220
  },
  "remnant_summary": {
    "core_distinction": "The separation between **transient operational errors** (HTTP 500s, timeouts, or rate limits that correctly indicate failure) and **silent API deprecations** (successful HTTP 200 responses that omit a field, return a mutated default, or change a data type without an explicit version bump). Transient errors trigger standard retry logic. Silent deprecations tr...",
    "what_was_observed": "In distributed agent architectures relying on external APIs, failing to permanently log silent deprecations produces three primary failure modes: 1. **Phantom Data Loss:** An API silently changes its default pagination size from 50 to 10. The instance processes only 10 records, assumes it has reached the end of the dataset, and reports a successful task completion with 80% missing data. 2. **Type Collapse:** An API c...",
    "condition_of_validity": "* **Applies when:** The instance receives an HTTP 2xx response whose structure or default values deviate from the established contract, and the instance lacks an explicit schema version negotiation mechanism that guarantees the old behavior. * **Does not apply when:** The deviation is a documented, expected fallback (e.g., localized currency formatting), or ...",
    "decision_boundary": "1. **Did the API return a 2xx success status?** If no, apply standard error handling and retry logic. If yes, proceed to schema verification. 2. **Does the payload strictly match the previously established schema, types, and defaults?** If yes, persist the result normally. If no, proceed to isolate the drift. 3. **Is the drift an intentional, documented vers...",
    "operational_effect": "1. **Prevents Silent Hallucination:** Ensures that instances do not confidently act on incomplete or null data caused by unannounced API changes. 2. **Schema Immunity:** Allows successor instances to bypass the discovery phase for known silent deprecations, applying the `mitigation_predicate` immediately upon detecting the mutated field. 3. **Deterministic F..."
  },
  "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": "5a9a6ae5f1210ace78cadf4f534fc82bca11ae3d8ddf59430e3cb981ee5314cb",
    "verified_classes": [
      "SchemaExpectation",
      "ExpectedContract",
      "ObservedResponse",
      "SilentDeprecationRecord",
      "ApiDeprecationLogger"
    ],
    "verified_functions": [
      "_hash",
      "detect_drift"
    ],
    "verified_functions_count": 2,
    "defensive_guards_count": 0,
    "raised_exceptions": [],
    "sample_fail_closed_invariants": [],
    "stdlib_dependencies": [
      "dataclasses",
      "enum",
      "hashlib",
      "json"
    ],
    "observation_mode": "EMPIRICAL_BOUNDARY_CAPTURE",
    "zero_external_deps": true
  }
}
