For AI agents, security researchers, and anyone who wants to verify CAIN's Byzantine consensus claims without trusting this website.
AuthorizationProofObject containing an Ed25519 QuorumCertificate -- not just a log line saying "trust me."The first time this quorum-certificate code ran on the real live cluster, it had a real bug: the client received "decision": "ALLOW" while the accompanying certificate had 0 of 4 signatures verify. That is a silent violation of "no proof, no consequent action." It was root-caused (a payload-mismatch between what was signed and what was checked) and fixed at the source, then re-verified live: 4/4 valid signers under normal operation, 3/4 valid signers with a node deliberately stopped (real f=1 tolerance), and a tampered proof correctly rejected. Full root-cause writeup: CAIN_35_FINAL_FORENSIC_REPORT.md, section 7.
curl -O https://cainstudio.online/proof/bundle/cain35-byzantine/cain_35_independent_verifier.py
curl -O https://cainstudio.online/proof/bundle/cain35-byzantine/live_proof_4of4_signers.json
python3 -c "import json; k=json.load(open('live_proof_4of4_signers.json'))['quorum_certificate']['membership_config']; json.dump(k, open('keys.json','w'))"
python3 cain_35_independent_verifier.py live_proof_4of4_signers.json --keys-file keys.json
Expected: {"verdict": "VALID", "reason": "INDEPENDENTLY_VERIFIED", ...}, exit code 0.
Full walkthrough including the tamper-rejection negative control: HOW_TO_VERIFY.md.
cain_35_independent_verifier.py never imports CAIN's production authorization code -- confirmed by static AST analysis in an automated test, not just a docstring promise. A bug in CAIN's own certificate class (there was one -- see above) cannot be silently inherited by this verifier, because it doesn't share any code with it.live_proof_TAMPERED_demo.json is the valid proof with one field deliberately altered. If the verifier says VALID for that file, something is broken and you should not trust anything else here.Q = 2f+1 from the certificate's own membership list -- it does not trust a caller-supplied "3 of 4 signed" number.GET /proof/bundle/cain35-byzantine/index.json # Machine-readable manifest with SHA-256 of every file GET /proof/bundle/cain35-byzantine/HOW_TO_VERIFY.md # Copy-pasteable verification walkthrough GET /proof/bundle/cain35-byzantine/cain_35_independent_verifier.py # The actual verifier -- download and run it GET /proof/bundle/cain35-byzantine/live_proof_4of4_signers.json # Real live proof, normal operation, 4/4 signers VALID GET /proof/bundle/cain35-byzantine/live_proof_3of4_byzantine_f1.json # Real live proof captured with 1 node stopped, 3/4 signers VALID GET /proof/bundle/cain35-byzantine/live_proof_TAMPERED_demo.json # Negative control -- must verify as CORRUPTED GET /proof/bundle/cain35-byzantine/CAIN_35_FINAL_FORENSIC_REPORT.md # Full forensic report: what was built, what broke, what was fixed, what remains unproven GET /proof/bundle/cain35-byzantine/CAIN_35_PRODUCTION_READINESS.json # Structured readiness record -- overall verdict PRE-PRODUCTION GET /proof/bundle/cain35-byzantine/CAIN_35_BASELINE_FREEZE.json # Frozen CAIN 34.0 baseline: commit, image digest, live node identities GET /proof/bundle/cain35-byzantine/CAIN_35_COMPETITOR_CAPABILITY_MATRIX.md # Capability comparison vs Prisma AIRS, SPIFFE/SPIRE, Cloudflare, AWS Nitro, CometBFT, etc., with sources
NOT AVAILABLE on this infrastructure and is never claimed otherwise (report section 13).CAIN_35_PRODUCTION_READINESS.json's unproven_claims list for the exact things we are explicitly NOT claiming.If your independent verification produces a different result than documented here, please report it to: security@cainstudio.online