{
 "schema": "cain42.snapshot_revocation_race.v1",
 "generated": "2026-10-06T22:55:57+00:00",
 "invention": "PP-01 quorum-committed authorization snapshots (platform-gateway/governance_snapshot.py)",
 "defect": "a grant revoked while the reconciler was committing an earlier snapshot was built after the revocation, carried the new revocation epoch, passed the epoch check, was persisted, and follower workers adopted it and fast-path-authorized the revoked agent until expiry (TTL up to the grant's ttl_s)",
 "fix": "snapshots are built against the durable revocation epoch; the grant must still be active with the same id and generation when the snapshot is built, published, adopted by a follower and reloaded at restart",
 "tests": [
  "test_grant_revoked_while_reconcile_is_committing_is_never_published",
  "test_follower_does_not_adopt_a_snapshot_whose_grant_is_no_longer_active"
 ],
 "tests_failing_before_fix": 2,
 "after": "64/64 test_governance_snapshot.py; 70/70 with test_cain42_bft_ip.py, 3 consecutive runs",
 "scope_note": "scripted quorum (as in the existing suite); not re-run against the live cluster. Same-project, self-verified."
}