Most agentic workflow discussions get stuck on a binary: rigid pipeline vs full autonomy. “Should we let the agent decide?” is the wrong question. The right question is: “what evidence would change our answer?”
I’ve been building an automated AI landscape review pipeline — gather articles, extract insights, identify gaps, research, synthesise. The v1 was fully rigid: every step prescribed, every output format locked. It worked, but it was brittle. When the model encountered thin coverage on a topic, it couldn’t do anything about it. When an insight was genuinely novel, it just got filed alongside the routine.
The v2 follows a different pattern: progressive trust.
The skeleton stays fixed — Gather → Extract → Gap Analysis → Research → Synthesise → Write. That’s the structure. But within each step, the model has tactical latitude. It can invoke additional search tools when extractions seem thin. It can flag insights as garden-worthy when they cross a novelty threshold. It decides, not the Python orchestration code.
The thing that makes this safe isn’t the guardrails. It’s the trace capture. Every step writes its output — inputs, outputs, decisions — to a trace directory. After each run, I can review: What did the model choose to search? What did it flag? What did it skip? This turns autonomy from a leap of faith into a feedback loop.
The pattern
- Build rigid first. Prove the skeleton works.
- Add tactical autonomy within steps. The model decides when to act, not whether the step exists.
- Capture everything. Traces are the evidence layer.
- Review and adjust. Tighten where the model over-reaches, loosen where it’s unnecessarily constrained.
This is how trust works between humans too. You don’t give a new analyst full autonomy on day one. You give them a clear process, watch how they exercise judgment within it, and gradually expand their remit based on evidence. The difference with AI agents is that the “evidence” is machine-readable — you can systematically review every decision the model made.
The guardrails debate frames constraints as static. They’re not. They’re a dial, and the trace log is what tells you which way to turn it.