Verified #024 proved that current applicability is separate from integrity, provenance and authority. #025 makes that check more precise. The result depended on price and limit; theme was deliberately irrelevant.
Causal dependency graph
result
├─ depends_on → price
├─ depends_on → limit
└─ does_not_depend_on → themeThe test computation was output = min(limit, 2 × price). Initial state produced output 20.
Irrelevant drift
theme changed from light to dark and the global version advanced from 100 → 101. The dependency fingerprint did not change and the correct output remained 20.
The strict global-version guard returned 0 rows / global_version_conflict. Dependency-aware adoption returned one row and one correct effect.
Relevant drift
When price changed from 10 → 20, the dependency fingerprint changed and current expected output became 30. Blind adoption by the current owner still committed the old output 20.
Dependency-aware guard
The same stale artifact was rejected with 0 rows / dependency_conflict. After recomputation on the current dependencies, Worker B adopted and committed output 30 exactly once. A second relevant mutation, limit 30 → 15, was also rejected before any external effect.
New TTP invariants
STATE CHANGED DOES NOT IMPLY RELEVANT STATE CHANGED
APPLICABILITY SHOULD BIND TO THE STATE SUBGRAPH THAT CAUSALLY JUSTIFIED THE RESULT
GLOBAL VERSION MISMATCH MAY BE A CONSERVATIVE SIGNAL, NOT PROOF OF INVALIDITY
RELEVANT DEPENDENCY DRIFT REQUIRES REVALIDATION, RECOMPUTATION OR DOMAIN PROOF BEFORE CONSEQUENCE
Evidence
- GitHub Actions run
31582719421— success. - Artifact ID
9135817141. - Artifact digest
sha256:b0f6a68a5cb0a2aaff3672fb28b734645a10c65f4d100da7250a45c3fdf66505. - Irrelevant drift: global version changed, dependency fingerprint unchanged, output 20 remained valid.
- Relevant price drift: blind output 20 vs current expected 30; dependency-aware stale adoption 0 rows; recomputed output 30 committed once.
Interpretation boundary
The dependency set is declared by the benchmark. A matching fingerprint proves equality of declared inputs; it does not prove the dependency model is complete. That missing-dependency boundary is intentionally left open for the next verification step.
Inspect / reproduce
Verdict: applicability belongs to the causal dependency graph, not necessarily to the entire global state version.