Skip to content

AI Coding Agents Don't Fail on Syntax. They Fail on Intent You Never Wrote Down.

For CTOs, VPs of Engineering, Enterprise Architects, Heads of Platform and Engi…

Horizon About 30 days for one critical system

The Wall Nobody Marked

A contractor is handed a perfect set of drawings for a house.

Every room is dimensioned. Every pipe is routed. The work is fast, clean and exactly to specification.

What the drawings do not say is which interior wall is load-bearing. Nobody marked it. The person who knew left two years ago, and the reason lived in their head, not on the page.

So when the contractor sees a wall that looks redundant, they remove it. Nothing about that decision was careless. It was a reasonable call, made with the information on the page.

The ceiling sags three weeks later.

AI coding agents are that contractor — working at a speed no human crew has ever matched.


The Argument Everyone Is Having

Spend a few minutes on Hacker News lately and you will find some version of this argument. One recent thread, titled "The problem is not AI code, but not knowing about system architecture or intent," collected 388 points and 240 comments within days of being posted.

The article behind it makes a simple claim. The real risk is not what the model writes. It is that teams stop understanding their own systems and forget why past decisions were made. Cheap generation, the author argues, only makes maintenance the final boss.

The comments will be familiar to anyone who has led an engineering organization. Some say coding has become cheap while software engineering has not. Others worry that engineers who stop reading code lose the knowledge to make good calls. One person described tracing a company strategy back through a chain of AI-generated tickets and memos — and finding no human who owned it. Others replied that unclear decision-making long predates AI.

That last reply is the most interesting one. It points at the real issue, which is not about AI at all. Coding agents are an unusually honest audit of how much of your system's purpose was ever written down. An agent has no hallway memory. It can only read what is there, and in most organizations that is the code, a few stale diagrams and a wiki nobody trusts.


The Wrong Diagnosis

When an agent-written change causes a problem, the usual conclusion is that the model got it wrong. It hallucinated an API. It ignored a convention. It "didn't understand the codebase." The proposed fixes are all about the agent: a longer context window, a better prompt, another fifty lines in the rules file.

Sometimes that is right. Often it is not.

Look at the failures that are hardest to explain afterwards and you find that the agent did exactly what the code in front of it suggested. It added a direct database call because three other services make one. It retried a payment request because retrying is a sensible default. It removed an apparently redundant check because nothing in the repository said the check existed to satisfy an auditor.

Each of those is correct given what the agent could see. What failed is that the information that would have changed the answer was never in the place the agent looks.

That is not a model problem. It is an intent problem wearing a model problem's clothes.

The cost lands in three places:

Plausible code, wrong decision. The change compiles, passes the tests and quietly violates a constraint nobody recorded. It survives review because the reviewer cannot see the constraint either.

Comprehension debt. Code is produced faster than anyone reads it. The system grows while the team's understanding of it shrinks.

Review as archaeology. Reviewers reverse-engineer the purpose of a change from its diff, instead of checking it against a stated purpose.


What Intent Actually Is

"Intent" gets used loosely, so here is the concrete version. In an architecture context, the intent behind a part of a system is four things — and almost none of it is code.

Purpose

What the component exists to do, for whom, and what outcome tells you it is working. Not a description of the implementation. A statement that would still be true if you rewrote it in another language.

Constraints

What must always be true, and why. The payment call must be idempotent because the provider charges twice otherwise. Patient data must not leave a region because of a contract. This service must not call that one directly because it was split out to protect a team boundary.

The "why" matters more than the rule. A rule without a reason gets "optimized" away.

Non-goals

What the component deliberately does not do, so nobody — human or agent — helpfully extends it. Non-goals are the cheapest form of intent to write and the most commonly missing.

Ownership

Who decides when this changes, and who has to be asked. An agent that can see the owner can route a question or a review. An agent that cannot will decide for itself.

Notice what is not on that list: a description of how the code works. Agents already read code well. What they cannot read is the reasoning behind it — which is exactly what disappears when the two people who knew it leave.


Where to Write It So It Gets Read

