Unverified Precondition¶
Core Idea¶
An action presumes some referent — object, capability, counterparty, channel, resource — exists and is available at the moment of commit, but the existence is not checked at the action site. When the presumption fails, the action crashes or proceeds with a corrupted result that surfaces downstream. The existence dimension — is it there at all? — is load-bearing and separate from any property of the value.
How would you explain it like I'm…
Grabbing Without Looking
Is It Even There?
The Unchecked Existence
Broad Use¶
- Software: null dereference and use-after-free — a reference used without checking it points to a live object.
- Distributed systems: a call presuming a service is reachable when partition or token-expiry made it absent.
- Supply chain: a process plan presuming a part is in inventory at this station now when a stock-out made it absent.
- Emergency response / healthcare: dispatch presuming a unit in service or a bed available, producing a halt or a mislabeled specimen.
- Legal / database: a contract presuming a solvent counterparty; a query presuming a table or column exists in the current schema.
- Build and configuration: a recipe presuming a file or tool is present, or code presuming a config value is set.
Clarity¶
Raises the existence dimension to a first-class precondition layer distinct from correctness or freshness, and makes explicit that existence has a site and a moment — "was it there here, now?" — which is the question the failure was always about.
Manages Complexity¶
Compresses a heterogeneous family of failures into one procedure: catalogue the action site's referents, characterise each verification posture, install missing checks, and decide what to do in the absent case.
Abstract Reasoning¶
Sharpens existence as a precondition dimension, verification-site versus action-site separation (the time-of-check-to-time-of-use bug), and the fact that existence assumptions compose — a chain of referents has geometrically decaying success.
Knowledge Transfer¶
- Software → distributed systems: type-level existence encoding became reachability checks and circuit breakers.
- Aviation → surgery: pre-flight-check culture transferred into surgical pre-procedure checklists.
- Database → workflow: referential-integrity discipline transferred as saga patterns and idempotent retries.
Example¶
A null-pointer dereference: the call site presumes the reference resolves; the object's value, when present, may be perfectly correct, but the action is blind to whether it exists at all, so an absence becomes a crash — and a time-of-check-to-time-of-use bug arises when the referent is freed in the gap between check and use.
Relationships to Other Primes¶
Foundational — no parent edges in the catalog.
Children (1) — more specific cases that build on this
- Time-Of-Check To Time-Of-Use Flaw is a kind of Unverified Precondition — The file names the relation in its Structural Signature: "the time-of-check-to-time-of-use gap is the time-window-sensitive INSTANCE" of the existence-precondition pattern. Direction: unverified_precondition is the general action-presumes-referent-exists-at-commit prime; TOCTOU (real candidate slug, listed cross-ref) is its time-window special case (check drifts stale between verification and use). Medium because TOCTOU is also a well-established standalone security concept; the in-file "instance" framing nonetheless supports a parent_of edge. NOT a reparent to constraint (0.815 nearest, unrelated).
Not to Be Confused With¶
- Unverified Precondition is not a Constraint because a constraint is a standing restriction on the values a system may take, whereas this is the failure to check that a referent exists at the action site — presence at a moment, not a value-space restriction.
- Unverified Precondition is not a Transaction because a transaction bundles operations to commit or roll back together, whereas this is the narrower failure of presuming a referent resolves, which can occur inside a perfectly atomic transaction.
- Unverified Precondition is not Idempotence because idempotence concerns whether repeating an action changes the result, whereas this concerns whether the referent is present at the moment of first commit.