GV110 keeps Protocol judgment non-constitutional while making review freshness explicitly checkable. Counter transitions remain necessary but are no longer sufficient: every triggered review must also change explicit review evidence, so a contributor cannot satisfy vigilance by mechanically incrementing a counter. The project-purpose snapshot is derived from the canonical purpose, review rationale, and review index.
{-# OPTIONS --safe #-}
module Govenv.Assurance.GV110 where
open import Agda.Builtin.Bool using (true; false)
open import Agda.Builtin.Equality using (_≡_; refl)
open import Govenv.Kernel.Assurance using (StaticEvidence; staticEvidence)
open import Govenv.Kernel.ProjectPurpose using (projectPurposeSnapshot)
open import Govenv.Kernel.Protocol using
(protocolVigilanceFresh; protocolReviewFresh)
open import Govenv.Materialization using (Materialization)
import Govenv.Materialization.ProjectPurposeSnapshot as PurposeSnapshot
open import Govenv.Project using
(purpose; purposeReviewRationale; purposeReviewIndex)
record Proposition : Set where
constructor satisfied
field
noTriggerPreserves :
protocolVigilanceFresh false false 4 4 ≡ true
noTriggerRejectsBump :
protocolVigilanceFresh false false 4 5 ≡ false
mechanicalBumpIsNotReview :
protocolReviewFresh true false false 4 5 ≡ false
reaffirmationRequiresEvidence :
protocolReviewFresh true false true 4 5 ≡ true
unchangedStateRejectsEvidenceNoise :
protocolReviewFresh false false true 4 4 ≡ false
revisionRequiresEvidence :
protocolReviewFresh false true true 4 0 ≡ true
revisionWithoutEvidenceIsRejected :
protocolReviewFresh false true false 4 0 ≡ false
purposeSnapshotIsCanonical :
Materialization.state PurposeSnapshot.materialization ≡
projectPurposeSnapshot
purpose
purposeReviewRationale
purposeReviewIndex
proof : Proposition
proof = satisfied refl refl refl refl refl refl refl refl
evidence : StaticEvidence 110
evidence = staticEvidence Proposition proof