01The killer query — show_reality_gap_report(tenant_id)
show_reality_gap_report("tenant_reality_gap_demo_44962d9b-…")12 gaps detected 3 Shadow Authority 4 Undocumented Delegation 2 Policy Bypass 3 Responsibility Drift money quote: Policy ≠ Reality.
Then drill down per gap — every RealityGap carries its expected and observed state references, affected authorities / decisions / policies / assets, the responsibility chain (when present), severity, and remediation status.
02The four gap classes · v1 only (Eric LOCKED — DO NOT extend)
Eric: "Don't build twenty. Those four alone are worth a product."
Authority exists in reality
Not authorized in policy.
Delegation occurred
No reconstructable chain.
Decision happened
Required policy path absent.
Decision owner != recorded owner
Responsibility chain mismatch.
03The killer demo — Expected vs Observed Organization
Eric: "Honestly this may become your strongest demo. The visual sells itself."
An internal auditor reads this in seconds: the right column has things the left column doesn't authorize. That's the entire product.
04The money quote
Policy ≠ Reality.
A gap report is a structural fact: policy expected one thing, canonical events recorded another. The detector cannot tell why the gap exists — fraud, error, emergency override, undocumented business reality, malfeasance — those are determinations for Internal Audit, the Risk Committee, the regulator, the court. This proof is detection, not adjudication.
05The pattern — five money quotes, one corpus
06The two tenants — demo and clean baseline
3 Shadow Authority · 4 Undocumented Delegation · 2 Policy Bypass · 3 Responsibility Drift. Matches Eric's locked example output byte-for-byte.
The home of #15 + #184 + #174 + #167. Clean baseline. The detector is sharp on planted gaps and quiet on legitimate scope-derivation — e.g. the credit officer's delegation of recommend_credit from her delegate_review authority is correctly NOT flagged.
07The schema — RealityGap as a first-class object
Eric: "Create a first-class object: RealityGap. You will use this object everywhere later."
RealityGap {
gap_id,
gap_type, // ShadowAuthority | UndocumentedDelegation
// | PolicyBypass | ResponsibilityDrift
severity, // Informational | Warning | Critical | Systemic
detected_at_ms,
expected_state_ref,
observed_state_ref,
affected_authorities: [...],
affected_decisions: [...],
affected_policies: [...],
affected_assets: [...],
responsibility_chain, // when the gap touches a chain
remediation_status, // Open | Investigating | Remediated | AcceptedRisk
explanation, // human-readable; surfaced verbatim to auditors
}
RealityGapReport {
tenant_id,
detected_at_ms,
total_gaps,
shadow_authority_count,
undocumented_delegation_count,
policy_bypass_count,
responsibility_drift_count,
gaps: [...],
money_quote: "Policy ≠ Reality.",
honest_limit_caption,
}
No new event kinds. No DB schema migration. The detector is a thin composition over existing snapshot + canonical event log inputs — the engine surface stays stable.
08Where this proof sits — rung-deepener (NOT a new rung)
Eric: "Do not create a new ladder rung. Reality Gap Detection strengthens Responsibility survives authority + Consequences survive responsibility. It's a rung-deepener. Not a rung-creator."
| Continuity rung strengthened | How #177 deepens it |
|---|---|
| Rung 3 — Accountability | Shadow Authority + Undocumented Delegation + Responsibility Drift directly measure the integrity of the authority + responsibility chains #14.1 made replayable. |
| Rung 4 — Consequence Replay | Policy Bypass connects unpoliced decisions to downstream consequences — once a bypassed decision produces a consequence, the lineage was already replayable; now the bypass itself is named. |
09What this proof IS and IS NOT
The first proof that an Internal Audit team, CISO, or Risk Committee buys against an existing budget line item. Detection of shadow authority, undocumented delegation, policy bypass, and responsibility drift — all read directly from the canonical event log + the reconstructed snapshot. No new schema, no engine changes, no buyer education required. Pain relief, not vision.
A determination of fault, intent, or correctness. A gap is a structural disagreement between policy and recorded reality — it does NOT say why the disagreement exists. A claim that policy itself was right. A claim that the gap is malicious. A substitute for the Risk Committee. Policy ≠ Reality.
10Honest limits
- v1 detection heuristics are LOCKED simple. Shadow Authority and Undocumented Delegation use "phantom granter / phantom delegator" matching — a principal who never received any scope. This catches the clear cases; semantic scope-derivation (e.g.
delegate_review→recommend_credit) is intentionally NOT flagged. That nuance is a v2 concern. - Policy Bypass detects unregistered policy_ids only. A decision citing a policy_id that was registered but DEPRECATED at decision time is not yet flagged. v2 territory.
- Responsibility Drift requires a responsibility chain. Decisions without an attached chain are not checked.
- The detector reports facts, not judgment. A gap is a fact; whether it represents fraud, error, emergency, or undocumented business reality is determined by the Risk Committee.
- Policy ≠ Reality. The money quote.
11Evidence appendix
| Field | Value |
|---|---|
| Demo tenant | tenant_reality_gap_demo_44962d9b-25f5-5622-bd9a-98d5580bb8a2 |
| Demo tenant root | princ_root_reality_gap_demo_44962d9b-25f5-5622-bd9a-98d5580bb8a2 |
| Demo events seeded | 17 (5 legitimate baseline + 12 planted gap events) |
| Demo total gaps | 12 |
| Shadow Authority | 3 |
| Undocumented Delegation | 4 |
| Policy Bypass | 2 |
| Responsibility Drift | 3 |
| Canonical continuity tenant | tenant_insurance_claim_44962d9b-25f5-5622-bd9a-98d5580bb8a2 (untouched) |
| Canonical continuity tenant gaps | 0 (clean baseline) |
| Schema | RealityGap struct + RealityGapReport in src/agent_zero/astate.rs (no new event kinds) |
| Reconstruction artifact | reconstruction.json |
| Harness | tests/reality_gap_detection_001.rs (scif-backend @ 6d2825f06) |
12Readiness determination
First Reality Gap Detection: PROVEN IN OPERATION. The locked four-class detection engine returns Eric's example output exactly on the demo tenant (12 gaps in the 3/4/2/3 split) and 0 gaps on the canonical continuity tenant. All prior canonical-continuity proofs (#15 / #16 / #174 / #184 / #167) verified byte-identical state_ids under the extended schema.
What this unlocks: an Internal Audit team, CISO, or Risk Committee can now ask "What changed without authorization?" and receive a deterministic, signed, structurally-grounded answer. Engineering order Eric LOCKED: detection engine ✓ shipped here; report ✓ shipped here; dashboard is post-v1. "If the report is good enough, people will pay before the dashboard exists."
What this does not unlock: fault determinations, intent attributions, or correctness verdicts. Those remain Risk Committee / legal territory. Policy ≠ Reality.
Issued by H33, Inc. · Eric Beans, CEO · 2026-06-03
Independently reconstructable. Inputs: scif-backend @ 6d2825f06 · tests/reality_gap_detection_001.rs · reconstruction.json.