Agreed, that ordering is very close to how I see it: map the execution surface, trace what actually runs, enforce at the boundary, and treat model reasoning as secondary.
The distinction I’d add is between observability and authority.
Gatewaying model and tool calls gives you excellent correlation and telemetry, but it only becomes a control when the final boundary can refuse the action from somewhere the process cannot modify or bypass.
There is also an important coverage gap before runtime. Not every consequential action necessarily passes through an obvious model or tool gateway: an agent can call a cloud SDK directly, invoke subprocess, write through a filesystem API, execute SQL through a client object, or use an inherited credential.
That is the reason for the sequence I’m working on with GitHub.com/Actenon:
actenon-scan maps the consequential execution sinks in the codebase before deployment.
Gateway and kernel telemetry show which path was actually taken and propagate the execution identity.
actenon-kernel verifies operation-bound authority immediately before the consequential action and returns ALLOW or a typed refusal.
A receipt then binds the decision to the action and context that were actually presented.
So yes: reasoning last and execution first. I’d just make the middle distinction explicit:
capture tells us what happened; an unreachable boundary decides whether it may happen.