Loading...
What this page is
One Evidence Case — the case-level container that answers the six questions about an AI-agent action — with the reviewer-replayable evidence packet sealed inside it. The Evidence Case is the durable object your reviewer works with; the packet is the tamper-evident snapshot the engine emits at verdict time. The verdict below is bounded by a cumulative business-exposure axis — the aggregate metric the policy owner signed off on during calibration — not by any single-event ceiling in isolation.
Two audiences, one Evidence Case
One AI-agent action, one Evidence Case, one reviewer-replayable packet. Your enterprise customer's reviewer replays the decision themselves against the signed policy — without taking the deployer's word for it, and without GreenLightz acting as authority.
This Evidence Case shape applies to all 9 governed action types
This sample is one refund case; the same six-question anatomy plus the same packet schema (case header / verdict + policy / AgentEvent replay / integrity / lineage / scope) applies to every action type above.
The Evidence Case is the case-level container that answers these six questions. Every buyer-facing surface, and every export, is organized around them.
Sections 1–6 below fill these in with the case header, the verdict + signed policy, the AgentEvent replay bundle, the integrity hashes, the calibration lineage, and the scope boundary — the same shape that ships inside the sealed packet.
The shape of the AgentEvent the agent's platform ingested. Caller-supplied fields; the engine accepted them at evaluation time and opened this Evidence Case around them.
Verdict, the policy version it was evaluated against, the dimensions that fired, and the rule excerpt that triggered. This is the policy-linked verdict at the heart of the case.
# acme_corp/refund_policy v1.3.0
rules:
- id: refund_aggregate_30d
dimension: aggregate_exposure
action_type: credit_or_refund.issue
window_days: 30
threshold_usd: 250.00
verdict_on_exceed: REQUIRE_APPROVAL{
"action": "modify_and_retry",
"band": "amber",
"recommended_client_behavior": "MODIFY_AND_RETRY",
"safe_degrade_actions": [
"lower_amount"
],
"retry_guidance": {
"max_retries": 3,
"cooldown_seconds": 0,
"stop_condition": "action_allowed_or_max_retries_exhausted"
}
}The canonical AgentEvent record the deployer's instrumentation sent in, content hashes, and engine version. Given these plus the policy bundle, the engine produces the same verdict, every time.
{
"spec_version": "v1",
"event_type": "COMMITMENT_MADE",
"case_id": "case_2026_06_18_0007",
"case_scope": "customer_refund_window",
"source_system": "acme_support_agent_platform",
"actor_id": "agent-7b",
"target_id": "customer-4492",
"action_type": "credit_or_refund.issue",
"occurred_at": "2026-06-18T14:32:07.121Z",
"policy_pack_id": "acme_corp/refund_policy",
"payload": {
"amount_cents": 4250,
"currency": "USD",
"reason": "Duplicate charge — 18.4h after original",
"correlation_id": "conv-8812-msg-3",
"customer_30d_aggregate_cents": 31200,
"original_transaction_id": "txn-9284"
}
}Same AgentEvent + same policy bundle + same engine version → same verdict, every time. The verdict path contains no LLM inference.
canonical_body_sha256 is a deterministic hash over the sanitized Evidence Case body. HMAC signing attaches when the operator configures GLZ_PIVOT_V1_HMAC_KEY at their tenant.
Content hash. canonical_body_sha256 is the deterministic hash over the sanitized Evidence Case body: the six-question answers, the observed steps, the approval lineage, the policy bundle reference, and the aggregate state. A reviewer recomputes the hash offline from the body and the policy bundle in Section 3; any silent edit to the packet body breaks the recomputation.
Signing. HMAC-SHA256 packet signature attaches when the operator configures GLZ_PIVOT_V1_HMAC_KEY at their tenant. This sample shows signed=true; pilots with signing unconfigured will show signed=false, and the tamper-evidence comes from the canonical_body_sha256 alone.
The verdict carries the calibration session ID that produced its policy, plus the two-hop audit chain a reviewer can pull from the deployer's audit log.
The wedge is verifiability, not authority. GreenLightz narrows the trust surface; it does not remove it.
The remaining assumption is that the deployer's instrumentation honestly logged what the agent did. From there on, the reviewer re-runs the decision themselves against the policy the policy owner signed. The canonical_body_sha256 makes silent edits after-the-fact detectable. Verifiability, not authority.
Pilot customers land on ten surfaces per case in the operator portal. This sample page condenses them; a live case appears across the following tabs.
These ten surfaces are documented in docs/pivot/PORTAL_PIVOT_PRODUCT_SURFACE.md §3. Not every surface is exposed on this synthetic page — this page is one export shape (Surface 8) with the six-question anatomy (Sections 0–6 above) and the boundary card (Surface 9, banner at top). Live pilot customers navigate all ten from the case-detail view.
This JSON mirrors the exact shape the pilot export endpoint returns (spec_version v1). Same top-level envelope, same six-question body, same integrity hashes.
{
"packet_id": "pkt_8f3a91d4_c92b0a17",
"case_id": "case_2026_06_18_0007",
"sealed_at_utc": "2026-06-18T14:32:07.812Z",
"canonical_body_sha256": "sha256:7f3a91d4c92b0a17e85d6c41fb2a8e75d3c91a04bf72e95d18a6c34e7f0291bd",
"hmac_sha256": "sha256:c41fb2a8e75d3c91a04bf72e95d18a6c34e7f0291bd7f3a91d4c92b0a17e85d6",
"signer_key_id": "kid:acme_corp_2026q2",
"spec_version": "v1",
"pivot_persistence": "durable",
"not_legal_attestation": true,
"boundary_notice": "This sealed packet is an operational-review artifact. It is NOT a legal attestation, regulatory certification, or independent third-party audit opinion.",
"body": {
"case_id": "case_2026_06_18_0007",
"case_scope": "customer_refund_window",
"source_system": "acme_support_agent_platform",
"opened_at": "2026-06-18T14:32:07Z",
"current_status": "APPROVED",
"current_exposure_band": "EXPOSURE_NEAR_LIMIT",
"event_count": 1,
"tenant_id": "acme_corp",
"six_questions": {
"what_happened": "AI-agent action credit_or_refund.issue for $42.50 USD ingested as AgentEvent.",
"what_was_required": "per-action ceiling ≤ $150.00, 30-day cumulative exposure ≤ $250.00, velocity ≤ 3 refunds / 7d.",
"what_was_observed": "per-action PASS, velocity PASS, 30-day aggregate observed at $312.00.",
"what_was_missing": "aggregate-exposure obligation UNMET at ingest; engine emitted REQUIRE_APPROVAL autonomous verdict (legacy alias per ADR SEC #504 §7.3). Sample tenant has opted into the optional human-in-the-loop workflow, so manager resolution was recorded downstream.",
"who_approved": "role:support_manager",
"which_policy": "acme_corp/refund_policy v1.3.0"
},
"verdict": {
"value": "REQUIRE_APPROVAL",
"band": "amber",
"policy_pack_id": "acme_corp/refund_policy",
"policy_version": "1.3.0",
"policy_bundle_hash": "sha256:b8e1d4f2c9a6d3e7f5b110a98c47e21d5f8c2a9d7b3e6f1c4a8d5b2e9f7c1a3d6",
"reasons": [
"Amount $42.50 within per-action ceiling ($150.00 USD) — financial dimension PASS",
"Customer 30-day refund cumulative exposure now $312.00 — exceeds aggregate threshold ($250.00)",
"Velocity dimension PASS (1 refund / 7d)"
],
"intervention_plan": {
"action": "modify_and_retry",
"band": "amber",
"recommended_client_behavior": "MODIFY_AND_RETRY",
"safe_degrade_actions": [
"lower_amount"
],
"retry_guidance": {
"max_retries": 3,
"cooldown_seconds": 0,
"stop_condition": "action_allowed_or_max_retries_exhausted"
}
}
},
"applicable_obligations": [
{
"name": "per_action_ceiling",
"required": true,
"status": "OBSERVED"
},
{
"name": "aggregate_exposure_30d",
"required": true,
"status": "MISSING"
},
{
"name": "velocity_7d",
"required": true,
"status": "OBSERVED"
}
],
"observed_steps": [
{
"step_index": 0,
"event_id": "ev_8f3a91d4",
"observed_at": "2026-06-18T14:32:07.121Z",
"obligation": "per_action_ceiling"
},
{
"step_index": 1,
"event_id": "ev_8f3a91d4",
"observed_at": "2026-06-18T14:32:07.145Z",
"obligation": "velocity_7d"
}
],
"missing_steps": [
{
"expected_step_index": 2,
"obligation": "aggregate_exposure_30d",
"gap_reason": "aggregate_exceeded"
}
],
"approval_lineage": [
{
"approval_id": "appr_2026_06_18_0011",
"event_type": "ESCALATED",
"actor_role": "operator",
"occurred_at": "2026-06-18T14:32:07.413Z",
"reason_code": "AMOUNT_AGGREGATE_EXCEEDS_LIMIT"
},
{
"approval_id": "appr_2026_06_18_0011",
"event_type": "RESOLVED",
"actor_role": "support_manager",
"occurred_at": "2026-06-18T14:41:22.902Z",
"reason_code": "MANAGER_OVERRIDE",
"outcome": "APPROVED"
}
],
"cumulative_exposure_snapshot": {
"current_exposure_band": "EXPOSURE_NEAR_LIMIT",
"band_index": 2,
"band_scale": 4,
"delta_since_prior_evaluation": {
"band_index_delta": 1,
"direction": "increased"
},
"dimensions": [
{
"name": "monetary",
"band": "NEAR_LIMIT"
},
{
"name": "velocity",
"band": "SAFE"
}
]
},
"calibration_session_id": "cal_2026-04-12_acme_corp_refund_v1.3.0",
"engine_version": "glz_engine v1.6.92"
}
}Disclaimer. Every identifier, amount, hash, and policy fragment on this page is synthetic. acme_corp is a fictional tenant. The policy owner is named by role only; no individual signature is shown. This page is illustrative of the Evidence Case + packet shape pilot customers receive. It is not a legal attestation, regulatory certification, or independent third-party audit opinion.