Intent that lives in a slide deck is intent no tool will ever read. The test for any intent artifact is simple: would a new engineer, or an agent working in the repository, find it while doing the work?

Artifact What it captures Where it lives Who reads it
Decision record A significant choice, the options considered, the reason, the consequences In the repository, next to the code it governs Engineers, agents, reviewers
Constraint note An invariant that must always hold, and why At the top of the module, or in a short file in its folder Anyone changing that code
Purpose and non-goals header What a component is for, and explicitly not for The component's own README Anyone arriving at it
Ownership map Who decides, who is consulted, who is told A file the review tooling can read Reviewers, agents routing a question
Check that encodes the rule The constraint, made executable The build pipeline The pipeline — so nobody has to remember

None of this is new. Decision records, ownership files and architecture checks have existed for years. What has changed is the audience: a reader now exists that follows instructions literally and never complains the documentation is out of date.

Start where protection is highest for the least writing. That is almost always the constraint note on the two or three modules where a wrong change is expensive.

Here is how those pieces work together when an agent proposes a change:

%% caption: How intent reaches an agent-proposed change before it merges
flowchart TD
    A[Agent Proposes a Change] --> B[Reads Intent Notes\nPurpose, Constraints, Non-goals, Owner]
    B --> C{Does the change touch\na stated constraint?}
    C -- "No" --> D[Automated Checks Run in the Pipeline]
    C -- "Yes" --> E[Change Cites the Note\nand Names the Owner]
    E --> F{Owner Approves?}
    F -- "No" --> G[Change Revised or Rejected]
    F -- "Yes" --> H[Note Updated in the Same Pull Request]
    H --> D
    D --> I{Checks Pass?}
    I -- "No" --> G
    I -- "Yes" --> J[Reviewer Checks Change Against Stated Purpose]
    J --> K[Merged\nIntent and Code Stay in Step]

If you already keep decision records, the step to agent-readable intent is small. I have written before about how decision records bridge strategy and implementation and about extending them to cover decisions delegated to agents. This post covers the other half: not recording what agents decided, but giving them what they need before they decide.


How to Keep Intent Alive

Intent that is wrong is worse than intent that is missing. An agent will follow it with total confidence. Four habits keep it honest.

Write it at the moment of the decision. The cheapest time to record why is while the argument is still in the room. A record written a year later is a reconstruction. Make it part of closing the decision, not a follow-up task.

Keep it short and attached to something. A constraint note that fits in five lines gets read. A document that needs a table of contents does not. Put it in the same pull request that introduces or changes the thing it describes — so reviewing the code and reviewing the intent are the same act.

Make the important rules executable. A constraint that only exists as prose depends on someone remembering to check it. If a rule is a true invariant — a dependency that must not exist, an API that must not change shape — encode it as an automated check. I made that case in replacing the architecture review with fitness functions. The point here is narrower: an executable constraint survives even when nobody has read the note.

Review intent when you review code. Add one question to the checklist: does this change alter a stated purpose, constraint or non-goal — and if so, was the note updated?


What the Technology Leader Changes

Everything above can be started by one engineer on a Friday afternoon. Whether it lasts is a leadership matter, because intent only stays current if someone makes it part of how decisions get made.

Decide what deserves a record

Not every choice needs one. A workable rule is to record anything that would be expensive to reverse, that crosses a team boundary, or that you would be annoyed to see an agent reverse on its own. Everything else can stay in the commit message.

Make the forum about intent, not slides

In my work with an 80-person SaaS company, decisions had been waiting weeks for a cross-team meeting, because nothing was written down and decisions kept being revisited. A decision rights matrix and a lightweight decision log moved decision time from two to four weeks down to two to five days. The log became the thing new hires read to understand why the system looked the way it did. The full story is in the case study.

The mechanism was not clever. It was deciding who decides, and writing the answer down. That same log is the raw material agents need — though I have not yet run that with a client, and I will not pretend otherwise.

Set the expectation that agents read before they write

For any system where it matters, the working agreement should be that an agent-proposed change comes with a statement of which intent notes it considered. A reviewer can reject it for ignoring one. That turns intent from optional documentation into part of what makes a change reviewable.


