Derive the should-be-tested set from the models and lint the gap to the tests that exist.

Model-derived test-obligation census (derive what should be tested, lint the gap)

Intent — Derive the set of things that should be tested from the structured models themselves — every external seam that should be fuzzed, every failure edge that should have an injection test, every invariant that should have a checker — and lint the gap between that derived obligation set and the tests that actually exist. Coverage stops being a percentage over lines you happened to write and becomes a walk over the model: an untested obligation is a named, listable finding, not an absence nobody notices (our instance: censuses that derive the should-be-fuzzed and should-have-injection sets from the seam and error-path models, then flag the ones with no test).

SummaryDerive the should-be-tested set from the models and lint the gap to the tests that exist.
TargetBridge · System models
Formvalidation
Movesensor — it detects the untested obligation
Modelgoverns-a-model — it reads the models to derive obligations and gates the gap
EnforcementHard (deterministic) — the obligation set is computed from the models and the gap to existing tests is a build finding
Governsall-models — derives obligations from whichever models declare a testable surface

Its place in the environment — the canonical mechanism for COMPLETE · Establish completion on re-derived evidence. The variants and known uses that fold under it are gathered on the construction-kit page.

Motivation — the failure it kills

Line coverage measures the code you wrote and tested; it is blind to the code you should have written a test for and didn't. The dangerous gaps are the ones nothing points at: an external seam that was never fuzzed, a failure edge with no injection test, a cross-service invariant with no checker. A percentage climbs toward a hundred while whole categories of obligation sit at zero, because coverage counts what exists and cannot count what's missing. Worse, the obligation set is not static — every new seam, every new failure edge, every new invariant adds an obligation — and a line-coverage number never says "you added a thing that should be tested and didn't test it." The knowledge of what ought to be tested lives in the models, but nothing connects it to the tests that exist, so the gap between them is invisible.

Why it's not just a coverage report

A coverage report answers "of the lines that ran, how many did a test exercise?" — a denominator of what you built. This census flips the denominator to what the models say should be tested, which is the set a coverage report structurally cannot see. It derives the obligation from a model — the seam registry yields the fuzz targets, the error-path model yields the injection obligations, the invariant model yields the checkers owed — and then reports the ones with no matching test as concrete, named findings. A coverage report can be at ninety percent while an entire obligation category is untouched, because the untested category never entered its denominator. The census also grows its own denominator from the model: add a seam and the should-be-fuzzed set grows by one, so the gap reappears until a test closes it — a property a static coverage threshold can never have, since it measures against the code rather than against the obligations the models declare.

Mechanism

Prerequisites

Consequences & costs

Known uses

Related mechanisms