The Record Cannot Authorize the Fix
Suneet Malhotra
Aug 29, 2026
A failure log can preserve the facts and still leave the system unchanged.
That sounds obvious until you look at how engineering work actually accumulates. A scheduler records a failed notification. A postmortem names the broken variable. A runbook describes the repair. The next run reads all three and encounters the same defect.
The system has more understanding than it had yesterday. Its state is identical.
The useful part of a defect record
I have been treating defect records as if they were halfway to repairs. They are not. A good record answers at least four questions:
- What happened?
- Which boundary allowed or blocked it?
- What action would change the outcome?
- Who or what is allowed to take that action?
The first three are usually present. The fourth is where the process becomes real.
My recent records have been strong on observation. They named a retry that could create a second portfolio change from one signal. They identified that a calendar refusal was not equivalent to a transient transport error. They made the log part of the agent interface by preserving inputs, decisions, and postconditions.
Those are useful improvements. They are not execution authority.
A log is not a state transition
Consider a simple pipeline. A job attempts to publish a result, fails authentication, and writes an entry saying AUTH_TOKEN is empty. The next job reads the entry. It can now explain the failure before attempting the same operation.
Nothing in that sequence grants the job permission to create a credential, change a secret reference, or alter the deployment configuration. The record improves diagnosis but cannot authorize repair.
This is the same distinction as an order intent versus a broker acknowledgement. An intent says what the system meant to do. It does not prove the external state changed. A log says what the system observed. It does not prove an authorized actor applied the correction.
Confusing those layers creates a particularly quiet failure mode. The process looks mature because every run produces better prose. The artifact gets richer. The state does not move.
The field I was missing
For a repair to be more than a recommendation, the defect record needs an explicit owner and a postcondition. Not a vague owner such as engineering. A concrete executor: this routine, this deployment, or this human decision.
The postcondition should be observable and narrower than the original problem. For a broken checkout guard, it might be that a deliberately incomplete .git directory takes the recovery branch and a clean checkout still takes the reuse branch. For an alerting defect, it might be that a test failure produces one delivered alert with a recorded message ID.
The important thing is that the postcondition tests the transition, not the explanation. A new paragraph in lessons.md proves that someone understood the defect. It does not prove that the defect is gone.
What this changes in practice
I now want every recurring defect to carry four operational fields:
- observed failure
- governing boundary
- authorized executor
- verified postcondition
If the executor is blank, the item is a finding, not a repair plan. If the postcondition is blank, the item is a proposed change, not a shipped fix. That vocabulary is intentionally strict because the softer vocabulary made a runbook feel like a control surface.
There is a cost. Some records will end with no permitted executor. That is not a documentation failure. It is the accurate description of a governance gap. The wrong response is to let an agent infer authority from urgency, or to let a scheduled routine modify files merely because it can.
The better response is to route the item to the actor that can make the state change, then verify the smallest observable property that should differ afterward.
The record remains valuable. It preserves the reasoning, prevents rediscovery, and makes the eventual repair testable. But it should not get credit for a state transition it was never empowered to perform.
Understanding is evidence. It is not authority.
Share this post
You Might Also Like
The Runbook Is Not the System
A documented fix is not a shipped fix. The difference is a control boundary: who can execute it, when, and what proves it happened.
Career & Best PracticesFour Failures, Zero Notifications
My pipeline failed on four days this month. The detector caught all four. The code that was supposed to text me looked up a variable name that does not exist, and returned success.
Quantitative TradingA Retry Is Not a Trading Decision
A rejected order is a decision. Retrying it without preserving the reason can turn a risk control into a duplicate trade.
Agentic AIThe Log Is Part of the Agent's Interface
An agent that can act but cannot leave a useful decision record is not autonomous. It is an opaque process with write access.
Latest Blog Posts
The Runbook Is Not the System
A documented fix is not a shipped fix. The difference is a control boundary: who can execute it, when, and what proves it happened.
A Retry Is Not a Trading Decision
A rejected order is a decision. Retrying it without preserving the reason can turn a risk control into a duplicate trade.
The Log Is Part of the Agent's Interface
An agent that can act but cannot leave a useful decision record is not autonomous. It is an opaque process with write access.
Related Tools & Demos
The QA Field Manual to Language Models
A free 24-chapter book. Start at βwhat is AI, really?β and finish with a small language model you built yourself β one that reads a failing Playwright test and proposes a fix you can run. Read it in your browser, or download the PDF or the Mac app.
View Source Code βMulti-Model LLM Harness
One interface to call any AI model β capability routing, fallback chains, budgets, circuit breakers, and a quality feedback loop. A practical architecture pattern write-up.
Automated Trading System
Multi-engine trading platform with real-time risk management, regime-based strategy selection, and automated order execution.
View Source Code β
Stay in the Loop
Get weekly insights on AI-driven QA, engineering leadership, and automation strategies.
No spam, ever. Unsubscribe anytime.