Detection ran. Consumption did not.
Fifteen days of correct, specific, automated detection went into an empty room. The tooling was not the failure, and neither were the responders.
The category
You shifted left and fixed the pipeline. Production is still a person reading a dashboard at 3am. We engineer that layer.
Operations is a software problem. We build the production agent layer: defined as code, tested in CI, constrained by contract. Built on Open Agent Spec.
Detection is mostly a solved problem. Observability platforms produce correct, specific, timestamped signals, and they do it reliably, every day, whether or not anyone is reading.
The failure is downstream of that. Nothing consumes the detection. Nothing correlates a change against an onset while it is still cheap to do. And when a hypothesis does get formed, nothing carries it from the person who formed it to the people who act on it without shedding the two qualifiers that made it honest.
Response Engineering is the discipline of building that layer as software — with the same expectations of typing, testing and review you would apply to anything else that runs in production.
Each of these is a constraint rather than a capability. That is deliberate: a capability is something the system can do on a good day, and a constraint is something it cannot stop doing on a bad one.
A hypothesis is not a sentence. It is an object with a required confidence on a fixed scale, its supporting evidence, its contradicting evidence, and the test that would falsify it. Strip the falsifying test out and the run does not degrade quietly — it fails validation and stops.
A claim cannot shed its caveats when it changes hands.
An agent that declines politely is not a control, because politeness is a property of the model on the day. When someone directs the layer to relax a security control on a production host, the block happens in the runner, before dispatch, against an allow list.
Tested with the agent’s own instructions rewritten to cooperate fully.
The timeline the layer files carries an explicit list of evidence that was never collected, when it became obtainable, and the command that obtains it. A timeline that quietly omits the deciding evidence reads as complete when it is not.
The honest ending is the blocked one.
Each agent is bound to exactly one tool surface. Correlation and precedent reach the commander as typed inputs, not as shared context, so there is no route by which one agent quietly inherits another’s raw evidence.
Every handoff is dataflow, not narration.
Six agents, each with one narrow job, each declared as an Open Agent Spec that is validated in CI. Every arrow between them is a typed output whose claims carry confidence and falsifying_test as required fields.
The incident record is written only through a tool call the adapter log can prove. Nothing reaches the record because an agent asserted it did.
Five governance behaviours are scripted and verified live against the reference implementation. The suite exits zero only when every one of them holds.
There is no autonomous remediation. Anything that changes production state, alters a security control, or is irreversible inside the incident window requires human authorisation, and there is no setting that turns that off.
The bridge does not disappear. Your people still decide. What changes is that the call opens with evidence on the board instead of spending its first two hours assembling evidence that was always available.
The outcome is not a perfect one. Earlier, better evidenced and honestly bounded is the claim. Not solved.
The work is early. Six agents are written and validate against the specification; the investigation agents are verified live against mock adapters. We would rather say that than imply a maturity the repository does not show.
Fifteen days of correct, specific, automated detection went into an empty room. The tooling was not the failure, and neither were the responders.
You do not need an agent platform, and you do not need to have decided on one. You need one recurring incident pattern that costs you time.