{
  "id": 18861432,
  "title": "Proven, Proven-Empty, and Gap Completeness Gates",
  "url": "https://urgent.news/2026/11/08/proven-proven-empty-and-gap-completeness-gates",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-11-08T04:55:31.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/jeff_pdc/proven-proven-empty-and-gap-completeness-gates-14nl"
  },
  "original_language": "en",
  "account": "The completeness gate is a system that classifies every element in a scanned route as either proven, proven-empty, or gap. This ensures that no information is left missing or silently blank. Proven means that the code has confirmed the presence and shape of the value, proven-empty indicates that the code confirms the absence of a value, and gap signifies that the scan was unable to determine the value. This classification prevents routes from being emitted as bare URLs with empty contracts, as well as avoiding the guessing of values for unknown or unexamined elements.\n\nThe primary purpose of the completeness gate is to eliminate ambiguity that arises from empty contracts. Downstream tools may interpret these blanks as facts, leading to confusion about whether the emptiness is genuine or merely unresolved. The gate addresses this issue by labeling each element's state, providing a clear indication of whether the value is confirmed, confirmed-empty, or unresolved.\n\nProven-empty is a positive result, indicating that the code has been read and verified to have no value. This differs from a gap, where the answer remains unknown. For example, in a GET endpoint that takes no request body, a scan that merely leaves the body blank cannot determine whether the handler rejects a body or if the scanner never looked. Proven-empty, however, confirms the handler signature and the framework wiring, showing conclusively that no body is accepted.\n\nWhen a scanner cannot resolve a response field, it receives the opposite label of gap, keeping the gap open until the source or an AI provides an answer. These labels are displayed next to each other in the same route, addressing different questions. A route can only enter the document with its contracts classified, preventing the presence of a bare URL with empty contracts and eliminating two failure modes: guessing a value for an unknown and leaving a blank for an unexamined element.\n\nGaps are a particularly important aspect of the gate's output. After the scan, the practical approach is to address the gaps first. These gaps highlight the exact elements that require either a person or an AI to fill. Once filled, the scan should be rerun to update the gate with the new information. An unresolved gap remains an honest representation of an unknown value, which is preferable to a confident blank.\n\nIt is essential to understand that the scan itself does not execute the application and cannot provide runtime guarantees. The completeness gate classifies contracts without running the app, marking the contracts as confirmed facts (proven or proven-empty) or unresolved gaps. The gate is designed to keep a document trustworthy downstream by never emitting a bare URL and by ensuring that every element is classified, rather than leaving it blank or guessing a value.",
  "summary": "Quick answer: The completeness gate classifies every parameter, body, and response in a scanned route as proven, proven-empty, or gap, so nothing is left silently blank. Proven means the code confirms the value, proven-empty means the code confirms there is no value, and gap means the scan could not determine it. A route is never emitted as a bare URL with empty contracts, and gaps stay visible…",
  "key_points": [
    "Completeness gate classifies route elements as proven, proven-empty, or gap",
    "Proven means code confirmed presence and shape of value",
    "Proven-empty indicates code confirmed absence of value"
  ],
  "editors_take": "By replacing ambiguous blanks with explicit classifications, the completeness gate ensures downstream tools receive trustworthy data instead of relying on guesswork or misinterpreting unresolved scan results.",
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}