The Harness Is the Architecture: Choosing Control Boundaries in AI Coding
Your AI Can Write the Code. Who Defines “Correct”?
We are spending enormous energy asking which AI coding agent writes better software.
I believe the more consequential question is: who controls the conditions under which that software is accepted?
An agent that writes code, designs its tests, interprets failures, and declares completion is not simply automating development. It is concentrating responsibilities that mature engineering organisations deliberately separate.
That is an architectural decision-not a productivity feature.
When passing tests is not enough
A recent case study described a developer comparing a single-agent workflow with a coordinated, independently verified approach to migrating a Python 2 application. Both passed all 25 hidden behaviour tests, yet the single-agent implementation silently merged two distinct dictionary keys, causing permanent data loss after saving. Independent verification reproduced the defect, and a controlled repair cycle resolved it.
The lesson is not that one model outperformed another. It is that passing the available tests did not establish that the migration preserved everything that mattered.
For enterprise architects, that distinction should feel familiar.
A service can meet its availability target while returning incorrect balances. A migration can preserve every database row while changing the meaning of a field. A dashboard can remain green while users absorb the consequences.
AI accelerates implementation. It does not remove the need to define correctness beyond implementation.
Separate responsibilities, not just agents
The emerging architectural shift is from managing prompts to managing boundaries.
I see three responsibilities that deserve explicit separation:
- Implementation authority: What may the agent inspect, modify, or execute?
- Verification authority: What evidence establishes that the result is acceptable?
- Workflow authority: Who decides whether to retry, replan, stop, or escalate?
Putting three agents into the same conversation does not automatically create independent oversight. They may share assumptions, inherit misleading context, or validate against the same incomplete tests.
Independence requires deliberate design: fresh contexts, controlled workspaces, separately maintained acceptance criteria, and enforceable permissions.
Even then, agreement between models is evidence-not proof.
This is where conventional engineering remains indispensable. Transaction reconciliation, differential testing, data invariants, rollback rehearsals, and human review address risks that fluent explanations cannot.
The real trade-off is ownership
Greater control brings greater responsibility.
A highly configurable agent framework may let a team customise every decision. It also leaves that team maintaining state, recovery behaviour, audit records, and failure routing.
For a founder, that can become an expensive distraction. For a regulated enterprise, some of it may be essential infrastructure.
My recommendation is to begin with the consequence of failure, not the sophistication of the tooling.
A documentation update and a customer-ledger migration should not inherit the same autonomy policy. The former may justify lightweight review. The latter demands independent reconciliation, recoverability, and explicit approval.
Governance should scale with impact, not with enthusiasm for automation.
What CTOs should establish now
Before expanding AI-assisted delivery, define a few non-negotiables:
- Protect acceptance criteria. Changes to them should follow a separate approval path, not happen merely because implementation is difficult.
- Enforce permissions technically. Instructions express intent; execution boundaries restrict capability.
- Bound repair cycles. Repeated failure should trigger reassessment, not endless automated retries.
- Preserve decision evidence. Record the relevant findings, checks, approvals, and unresolved uncertainty.
- Measure operational outcomes. Faster code generation matters less than fewer escaped defects and safer recovery.
For young engineers and startup founders, this creates an important learning opportunity. The durable skill is not mastering one agent interface. It is learning to design systems in which powerful components can fail without taking trust down with them.
The next generation of software architecture will not be defined only by what machines can build.
It will be defined by how clearly we establish what they are allowed to change-and what they must never be allowed to decide alone.
About the Author: Sanjeev Sarma is the Founder Director and Chief Software Architect at Webx Technologies. With a core focus on Generative AI integration, Cloud-Native Scalability, and Enterprise Software Architecture, he has spent over two decades driving digital transformation across Northeast India and beyond. Beyond his corporate leadership, Sanjeev is deeply invested in shaping the future of the IT industry. He serves as an Industry Expert on the Board of Studies for Assam Don Bosco University’s School of Technology, advises state technology committees, and actively mentors emerging tech startups at STPI. He brings a unique, dual perspective of high-level enterprise execution and future-ready academic curriculum development.