Skip to content

Evidence and boundaries

The rest of the Concepts index: the distinctions between what a contract declares, what a collector observes and what the engine judges, and the boundaries between the surfaces that answer.

Declaration, observation and judgement

Declared is not observed

A contract states intent. A collector or a tracer reports what is actually there. Every relationship in the graph carries a provenance discriminator so the two never merge, and they live in separate adjacency indexes so neither can leak into the other's answers. → Relationships: declared, observed, inferred · Declaration versus observation

Declared-but-not-observed is not confirmed absence

A declared dependency we did not see in traffic may be absent, or may simply be idle, or unobservable by the sources we have. Pacto reports declared-not-observed only when it had enough observation to have seen it, and insufficient otherwise. → Observed dependencies and reconciliation

Observed-only is not invalid

A dependency in traffic that no contract declares is a finding about the contract, not a defect in the observation. It is surfaced as a difference, not discarded.

Absence of evidence is not evidence of absence

The evidence model has no way to assert that something is not there: an observation is recorded as observed, unsupported, failed, stale or insufficient. "We could not look" therefore cannot be stored as "we looked and it was missing".

Evidence is not a finding

Evidence is what a collector saw. A finding is a verdict reached by comparing a contract against evidence, and the only thing that turns one into the other is the engine's Evaluate function. A finding cites the evidence behind it by source and timestamp, never by carrying the observation itself, so there is exactly one place a verdict can come from. → The engine · Declaration vs observation

Readiness is not compliance

Readiness is a team's own scored self-assessment of a contract revision, with a threshold and an expiry. Compliance is evidence-derived: what the running instance is actually doing. A revision that passes every readiness check can run on a target that is non-compliant, and both statements are true at once. → readiness

Contract intent is not runtime truth

The whole point of the control loop is that the two can disagree. Pacto's job is to say so precisely, not to reconcile them by assumption. → The operational control loop


Boundaries

A data source is not a collector

A collector observes an environment and produces evidence. A data source is where the graph reads records from — a local directory, a registry, a cluster, a cache. Their health is also different: a data source being reachable says nothing about whether the evidence it carries is fresh. → The roles · Source health is not evidence freshness

Data source health is not fleet knowledge completeness

One healthy source in a fleet of ten tells you that source answered. It tells you nothing about the other nine, and the snapshot's completeness is the fleet-wide claim. → Sources

The contract catalog is not the operational graph

The catalog answers what a set of contract roots and their closure declare, from a frozen discovery session that holds no runtime observation and outlives nothing. The operational graph answers what is actually running. A complete catalog closure and a complete fleet snapshot are complete about different worlds. → Contract catalog discovery

Discovery is not authorization, and neither is execution

Being able to find and read a contract grants no permission to change anything and performs no action. Pacto's read surfaces stay read surfaces. → What it is not · Why Pacto does not act or authorize · It recommends review, it does not act

A contract status is not a knowledge state

The Kubernetes operator writes Unknown on a Pacto resource to mean this contract was evaluated and a required assertion could not be decided — a verdict about one service, reached with full knowledge that it could not be reached. The unknown above is about the answer itself: no completeness arrived at all. Same word, opposite subject. The operator's ladder (Compliant, Warning, NonCompliant, Reference, Unknown, Invalid) is a per-contract verdict set and never a meta.completeness. → What the operator reports · Status is Unknown

A rendering may drop detail; it always carries the meaning it was given

The dashboard may show fewer rows, shorter labels and collapsed sections. What it may not do is decide what something means: canonical identity, completeness and every verdict arrive from the backend already decided, and the browser never reconstructs them by heuristic.