I am a software engineer, currently working on agentic AI. Fifteen years building systems, eight of them in regulated financial services.
My focus is the layer that decides whether an AI agent's output is allowed to act.
Getting an agent to do something useful takes a weekend. Getting permission to let it act unattended, in a business that has auditors, is the actual project. Three small tools, one question each:
AgentVerity — would this pass again? Qualifies repeated agent decisions before they are frozen as regression baselines. A single passing run on a sampled model is one draw, not evidence.
AgentMandate — what is it actually allowed to do? Finds the limits an agent can slip past by combining individually permitted actions, and flags releases that widen its reach.
agent-release-gate — should this release ship? A worked example wiring both into seven checks and one exit code, on an agent that moves money. Runs offline, no API key.
Day to day that means Bedrock AgentCore, LangGraph, multi-agent orchestration in production, and a deterministic release gate in front of it rather than a second model as judge.
I write about the same problem I design around. The case that started AgentVerity was a small routing workflow where a fully passing evaluation still hid a decision that changed between runs. When is a result trustworthy enough to become the baseline everything after it is judged against? That question shapes the architecture as much as the tooling.
My PhD at USI Lugano, 2010 to 2014, sat between software engineering and human-computer interaction, and I built rather than only studied. NaturalMash was a web environment where non-programmers built working applications by writing something close to English, with the running result on screen as they typed.
The dissertation is really about the trade-off that governs end-user programming: expressive power against usability. Enough power to build something non-trivial, a learning curve gentle enough that a non-programmer never falls off it, and every design decision paying for one with the other.
Norman's two gulfs are the frame. NaturalMash narrowed the gulf of execution with natural language, and the gulf of evaluation by keeping the result visible and live while you worked.
A language model has since closed the gulf of execution almost entirely, and does it better than my grammar ever did. The less discussed half is that it widened the other one. You cannot look at an agent's output and see whether it is right the way you could look at a running mashup.
The three tools above are the gulf of evaluation, for agents.



