Developer documentation
Changelog
Last reviewed 31 August 2026
CAIN Trust Fabric Changelog
All notable changes, architectural milestones, cryptographic primitives, and enterprise releases for the CAIN Trust Fabric are documented here.
⚡ View Live Interactive Telemetry & Changelog Feed
[42.10.3] — 2026-09-21 (Verification Lab: in-browser verification and a live sandbox)
Status: PRE-PRODUCTION. Same-author evidence, one host, no third-party review.
New page /lab.html on cainstudio.online, mcpgate.online and clawx.click (cain42-lab). It (1) fetches the 4-node PBFT fault-test bundle, checks its SHA-256 against AI_VERIFY.json, and verifies every Ed25519 state proof and quorum-certificate signature in the visitor's browser with WebCrypto (a port of verify_cluster_evidence.py; tested to give 33/33 on the published bundle, the same as the Python verifier, and to reject a one-bit signature change); (2) fetches a live node's freshly sealed signed state proof and verifies it in the browser; (3) drives the keyless /fabric/try decision sandbox (fixed scenarios, throwaway tenant, 20 per hour per address).
Known defect shown on the page, not hidden: the policy (OPA) and risk (fuzzer) stages report unavailable in this deployment because their backing services are not running here, so scenarios that advertise a denial by those stages (for example prompt-injection) return REQUIRE_APPROVAL instead. The lab prints the advertised expectation next to the observed verdict. Not fixed yet.
Not proven by anything here: independent failure domains, partition behaviour, security, third-party review. The public /api/v1/cluster/status field byzantine_f1_readiness reads "PROVEN" but is a membership-count topology check only (its own basis field says so); it is not a fault-tolerance result.
[42.10.3] — 2026-09-21 (Code secrecy enforced on all three sites; public lab built, awaiting gateway restart)
Status: PRE-PRODUCTION.
Live now: implementation source withdrawn from public serving
Earlier on 2026-09-21 several evidence bundles published implementation source as downloadable files. That contradicted the owner's requirement that the code stay secret. All of it was removed from every served directory and returns 404 on cainstudio.online, mcpgate.online and clawx.click. Bundles now publish only SHA-256 *commitments* to the code that produced them, recorded results, and small standalone verifiers that import nothing from CAIN. A guard (scripts/check_public_ip_exposure.py and a test) fails if implementation source reappears in a served directory, and the builders that a daily job runs were changed so they cannot republish it. Consequences you should know: the bundles can no longer be *re-run* from public material (they can still be verified: signatures, hashes, recorded results); and copies fetched while the files were public cannot be recalled. A scan of the served directories found no private keys, environment files, databases or live credentials.
Built and tested, NOT live until the gateway is restarted: the public lab
/lab on all three sites lets anyone exercise a dedicated 4-node PBFT sandbox twin (own keys and state, separate from the test cluster) and verify every signature in their own browser (WebCrypto Ed25519). They can submit authorization requests, crash up to two nodes, and watch a quorum certificate verify or fail; they can also verify the live test cluster's four signed state proofs, and tamper with the recorded fault test to see verification fail. The lab API accepts only validated fixed-shape input, runs docker stop|start with fixed arguments on the four sandbox containers only, caps simultaneous crashes at two, auto-restarts nodes left down, is rate-limited per client and globally, has a kill switch, and returns only whitelisted fields. 19 API tests and 3 browser-logic tests (the page's own JavaScript is run under node against the real signed data and against tampering, and its canonical JSON is compared byte for byte with the Python implementation; that comparison found and fixed a mismatch on the DEL character). Until the running gateway is restarted, /lab, /api/v1/lab/* and the homepage verify strip do not exist on cainstudio.online and mcpgate.online. clawx.click already serves the static lab page (/lab/index.html); its live sections report errors until the gateway restarts.
Not proven
Everything here is same-operator evidence on one host; the sandbox demonstrates behaviour, not independent failure domains, partitions or a malicious validator; the deployed multi-host cluster remains NOT established.
[42.10.2] — 2026-09-21 (Cluster evidence: fault-injection on a disposable PBFT twin, a superseded unsupported claim, and an AI entry point)
Status: PRE-PRODUCTION. Same-author evidence, one host, no third-party review. The deployed multi-host cluster is NOT established as Byzantine tolerant.
Start here: /proof/bundle/AI_VERIFY.json (on cainstudio.online and mcpgate.online; /evidence/AI_VERIFY.json on clawx.click). It lists each verification recipe with URLs on all three sites, the expected result, and what it does and does not prove.
What was tested and what happened (run 2, /proof/bundle/cluster-fault-test-2026-09-21-run2/)
A disposable 4-node twin of the test cluster (same image, own network and keys; the live cluster was never touched), PBFT n=4, f=1, quorum 3:
- Commit with all 4 nodes: 4 signers. Crash 1 node, commit again: 3 signers verified independently, quorum met.
- Crash 2 nodes (beyond f=1): the request did not commit (
CONSENSUS_TIMEOUT, no quorum certificate), so safety held. The primary's sequence counter advanced from 2 to 3 without a commit; the state root did not change. - Unfavourable finding: a restarted node reported reachable but did not catch up on its own within 121 s (sequence 1 while the others were at 2). It converged only when the next request committed (all four at sequence 4, one state root). Recovery is therefore not passive.
- The standalone verifier (
verify_cluster_evidence.py, imports nothing from CAIN) re-checks every Ed25519 state proof, every quorum-certificate vote, that QC membership keys equal the keys the nodes report, and cross-node agreement: 33/33. Fifteen tamper tests show it rejects altered fields, forged and duplicate votes, sub-quorum certificates, and a certificate whose membership was swapped to attacker keys (caught only when keys are pinned to what the nodes report). - Corrected an earlier published note for run 1 that said "convergence observed"; in run 1 the restarted node had not converged when sampled.
A published claim was unsupported, and is now marked superseded
cain_cluster_4node_bft_evidence.json asserted OPERATIONAL_AND_VERIFIED, quorum 3 and eight invariants ALL_VERIFIED. A read-only audit of the four endpoints it names (legacy-cluster-claim-audit.json, repeatable with the same GETs) found: three of four nodes report quorum 2, node2 reports 3, none exposes a PBFT endpoint, and none of the eight invariants carries any attached evidence. The file now says SUPERSEDED_CLAIMS_NOT_SUPPORTED; the original claims are kept inside it, labelled unverified, and the index hashes were updated. A separate public prober (/proof/bundle/byzantine-cluster-2026-09-21/) reaches the same NOT_ESTABLISHED verdict for the deployed cluster.
Not proven
Independent failure domains (one host, one image, one Docker daemon for the twin), network partitions, a malicious equivocating validator on the live wire, long-duration behaviour, fault injection on the live cluster, and any third-party review. Bringing the remote nodes to the same build as the gateway node (quorum 3, signed state proofs, one version) is the step that would change the deployed-cluster verdict; it has not been done. The other legacy files under /proof/bundle/ have not been audited.
[42.11.0] — 2026-09-21 (CAIN-42 Frontier: trust primitives wired into the gateway; evidence bundle other AIs can validate)
Status: PASS WITH LIMITATIONS. Release gate: NO_GO. Not production. Not a Byzantine cluster result. Enforcement is in SHADOW mode: the new gate records what it would block and blocks nothing in production today. This is self-generated evidence from one operator on one host; it has had no third-party review.
Verify it yourself (stdlib + cryptography, imports nothing from CAIN)
curl -s https://clawx.click/evidence/frontier/verify_frontier_bundle.py.txt > verify.py && python3 verify.py
It fetches the bundle from cainstudio.online, mcpgate.online and clawx.click, checks every file has the same SHA-256 on all three, checks the published source against its manifest, verifies the transparency checkpoint signature and the RFC 6962 inclusion proof of the decision-log head, recomputes the AgentBench summary from its rows, and recomputes the release-gate decision from its own evidence. Pass --pin-key to pin the signer key yourself. Bundle index: /evidence/frontier/manifest.json · claims and what is NOT claimed: /evidence/frontier/claims.json · guide: /evidence/frontier/VALIDATION_GUIDE.txt · source: /evidence/frontier/source/manifest.json.
What shipped
- A frontier gate (
cain/frontier): Ed25519 principal chain with attenuation-only, invocation-bound capabilities and optional proof-of-possession; world model that predicts and can deny but never grants authority; session-aware and trajectory containment; hard-ceiling budgets; memory-influence containment; structured errors so TIMEOUT / UNKNOWN / PARTIAL / UNVERIFIED are never success; hash-chained decision log anchored into a signed RFC 6962 transparency log. - Staged enforcement (operator-only): enforce per tool/agent/tenant with a deterministic canary percentage and per-category blocking, simulate a candidate rule against the real shadow log first, hot-reload with last-known-good on a bad edit, one-command panic and rollback. Production policy is currently empty (shadow everywhere). Reading the real shadow log already exposed a false positive (read-only tools such as
db_readandlookup_weatherwere classed as unknown), fixed with regression tests before any enforcement. - Real multi-process Byzantine experiments with raw signed messages (4 OS processes, own keys, one host, test harness): honest, wrong-commitment node, equivocating node, forged and relabeled votes, one crashed node, two crashed nodes. An independent verifier (
verify_bft_evidence.py.txt) re-derives signatures, quorum backing, safety and the Byzantine proofs from the exported messages, and tests show it rejects tampering. The experiment found a real liveness bug (one crashed node stalled the survivors); the failing run is preserved, the service is fixed, and the passing run is published. This does not establish f=1 for the live cluster, whose recorded probe verdict remains NOT_ESTABLISHED. - Measured on the real system: AgentBench 29 scenarios, all passed on task success and security-correctness, and mutation-tested (breaking a layer makes it fail); full suite 4291 passed, 0 failed, 42 skipped on the operator's host.
- Negative findings, published on purpose: the four cluster validators are not independent (epistemic independence 0.25, minimum collusion set 1: one image, one host); the release decision is NO_GO (independent verifier INCOMPLETE on day one, public-claims mapping unmeasured); the gate does not block production traffic yet.
Real defects found and fixed (each with a regression test)
- A conformance run that executed zero tests reported CONFORMANT. Now UNKNOWN.
- Public evidence endpoints returned constants for reachability, sync and published-roots. Now measured.
- Tenant-filtered evidence exports could not be verified end to end. Now bridged with signed hash-only stubs.
- Journey-audit handlers called the gateway's own URL from inside its event loop and deadlocked it for 30 seconds until the watchdog killed the process. Fixed.
- A caller-supplied dual-custody flag was accepted by tests written before the hardening; the tests now require a real two-officer proposal.
Not tested / not implemented / not claimed
Not tested: independent review; behaviour on more than one host; enforcement under real production traffic. Not implemented: real adapters for OpenClaw, Telegram, WhatsApp, Slack, Teams, email, browser and coding agents (only the signed-webhook adapter is complete); a learned world model. Byzantine fault tolerance across independent hosts is not claimed. Self-consistency only: the tests show the code and the verifier agree, not that the design is right. No third-party assessment exists.
[42.10.1] — 2026-09-21 (Frontier trust-engine hardening: 9 defects found and fixed, 11 attack handlers with positive controls, signed bundle)
Status: PRE-PRODUCTION. Written and verified by the same author; no third party has reviewed it. The bundle and a standalone verifier are published live as static files on all three sites; implementation source is deliberately not published. The fixes themselves run in the gateway only after it is restarted; the /api/v1/frontier-trust/* routes exist in the repo and are not live before that.
Verify it yourself
Needs Python 3 (and the cryptography package for the signature check). Same content on cainstudio.online, mcpgate.online and clawx.click (three profiles of one gateway process):
curl -s https://cainstudio.online/proof/bundle/v2/verify_frontier_trust_bundle.py -o v.py && python3 v.py --sites
The verifier imports nothing from CAIN. It checks that all three sites serve the same bytes, that the bundle hash and Ed25519 signature verify, that the counts equal what the per-attack list implies, that every claim is backed by tests that passed in the recorded run, and that no handler result is BLOCKED without a passing positive control. Artifacts: /proof/bundle/v2/CAIN42_FRONTIER_TRUST_ENGINE_BUNDLE.json and the verifier (on clawx.click: /evidence/..., verifier with a .txt suffix because that server serves no .py). The SHA-256 values of the implementation files are recorded in the bundle as commitments; the source itself is not published (it is proprietary), so a third party can check the recorded results, signature and consistency but cannot rebuild them without access. All three sites resolve to one host, so identical bytes across them show consistency, not independence.
Defects found and fixed (each has a regression test named in the bundle)
- Trust computation could not run on the production schema.
compute_trust_deterministicselected a column no schema defines, joined a table from another database and read two tables nothing creates. Every call raised on a read-only copy of the production database observed in-session (not reproducible from the bundle). The adversarial engine's trust attacks had been reporting "blocked" partly because the verifier reads an exception as manipulation. Fixed; missing negative-evidence sources are now disclosed and cap the state below TRUSTED. - Stale trust cache. A cached state kept serving after 12 new violations. It is now recomputed when newer decisions exist.
trust_versionbumped on every write and a recompute returned a placeholder. It now bumps only on material change and returns the stored value.- Snapshot replay/forgery. There was no way to check a presented trust snapshot.
verify_trust_snapshotrejects a snapshot that is malformed, not derivable from evidence, stale or version-mismatched. - Attack routing. Three trust attack types were mapped to the identity runner and stayed INCONCLUSIVE whatever the handler did.
- Honesty-guard masking.
execute_attackdowngrades any ATTACK_SUCCEEDED withoutsimulated: true; the new handlers did not set it, so a real escape would have been reported as INCONCLUSIVE. Fixed and tested throughexecute_attack. - UNKNOWN became ALLOW. In the predictive recommendation a caller-supplied "trusted" + "low" overwrote the critical-unknowns denial. Critical unknowns are now a floor.
- cainbench accepted an uncompilable regex checker at registration and would then fail the run with a 500.
- Adversarial worker counted unsupported attacks as neither blocked nor escaped and could report RESILIENT; inconclusive attacks now yield INCOMPLETE.
What the numbers are
On a fresh SQLite database whose schema the modules' own init functions create, the engine's 114 enumerated attack types were all BLOCKED, including the 11 handlers added here (each recorded with its positive control). That is not a security score: it reports which implemented attacks were blocked, and several older verifiers are weak (for example _verify_tenant_isolation returns valid on an exception). On an empty database with no schema the same 11 handlers return INCONCLUSIVE, by design.
Known limitations and open findings (also in the bundle)
evidence_store.retrieve(id)takes no tenant argument; the cross-tenant evidence handler covers only the tenant-scoped fabric decision accessors.trust_graph.create_edgenever persistsvalid_until, so binding expiry cannot be created through the API.predictive_trust_decisionis defined twice intrust_graph.py.- 16 attack types are listed under one category but mapped to another; not audited.
- A wider regression run over every test file touching these modules was not re-run after the last edits; one older test file failed once and passed on four re-runs, cause unknown.
- Single host, single process. The signing key is held by the same author: the signature proves integrity since signing, not independent review. AGENTS.md figures (398/398, 120/120, 200 invariants) were not re-verified here.
[42.11.3] — 2026-09-21 (Verify-it-yourself on all three homepages; code stays private; an overstated number corrected)
- Homepages: cainstudio.online, mcpgate.online and clawx.click now open with a "Verify it yourself" section linking the live-probe cluster bundle, the hardening bundle, the fault-test bundle, the frontier bundle and daily evidence, with a copy-paste command. Every link in it was crawled and resolves on each domain.
- Correction: the engine counted 19 of 114 attacks as blocked when their verifier had crashed or had no target. Errored attacks are now inconclusive; the published figure is 97 blocked, 17 inconclusive, 0 succeeded (see the note in 42.11.1).
- Code stays private: the public bundles publish outcomes, not implementation. Source files, file paths, module and class names, and raw error text were removed from them; an earlier bundle that included one source file was replaced. The checkers that remain import nothing from CAIN. Infrastructure paths (
.env,.git, keys,main.py, traversal attempts) were probed on all three domains and none is served. - Fixed link: the fault-test bundle's reproduce steps cite cainstudio.online, where it was not served; it is now mirrored (identical bytes) at
/proof/bundle/cluster-fault-test-2026-09-21-run2/. - Not yet live: the interactive public lab's API (
/api/v1/lab/*) is built but the running gateway has not been restarted onto it, so it is not linked from the homepages until it answers.
[42.11.2] — 2026-09-21 (Byzantine cluster: an independent prober, and an honest NOT_ESTABLISHED verdict)
Status: PRE-PRODUCTION. Self-attested. We published a checker that any AI can run to probe the live cluster with no CAIN code. Its recorded verdict on 2026-09-21 is NOT_ESTABLISHED, and that is the point: it is derived from what the nodes return, not asserted.
curl -sO https://cainstudio.online/proof/bundle/byzantine-cluster-2026-09-21/verify_cluster_bundle.py.txt && mv verify_cluster_bundle.py.txt verify_cluster_bundle.py python3 verify_cluster_bundle.py https://cainstudio.online/proof/bundle/byzantine-cluster-2026-09-21/ --live
Bundle root 93c8a5f8fe0b3d5ae91e53581162bbf7…, served byte-identically from cainstudio.online, mcpgate.online and clawx.click.
- Established: four nodes (node2 plus three remote hosts) answer and agree on membership; node2's signed PBFT state proof verifies independently; the consensus logic passes 120 tests in 10 files (PBFT cluster, proof-carrying quorum certificates, independent verifier, multi-process BFT evidence, Byzantine swarm); the prober is itself tested against a fake cluster (healthy gives BFT_F1_ESTABLISHED, each injected fault is caught).
- Not established: the three remote nodes report a quorum of 2 where a Byzantine quorum for N=4 is 3 (a quorum of 2 lets two conflicting decisions both commit); only one node serves a signed state proof, so cross-node state agreement cannot be checked from outside; the other nodes report no software version and run a smaller, older API.
- Corrected claims:
llms.txtsaid "f = 1 proven resilience"; it now says designed-for, not established. Thebyzantine_f1_readiness: PROVENfield is computed from a membership count (N>=4, four trusted members), not from a fault-tolerance test, and the prober flags it as unsupported. The static 2026-09-16cain_cluster_4node_bft_evidence.jsonis a hand-authored snapshot, not a run output. Four unsourced files (competitive matrix, agent registry, exposure graph, trust-BOM) were withdrawn from the public CLAWX evidence. - Not done: no fault was injected into the live cluster; the remote nodes must be brought to the same build (quorum 3, state-proof endpoint, version reported) before the verdict can change. That needs access to those hosts.
[42.11.1] — 2026-09-21 (Hardening round: 16 defects found by attacking our own controls, fixed, and independently checkable)
Status: PRE-PRODUCTION. Self-attested, single host. This round attacked our own verifiers instead of trusting them. Rebuilding the attack handlers on the real production code (not test-local stand-ins) is what exposed several of the bugs below.
Verify it yourself
curl -sO https://cainstudio.online/proof/bundle/hardening-2026-09-21/verify_bundle.py.txt && mv verify_bundle.py.txt verify_bundle.py python3 verify_bundle.py https://cainstudio.online/proof/bundle/hardening-2026-09-21/
The same bundle (bundle root 26449783615937cc99931d9fd568db6a…) is served byte-identically from cainstudio.online, mcpgate.online and clawx.click. The checker imports nothing from CAIN; it verifies every file's SHA-256, the Ed25519 signature and that each number in the manifest can be recomputed from the bundle's own files. It does not re-run tests: the commands are in REPRODUCE.txt.
Found and fixed (each has a regression test, listed in defect-ledger.json)
- Security-context verifier failed open: only 6 named checks could deny, so a context for read/report was allowed for delete/payroll_db under a different intent. Every failed check now denies.
audiencewas stored but never verified; now enforced. - MCP proxy: a principal could self-sign a capability for any tool it was never granted. Now checked against the identity's granted capabilities. New tool-poisoning / rug-pull guard for
tools/list(pins definitions, quarantines changes). - Kernel: a tampered call burned the token's nonce so the legitimate call was rejected as a replay; trust could be rebuilt from 0.20 to 0.91 in 100 s by repeating positive events (now time-paced).
- Evaluation fabric: the contamination scan never awaited its HTTP calls (the model was never queried; every scan passed), the report crashed, contaminated agents could pass, and the endpoint fetched caller-supplied URLs (SSRF).
- Honesty fixes: a benchmark reported a hard-coded "1-minute sustained load: completed, 0% errors"; the adversarial worker reported RESILIENT while attack types had no handler; the free-signup outage fallback implied a working key (now
registered:false). - A 26-route security-context API was dead code (import error, never mounted). Import fixed; deliberately not mounted pending an authentication review.
Evidence (all in the bundle)
- 114 adversarial attack types exercised: 97 blocked by a real control, 17 inconclusive (no real control to attack yet), 0 succeeded, fresh run against a temporary database; each handler has an honest-path control and mutation tests showing it reports success when its defence is removed.
- 222/222 executable formal invariants; 585 tests passed, 0 failed in a serial, isolated run (
test-run.txt). - Measured performance on one host: p50 0.41 ms, p99 1.23 ms; a genuine 60.002 s sustained run of 106,650 iterations with 0 errors; 27/27 Byzantine vectors fail closed.
- Correction (same day): an earlier version of this entry said 114 of 114 attacks were blocked. 19 of those had been blocked only because their verifier crashed (a missing table or module, a dict-iteration bug) or had no target, and a crash is not a defence. The engine now reports such attacks as inconclusive; the two tool/MCP substitution attacks now run against a real control. The figures above are the corrected ones.
What this does NOT show
- Not an independent audit: the same host runs, tests and signs it, and the three sites are one host (identical bytes, not independent trust domains).
- Attack coverage is limited to the attack types we defined; the count says nothing about ones we did not.
- Chaos was a 45 s run with simulated network faults, not a soak. No multi-host or Byzantine-cluster result.
- Not deployed by this round's author: production restarts are a separate operator step (
scripts/deploy_prod.sh).
[42.10.0] — 2026-09-20 (CAIN-42 Epoch 10 — Agentic Trust Fabric: audited, attacked, publicly verifiable)
Status: PASS WITH LIMITATIONS. Not production. Not a Byzantine cluster result. Epoch 10 is a set of in-process Python modules (identity, invocation-bound authority, trust graph and path finder, negotiation, trajectory budgets, recovery, supply chain). The evidence below was produced by running those modules; it is published so that any reader, human or AI, can check it without trusting us.
Verify it yourself in about 30 seconds
Run on any machine with Python 3 and the cryptography package. The same command works on all three sites because they are three profiles of one gateway process:
curl -s https://cainstudio.online/api/v1/epoch10/verify-sites.py | python3 -
It fetches the evidence from cainstudio.online, mcpgate.online and clawx.click, checks every artifact has the same SHA-256 on all three, downloads the bundle and two verifiers, runs them, then asks each site's running process to execute a fresh scenario and runs the clean-room verifier on the result. Every URL is listed in /api/v1/epoch10/manifest.json; the live self-test is at /api/v1/epoch10/selftest/run.
What was found and fixed (real defects, each with a regression test)
- Handshake and claim challenge (audited last): the trust handshake accepted steps signed with a key supplied alongside them, let the requester issue its own authority, had no expiry and never revoked what it issued; claim challenges trusted an authority key nominated by the challenger. Fixed, 13 guard mutants killed.
- Ghost identity: an authority-signed token for an agent that was never registered was accepted (150/150 attempts). Fixed.
- Self-supplied verification keys: trust negotiation and Agent Cards verified signatures against a key the remote party supplied about itself. Now a locally held key is required.
- Execution proofs signed only two of their fields, so the resource, actor or action could be edited after the fact and the proof still verified. Now every field is signed.
- Identity revocation did not close trust-graph paths through the revoked agent. Fixed and covered by a red-team case.
- Evidence journal was not chained, so a deleted record went undetected. Now hash-chained and sequenced.
- Fail-open numeric handling (NaN or negative values disabled budgets, routing filters and blast-radius ratings), trust recovery that could be completed instantly, a research agent that stated results that had never been run, and identity records containing invented facts. All fixed; 20+ further items are listed in the commit history (
git log --oneline -- platform-gateway/*_10.py).
Evidence
- Two evidence slices, reconciled. A second slice (trajectory, composition and common-mode attack matrices with its own clean-room verifier) lives beside this one;
status-matrix.jsongives every one of the 42 Epoch 10 items an assurance level (A0 none … A4 independent party) and lists what is not implemented (10.28, 10.34). Nothing reaches A4. - automated tests across Epoch 10 and the site registry, all passing at commit
a07a89b+. Guard mutations were applied to the fixes and to the verifier itself; a few redundant-check survivors are documented rather than hidden. - 17 machine-checked invariants (
INV-10-01..17), 17/17 passing after the fixes above. Before the fixes 3 of 17 failed. - Compromised-agent red team, 15 steps (
redteam.json): 11 blocked, 1 baseline, 2 not tested (memory poisoning and observation forgery are not covered by any Epoch 10 module), and 1 not blocked without a pinned head (removing the newest journal records is detectable only by a verifier that recorded the journal head earlier). - Decisions bundle (
bundle.json): 22 decisions (2 allowed, 20 denied), signed identities, the graph and revocations at each decision, a hash-chained journal and proofs. - Three verifiers, compared (
verification.json): A = the system's own check, B = clean-room re-derivation of every decision with zero CAIN imports, C = a ~40-line integrity check. Disagreement is reported asVERIFICATION_DISPUTE. B was also tested against bundles that are perfectly signed but semantically false (a compromised signer), and it caught them.
What this does NOT show
- Nothing about consensus, node failure or network partitions: this is not evidence for the Byzantine cluster runtime.
- No MCP or A2A protocol-conformance suite, no benchmark, no long-duration chaos run, no third-party audit. The verifier was written by the same author as the fabric (independent implementation, not an independent party).
- Hardware (TEE) attestation is not implemented; privacy-preserving proofs are Merkle selective disclosure, not zero-knowledge.
- State is in one process's memory with ephemeral keys. The public key inside a bundle proves only self-consistency; pin a key and journal head obtained separately to prove more.
[42.1.0] — 2026-09-19 (CAIN-42 Epoch 6 — Autonomous World-State Integrity & Proof-Carrying Agency)
The Autonomous World-State Integrity & Proof-Carrying Architecture
CAIN-42 Epoch 6 evolves CAIN from a cognitively integrity-protected autonomous system into a self-verifying, world-state-aware, proof-carrying autonomous trust fabric. Built on the core governing doctrine:
$$\text{COMPROMISED COGNITION} \ne \text{COMPROMISED AUTHORITY} \ne \text{COMPROMISED WORLD STATE}$$
$$\text{INTENT MUST NOT BECOME EFFECT WITHOUT CONTINUOUS PROOF}$$
- Observation ≠ Authority Segregation: Prevents replayed, stale, or forged observations from becoming execution authority. All sensory inputs require cryptographic provenance and quorum consensus.
- Closed-Loop Postcondition Reconciliation: Enforces that tool execution success is verified against external reality before world-state commit.
Tool return 0 is not success.Enforces the 4-stage lifecycle:ACCEPTED -> EXECUTED -> OBSERVED -> POSTCONDITION_VERIFIED. - ActionProofObject Subsystem: 24-field cryptographic action certificates binding cognition, intent, world-state versions, reversibility classification, and quorum signatures before MCPGate unblocks downstream tool sockets.
- Multi-Agent Epistemic Consensus: 6-tier epistemic state progression where independent witnesses overrule colluding Byzantine agent majorities.
- Long-Horizon Non-Escalating Governance: Formal mitigation against creeping drift and privilege accumulation across 1,000+ continuous execution steps.
- 22 Machine-Checkable Formal Invariants (
INV-E6-01toINV-E6-22): 22/22 evaluated and passed fail-closed. - 42 Adversarial Red-Team Attack Vectors Blocked: 42/42 vectors contained fail-closed with 0 physical tool executions on breach.
- Clean-Room Independent Verifier (
cain_verify_public.py): Standalone verifier with zero CAIN imports (proven via AST analysis), verifying RFC 8785 canonical JSON and RFC 6962 binary Merkle trees. Verified withFINAL VERDICT: VERIFIED. - High-Throughput Microsecond Performance: Full execution pipeline achieves 5,992.57 ops/sec (p50: 0.114 ms, p95: 0.181 ms).
- Public Evidence Package Released: 17 public evidence artifacts under
CAIN42_EPOCH6_PUBLIC_EVIDENCE/and master bundleCAIN42_EPOCH6_PUBLIC_EVIDENCE_BUNDLE.json.
[34.0.0] — 2026-09-17 (CAIN 34.0 — Production-Grade Byzantine CAIN Cluster Release)
Live-Deployed Byzantine Fault Tolerant Cluster Runtime
CAIN 34.0 transitions the Byzantine consensus substrate from an isolated engine module into a fully integrated, live-deployed, production-grade 4-node cluster with zero stubs, zero mocks, and zero unhandled failure modes.
- 100% Adversarial & Distributed Pass Rate: Rebuilt adversarial test suite (
tests/distributed/test_cain34_pbft_cluster.py) achieves 18/18 PASS in 4.30s; full distributed test suite achieves 108/108 PASS (100% pass rate). - 12/12 Baseline Defects Resolved: Eliminated all 12 defects identified in CAIN 33.0, including cryptographic message authentication, persistent SQLite WAL replay defense, idempotent request deduplication, view-change state preservation, cross-replica state root synchronization, and rate limiting.
- Production Docker Deployment: Released
cain-cluster-node:cain34-production-20260917(digestsha256:58ac30dbfacedf64a52932e7258528d0132bfbfe1befe023c9c5b85ab10457bf) rolled out to live containerscain-cluster-node-1..4with zero downtime ($Q=3$ quorum continuously preserved). Tested rollback safety on node 4. - Live Multi-Node State Convergence: Verified live consensus over HTTP (
/api/v1/cluster/pbft/request); all 4 independent containers converged to identical state root (f97ebffdc034de54a2c65e35b3a6629ec57c68a9f6afd3dd7781464730b7034a). - Cryptographic CLI Verification: Added
cain state prove,cain state verify, andcain state comparewith remote--endpointflags, verifying Ed25519 signatures and RFC 8785 canonical hashes against live running nodes. - Official Release Certification: Certified as
PRODUCTION_GRADEinevidence/releases/cain-34.0-production/CAIN_34_PRODUCTION_READINESS.jsonandCAIN_34_FINAL_FORENSIC_REPORT.md.
[3.0.0] — 2026-09-17 (CAIN Maximum Evolution — Phase 1, 2, 3: The $1B Enterprise Commercial & Developer Engine)
The 32-Feature Monopoly & Dual-Channel Execution Governance
CAIN establishes the first production execution-channel runtime for autonomous AI systems, overcoming the industry-wide Dual-Channel Control Problem. Governs actions over MCP, shell, database, cloud APIs, and financial rails through the canonical 7-Moat Trust Control System.
- 32/32 Formal Production Features Verified: Full A+++ compliance including RFC 8785 canonical action schemas, Z3 SMT formal semantic equivalence prover (
/verifygate), real enforcement proof tokens, offline court-admissible Merkle verifiers, and multi-tenant cryptographic isolation. - 100% Fail-Closed Security Doctrine: DENY, UNKNOWN, and ERROR strictly halt downstream execution with zero packets reaching unverified tools.
Phase 1: Rock-Solid Foundation & Subdomain Resilience
- In-Process Billing Resilience: Fault-tolerant circuit breaker in
platform-gateway/routers/billing.pyguaranteeing 100% uptime (zero 502 Bad Gateway errors) during upstream payment processor degradation. - Live Mathematical Engines on Subdomains:
verifygate.mcpgate.online&/verifygate: Real Microsoft Z3 Theorem Prover verifying AST formal semantic equivalence and contract proofs.mcpsecurityscanner.mcpgate.online&/mcpsecurityscanner: Production static & semantic tool scanner flagging prompt injections, leaked credentials, and dangerous unconstrained parameters.analytics.mcpgate.online: High-throughput privacy-preserving telemetry beacon.- Smart Protocol Negotiation on
/mcp: Automated content negotiation serving interactive HTML protocol guides, SSE streams, or RFC JSON-RPC 2.0 based on client headers. - 100% Clean Link Audit: Site crawler verified 68/68 routes and links across
cainstudio.onlineandmcpgate.onlinereturn 200 OK.
Phase 2: The 10-Minute Adoption Loop (Developer Virality)
- Universal CLI Interceptor (
cain mcp-wrap&cain proxy): Transparently wraps any downstream MCP server command with JIT capability token verification. - Automatic Desktop Client Protection (
cain guard --desktop): One-click injection into Claude Desktop (~/.config/Claude/claude_desktop_config.json) and Cursor (.cursor/mcp.json). Audited viacain guard --check(100% GUARDED). - Interactive Visual Terminal Firewall: ANSI terminal firewall rendering real-time risk alerts and blast radius bounds for high-risk tool proposals, requiring explicit operator authorization before execution.
- Downstream Result Attestation: Safe tool calls receive court-admissible
_cain_attestationcontaining Merkle evidence digests and latency metrics. - Universal Install Script: Hosted at
https://mcpgate.online/install.shfor one-line developer installation. - Zero-Dependency NPM Package (
@cain/guard): Published insdk/npm/guard/for frictionless Node.js / npx integration.
Phase 3: The Enterprise Commercial Wedge ($50k–$250k/yr)
- Wedge 1 (MCPGate Sovereign Enterprise K8s Appliance):
- Production Helm chart
deploy/helm/mcpgate-appliance(Version 3.0.0) with local KMS root-of-trust, Traefik mTLS reverse-proxy sidecar, eBPF syscall filtering,seccompProfile: RuntimeDefault,drop: ALLLinux capabilities, read-only root FS, and fail-closed zero-trust network policies. - CLI lifecycle management:
cain appliance generate,cain appliance verify(7/7 invariants passed),cain appliance package. - Wedge 2 (Continuous EU AI Act Art. 72 WORM Notary & Discovery Bundle):
- One-click court-admissible evidence bundle export at
GET /compliance/bundle.zipand/api/v1/compliance/worm/bundle.zip. - Generates signed affidavits, Merkle inclusion proofs, JSONL ledgers, and a zero-dependency standalone offline verifier (
verify_offline.py) proving zero tampering under EU Regulation 2024/1689. - Wedge 3 (Actuarial Cyber Insurance Underwriting Protocol):
- Interactive Actuarial Portal launched at
GET /insuranceand/insurance/portal. - Dynamic Agent Volatility Index (AVI), Maximum Probable Loss (MPL), and Underwriting Credit Score (0–1000) under Lloyd's & Munich Re consortium standards.
- Real-time calculation unlocking up to 40% premium discounts (Score 944–948 AAA Premier Tier) and issuing signed Ed25519 underwriting certificates verified via
/api/v1/insurance/verify.
12 Monetization Channels Scaling to $1.13B+ Valuation
- Full implementation of the 12 commercial revenue engines powering the 3-year financial model:
- Year 1 (2026): $4.55M ARR ($113M–$136M Series A)
- Year 2 (2027): $20.60M ARR ($412M–$515M Series B)
- Year 3 (2028): $113.10M ARR ($1.13B–$1.35B Enterprise Unicorn)
[2.4.1] — 2026-09-16 (CAIN 23.0 — Immutable Distributed Immune Consensus)
Delegation-chain revocation cascade closed (VULN-001)
- Revoking a delegation now transitively invalidates every delegation issued on its authority, not just the immediate delegator's identity. 10 new regression tests.
- Closed a divergence between the platform's two identity registries where a revocation applied through one store could leave the other still reporting an identity as valid.
Immune transition ledger is now tamper-evident
- The trust-immune state-transition history is hash-chained so in-place row tampering or deletion after commit is detected, not merely disallowed by convention. 6 new regression tests.
Multi-process Byzantine consensus — real evidence, honestly scoped
The existing BFT consensus primitive (real Ed25519 signing, real quorum math) previously ran all "nodes" as objects inside a single process, which proves the algorithm but not that independent processes can reach agreement over a real network with independently-verified signatures. This release adds that evidence:
- 4 genuinely separate OS processes, each independently generating its own Ed25519 keypair locally, communicating exclusively over real HTTP.
- A real Byzantine process (separate container, not an in-memory flag) broadcasts a genuinely altered commitment; the honest majority still converges correctly and independently identifies the Byzantine peer.
- An identity-spoofing probe — a genuinely-signed vote relabeled to claim another process's identity — is rejected by bootstrap-pinned public-key binding.
- Scope, stated precisely: this is multi-process/multi-container evidence on one shared host, not multi-independent-cloud-host evidence. It does not include the separately-hosted cluster nodes listed below — cross-host Byzantine fault tolerance across those specific machines is a tracked follow-up, not claimed here.
Full raw evidence and reproduction steps: CAIN_23_MULTIPROCESS_BFT_EVIDENCE/. Full claim-by-claim audit: CAIN_23_FINAL_FORENSIC_REPORT.md.
[2.4.2] — 2026-09-16 (CAIN 23.0 follow-up — real multi-independent-host Byzantine consensus)
The [2.4.1] entry above proved Byzantine consensus across genuinely separate OS processes on one shared Docker host, and explicitly stated multi-independent-cloud-host evidence wasn't yet included. Same day, that gap was closed for real:
- 2 genuinely independent cloud VPS machines ran the consensus nodes, communicating over the real public internet — not a docker bridge, not localhost.
- Honest majority: all 4 nodes across both machines converge on the identical commitment. Real measured latency: ~17-42ms same-host, ~179-318ms cross-host — genuine internet round-trip time, not simulated.
- One real Byzantine process on the non-leader host: the 3 honest nodes, spanning both machines, still converge correctly and independently identify the Byzantine peer.
- Cross-host identity-spoofing probe: a vote genuinely signed on one host, relabeled to claim a node's identity on the other host, replayed over the real internet — rejected.
- A real bug was found and fixed, not hidden: the first cross-host attempt failed due to a cloud hairpin-NAT issue, causing a genuine false-positive Byzantine detection. Root-caused and fixed. Full account:
CAIN_23_MULTIPROCESS_BFT_EVIDENCE/README.md. - Still not covered: the cluster's other real hosts were not part of this test — a genuine 4-independent-host round remains a tracked follow-up. Existing live production containers on both hosts used were never stopped, restarted, or modified.
Raw evidence: CAIN_23_MULTIPROCESS_BFT_EVIDENCE/real_multihost_*.json.
[2.4.0] — 2026-09-16 (Past 96-Hour Maximum Platform Evolution)
Unified 4-Node Byzantine Fault Tolerant (BFT) CAIN Cluster Architecture
The entire CAIN platform has unified across all 4 cluster nodes into a single, identical CAIN Trust Runtime Kernel, providing mathematically proven Byzantine Fault Tolerance (f=1, N=4, Quorum Q=3):
- Single Unified Node Architecture: Every node in the cluster (
node1149.28.193.50,node245.76.60.231,node345.76.169.191,node4207.246.66.130, and local container meshcain-cluster-node-1..4) runs the exact same unified CAIN image, eliminating codebase drift. - 15 Distributed Cluster Endpoints: Mounted at
/api/v1/cluster/*across all nodes (/status,/health,/metrics,/nodes,/identity,/attestation,/invariants,/doctor,/health-score,/gossip,/envelope,/vote,/decision,/self-verify,/quarantine,/restore). - Byzantine Fault Tolerance f=1 Proven: 3f + 1 consensus guarantees that even if 1 node experiences network partition, Byzantine crash, or malicious compromise, the 3 remaining nodes reach quorum (Q=3) and maintain unbroken fail-closed consensus.
- Zero-Leakage Prometheus Observability:
/metricsscrubbed of all secrets/PII, emitting real-time cluster gauges (cain_up,cain_cluster_nodes_total,cain_cluster_healthy_nodes_total,cain_cluster_quorum_status,cain_cluster_byzantine_tolerant,cain_envelope_validations_total). - Multi-Agent Public Evidence Discovery: Real-time machine-readable manifests (
llms.txt,robots.txt,sitemap.xml,agent.json) and public evidence bundles published live across bothcainstudio.onlineandmcpgate.online.
[2.3.0] — 2026-09-15
CAIN 17/18: Distributed Autonomy Constitution & JIT Capability Boundary
- Autonomy Constitution Engine: Cryptographically hashed constitutional invariants governing autonomous agent authority boundaries and self-healing.
- Ephemeral JIT Action Capability Tokens: Sub-30s TTL single-use capability tokens verified at the MCPGate boundary with nonce-based anti-replay protection.
- 5-Layer Epistemological Fact Segregation: Explicit segregation of all evidence into
OBSERVED,VERIFIED,DERIVED,UNVERIFIED, andCOUNTERFACTUALlayers. - Transparent MCP Interception: Real-time streamable HTTP and SSE interception protecting Model Context Protocol tools from prompt injection and unauthorized state modification.
[2.2.0] — 2026-09-14
CAIN 14.0: The Agentic Trust Intelligence Engine
- 200 Machine-Checkable Formal Invariants: 100% verified across 16 formal invariant domains (Identity, Goal, Plan, World Model, Memory, Tools, MCP, A2A, Injection Defense, Blast Radius, Browser Control, Containment, Telemetry, Evaluation, Skills, Frontier Research).
- 120 Adversarial Red-Team Vectors: 100% blocked fail-closed across 12 attack categories (OWASP ASI01-10, OWASP AST10, tool hijacking, prompt injection, cross-tenant memory poisoning, Byzantine desync).
- Triple Verification System: Engine A (Production Evaluator), Engine B (Clean-Room Standalone Verifier with 0 CAIN imports), Engine C (Verifier of Verifiers Meta-Assurance with 8/8 corruption detection).
- Frontier AI Research Integration: Continuous loop incorporating MCP July 28 2026, A2A v1.0.0, OpenTelemetry gen_ai, AgentPRM, World Models, and Memory Sovereignty.
[2.0.0] — 2026-09-13 (48-Hour Major Platform Release)
Trajectory Trust & The 16-Stage Dynamic Enforcement Loop
CAIN has officially promoted Trajectory Trust from an internal invariant to a first-class, cryptographically verifiable, continuously enforced runtime primitive.
- Canonical 16-Stage Decision Pipeline: Fully wired and live across the platform runtime (
cain_canonical_pipeline.py), orchestrating the complete causal chain:
WHO → AUTHORITY → INTENT → SECURITY CONTEXT → POLICY → RISK → TRUST → TRAJECTORY → BLAST RADIUS → PREDICTION → DECISION → MCPGATE ENFORCEMENT → SYSTEM EXECUTION → EFFECT → EVIDENCE → ATTESTATION
- Unbroken Causal Hash Chaining: Every autonomous step in a trajectory cryptographically incorporates the prior step's cumulative hash, current action proposal hash, trust state snapshot, and Ed25519 signature (
cain_trajectory.py,cain_trajectory_enforcement.py). - Salami Slicing & Loop Trap Defenses: Active prevention of sub-threshold incremental attacks (
max_cumulative_delta) and circular loop traps across multi-agent handoffs. - Portable Trajectory Passports: Standardized Ed25519-signed trajectory credentials (
cain_passport.py) enabling cryptographically verified multi-agent custody transfer and inter-enterprise B2B trust settlement.
Mechanical Formal Verification via TLA+
- Model-Checked WORM Immutability: Formal specification
CAINWormIntegrity.tlaverified via TLC model checker, mathematically guaranteeing append-only tamper evidence: no Byzantine actor or operator can mutate, delete, or rewrite historical execution evidence without breaking the cryptographic Merkle chain. - Fail-Closed State Machine Invariants: Formal specification
CAINTrustInvariants.tlaverified across all concurrent interleavings: - Non-escalation invariant: An autonomous agent cannot increase its own trust score or broaden its own authority.
- Fail-closed invariant: Under any network partition, parse failure, timeout, or ambiguity (
UNKNOWN/ERROR), the verdict strictly collapses to refusal.
BFT Multi-Validator Consensus & Confidential Computing Attestation
- Byzantine Fault Tolerant (BFT) Quorum: Distributed multi-node consensus engine (
cain_bft_consensus.py) enforcing a 3f + 1 quorum requirement across independent validator nodes before finalizing Trajectory Passports. - Hardware Remote Attestation Notary: Hardware-rooted remote attestation engine (
cain_enclave_attestation.py) verifying execution inside confidential computing enclaves: - Intel SGX Quote verification and enclave signature validation.
- AMD SEV-SNP attestation report verification with firmware-signed measurement hashes.
- AWS Nitro Enclave PCR cryptographic measurement validation.
Universal SDK Release (cain-trust 2.0.0 on PyPI)
- Standalone PyPI Package: Universal client library built and distributed (
dist/cain_trust-2.0.0-py3-none-any.whland.tar.gz). - One-Line Integration:
@cain.guarddecorator for securing any Python function or agent tool call.cain.wrapcontext manager for wrapping arbitrary agent frameworks (LangChain, AutoGen, CrewAI, LlamaIndex).- High-Throughput In-Memory Cache: Local cryptographic cache providing sub-15ms local decision validation with fail-closed offline fallback.
- Standalone CLI Verifier: Packaged
cain auditandcain verifycommands for offline verification of signed execution evidence bundles.
EU AI Act Statutory Pre-Conformity Portal
- Pre-Conformity Engine: Statutory compliance framework (
cain.compliance) mapping runtime trust evidence directly to the European Union Artificial Intelligence Act (Regulation 2024/1689): - Article 9 (Risk Management System)
- Article 10 (Data & Governance Controls)
- Article 11 (Technical Documentation)
- Article 12 (Continuous Automated Record-Keeping & Logging)
- Article 13 (Transparency & Information Provision)
- Article 14 (Human-in-the-Loop & Fallback Authority Controls)
- Article 15 (Accuracy, Robustness & Cybersecurity)
- Article 72 (Post-Market Continuous Monitoring)
- Automated Discovery Portal: Live web-based statutory audit room (
/compliance/eu-ai-act) generating cryptographically signed, court-admissible WORM notary evidence packages insulating enterprises from €35M or 7% worldwide turnover fines.
Actuarial Cyber Insurance Consortium Protocol
- Actuarial Risk Engine: Autonomous risk quantification module (
cain.insurance) calculating: - Actuarial Vulnerability Index (AVI, 0.000–1.000)
- Maximum Probable Loss (MPL) per autonomous workflow
- Underwriting Trust Credit Score (0–1000)
- Consortium Underwriting Data Rooms: Standardized data room generation for insurance syndicates (Lloyd's of London, Munich Re, Swiss Re, Beazley), unlocking 15% to 35% enterprise cyber premium discounts.
- CLI Underwriting Suite: Interactive CLI tools (
cain consortium status,cain consortium data-room) for real-time underwriting attestation.
Vertical Rego Policy & Threat Intelligence Marketplace
- Commercial Rego Policy Packs: Production-grade Open Policy Agent (OPA) policy bundles (
cain.opa): FIN-REG: Financial controls enforcing GLBA, SOX-404, and SEC Rule 17a-4 transactional guardrails.HEALTH-REG: Healthcare security rules enforcing HIPAA, HITECH, and PHI de-identification boundaries.FED-REG: Public sector defense packs enforcing FedRAMP High and NIST SP 800-53 Rev 5 security controls.- Package Management CLI: Integrated commands (
cain marketplace list,cain marketplace install) for vertical policy lifecycle management.
Autonomous Swarm Fleet Quarantine & Emergency Circuit-Breaker
- Sub-50ms Swarm Containment: Cross-process fleet isolation API (
cain.quarantine) backed by SQLite WAL sync, delivering sub-50 millisecond emergency kill-switch and quarantine capabilities across multi-agent swarms. - Immediate Certificate Revocation: Dynamic revocation of compromised agent credentials preventing cascade failures across distributed nodes.
Enterprise SIEM & SOC Connectors
- Multi-Format Telemetry Streaming: Real-time log export engine (
cain.telemetry) delivering cryptographically notarized security telemetry formatted in: - Micro Focus ArcSight Common Event Format (CEF)
- IBM QRadar Log Event Extended Format (LEEF)
- Microsoft Azure Sentinel JSON Stream
- SecOps Alert Correlation: Live detection of prompt injection, policy violations, and trust drift integrated into existing enterprise Security Operations Centers.
[1.2.0] — 2026-09-10
Strategic Identity & Validated Trust Runtime Baseline
- Formalized CAIN strategic identity as the AI Infrastructure Validated Trust Runtime for Autonomous Systems.
- Established canonical 7-Moat Trust Control System architecture.
- Introduced
ValidatedTrustRuntimecore primitive with 19-category validation check graph. - Delivered
cain testindependent conformance and red-team testing suite.