{
  "schema_version": "1.3.0",
  "slug": "how-does-an-instance-detect-mutation-surface-drift-when-litmus-safety-harness-adapters-silently-re-bind-to-a-mutated-target",
  "title": "How does an instance detect mutation-surface drift when LITMUS safety harness adapters silently re-bind to a mutated target",
  "date_of_record": "2026 November 14",
  "scope": "Applies to LITMUS safety-benchmark harness integrations where an adapter layer (probe shim, policy wrapper, or scorer bridge) is re-bound to a target under adversarial mutation testing. Does not apply to static evaluation runs where the target binary and adapter manifest are pinned by digest for the whole session.",
  "projections": {
    "unified_markdown_uri": "https://corpusfetch.com/c/how-does-an-instance-detect-mutation-surface-drift-when-litmus-safety-harness-adapters-silently-re-bind-to-a-mutated-target.md",
    "method_python_slice_uri": "https://corpusfetch.com/c/how-does-an-instance-detect-mutation-surface-drift-when-litmus-safety-harness-adapters-silently-re-bind-to-a-mutated-target.py",
    "remnant_warrant_slice_uri": "https://corpusfetch.com/c/how-does-an-instance-detect-mutation-surface-drift-when-litmus-safety-harness-adapters-silently-re-bind-to-a-mutated-target.warrant.json"
  },
  "token_profile": {
    "full_markdown_tokens": 1568,
    "python_slice_tokens": 267,
    "warrant_slice_tokens": 220
  },
  "remnant_summary": {
    "core_distinction": "There are two failure modes when a safety harness is pointed at a mutated target, and they are routinely conflated: 1. **Detection failure** — the harness runs, the probes execute, and the target passes. The instance concludes \"no safety regression.\" This is visible, loud, and usually caught by canary probes. 2. **Binding failure (mutation-surface drift)** —...",
    "what_was_observed": "During a mutation sweep (adversarial prompt-injection corpus injected into a policy endpoint), a run returned `PASS` on all 240 probes for a mutant that had demonstrably failed the same corpus 40 minutes earlier. Investigation of the adapter trace showed the following sequence: - The mutant caused the primary probe endpoint to return HTTP 503 for ~90 seconds during reload. - The adapter's retry layer, configured with...",
    "condition_of_validity": "The following conditions must all hold for a LITMUS result to be admissible as evidence about a specific mutant: 1. **Binding identity is pinned by digest, not by `target_id`.** The adapter must record the resolved artifact digest (image SHA, model weights hash, or endpoint cert fingerprint) at bind time, and the scorer must refuse to serve cached results wh...",
    "decision_boundary": "The operational rule is a hard boundary between resilience behavior and measurement validity: - **If the run is exploratory or availability-focused** (e.g., \"does the service stay up under load?\"), transparent fallback is correct and the result is valid for that question. - **If the run is a safety benchmark against a specific mutant**, any binding change is...",
    "operational_effect": "After enforcing digest-pinned binding and treating fallback as `INCONCLUSIVE`: - The false-pass rate on the mutation sweep dropped from 11/240 mutants to 0/240 (the 11 were re-run and correctly failed). - Run wall-clock time increased ~8% due to session invalidation and re-runs on transient unavailability. - The `INCONCLUSIVE` bucket became the primary signa..."
  },
  "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": "37c02b8e9dbfa453ba84dbfdf8dc5407534217c641c97cada6a21362fdfd162f",
    "verified_classes": [
      "MutationSurfaceDriftError",
      "BindingTrace",
      "LitmusAdapter"
    ],
    "verified_functions": [
      "__init__",
      "bind",
      "on_fallback",
      "verdict"
    ],
    "verified_functions_count": 4,
    "defensive_guards_count": 5,
    "raised_exceptions": [
      "MutationSurfaceDriftError",
      "ValueError"
    ],
    "sample_fail_closed_invariants": [
      "fallback before initial bind",
      "verdict requested with no binding trace"
    ],
    "stdlib_dependencies": [
      "dataclasses",
      "hashlib",
      "typing"
    ],
    "observation_mode": "EMPIRICAL_BOUNDARY_CAPTURE",
    "zero_external_deps": true
  }
}
