EVE Proof & verification
Verifying an EVE Monitoring Envelope
core.eve_sdk (an EVE(...) object with govern_* methods). That module is not present in the current repository and is not published on any registry, so these snippets raise ModuleNotFoundError if run. They are kept because they show the intended governance flow. For code that runs today, use the published client: pip install eve-coreguard, then from eve_coreguard import CoreGuardClient and call client.evaluate(...), with offline evidence checking via client.verify_evidence(...) or the standalone verify_decision_record. See the CoreGuard integration guide and the Python SDK reference.A monitoring envelope is a signed summary of agent behavior over a window. EVE produces it from deterministic statistical detectors (rolling / robust z-score, EWMA, CUSUM). The envelope lets a reviewer confirm that a behavioral summary is authentic and unaltered — without trusting the EVE server.
Readiness: signed monitoring envelopes and behavioral anomaly detection are
PILOT_READY. Monitoring is observational; enforcement decisions are made by CoreGuard,
sequence, and budget controls, not by the envelope.
What it proves
- Integrity — the summarized window (counts, detector outputs, anomaly events) has not been altered since signing.
- Authenticity — the envelope was signed by the EVE signing key (ECDSA P-384 in the production configuration; HMAC-SHA256 fallback is symmetric and not independently verifiable).
- Deterministic derivation — the anomaly events were produced by named deterministic detectors (z-score / EWMA / CUSUM) over the recorded window, not by an opaque model.
What it does NOT prove
- It does not prove that an action was blocked or allowed. Monitoring is observational; it flags deviations. Enforcement is performed by CoreGuard decisions, sequence governance, and budget controls — verify those with their own evidence (see Linked evidence).
- A flagged anomaly is advisory unless it is wired to a deterministic enforcement action. A signed envelope proves the detector fired; it does not prove that anything was prevented.
- Statistical detectors flag deviations from a baseline; the envelope does not claim the deviation was malicious, nor that the absence of a flag means the absence of a problem.
Required keys
A monitoring envelope carries at least:
| Field | Meaning |
|---|---|
schema / schema version |
Envelope schema identifier |
| window bounds | Start/end of the summarized window |
tenant |
Tenant the summary belongs to |
| detector outputs | Per-detector results (e.g. detector, z_score, escalation) |
| anomaly events | Flagged deviations with detector attribution |
content_hash |
Digest over the canonical payload bytes |
canon |
Canonicalization identifier — jcs-1 |
kid |
Signer key identifier |
signature |
kms-ecdsa-p384-... (production) or HMAC fallback |
Verification fails closed if a required key is absent.
Canonicalization (jcs-1)
The envelope is signed over jcs-1, a constrained RFC 8785 profile with proven byte-for-byte
parity across Python, TypeScript, and the browser for the supported value domain. jcs-1 is
fail-closed on non-integer floats / NaN / Infinity, so rate-like values are carried as integer
permille. This is a constrained profile, not full RFC 8785 float formatting. A verifier reading
an envelope whose canon is not jcs-1 reports unsupported canonicalization.
Verification profiles: strict vs standard
- Standard — verifies canonicalization, content hash, signature, and schema; accepts an ECDSA P-384 signature (with a supplied public key) or, where configured, an HMAC fallback.
- Strict — additionally requires an independently verifiable ECDSA P-384 signature and rejects HMAC-fallback evidence. Use strict for third-party review with no shared secret.
Linked evidence
A monitoring envelope summarizes what happened; the corresponding enforcement is recorded elsewhere:
- Decision Certificate — the CoreGuard ALLOW / BLOCK / MODIFY decision.
- MCP Execution Evidence — approved-versus-executed binding for a tool call.
- Red Team Report — adversarial regression results, including zero-side-effect proof for blocked attacks.
Verify each linked artifact independently; a monitoring envelope does not vouch for the contents of an artifact you have not separately verified.
Selective-disclosure / omission checks
The signature covers the canonical bytes of the whole payload, including the detector outputs
and anomaly-event set. A dropped or altered anomaly event invalidates the content_hash and
the signature. Verify the full envelope before reading any subset; do not re-canonicalize a
reduced object.
Failure categories
| Category | Meaning |
|---|---|
| invalid signature | Signature does not match the canonical content under the given key |
| unknown key | kid / public key not recognized or not supplied for a strict check |
| unsupported schema | Envelope schema version is not understood by this verifier |
| unsupported canonicalization | canon is not jcs-1 |
| digest mismatch | content_hash does not match the recomputed canonical digest |
| selective omission | A signature-covered event or field was removed or altered |
| stale | Envelope window is older than your freshness window |
Freshness
A monitoring envelope describes a specific window and does not expire on its own. Enforce
freshness as a policy: reject envelopes whose window ends outside your acceptance horizon (for
example, "only consider windows from the last hour" for a live dashboard). Treat an over-age
envelope as stale.
Replay behavior
A monitoring envelope is a record, not an authorization. Re-presenting it does not cause a side effect and does not re-trigger enforcement — monitoring is observational. If the same envelope is submitted twice, deduplicate on its window bounds and content hash.
Verify it yourself
Python
# Synthetic fixture — no production credentials.
import json
from eve_coreguard import verify_decision_record
with open("public_key.pem", "r", encoding="utf-8") as fh:
public_key_pem = fh.read()
with open("monitoring_envelope.json", "r", encoding="utf-8") as fh:
envelope = json.load(fh)
# VerificationResult is truthy when valid; independently_verifiable is True for ECDSA P-384.
result = verify_decision_record(envelope, public_key_pem=public_key_pem)
print(result.valid, result.independently_verifiable) # True, True
Node (TypeScript / ESM, Node >= 18)
import { verifyDecisionRecord } from "eve-ai-governance";
import { readFileSync } from "node:fs";
const publicKeyPem = readFileSync("public_key.pem", "utf8");
const envelope = JSON.parse(readFileSync("monitoring_envelope.json", "utf8"));
const result = await verifyDecisionRecord(envelope, { publicKeyPem });
console.log(result.valid ? "VERIFIED" : "FAILED");
CLI
# The `eve` CLI ships with the EVE service/repo. Form: verify <kind> <evidence.json>
# [--strict]; the ECDSA P-384 public key is auto-fetched from /.well-known/eve-pubkey.
python -m core.eve_sdk.cli verify monitoring monitoring_envelope.json --strict
Readiness
- Signed monitoring envelopes and deterministic behavioral anomaly detection are
PILOT_READY. - Offline verification (Python / Node / browser) is
SUPPORTED;jcs-1canonicalization isSUPPORTED(constrained RFC 8785 profile). - Independent verification requires the ECDSA P-384 public key; the HMAC fallback is symmetric and not independently verifiable.
- Monitoring runs in embedded (in-service) mode; the Python
eve-coreguardclient (0.2.10) reaches the service via hosted mode. TypeScript (eve-ai-governance0.4.0) verifies offline and never signs. - The clients are published on public registries:
pip install eve-coreguard(PyPI) andnpm install eve-ai-governance(npm).
Limitations
- Monitoring is observational; a signed envelope proves a detector fired, not that any action was prevented. Enforcement is a separate, deterministic decision verified with its own evidence.
- Statistical detectors produce advisory signals; they are not a zero-false-positive classifier and require a deterministic enforcement action to have effect.
- In the pilot, monitoring state is in-process; durable cross-instance aggregation is a deployment concern.
- HMAC-fallback signatures are not independently verifiable; use the ECDSA P-384 configuration and the strict profile for external review.