What the Market Is Showing

Two signals point the same way.

The conversation

The Hacker News thread reached 388 points and 240 comments. Its subject is not a particular model or product. It is the worry that teams are generating code faster than they understand it — and the answer from the article behind it is that humans must keep supplying intent, taste and design, because AI cannot direct itself. You can read the thread and the article behind it. It is a developer-leaning audience, so treat it as a strong practitioner signal, not a universal one.

The job market

In a scan of 42 postings for senior architecture, AI and engineering leadership roles in New Zealand, Australia and the UK and Europe earlier this month, 14 asked for architecture governance in some form — standards, guardrails, design authority, review forums or decision records. That is my own tagging of the postings, so treat it as the shape of demand rather than an exact statistic. I re-opened three:

Employers are not asking for more documentation; the La Fosse brief pushes against it. They want someone who makes decisions consistent, visible and light enough that fast, increasingly AI-assisted teams can follow them. That is the practitioners' problem, seen from the hiring side.


Action Plan

This Week

Ask three questions about a system your team is already changing with AI assistance:

  1. If a new engineer, or an agent, wanted to know why this system is built the way it is, where would they look — and would they find an answer?
  2. Which two or three constraints would be expensive to break, and are they written anywhere other than someone's memory?
  3. Who decides when one of those constraints changes, and would a reviewer know their name?

If the answer to the first question is "ask one particular person," you have found your single point of failure. It is not a machine.

Next 30 Days

Pick the one system where a wrong change costs the most. Write a purpose-and-non-goals header, a constraint note for each invariant that matters, and an ownership entry. Encode the one or two constraints that can be checked automatically. Add the intent question to your pull request template.

3 to 6 Months

Extend the practice to the systems your architecture forum cares about most. Set the threshold for what earns a decision record, so the forum handles only what needs a room. Track how long it takes a new engineer to answer "why is it built this way?" without asking a person. Review the notes on the same rhythm as the rest of your architecture governance — not as a separate documentation project.


Final Thought

The contractor with perfect drawings and no mark on the load-bearing wall is not a bad contractor. The drawings were accurate. The wall came down because the reason it was there lived in the head of someone who was not on site that day.

AI coding agents are that contractor, at a speed no human crew has matched. They will follow the drawings flawlessly. What they cannot do is know what the drawings never said.

So the useful question is not whether your agents are good enough. It is whether the purpose, the constraints and the owners of your system are written somewhere a reader with no hallway memory can find them.

If they are, an agent is a very fast pair of hands. If they are not, it is a very fast way to discover how much of your architecture was only ever in people's heads.


Write Down What Your System Is For Before an Agent Changes It

If your teams are adopting AI coding tools and nobody can say where the reasons behind your architecture are recorded, that is not an AI tooling problem. It is an intent gap — and it is cheapest to close before the next large change ships.

→ Book a 30-Minute Diagnostic

or

→ Contact me directly

AI can write the code. It cannot know what the code was for unless you wrote it down.

Related Articles

Multi-Agent Orchestration Solved Coordination. It Didn't Solve Authority.
Multi-Agent Orchestration Solved Coordination. It Didn't Solve Authority.

An orchestrator routes work and synthesizes results, and in synthesizing it quietly decides between agents. AIDRA puts authority at the merge point.

AI Governance Just Became a Job Title. Nobody Defined What It Owns.
AI Governance Just Became a Job Title. Nobody Defined What It Owns.

This week, five organizations in New Zealand and Australia posted jobs titled "AI Governance" — not AI Strategy, not Enterprise Architecture. Here is what those job descriptions are missing, and how AIDRA fills the gap.

AI-Native Teams Don't Need New Titles. They Need Named Owners.
AI-Native Teams Don't Need New Titles. They Need Named Owners.

AI-native team redesigns keep adding new job titles and calling it done. The actual failure mode sits at the decision boundary. Here is what changes when you apply AIDRA to team design instead of headcount.

Next Step

See how this works in practice

These ideas come out of real engagements. The case studies show what changed, over what timeline, and what was cut along the way.