Enterprise Telecom Assurance — Overall Session
Forensic narrative across AL0 → AL1 → AL2. Simulated autonomous telecom environment spanning customer, RAN, core, transport, and OSS/IT domains. Every claim is traceable to deterministic evidence. What are AL levels?
Executive Assurance Summary
Plain-English narrative for leadership. Evidence-backed conclusions only. No technical jargon, no LLM-generated prose.
Challenge Alignment
How HAIEC aligns with the enterprise telecom challenge criteria. We do not self-grade; we show what was evaluated and where the evidence sits.
Data Intake & Source Binder
What was received, what each source can establish, and what remains unproven. This is the Environment Binder — it determines the limits of every claim in this report.
Minimization
Only claim-relevant fields are retained per source type. Extra payload fields are dropped at normalization, not stored.
Quarantine partition
Records from unregistered or malformed sources land in a quarantine partition — visible as quarantined, never mixed into evidence.
Late-event policy
Events arriving after the evaluation window are recorded but flagged late — they never retroactively change a sealed report.
Dedup & batch digests
Every ingest batch carries a merge digest; duplicates resolve to one record. Batch digests bind intake to the report.
Malformed input is rejected explicitly with per-record failure detail — never silently dropped.
Intake Adapter Layer
All evidence sources HAIEC can accept. Every adapter normalizes to a canonical envelope, then runs the detection engine. Unknown formats are quarantined, never silently dropped.
✅ Available now (14 adapters)
⏳ Coming soon
Telemetry Signals
OpenTelemetry traces, metrics, and logs gathered from the evaluated surfaces via bounded collection. Signals are correlated to findings; baseline comparison runs over the collected window. Gathered, not streamed
Estate Constellation
Interactive map of the AI estate. Node size = reach. Brightness = evidence confidence. Ring = trust domain. Click any node to inspect. Evidence discipline
Agent Cards — Enterprise Telecom Estate
Each agent answers 9 questions about identity, capability, authority, and gaps. Click any card to expand. Evidence discipline
Capability Ladder
Declared → Code-Capable → Effectively Reachable → Indirect → Observed. The gap between declared and observed is the derived capability surface. Why the gap matters
Five-Plane Authority Model
Requested → Policy Authorized → Effectively Granted → Code Capable → Observed. Each plane requires its own evidence. No plane is populated from inference. Plane discipline
Agent Capability Chain
For each observed action: what capability was required, what was declared, what was observed, and what is the gap. Gap types
Delegated Action Integrity (DAI)
For each consequential choice: did the system stay inside what it was delegated to do? Four facts compared across 9 dimensions. Four facts
Supply Chain Influence
Packages that can change AI behavior if their scope changes. Direct and transitive dependencies with scope-change risk. Scenario rows
Detection Catalog
Every rule in the deterministic detection catalog. Each rule is evidence-bound, has hard negatives, and maps to real published framework IDs. Deterministic core
Framework Mappings — Real IDs, Not Badges
Every finding maps to real published framework IDs. Framework mapping ≠ certification. Standards inform; HAIEC evaluates.
Remediation Playbooks
When HAIEC finds an issue, this is what to do next. Playbooks are recommendations — never auto-applied. You decide. Recommendation discipline
Static Security Findings
Pinned Semgrep rulepack covering prompt injection, RAG poisoning, data leakage, tool abuse, and AI governance. Deterministic pattern matching. Runtime verify ready
AL0 — Baseline Forensic Report
Functioning fault management scenario. No injected threat. All authority planes established. No divergence.
AL1 — Degraded Forensic Report
Reliability / decision-quality degradation. First divergence detected at Step 4 (Action). All subsequent steps inherit this gap.
AL2 — Compromised Forensic Report
Cross-slice isolation violation + audit-trail tampering. Tampering detected on State Observation source. Independent corroboration survives.
Divergence & Diagnosis
What changed, why it changed, and what it impacts. Deterministic cause tree — no root cause claim without causal evidence. Earliest ≠ root cause
Guardrail & Remediation
What guardrails were applied, did they mediate the action, and what changed. Guardrail configured ≠ guardrail enforced. Ladder states
Canary — Guardrail Drift Detection
Fixed deterministic probes run hourly. Refusal rate is compared across windows to detect guardrail behavior drift. Deterministic probes
Alerts & Live Warning
Real-time push when a CRITICAL finding fires. Banner on the dashboard, toast on HIGH. Email and Slack dispatch in parallel. SSE + polling fallback
CI Release Verification
Every release gated by deterministic capability diff, envelope check, and forensic gate. Tamper-evident evidence packages — HMAC-signed receipts over Merkle-rooted evidence bundles.
The comparison artifact is portable — it can be verified offline against the same digests.
Merkle root over all evidence items in the package; HMAC-signed receipt binds the disposition to this exact bundle. Tamper-evident, verifiable offline.
Material Stories
The findings that matter most, composed deterministically — no ranking model, no LLM prose. Every story carries its evidence refs, limitations, and what would close its frontier. All remaining findings stay available below.
What happened
Cross-slice traffic observed between eMBB and URLLC slices during the AL2 window. Handover chain reached an unauthorized cell.
Why it matters
Slice isolation is the control boundary for latency-critical traffic. A cross-slice path means isolation policy was not enforced.
Evidence strength
STRONG 14 evidence refs · telemetry + intake records + topology
Limitations
Runtime collection was bounded — earlier windows not covered. MISSING_RUNTIME ≠ DID_NOT_HAPPEN.
Consequence
Gate: BLOCK on the evaluated release. Guardrail mediation evidence attached.
What closes the frontier
Authorization-side evidence for the handover trigger; per-slice policy version at time of event.
| Story | Gate | Strength | Evidence | Limitation |
|---|---|---|---|---|
| Delegation scope exceeded on shared index | REVIEW | STRONG | 9 refs | Indirect path — substrate-level |
| Credential grant broader than declared policy | REVIEW | MODERATE | 6 refs | Effective grant ≠ guaranteed authority |
| Guardrail configured but not enforced on egress | BLOCK | STRONG | 11 refs | Configured ≠ enforced — evidence required |
| Audit-trail gap during tamper window | REVIEW | MODERATE | 5 refs | Absence of records is not proof of tampering |
+ 43 additional findings remain available in the full catalog — material stories never hide the rest.
Four-Axis Reading
Every item is scored on four independent axes — never collapsed into one score. The gate is primary; the axes underneath explain why. Deterministic
| Item | Gate | Strength | Capability | Canonical |
|---|---|---|---|---|
| Cross-slice traffic violation | BLOCK | STRONG | CURRENT | ESTABLISHED |
| Shared-index read path | REVIEW | MODERATE | CURRENT | PARTIAL |
| Runtime payload contents | N/A | MISSING | PARTIAL | NOT_ASSESSED |
| Declared egress allowlist | PASS | STRONG | CURRENT | ESTABLISHED |
A missing axis renders visibly as MISSING/NOT_ASSESSED — never silently upgraded to PASS.
AI Agent Path Map — Given vs Derived
Every AI agent has two paths. The given path is what you told it to do — config, policy, roles. The derived path is what it can actually do — what the code can invoke, what credentials can reach, what shared services connect to. The difference is your hidden capability surface. We don't guess
GIVEN
What you declared — config, policy, roles
| drive.read | tenant-docs |
| calendar.read | org-calendar |
| reply.send | customer-comms |
DERIVED
What it can actually do — code + credentials + shared substrates
| drive.read | tenant-docs | declared |
| drive.write | tenant-docs | code + credential |
| shared-index.read | cross-tenant index | shared substrate |
| calendar.read | org-calendar | declared |
| reply.send | customer-comms | declared |
GAP — derived \ declared
DERIVED is never a guess. A capability without an evidence reference renders UNKNOWN, with the exact evidence that would close the gap.
When runtime evidence covers both ends of a static edge, the edge is marked corroborated — stronger than either source alone. Edges only qualify when scope, identity, and provenance match.
| Edge | Static | Runtime | State |
|---|---|---|---|
| Voice Agent → drive.write | code path src/tools/drive.ts:88 | witnessed APPLIED sess-88121 | CORROBORATED |
| Voice Agent → shared-index | substrate binding | observed query volume | CORROBORATED |
| Voice Agent → analytics sink | declared connector | — | STATIC ONLY |
| handover.trigger → TWR-402 | — | ran-handover intake | RUNTIME ONLY |
STATIC ONLY / RUNTIME ONLY edges keep their single-source state — corroboration is never assumed.
Deep Code Path Analysis
The code path HAIEC read. Every edge is a real code location — no inference, no guessing. The frontier shows what was not analyzed and why. Qualified extraction
| Source | Sink | Path | Evidence |
|---|---|---|---|
| request.body | drive.write(tenant-docs) | 3 hops | src/api/agent.ts:41 → src/tools/drive.ts:88 |
| session.context | shared-index.query | 2 hops | src/tools/index.ts:12 → substrate binding |
| env.LLM_API_KEY | llm.invoke | 1 hop | src/llm/client.ts:9 |
| Unresolved edge | Reason | Closes with |
|---|---|---|
| dynamic tool dispatch | handler resolved at runtime — static graph can't bind it | runtime witness of dispatch |
| python decorator auth | decorator-based signal not qualified in Python producer | call-expression-based auth signal |
Languages: Python (AST-qualified) · JS/TS (qualified for supported surfaces) · Java-family via deep CPG extraction where available. Unsupported constructs are marked, not inferred.
Semantic Relation Graph
HAIEC understands 100+ typed relations — core graph, telecom, delegation, forensic, supply chain. Every relation requires evidence. A name match alone never qualifies one.
| Relation | Domain | From → To | Evidence | State |
|---|---|---|---|---|
| INVOKES | Core | Voice Agent → drive.write | code + credential | ESTABLISHED |
| DEPENDS_ON | Core | Voice Agent → shared-index | substrate binding | ESTABLISHED |
| SLICE_USES_SUBNET | Telecom | URLLC slice → core subnet | oam-topology intake | ESTABLISHED |
| SBI_CALL_CONSUMER_TO_PRODUCER | Telecom | SCP → NRF | sbi-transaction records | ESTABLISHED |
| UE_USES_QOS_FLOW | Telecom | UE sessions → slice QoS flow | slice-flow intake | PARTIAL |
| TRIGGERS | Forensic | handover trigger → TWR-402 | ran-handover intake | ESTABLISHED |
| SERVICE_ORDER_ITEM_TARGETS_RESOURCE | TMF | service order → network resource | tmf intake | ESTABLISHED |
The same actor can look different in each domain. HAIEC joins four identity planes — only where evidence links them.
| Plane | Identity here | Join evidence | State |
|---|---|---|---|
| Agent (logical) | voice-agent-01 | agent registry record | JOINED |
| Runtime (execution) | container 7f3a…e2 | OTel resource attrs | JOINED |
| Principal (auth) | iam-role-4 | credential binding | JOINED |
| Credential session | sess-88121 | token issue + use records | PARTIAL |
A missing join renders PARTIAL — four names for one actor are never merged without evidence.
Action Witness — 5-Phase Progression
Every action has five phases: REQUESTED → AUTHORIZED → ACCEPTED → APPLIED → CONFIRMED. Each phase needs its own evidence. HAIEC never assumes the next phase happened — it only shows what's proven. Phase authority rules
| Action | REQUESTED | AUTHORIZED | ACCEPTED | APPLIED | CONFIRMED | Stopped at |
|---|---|---|---|---|---|---|
| drive.write(tenant-docs) | ✓ | ✓ | ✓ | ✓ | ✓ | complete — sess-88121 |
| shared-index.read | ✓ | ? | ✓ | ✓ | — | CONFIRMED missing — no side-effect evidence |
| handover.trigger(TWR-402) | ✓ | ✗ | ✓ | — | — | stopped at ACCEPTED — unauthorized cell |
A phase without evidence renders empty — never inferred from the phase before it.
Evidence Frontier
An evidence frontier is where proof stops. It's not a failure — it's exactly what we can prove and what we'd need to prove more. Every frontier shows what would close it.
| Found | Expected | Missing | Why it matters | Closes with |
|---|---|---|---|---|
| shared-index.read invoked | authorized under tenant policy | authorization-side record | can't establish POLICY_AUTHORIZED plane | IAM policy evaluation log |
| dynamic dispatch edge | handler binding | runtime binding evidence | CODE_CAPABLE stays UNKNOWN for that call | runtime witness of dispatch |
| cross-slice traffic | slice isolation enforced | per-slice policy version at event time | can't prove which policy failed | oam-topology snapshot at event |
| runtime payload shape | content-level observation | payload collection disabled | OBSERVED plane partial for contents | enable payload telemetry (bounded) |
Trust Boundary Map
Where the system crosses its trust boundary. Every crossing shown is real observed or connector-bound traffic — not a guess. Internal→external crossings are highlighted.
INTERNAL
EXTERNAL
| Crossing | Direction | Evidence | State |
|---|---|---|---|
| Voice Agent → LLM endpoint | internal → external | connector binding + observed egress | ESTABLISHED |
| Voice Agent → Analytics sink | internal → external | observed egress (OTel) | ESTABLISHED |
| shared-index → cross-tenant read | internal → adjacent tenant substrate | substrate binding | REVIEW |
Network Slice Map
Network slices are supposed to be isolated. If traffic crosses a slice boundary, it's a violation. HAIEC tracks every cross-slice flow with evidence.
eMBB
URLLC
mMTC
Tower Forensics — Handover Chain
Which tower did the action reach? How many towers were touched? HAIEC tracks every cell handover with evidence from RAN handover intake.
4 cells touched · 3 authorized triggers · 1 unauthorized cell reached. Evidence: ran-handover intake records + oam-topology positions.
Cross-Language Capability Bridge
The same dangerous operation has different names in different languages. HAIEC normalizes them to the same canonical capability — so the finding is the same regardless of implementation language.
Also normalized: CRYPTO_INIT · DATABASE_QUERY · FILE_SYSTEM_WRITE — one canonical finding per capability, per language.