- contact@insightlense.com
Five capabilities a CIO has to be able to evidence once agents are allowed to write to a system of record — and, below that, the full technical architecture for whoever runs the evaluation.
Agents that only draft need very little oversight. The moment one is allowed to change a record — a reserve, a policy, a payment — five questions arrive, and they arrive from five different directions: the board, the auditor, the regulator, finance and your own engineers.
This is the whole platform in one picture. The detail sits further down for whoever does the technical evaluation.
flowchart TB Q["Can you prove what your AI did —
and what it was not allowed to do?"] Q --> P1["TRACEABILITY
What the agents did"] Q --> P2["CONTROL
What they could not do"] Q --> P3["AUDIT
What changed in the business"] Q --> P4["ECONOMICS
What it costs to run"] Q --> P5["ASSURANCE
When something breaks"] P1 --> F["Open standards · Runs in your infrastructure · Immutable by design"] P2 --> F P3 --> F P4 --> F P5 --> F style Q fill:#14162b,stroke:#14162b,color:#ffffff style P1 fill:#efecfe,stroke:#4b34e0 style P2 fill:#fbede3,stroke:#b4531b style P3 fill:#e2f5f9,stroke:#0e97b0 style P4 fill:#eef0fb,stroke:#38407a style P5 fill:#f2faf5,stroke:#1d6b3d style F fill:#f6f6fb,stroke:#6b7396
Every action an agent took, in order, with the reasoning that led to it — across every system it touched, not just the one it started in.
Authority enforced by the software rather than requested in a prompt, so a limit is a control rather than a preference — and every refusal is kept as evidence that the guardrail fired.
An immutable record of every business change — the value before, the value after, and whether an agent, a person or a scheduled job did it.
Spend expressed the way a budget holder thinks about it — per cleared submission or per settled claim, not per million tokens.
The failure that matters is not an agent doing something wrong. It is a control quietly ceasing to run, which produces no errors at all.
The conditions that usually decide whether a platform gets approved at all.
The hard part of instrumentation is not emitting records. It is carrying the business thread across services without every developer having to remember to — which is why propagation is three integration points rather than a convention.
flowchart LR APP["Your application
agent or service"] --> SDK["Any OTel SDK
OpenLLMetry, OpenInference,
LangChain, Vercel AI, custom"] SDK -->|OTLP/HTTP| ING["/v1/traces"] APP --> MW["Identity middleware
resolve actor + kind
mint or adopt correlation"] MW --> CTX["Request contextvar
correlation + causation"] CTX --> OUT["Outbound HTTP client
X-Correlation-Id
X-Causation-Id"] OUT -.->|next service| MW CTX --> AC["after_commit hook
stamps events on commit,
never before"] AC --> OBX["Outbox
idempotent on event_id"] OBX --> API["Record APIs"] ING --> STORE[("InsightLense
one threaded store")] API --> STORE STORE --> FAN["Fan-out
keep your existing
tracing UI as well"] style ING fill:#e4f4f8,stroke:#0a6e82 style MW fill:#efecfe,stroke:#4b34e0 style AC fill:#efecfe,stroke:#4b34e0 style STORE fill:#14162b,stroke:#4b34e0,color:#fff style FAN fill:#f6f6fb,stroke:#6b7396
These are the records you cannot derive from one another, and the reason a model-call log cannot grow into an audit trail: it has no column for an entity, a value, an authority level or a human being.
flowchart TB
TH(("correlation_id
the business reference
VS-2027-0832950"))
TH --- RUN["RUNS
session → span → step
tokens, latency, model,
prompt version"]
TH --- AUTH["AUTHORITY DECISIONS
capability, amount,
held vs required,
outcome, approver"]
TH --- BIZ["BUSINESS EVENTS
entity, field,
old → new, amount,
actor kind, reason"]
TH --- SC["SCORES
target, name, source,
value, comment"]
SC -.->|attaches to| RUN
SC -.->|attaches to| BIZ
AUTH -.->|gates| BIZ
RUN -.->|causes| AUTH
ACT["ACTORS AND WORKSTATIONS
role, capabilities,
authority per capability,
manager"] --> AUTH
ACT --> BIZ
style TH fill:#14162b,stroke:#4b34e0,color:#fff
style RUN fill:#efecfe,stroke:#4b34e0
style AUTH fill:#fbede3,stroke:#b4531b
style BIZ fill:#e2f5f9,stroke:#0e97b0
style SC fill:#eef0fb,stroke:#38407a
style ACT fill:#f6f6fb,stroke:#6b7396
The diagram groups them; this enumerates them. Useful as an evaluation checklist whether or not you evaluate us — most of these are things any serious agent observability layer needs to answer for.
Standard transport, so instrumentation is never a lock-in decision.
/v1/tracesgen_ai.provider.name, gen_ai.usage.input_tokensgen_ai.system, llm.*, traceloop.*Everything a model-call log has no place for.
event_idThree integration points, no per-call discipline required.
X-Correlation-Id, X-Causation-IdThe engineer's record: what the agent did, in order.
The supervisor's record. A refusal is a result, not an error.
The auditor's record: what actually changed.
Judgement and identity, both first-class.
on_behalf_ofFacts are recorded; money is computed, so it can always be restated.
The numbers that tell you whether the design fits the work.
Including the alerts that fire on an absence rather than a spike.
An alert that names the exposure, not just the anomaly.
One store, nine audiences, no separate pipelines.
An observability layer that only serves engineers gets bought by engineering and renewed by nobody. These are the nine audiences and the capability each one depends on.
| Team | Asks | Depends on |
|---|---|---|
| Operations | Which pipeline is not behaving like yesterday? | Pipeline board, cycle time, coverage alerts |
| Engineering | Which code path, and what did it cost? | Run and step tree, OTLP ingest, cost per run |
| Line managers | Is my desk escalating too much or too little? | Workstation overview, escalation and approval rate |
| Risk | Are the guardrails firing at all? | Authority decisions, control coverage, never-fired rules |
| Internal audit | Complete population, remediated, fixed? | Exception register, bounded windows, append-only ledger |
| Compliance | Internal breach or reportable event? | Conformance views, actor kind, approval chains |
| Finance | What does it cost, and does it reconcile? | Derived cost, versioned pricing, cost per outcome |
| AI engineering | Did the version we promoted perform better? | Prompt version evidence, scores, judge agreement |
| Executive | How much is autonomous, and what broke? | Autonomy share by value, incident rollups |
Pick any row. If answering that question in your current stack requires an engineer, an export and a spreadsheet, the capability is missing regardless of how much telemetry you are collecting. Volume of data and answerability are close to unrelated.
Each layer is more useful once the one before it exists. Business events without correlation are a table you cannot join; authority records without business events tell you a gate fired but not what it protected.
Middleware, contextvars, outbound headers. Use the business reference, not a UUID.
Do this first. It is what makes everything after it useful, and it is the one thing that cannot be retrofitted onto history.
An after_commit hook on the three or four writes that change a
legal or financial position. Old value, new value, actor, actor kind.
Expect to find bugs. Six of the ten defects we found at Vsure surfaced here.
Convert permission checks from raised exceptions into returned decisions, with a downgrade route.
Prerequisite: somewhere to put them, which stage 2 provides.
Repoint an existing exporter. If you already emit OpenTelemetry this is a configuration change.
Last, not first — it is the layer most teams already have, and the least able to answer an auditor.
Tell us that, and what you would need to prove about those actions to an auditor. We will set up a hands-on walkthrough within two weeks.
Request a demo →