{
  "slug": "detectability",
  "term": "Detectability",
  "aliases": [
    "Detectable execution",
    "Operation detectability"
  ],
  "definition": "Detectability lets recovery determine whether a crash-interrupted operation took effect and retrieve its result when applicable.",
  "note": "Durable linearizability preserves completed operations but does not itself resolve an interrupted call for its caller. Detectable execution adds outcome recovery, for example through a persistent per-thread announcement recording the intended operation and its result. [queue18]\n\nIn the UDSS specification used by Dhoked and colleagues, resolve returns the caller's latest effective operation, its invocation tag and response. Tags distinguish calls with identical results, even after another process changes the shared state. If the interrupted call did not take effect, resolve may identify an earlier call; the caller must check its identity and tag. This is one interface specification, not a universal API. The paper's construction requires a process interrupted inside its detectable update to finish resolve before calling any other operation on that same object. Completing recovery is a precondition, not an optional diagnostic step. [detect24]\n\nRecovering a multi-call workflow also needs control-flow information. Memento combines tracked operations and checkpoints with deterministic replay; knowing one call's outcome does not make several calls a single atomic transaction. Its checkpoint primitive records a read-only expression's result; the expression may be evaluated again after interruption before that result is recorded. This does not authorize replaying arbitrary external side effects. [memento23]",
  "status": "research",
  "advantages": [
    {
      "text": "A recovering caller can distinguish an effective operation from one that did not take effect without relying only on the object's current value.",
      "citationIds": [
        "queue18",
        "detect24"
      ]
    }
  ],
  "limitations": [
    {
      "text": "System-wide and independent process crashes require different implementation assumptions; detectability alone does not choose a failure model.",
      "citationIds": [
        "detect24"
      ]
    }
  ],
  "related": [
    "durable-linearizability",
    "crash-consistency",
    "persistent-memory"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-14",
  "citations": [
    {
      "id": "queue18",
      "title": "Friedman et al. A Persistent Lock-Free Queue for Non-Volatile Memory. PPoPP 2018, section 2.3. DOI: 10.1145/3178487.3178490.",
      "url": "https://csaws.cs.technion.ac.il/~erez/Papers/nvm-queue-full.pdf",
      "accessed": "2026-11-14"
    },
    {
      "id": "detect24",
      "title": "Dhoked et al. RMR-Efficient Detectable Objects for Persistent Memory and Their Applications. OPODIS 2024, sections 1-2 and 4.1, Assumption 1.",
      "url": "https://drops.dagstuhl.de/storage/00lipics/lipics-vol324-opodis2024/html/LIPIcs.OPODIS.2024.5/LIPIcs.OPODIS.2024.5.html",
      "accessed": "2026-11-14"
    },
    {
      "id": "memento23",
      "title": "Cho et al. Memento: A Framework for Detectable Recoverability in Persistent Memory. PLDI 2023, sections 1-3. DOI: 10.1145/3591232.",
      "url": "https://www.soundandcomplete.org/papers/PLDI2023/memento.pdf",
      "accessed": "2026-11-14"
    }
  ],
  "provenance": [
    "Primary-source synthesis of operation-outcome recovery, not a hardware experiment or a proof for a deployed implementation.",
    "The UDSS resolve interface is scoped to OPODIS 2024 section 2; the Memento framework supplies the separate program-recovery example."
  ]
}
