Back to Blog
GTL Systems 5 min readJun 16, 2026
Part 3 of 10GTL Systems series

Null vs Zero: A Data Integrity Distinction That Matters

Zero is a computed result. Null is an absent result. Treating them as equivalent is one of the most common sources of silent data integrity failure in AI analysis systems.

A machine trust score of 0 means the system computed a trust score and found it to be as low as possible. A machine trust score of null means the system did not compute a trust score at all. These are completely different facts about the domain — but in many systems, both are stored as 0 and the distinction is permanently lost.

Why the Distinction Gets Lost

Database columns have types. A `score NUMERIC` column can store 0 but not the absence of a computation. Developers solve this by defaulting to 0, or by using -1 as a sentinel, or by adding a separate `score_computed BOOLEAN` column — each approach adding complexity without solving the underlying representational problem.

The GTL Solution: State as a First-Class Field

GTL solves this by elevating state to a first-class field in the response envelope, not a property of the score itself. A score of 0 with state: "complete" is genuinely zero. A score of null with state: "empty" means nothing was computed. A score of 42 with state: "partial" means a partial computation returned 42, but some sub-scores are missing. The score value and the state of computation are separate concerns — GTL keeps them separate.

In SiteNexis, all Layer 4 scores carry a GTL envelope. A contradictionAbsenceScore: null with reason: "claude_api_unavailable" is honest data — it tells the downstream system to use the overall Machine Trust Score with that sub-score excluded, not to substitute 0 for it.

The Compounding Problem

When null is stored as zero, aggregate scores become wrong. If Machine Trust Score is an average of five sub-scores and one sub-score returns null stored as 0, the average is pulled down by a computation that never ran. Over many audits, this creates systematic underscoring for domains where a single sub-score consistently fails to compute — not because the domain is untrustworthy, but because a dependency (such as an external API) is unavailable.

Practical Rule: Never Substitute Zero for Absent Computation

The GTL rule is simple: zero is a valid computed result, null is the only correct representation of an absent computation, and the two must never be substituted for each other. When aggregating scores, exclude null sub-scores from the denominator. When displaying scores, show the GTL state alongside the value: a score of 72 with state: "partial" is different information from a score of 72 with state: "complete."

Tags: GTL Data Integrity null handling scoring