[
 {
  "cain_modification": "none material",
  "classification": "CONVENTIONAL_BFT",
  "evidence": [
   "BFT-TV-01..20",
   "tests/test_cain42_byzantine_omega.py"
  ],
  "function_or_class": "HardenedPBFTEngine.handle_*",
  "mechanism": "Three-phase ordering (PRE_PREPARE/PREPARE/COMMIT), 2f+1 quorums",
  "prior_art_relationship": "Castro & Liskov, PBFT (OSDI 1999)",
  "source_file": "platform-gateway/cain_pbft_engine_33.py",
  "technical_effect": "agreement on a total order"
 },
 {
  "cain_modification": "bug fix to reach the baseline",
  "classification": "CONVENTIONAL_BFT",
  "evidence": [
   "BFT-TV-05",
   "BFT-TV-06"
  ],
  "function_or_class": "proposal_request_digest",
  "mechanism": "Proposal digest bound to the operation",
  "prior_art_relationship": "required by PBFT (request digest); CAIN lacked it until 2026-09-23 (OMEGA-04)",
  "source_file": "platform-gateway/cain_pbft_engine_33.py",
  "technical_effect": "a Byzantine primary cannot make replicas execute different ops under one digest"
 },
 {
  "cain_modification": "progress timer and backoff tuning",
  "classification": "CONVENTIONAL_BFT",
  "evidence": [
   "BFT-TV-14",
   "BFT-TV-19",
   "RT-BFT-04"
  ],
  "function_or_class": "trigger_view_change/handle_view_change/handle_new_view",
  "mechanism": "View change + NEW_VIEW carrying prepared certificates",
  "prior_art_relationship": "PBFT view change",
  "source_file": "platform-gateway/cain_pbft_engine_33.py",
  "technical_effect": "liveness after a faulty primary"
 },
 {
  "cain_modification": "requires commit certificates + contiguity",
  "classification": "CONVENTIONAL_BFT",
  "evidence": [
   "BFT-TV-15",
   "BFT-TV-17",
   "BFT-TV-20"
  ],
  "function_or_class": "PBFT_CHECKPOINT_INTERVAL, apply_state_transfer_entries",
  "mechanism": "Checkpoints, watermarks, certified state transfer",
  "prior_art_relationship": "PBFT checkpoints / state transfer",
  "source_file": "platform-gateway/cain_pbft_engine_33.py",
  "technical_effect": "bounded logs, safe catch-up"
 },
 {
  "cain_modification": "none material",
  "classification": "CONVENTIONAL_BFT",
  "evidence": [
   "BFT-TV-02",
   "BFT-TV-09",
   "BFT-TV-16",
   "tests/test_cain42_pbft_crash_points.py"
  ],
  "function_or_class": "PBFTWriteAheadLog, RequestDeduplicationEngine, ReplayDefenseTracker",
  "mechanism": "Write-ahead log replay, request dedup, replay defense",
  "prior_art_relationship": "standard SMR engineering",
  "source_file": "platform-gateway/cain_pbft_engine_33.py",
  "technical_effect": "crash recovery, exactly-once execution"
 },
 {
  "cain_modification": "none",
  "classification": "CONVENTIONAL_BFT",
  "evidence": [
   "unit tests"
  ],
  "function_or_class": "bft_quorum",
  "mechanism": "Quorum Q = ceil((N+f+1)/2) with machine-checked intersection",
  "prior_art_relationship": "Byzantine quorum systems (Malkhi & Reiter 1998)",
  "source_file": "platform-gateway/cain_pbft_engine_33.py",
  "technical_effect": "quorum intersection for N != 3f+1"
 },
 {
  "cain_modification": "quarantine as an ordered op",
  "classification": "PBFT_DERIVATIVE",
  "evidence": [
   "BFT-TV-08",
   "RT-BFT-02"
  ],
  "function_or_class": "ByzantineEvidenceLog, apply_operation('quarantine')",
  "mechanism": "Hash-chained Byzantine evidence log + consensus-ordered quarantine",
  "prior_art_relationship": "accountability (PeerReview, SOSP 2007), BFT reconfiguration",
  "source_file": "platform-gateway/cain_pbft_engine_33.py",
  "technical_effect": "equivocation becomes durable evidence; exclusion is itself agreed"
 },
 {
  "cain_modification": "a vote-history rule; model-checked",
  "classification": "PBFT_DERIVATIVE",
  "evidence": [
   "tests/test_pbft_reference_model.py"
  ],
  "function_or_class": "check()",
  "mechanism": "Fast path 'vote_history_fast' with exhaustive model check (N=4,f=1)",
  "prior_art_relationship": "Zyzzyva (SOSP 2007), SBFT (DSN 2019), FaB Paxos",
  "source_file": "scripts/cain42_bft/pbft_reference_model.py",
  "technical_effect": "one-round commits when all N vote; OFF by default and in production"
 },
 {
  "cain_modification": "applied to QCs; library opt-in",
  "classification": "PBFT_DERIVATIVE",
  "evidence": [
   "tests/test_cain42_pbft_hybrid_qc.py"
  ],
  "function_or_class": "hybrid QC",
  "mechanism": "Hybrid Ed25519 + ML-DSA-65 quorum certificates",
  "prior_art_relationship": "composite/hybrid signatures (IETF LAMPS drafts)",
  "source_file": "platform-gateway/cain_pbft_qc.py",
  "technical_effect": "PQ migration path for certificates"
 },
 {
  "cain_modification": "anchors committed through PBFT",
  "classification": "PBFT_DERIVATIVE",
  "evidence": [
   "tests/test_cain42_pbft_evolution4_dag.py"
  ],
  "function_or_class": "DAGConsensusBridge",
  "mechanism": "Narwhal-style DAG anchors",
  "prior_art_relationship": "Narwhal/Bullshark (EuroSys 2022)",
  "source_file": "platform-gateway/cain_pbft_dag.py",
  "technical_effect": "throughput design; not on the hosted path"
 },
 {
  "cain_modification": "a governance verdict cannot permit unless 2f+1 replicas committed its exact commitment AND the gateway itself verified the QC",
  "classification": "CAIN_ENFORCEMENT",
  "evidence": [
   "GOV-BFT-01..05",
   "GOV-BFT-10"
  ],
  "function_or_class": "TrustFabricControlPlane._consensus_stage; cain_mr_client.order_op/verify_commit",
  "mechanism": "Decision commitment ordered by PBFT as a PERMIT PRECONDITION, QC verified by the gateway against pinned membership",
  "prior_art_relationship": "transparency logs (CT, RFC 6962), notarisation, permissioned-ledger endorsement",
  "source_file": "platform-gateway/fabric_control_plane.py",
  "technical_effect": "no quorum -> no permit (fail closed); tamper-evident, quorum-signed record of every permit"
 },
 {
  "cain_modification": "safety-asymmetric latency rule",
  "classification": "CAIN_ENFORCEMENT",
  "evidence": [
   "GOV-BFT-05"
  ],
  "function_or_class": "CONSENSUS_DEFER_NONPERMIT, _order_deferred",
  "mechanism": "Asymmetric deferral: non-permits are ordered after the reply, permits never",
  "prior_art_relationship": "asynchronous audit logging",
  "source_file": "platform-gateway/fabric_control_plane.py",
  "technical_effect": "a deny costs no consensus round; a permit always does (or a committed snapshot)"
 },
 {
  "cain_modification": "authority committed by quorum, enforced locally in ~0.2 ms, revoked locally without quorum, each use anchored later",
  "classification": "CAIN_GOVERNANCE",
  "evidence": [
   "GOV-BFT-06..09",
   "RT-BFT-01/03/05/06/10"
  ],
  "function_or_class": "GovernanceControlPlane, authorize_fast_path, SnapshotStore",
  "mechanism": "Quorum-committed authorization snapshots + local fast path + LOCAL revocation epoch + async Merkle anchoring",
  "prior_art_relationship": "leases (Chubby, Gray & Cheriton 1989), capability caching, OAuth token TTL, CT inclusion proofs",
  "source_file": "platform-gateway/governance_snapshot.py",
  "technical_effect": "removes the per-call round; revocation independent of cluster liveness; outage permit window = TTL"
 },
 {
  "cain_modification": "applied to governance decisions",
  "classification": "CAIN_INTEGRATION",
  "evidence": [
   "tests/test_consensus_group_commit.py"
  ],
  "function_or_class": "order_grouped, root_from_path",
  "mechanism": "Group commit with per-decision RFC 6962 inclusion proofs",
  "prior_art_relationship": "batching + Merkle (CT, Bitcoin)",
  "source_file": "platform-gateway/cain_mr_client.py",
  "technical_effect": "many decisions per round, each verifiable"
 },
 {
  "cain_modification": "states what consensus did NOT evaluate",
  "classification": "CAIN_EVIDENCE",
  "evidence": [
   "tests/test_cain42_pbft_authorization.py"
  ],
  "function_or_class": "AuthorizationProofObject",
  "mechanism": "Authorization Proof Object binding QC, state roots, and explicit NOT_EVALUATED trust/risk",
  "prior_art_relationship": "signed audit records",
  "source_file": "platform-gateway/cain_pbft_engine_33.py",
  "technical_effect": "evidence cannot overstate what the quorum checked"
 },
 {
  "cain_modification": "published offline verifier",
  "classification": "CAIN_EVIDENCE",
  "evidence": [
   "tests/test_pbft_qc_public_bundle.py"
  ],
  "function_or_class": "verify_qc",
  "mechanism": "Public zero-CAIN QC verifier, signed hourly cluster proofs, evidence bundles",
  "prior_art_relationship": "reproducible builds/transparency practice",
  "source_file": "public-verifiers/verify_pbft_qc_bundle.py",
  "technical_effect": "third parties can check certificates without CAIN code"
 }
]
